Участник:Shersh/Теорема о рекурсии — различия между версиями
Shersh (обсуждение | вклад) (→Пример: колмогоровская сложность) |
Shersh (обсуждение | вклад) (→Неразрешимость универсального языка) |
||
Строка 1: | Строка 1: | ||
== Неразрешимость универсального языка == | == Неразрешимость универсального языка == | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
{{Утверждение | {{Утверждение | ||
|id=proposalU. | |id=proposalU. | ||
Строка 23: | Строка 17: | ||
Если же <tex> u(p, x) = 0 </tex>, то мы пойдём во вторую ветку условного оператора и вернём <tex> 1 </tex>, значит, пара <tex> <p, x> </tex> принадлежит универсальному языку, но <tex> u(p, x) = 0 </tex>, значит, пара не принадлежит. Опять получили противоречие. | Если же <tex> u(p, x) = 0 </tex>, то мы пойдём во вторую ветку условного оператора и вернём <tex> 1 </tex>, значит, пара <tex> <p, x> </tex> принадлежит универсальному языку, но <tex> u(p, x) = 0 </tex>, значит, пара не принадлежит. Опять получили противоречие. | ||
}} | }} | ||
+ | |||
== Теорема Успенского-Райса == | == Теорема Успенского-Райса == | ||
<tex> A </tex> {{---}} разрешимое семейство языков. | <tex> A </tex> {{---}} разрешимое семейство языков. |
Версия 17:52, 8 января 2014
Содержание
Неразрешимость универсального языка
Утверждение: |
Универсальный язык неразрешим |
Напишем такую программу:
p(x): if u(p, x) // можем так написать, потому что по теореме о рекурсии программа может знать свой код return 0 else return 1
Если Если же , тогда программа на входе возвращает , но по условию она должна вернуть , а следовательно, не принадлежит универсальному языку. , то мы пойдём во вторую ветку условного оператора и вернём , значит, пара принадлежит универсальному языку, но , значит, пара не принадлежит. Опять получили противоречие. |
Теорема Успенского-Райса
— разрешимое семейство языков.
— язык свойства языков. Допустим, что он разрешим. Тогда напишем такую программу
p(x):
if p
return z(x)
else
while true
Колмогоровская сложность
Определение: |
Колмогоровской сложностью строки | называется функция , которая равна минимальной длине программы .
Пример
Колмогоровская сложность программы, выводящей
():
for i = 1..n
print(0)
Теорема (Невычислимость Колмогоровской сложности): |
Колмогоровская сложность — невычислимая функция. |
Доказательство: |
, если только или — невычислима. Допустим, что p(): foreach x // перебираем слова по возрастанию длины if // теорема о рекурсии используется здесь print(x) exit Начиная с , . |
Busy beaver
Аналог I теоремы Гёделя о неполноте
Теорема: |
В любой "достаточно богатой системе" существует истинное недоказуемое утверждение. |
Доказательство: |
Можно переформулировать теорему следующим образом: невозможно доказать, что .Тогда напишем такую программу:
p(x):
foreach q
if q proves "p(x) зависает"
exit
|
Аналог II теоремы Гёделя о неполноте
Теорема о неподвижной точке
Зафиксируем главную нумерацию
. Обозначим за множество слов, допускаемых программой с номером .Утверждение: |
Напишем такую программу:
p(q): if p == q // сравниваем как строки; так можно сделать, потому что программа знает свой код по теореме о рекурсии print number(p) else while true Программа знает свой код, что то же самое, что и знает свой номер. Как видно из её кода, она допускает только одно число — свой номер. |