Теорема о рекурсии — различия между версиями
Grechko (обсуждение | вклад) |
Grechko (обсуждение | вклад) |
||
| Строка 25: | Строка 25: | ||
|statement= Пусть <tex>V(n, x)</tex> - вычислимая функция.Тогда найдется такая вычислимая <tex>p</tex>, что <tex>\forall y</tex> <tex>p(y) = V(p, y)</tex> | |statement= Пусть <tex>V(n, x)</tex> - вычислимая функция.Тогда найдется такая вычислимая <tex>p</tex>, что <tex>\forall y</tex> <tex>p(y) = V(p, y)</tex> | ||
|proof= | |proof= | ||
| − | Так как <tex>U</tex> - универсальная, то найдется вычислимая всюду определенная <tex>h</tex> такая что <tex>\forall n, x</tex> <tex>V(n, x) = U(h(n), x)</tex>. По доказанному найдется такое <tex>n_0</tex> что <tex>U_{n0} = U_{h( | + | Так как <tex>U</tex> - универсальная, то найдется вычислимая всюду определенная <tex>h</tex> такая что <tex>\forall n, x</tex> <tex>V(n, x) = U(h(n), x)</tex>. <br >По доказанному найдется такое <tex>n_0</tex> что <tex>U_{n0} = U_{h(n_0)}</tex>. <br> Тогда <tex>V(n_0, x) = U(h(n_0), x) = U(n_0, x)</tex>. Взяв <tex>p=U_{n_0}</tex> получаем требуемое утверждение. |
| + | }} | ||
| + | Неформально теорема о рекурсии утверждает то что внутри программы можно использовать ее код. Это упрощает доказательство некоторых теорем. | ||
| + | ==Пример== | ||
| + | Используя теорему о рекурсии приведем простое доказательство неразрешимости языка <tex>L=\{p|p(\epsilon)=\perp\}</tex> | ||
| + | {{Утверждение | ||
| + | |id=st2 | ||
| + | |statement= Язык <tex>L=\{p|p(\epsilon)=\perp\}</tex> неразрешим. | ||
| + | |proof= | ||
| + | Предположим обратное, тогда существует программа <tex>r</tex> разрещающая <tex>L</tex>. | ||
| + | Рассмотрим следущую программу | ||
| + | <code> | ||
| + | p(x) | ||
| + | if r(p) | ||
| + | return 1 | ||
| + | while true | ||
| + | </code> | ||
| + | Пусть <tex>p(\epsilon)=\perp</tex>. Тогда условие <tex>r(p)</tex> выполняется и <tex>p(\epsilon)=1</tex>. Противоречие. Если <tex>p(\epsilon) \ne \perp</tex>, то <tex>r(p)</tex> не выполняется и <tex>p(\epsilon)=\perp</tex>. Противоречие. | ||
}} | }} | ||
==Источники== | ==Источники== | ||
Н. К. Верещагин, А. Шень. Лекции по математической логике и теории алгоритмов. Часть 3. Вычислимые функции. -- М.: МЦНМО, 1999 | Н. К. Верещагин, А. Шень. Лекции по математической логике и теории алгоритмов. Часть 3. Вычислимые функции. -- М.: МЦНМО, 1999 | ||
Версия 11:58, 29 декабря 2011
Теорема о рекурсии
| Теорема (О рекурсии): | |||||
Пусть - универсальная функция, - всюду определенная вычислимая функция. Тогда найдется такое , что | |||||
| Доказательство: | |||||
|
Начнем с доказательства леммы.
Теперь определим отношение так: . Покажем, что для него выполнено первое утверждение леммы. | |||||
Теорему о рекурсии можно переформулировать следущим образом.
| Теорема (О рекурсии): |
Пусть - вычислимая функция.Тогда найдется такая вычислимая , что |
| Доказательство: |
|
Так как - универсальная, то найдется вычислимая всюду определенная такая что . По доказанному найдется такое что . Тогда . Взяв получаем требуемое утверждение. |
Неформально теорема о рекурсии утверждает то что внутри программы можно использовать ее код. Это упрощает доказательство некоторых теорем.
Пример
Используя теорему о рекурсии приведем простое доказательство неразрешимости языка
| Утверждение: |
Язык неразрешим. |
|
Предположим обратное, тогда существует программа разрещающая .
Рассмотрим следущую программу
p(x)
if r(p)
return 1
while true
Пусть . Тогда условие выполняется и . Противоречие. Если , то не выполняется и . Противоречие. |
Источники
Н. К. Верещагин, А. Шень. Лекции по математической логике и теории алгоритмов. Часть 3. Вычислимые функции. -- М.: МЦНМО, 1999