на стр 6, лекции 3, Очевидно "Ck <= модуль(Gk(е))*b(k+1)" (1) - , подскажите что значит "модуль" и почему это очевидно... |
Машины Тьюринга
Частично-рекурсивные функции
Пытаясь выяснить содержание интуитивного понятия вычислимой функции, А.Черч в 1936 году рассмотрел класс так называемых рекурсивных функций, а Клини расширил его до класса частично-рекурсивных функций. В то же время впервые была высказана естественно-научная гипотеза о том, что интуитивное понятие вычислимой частичной функции совпадает с понятием частично рекурсивной функции. Эту гипотезу называют тезисом Черча. Здесь мы напомним понятие частично-рекурсивной функции и покажем, что любая частично-рекурсивная функция вычислима по Тьюрингу. Набор аргументов обозначим через .
Функция называется суперпозицией -местных функций , и -местной функции , если
Говорят, что -местная функция получена примитивной рекурсией из -местной функции и -местной функции , если
Говорят, что -местная функция получена минимизацией из -местной функции , если
Часто обозначают через .
Заметим, что суперпозиция и примитивная рекурсия, примененные к всюду определенным функциям, дают всюду определенные функции, тогда как минимизация, примененная к всюду определенной функции, может дать частичную функцию.
Числовая функция называется частично рекурсивной, если она является одной из базисных функций:
а) (при всех ),
б) (при всех ),
в)
или получена из них с помощью конечного числа применений суперпозиции, примитивной рекурсии и минимизации.
Теорема. Любая частично-рекурсивная функция вычислима по Тьюрингу.
Доказательство теоремы заключено в следующих четырех леммах, с использованием унарного кодирования чисел.
Лемма 1 (о базисных функциях). Базисные функции , , вычислимы по Тьюрингу.
Действительно, функцию вычисляет программа , функцию — программа , функцию — программа .
Лемма 2 (о суперпозиции). Если функции и вычислимы, соответственно, программами , и , то функцию
Доказательство. Чтобы убедиться в справедливости этого утверждения, достаточно выписать псевдослова, которые появляются на ленте после выполнения отдельных частей программы. Сначала на ленте находится псевдослово
после выполнения на ленте будет
после —
после —
и т.д.
После —
после —и, наконец, после выполнения всей программы получим
Лемма 3 (о примитивной рекурсии). Если функции , и вычислимы соответственно программами и , то функция , полученная по схеме примитивной рекурсии, вычислима программой
Доказательство. Представим программу, предлагаемую для вычисления функции , блок-схемой, изображенной на рисунке.
Пунктирными стрелками показаны контрольные дуги, для которых будут сформированы соответствующие индуктивные утверждения .
Утверждение соответствует входной дуге и поэтому должно описывать содержимое ленты в начальный момент. Утверждение соответствует выходной дуге и должно описывать содержимое ленты в момент завершения работы программы. Утверждение относится к дуге, разрезающей единственный имеющейся в блок-схеме цикл, поэтому должно быть сформулировано так, чтобы ему удовлетворяло содержимое ленты каждый раз, когда в программе реализуется переход по рассматриваемой дуге.
Напомним, что основное требование, предъявляемое к утверждениям , заключается в том, чтобы была возможность доказательства индуктивных шагов:
Пусть , — исходные значения аргументов из множества , тогда требуемые утверждения можно сформулировать следующим образом:
P_1 — содержимое ленты равно
— существует такие, что содержимое ленты равно
— содержимое ленты равно
Доказательство индуктивных шагов легко получить, выписывая содержимое ленты после каждого оператора в соответствующем пути. Читателю предоставляется возможность проделать это самостоятельно и убедиться в правильности программы, предлагаемой в формулировке леммы 3. Не забудьте доказать завершаемость исследуемой программы.
Лемма 4 (о минимизации). Если функция вычислима программой , то функция , полученная из нее по схеме минимизации, вычисляется программой
Доказательство. Представим программу, предлагаемую для вычисления функции , блок-схемой c указанными контрольными точками , , .
Пусть — исходные значения аргументов, тогда для доказательства частичной корректности предлагаемой программы можно воспользоваться следующими индуктивными утверждениями:
— содержимое ленты равно
— существуют , такие, что содержимое ленты равно
— содержимое ленты равно
Требуется доказать следующие индуктивные шаги.Доказательство индуктивных утверждений и завершаемости программы мы оставляем читателю в качестве упражнений.
Заметим, что в доказательствах лемм 3 и 4 при рисовании блок-схемы мы несущественно отступили от текстов программ, данных в их формулировках, а при доказательстве леммы 2 не выписывали индуктивных утверждений, так как в представлении программы блок-схемой нет циклов. Обращаем внимание на то, что правильность блоков, из которых составлены программы, мы не подвергаем сомнению.