![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
В этом разделе мы докажем теорему, принадлежащую к числу основных результатов теории алгоритмов. Суть теоремы в следующем. Допустим, что f (х, у) - вычислимая функция. Для каждого фиксированного значения a переменной х функция f порождает одноместную вычислимую функцию ga (y) = f (a, у). Из вычислимости функции ga следует существование индекса b такого, что f (a, у) = fb (у). Оказывается индекс b можно эффективно вычислить по параметру а.
Теорема 8.1 (s-m-n - теорема, простая форма). Пусть f (х, у) -вычислимая функция. Существует всюду определенная вычислимая функция s (x), такая, что f (х, у) = fs(x) (у).
Доказательство. Из вычислимости функции f (х, у) следует существование МНР-программы Pr, которая, исходя из начальной конфигурации (x, y, 0, 0,...), вычисляет значение функции f от двух аргументов х и у. Изменим программу Pr, добавив спереди команды, преобразующие начальную конфигурацию
R1 | R2 | R3 | R4 | ... | ||
y | 0 | 0 | 0 | ... | (*) |
в конфигурацию
R1 | R2 | R3 | R4 | ... | |
a | y | 0 | 0 | ... |
следующим образом:
T (1, 2)
Z (1)
Pr
Новая программа Pr1, примененная к начальной конфигурации (*), вычисляет значение функции ga (y) = f (a, у) от одного аргумента у.
Теперь рассмотрим функцию s (a) = g(Pr1), сопоставляющую произвольному неотрицательному целому числу a геделев номер программы Pr1. Функция s всюду определена и по тезису Черча вычислима. Кроме того, по построению fs(a) (у) = f (a, у) для каждого .
Замечание 8.1. Сформулированную теорему называют также теоремой параметризации, поскольку она позволяет по заданной вычислимой функции f (x, у) и фиксированному параметру a найти геделев номер s (a) программы, вычисляющей функцию fs(a) (у) = f (a, у).
Доказанная выше теорема 8.1 является частным случаем более общей теоремы.
Теорема 8.2 (s-m-n - теорема). Пусть m, n – натуральные числа, - вычислимая функция с геделевым номером a. Существует всюду определенная вычислимая функция
такая, что
.
Доказательство сформулированного утверждения аналогично доказательству теоремы 8.1.
Замечание 8.2. Название теоремы 8.2 связано с обозначением для функций в формулировке теоремы.
Покажем теперь, как можно использовать s-m-n -теорему для доказательства неразрешимости проблем. s-m-n -теорема часто используется для сведения проблемы «» к другим проблемам.
Теорема 8.3. Проблема «» неразрешима.
Доказательство. Рассмотрим функцию
По тезису Черча функция f (x, y) вычислима. Отсюда по s-m-n-теореме вытекает существование всюду определенной вычислимой функции s(x) такой, что . По определению функции f (x, y) имеем:
.
Следовательно, истинность условия можно установить, определив справедливость равенства
. Тем самым мы свели проблему «
» к проблеме «
». Поскольку первая из них неразрешима, то неразрешима и вторая.
Замечание 8.3. Теорема 8.3 показывает, что в области проверки правильности компьютерных программ имеются принципиальные ограничения. В ней говорится о том, что не существует алгоритма проверки того, будет ли программа вычислять нулевую функцию. Несколько изменив доказательство теоремы 8.3, можно убедиться в том, что то же самое справедливо и для любой другой конкретной вычислимой функции.
Теорема 8.4. Проблема неразрешима.
Доказательство. Допустим, что проблема разрешима. Тогда разрешима и проблема
, где c – индекс функции 0
. Однако, это противоречит теореме 8.3. Таким образом, проблема
неразрешима.
Замечание 8.4. Из теоремы 8.4 следует, что вопрос о том, вычисляют ли две программы одну и ту же одноместную функцию, неразрешим. Важность этого результата для теоретического программирования очевидна.
Дата публикования: 2015-03-26; Прочитано: 2556 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!