Участник:Shersh/Теорема о рекурсии — различия между версиями
Shersh (обсуждение | вклад) (набросок док-ва Колмогоровской сложности) |
Shersh (обсуждение | вклад) (неразрешимость универсального языка) |
||
Строка 1: | Строка 1: | ||
== Неразрешимость универсального языка == | == Неразрешимость универсального языка == | ||
+ | Считаем, что язык программ над тем же алфавитом, что и язык входных данных. Если это не так, то можно просто взять объединение алфавитов, это ничто не испортит. | ||
+ | |||
+ | Универсальная программа: <tex> u(p, x) = p(x) </tex>. | ||
+ | |||
+ | Универсальный язык: <tex> L_u = \{ <p, x> \mid u(p, x) = 1 \} </tex> | ||
+ | |||
+ | {{Утверждение | ||
+ | |id=proposalU. | ||
+ | |statement=Универсальный язык неразрешим | ||
+ | |proof= | ||
+ | Напишем такую программу: | ||
+ | <code> | ||
+ | p(x): | ||
+ | '''if''' u(p, x) // можем так написать, потому что по теореме о рекурсии программа может знать свой код | ||
+ | '''return''' 0 | ||
+ | '''else''' | ||
+ | '''return''' 1 | ||
+ | </code> | ||
+ | |||
+ | Если <tex> u(p, x) = 1 </tex>, тогда программа <tex> p </tex> на входе <tex> x </tex> возвращает <tex> 1 </tex>, но по условию <tex> if </tex> она должна вернуть 0, а следовательно, не принадлежит универсальному языку. | ||
+ | |||
+ | Если же <tex> u(p, x) = 0 </tex>, то мы пойдём во вторую ветку условного оператора и вернём <tex> 1 </tex>, значит, пара <tex> <p, x> </tex> принадлежит универсальному языку, но <tex> u(p, x) = 0 </tex>, значит, пара не принадлежит. Опять получили противоречие. | ||
+ | }} | ||
== Теорема Успенского-Райса == | == Теорема Успенского-Райса == | ||
== Колмогоровская сложность == | == Колмогоровская сложность == |
Версия 16:25, 28 декабря 2013
Содержание
Неразрешимость универсального языка
Считаем, что язык программ над тем же алфавитом, что и язык входных данных. Если это не так, то можно просто взять объединение алфавитов, это ничто не испортит.
Универсальная программа:
.Универсальный язык:
Утверждение: |
Универсальный язык неразрешим |
Напишем такую программу:
p(x): if u(p, x) // можем так написать, потому что по теореме о рекурсии программа может знать свой код return 0 else return 1
Если Если же , тогда программа на входе возвращает , но по условию она должна вернуть 0, а следовательно, не принадлежит универсальному языку. , то мы пойдём во вторую ветку условного оператора и вернём , значит, пара принадлежит универсальному языку, но , значит, пара не принадлежит. Опять получили противоречие. |
Теорема Успенского-Райса
Колмогоровская сложность
Определение: |
Колмогоровской сложностью строки | называется функция , которая равна минимальной длине программы .
Пример
Колмогоровская сложность программы, выводящей
():
for i = 1..n
print(0)
Теорема (Невычислимость Колмогоровской сложности): |
Колмогоровская сложность — невычислимая функция. |
Доказательство: |
, если только или — невычислима. Допустим, что p(): foreach x // перебираем слова по возрастанию длины if print(x) exit Начиная с , . |