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