Разрешимые (рекурсивные) языки — различия между версиями
Строка 12: | Строка 12: | ||
Приведём программу, разрешающую наш язык: | Приведём программу, разрешающую наш язык: | ||
<tex>p(i)</tex> | <tex>p(i)</tex> | ||
− | '''if''' | + | '''if''' остаток от деления i на 2 = 0 |
'''return''' 1 | '''return''' 1 | ||
'''else''' | '''else''' | ||
Строка 30: | Строка 30: | ||
Универсальный язык неразрешим. | Универсальный язык неразрешим. | ||
|proof= | |proof= | ||
− | Докажем от противного. </ | + | Докажем от противного. <br/> |
− | Пусть язык <tex> U </tex> разрешим. </ | + | Пусть язык <tex> U </tex> разрешим. <br/> |
− | Тогда существует такая программа <tex> u </tex>, что | + | Тогда существует такая программа <tex> u </tex>, что <tex> \forall \langle p, x \rangle \in U: u(\langle p, x \rangle) = 1</tex>, а для <tex> \forall \langle p, x \rangle \notin U: u(\langle p, x \rangle) = 0</tex>. <br/> |
− | <tex> | + | Составим следующую программу: |
− | '''if''' ( | + | |
+ | <tex>r(x)</tex> | ||
+ | '''if''' u(<x, x>) = 1 | ||
+ | '''while''' true | ||
+ | '''else''' | ||
'''return''' 1 | '''return''' 1 | ||
− | + | ||
− | + | Теперь рассмотрим вызов <tex> r(r) </tex>. | |
− | + | * Если <tex> u(\langle r, r \rangle) = 1 </tex>, то условие '''if''' выполнится и вызов зациклится. Но, <tex> u(\langle r, r \rangle) = 1 \Rightarrow r(r) = 1</tex>. | |
+ | * Если <tex> u(\langle r, r \rangle) = 0 </tex>, то условие '''if''' не выполнится и вызов вернёт <tex>1</tex>. Но, <tex> u(\langle r, r \rangle) = 0 \Rightarrow r(r) \ne 1</tex>. | ||
+ | |||
+ | Таким образом, из предположения о разрешимости универсального языка мы пришли к противоречию. | ||
}} | }} |
Версия 07:07, 14 декабря 2011
Определение: |
Язык | называется разрешимым (рекурсивным), если существует такая программа , что , а для .
Примеры
Пример разрешимого множества
Утверждение: |
Язык чётных чисел разрешим. |
Приведём программу, разрешающую наш язык:
Заметим, что программа нигде не может зависнуть.
if остаток от деления i на 2 = 0
return 1
else
return 0
|
Пример неразрешимого множества
Определение: |
Язык | называется универсальным.
Утверждение: |
Универсальный язык неразрешим. |
Докажем от противного.
if u(<x, x>) = 1
while true
else
return 1
Теперь рассмотрим вызов .
|