Участник: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 Начиная с , . |