Теорема о рекурсии — различия между версиями
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