DJVU-STUDENT.NAROD.RU - информационный сайт для студентов и школьников
не определены при x > 1. Наименьшее среди y Î N, удовлетворяющих 0 – Sg(y) = 0, будет равно 0, а наименьшее среди y, при которых 1 – Sg(y) = 0, равно 1. Следователь-
но, f(0) = 0, f(1) = 1, и f(x) не определены при x > 1. Функция ôx – Sg(y)ô примитивно рекурсивная, значит, f(x) – частично рекурсивная.
Пусть А – подмножество натуральных чисел. Частичной характеристической
функцией множества А называется частичная функция CA: N ® N, равная 0 в точках множества А и не определенная вне А. Множество А называется частично рекурсивным, если его частичная характеристическая функция частично рекурсивна. Множество А называется примитивно рекурсивным, если функция N ® N, равная 0 на А и равная 1 вне А, является примитивно рекурсивной.
Теорема. Пусть f: N → N – примитивно рекурсивная функция, A N – примитивно рекурсивное множество. Тогда частичная функция fA: N → N, определенная как
fA(x) = f(x) для x A и неопределенная при x A, является частично рекурсивной.
Доказательство. Легко видеть, что fA(x) = f(x) + CA(x). Поэтому fA частично рекурсивна, как сумма частично рекурсивных функций.
Понятие частично рекурсивной функции является одним из главных в теории алгоритмов. Частично рекурсивная функция вычислима с помощью процедуры, отвечающей нашему представлению об алгоритме. С другой стороны, все известные до сих пор уточнения определения алгоритма не привели к классу вычислимых функций, который был бы шире класса частично рекурсивных. Поэтому общепринятой является следующая гипотеза:
Тезис Чёрча. Класс алгоритмически (или машинно) вычислимых частичных числовых функций совпадает с классом всех частично рекурсивных функций.
7.2. МАШИНЫ ТЬЮРИНГА
Рассмотрим гипотетическую «машину», имеющую конечное множество Q внутренних состояний и одну бесконечную ленту, разделенную на ячейки, по которой перемещается устройство для чтения и записи, именуемое головкой. В каждый из такт времени головка читает содержимое текущей ячейки, затем пишет в эту ячейку новый символ и перемещается влево или вправо, или остается на месте. Текущей ячейкой становится новая ячейка, она будет той, на которую указывает головка. Символы принадлежат конечному алфавиту А.
Пример 1
Алфавит состоит из цифр 0,1,…,9. На ленте написано слово:
|
… |
|
|
2 |
|
0 |
|
9 |
|
3 |
|
1 |
|
|
… |
|
и головка |
|
|
|
|
|
|
|
|
|
|
||||||
показывает на 9. Тогда в следующий такт времени головка может записать |
||||||||||||||||
вместо 9 цифру 8 и переместиться влево. После этого она будет показывать на 0. |
||||||||||||||||
Перейдем к точным определениям. |
|
|
|
|
|
|
|
|
|
|||||||
Машиной Тьюринга T = |
(A,Q,p) называется тройка, состояний из непустых ко- |
|||||||||||||||
нечных множеств A |
= {a0,a1,…,an}, Q |
= |
{q0,q1,…,qm} |
и |
частичной функции |
|||||||||||
p: Q ´ A ® Q ´ A ´ {L,S,R}.
Здесь {L,S,R} – множество, состоящее из трех элементов. Оно одинаково для всех машин Тьюринга и интерпретируется командами перемещения головки: L – влево, R – вправо, S – стоять на месте.
Множество А называется внешним алфавитом, его элементы – буквами. Буквы a0 и a1 для всех машин Тьюринга одинаковы: a0 = 0, a1 = 1. Элементы q0,…,qm называются внутренними состояниями.
DJVU-STUDENT.NAROD.RU - информационный сайт для студентов и школьников
Частичная функция p называется программой и записывается или с помощью прямоугольной таблицы, в которой в клетке (qi,qj) записывается тройка
p(qi,qj) Î Q ´ A ´ {L, S, R}, или с помощью списка команд вида:
∙qiaj ® qkae означающей (qk,ae,S) = p(qi,aj),
∙qiaj ® qkaeR означающей (qk,ae,R) = p(qi,aj),
∙qiaj ® qkaeL означающей (qk,ae,L) = p(qi,aj). Эти команды обозначим через T(i,j).
Машиным |
словом, |
или конфигурацией, называется слово вида: aqkaeb, где |
0 £ k £ m, 0 |
£ e £ n, |
a и b – слова (возможно, пустые), составленные из букв ал- |
фавита А. Для обозначения слова аа…а, в котором буква а повторяется x раз, пишем: ах. Машинное слово: aqkaeb интерпретируется как положение, при котором головка указывает на символ ae, машина находится во внутреннем состоянии qk, слева от текущей ячейки находятся символы, составляющие слово a, а справа – слово b. В примере 1
машинное слово равно: 20qi931 для некоторого i.
Пусть задана машина Тьюринга Т и машинное слово M = aqiajb, где 0 £ i £ m. Обозначим через MT’ слово, которое получается (за один такт) по правилам:
1)для i = 0 положим MT’ = M;
2)для i > 0 выполняем одно из следующих трех преобразований:
∙ если T(i,j) = qiaj ® qkae, то MT’ = aqkaeb;
∙в случае T(i,j) = qiaj® qkaeR,
если b не пусто, то MT’ = aqkaeb, иначе MT ’= aqkaea0;
∙в случае T(i,j) = qiaj ® qkaeL,
если a = a1as для некоторых a1 и as, то MT’ = a1qkasaeb,
иначе (т.е. если a пусто) MT’= qka0aeb (дополнительная инструкция). Положим: MT0 = M, MT(n+1) = (MT(n))’.
Будем говорить, что машина Т перерабатывает машинное слово М в слово М1, если MT(n) = M1 для некоторого n ³ 0. Пишем: М ÞT M1, если Т перерабатывает М в М1, и при этом не используется дополнительная инструкция (из правил образования слова MT’).
Говорим, что машина Т вычисляет частичную функцию f: Nn ® N, если выполнены следующие условия:
∙ если (x1,…,xn) Î Dom(f), то машина Т останавливается, т.е. перерабатывает
слово q101x10…1xn0 в некоторое слово aq0b, и при этом aq0b содержит f(x1, …,xn) вхождений символа 1 (здесь символы x1, … , xn обозначены через x1, ..., xn) ;
∙ если (x1,…,xn) не принадлежит Dom(f), то машина, начиная со слова M = q101x10…1xn0, работает бесконечно, т.е. q0 не входит в MT(n) ни для каких n ³ 0.
Говорим, что машина Т правильно вычисляет частичную функцию f: Nn ® N, если выполнены условия:
∙если (x1,…,xn) Î Dom(f), то q101x10…1xn0 ÞTq001f(x1,…,xn)0…0;
∙в противном случае машина, начиная со слова q101x10…1xn0, работает бесконечно. Частичная функция f называется (правильно) вычислимой, если существует ма-
шина Тьюринга, которая (правильно) вычисляет f.
Пример 2
Пусть машина Тьюринга T = {A, Q, p}, A = {0,1}, Q = {q0,q1,q2} задана с помощью таблицы:
q0 |
q1 |
q2 |
DJVU-STUDENT.NAROD.RU - информационный сайт для студентов и школьников
0 |
q20R |
q01S |
1 |
|
q21R |
Рассмотрим слово: M |
= q1011…10. На первом |
шаге выполняется команда |
q10→q20R. Получаем: MT’ = 0q211…10. Затем, до тех пор, пока слово не превратится в слово 011…1q20, будет выполняться команда q21 → q21R. После этого будет выполне-
на команда q20 → q01, и машина остановится, ибо q0 соответствует состоянию остановки. Входное слово, состоящее из x единиц, означает, что аргументом вычисляемой функции является число x. Поскольку на выходе получается x + 1 подряд идущих единиц, то машина вычисляет функцию: s(x) = x + 1.
Пример 3
Вычисление функции: s(x) = |
x+1 в примере 2 не является правильным. Построим машину Тью- |
|||||||
ринга для правильного вычисления: |
|
|
|
|
|
|
||
|
|
q0 |
|
q1 |
q2 |
q3 |
q4 |
|
|
0 |
|
|
q20R |
q31R |
q40L |
q00L |
|
|
1 |
|
|
|
q21R |
q41L |
q41L |
|
Упражнение
Построить машину Тьюринга, правильно вычисляющую функцию: o(x) = 0. Можно построить машины Тьюринга для правильного вычисления функций:
Imn(x1,…,xn), 1 ≤ m ≤ n.
С помощью построения различных машин Тьюринга доказывается, что операторы суперпозиции, примитивной рекурсии и минимизации переводят правильно вычислимые функции в правильно вычислимые. Отсюда вытекает правильная вычислимость всех частично рекурсивных функций. Более того, справедливо и обратное утверждение.
Теорема 1. Частичная функция правильно вычислима тогда и только тогда, когда она частично рекурсивна.
Тезис Чёрча и алгоритмически неразрешимые проблемы
Поскольку класс частично рекурсивных функций совпадает с классом правильно вычислимых, то тезис Чёрча равносилен предположению о том, что для любой алгоритмически вычислимой функции существует правильно вычисляющая её машина Тьюринга.
Применим это для доказательства алгоритмической неразрешимости проблемы остановки машины Тьюринга, которая заключается в нахождении алгоритма, определяющего по машине Тьюринга и начальным данным, остановится ли машина через конечное число шагов. Так как машина Тьюринга задается с помощью конечного набора символов и слов, то число машин Тьюринга счетно и может быть выписано в последовательность: T0, T1, … .
Теорема (о проблеме остановки). Пусть T0,T1, T2,… последовательность, перечисляющая все машины Тьюринга, h(n,k) – функция, принимающая значение 1, если машина Tn останавливается, начиная работу с машинного слова q101k0, и принимающая
значения h(n,k) = 0 в других случаях. Тогда функция h: N2 → N не является частично рекурсивной. Иными словами, нет алгоритма, определяющего, остановится ли машина Тьюринга, если на вход ей подать число k.
Доказательство. От противного. Пусть функция h(n,k) частично рекурсивна. Тогда частичная функция:
f(n) = My[h(n,n) + y = 0]
тоже частично рекурсивна. Существует номер m такой, что f правильно вычисляется с помощью машины Tm. Тогда f(m) = 0, если и только если h(m,m) = 0. Согласно определению функции h равенство h(m,m) = 0 имеет место тогда и только тогда, когда машина Tm не останавливается, начиная со слова q101m0. Но f правильно вычисляется с
