
теория вычислительной сложности / bk
.pdf
2.3. Лекция 3. GOT O-программы, |
W HILE-программы |
11 |
2.3Лекция 3. GOT O-программы, W HILE-программы
Сначала выполним следующее задание:
Фирма LOOPSOFT продает язык программирования LOOP++. Дополнительно к операторам LOOP -программ язык допускает следующую конструкцию
IF xi = 0 THEN A ELSE B END
При этом A и B произвольные LOOP ++-программы. Семантика естественна.
Цена LOOP + + существенна выше LOOP . Оправдано ли это, или LOOP + +-программы не способны вычислить больше функций, чем LOOP -программы ?
Ответ на вопрос, как можно предполагать, отрицательный: IF xi = 0 T HEN A ELSE B END эквивалентно:
xa := sg(xi); xb := sg(xi) ;
LOOP xa DO A END; LOOP xb DO B END;
GOT O-программа состоит из последовательности программ Ai, каж-
дая с меткой Mi:
M1 : A1 ;
M2 : A2;
. . .
Mk : Ak
Каждая из Ai - это
•LOOP -программа или
•GOT O-переход:
–if xi = 0 then goto Mi или
–goto Mi или
–halt
GOT O-вычислимость определяется аналогично LOOP -вычислимости. Докажем, что f(n) = bn2 c - LOOP -вычислима.
12 |
Глава 2. Вычислимость |
x2 := 1 ;
LOOP x1DO;
if x2 = 0 then x0 := x0 + 1; end;
x2 := sg0(x2); END
Является ли LOOP -вычислимой следующая функция:
1, если n = 0 или n = 1,
g(n) = g(n/2), если n 6= 0 или n-четно,
g(3n+1), в противном случае
Функция g(n) - GOT O-вычислима:
A : if x1 = 0 then goto Mend; end ; x2 := x1 −· 1;
if x2 = 0 then goto Mend; end; x2 := x1 −· 2f(x1);
if x2 = 0 then goto M1; end;
M1 : x1 := 3x1 + 1; goto A;
M2 : x1 := f(x1); goto A;
Mend : x0 := 1
W HILE-программа определяется аналогично LOOP -программе:
1.xi := 0 - W HILE-программа,
2.xi := xi + 1 - W HILE-программа,
3.Если A, B - W HILE-программы, то
•A; B - W HILE-программа,
•LOOP xi DO A END - W HILE-программа,
•W HILE xi 6= 0 DO A END - W HILE-программа.
Семантика такой программы естественна, и W HILE-вычислимость определяется аналогично LOOP -вычислимости.
Функция g(n) - W HILE-вычислима.

2.3. Лекция 3. GOT O-программы, |
W HILE-программы |
13 |
x0 := x1 + 1; WHILE x0 6= 1 DO
IF x0 MOD 2 = 0 THEN x0 := x20
ELSE x0 := 3 · x0 + 1
END END
Очевидно, что любая LOOP -вычислимая функция GOT O- и W HILEвычислима.
Лемма 1 Любая W HILE-вычислимая функция GOT O-вычислима.
Доказательство. Пусть f вычислима W HILE-программой W . Построим из W реккурсивно GOT O-программу G.
Если W -LOOP -программа, то G=W . Пусть W не LOOP -программа:
•W = A; B для W HILE-программ A и B. По индуктивному предположению существуют GOT O-программы GA и GB для A и B.
Заменим метки в GB так, чтобы они не встречались в GA и дадим
метку MB первому оператору GB: получим G0B. G0A получается из GA заменой HALT на GOT O MB. Очевидно, G0A; G0B вычисляет f.
•W = LOOP xi DO AEND для W HILE-программы A. По индуктивному предположению существует GOT O-программа GA для A. Пусть xj не встречается в GA. G для f выглядит следующим обра-
зом.
xj := xi ;
M1 : if xj = 0 then goto Mend; end;
G0A; { получается из GA заменой
HALT на GOT O M2}
M2 : xj := xj −· 1; goto M1;
Mend : HALT
•W = W HILE xi 6= 0 DO AEND эквивалентна
M1 : if xj = 0 then goto Mend; end;
G0A; { получается из GA заменой
HALT на GOT O M2} goto M1;
Mend : HALT

14 |
Глава 2. Вычислимость |
|
|
|
|
Лемма 2 Любая GOT O-вычислимая функция W HILE-вычислима.
Доказательство. Пусть f вычислима GOT O-программой G:
M1 : A1; M2 : A2; . . . Mk : Ak,
где Ai-простейшие операторы.
Заведем новую переменную xM , в которой устанавливается какая Ai
выполняется следующей. xM := 1 ;
W HILE xM 6= 0 DO if xM = 1 then A01; end; if xM = 2 then A02; end;
. . .
if xM = k then A0k; end; end,
где A0i определяется следующим образом:
•Ai; xM := xM + 1 , если Ai - LOOP -программа;
•xM := xM + 1; if xj = 0 then xM := i; end ,
если Ai - GOT O-программа: if xj = 0 then goto Mi;
•xM := i , если Ai=goto Mi;
•xM := 0 , если Ai=HALT .
Следствие 1 (Нормальная форма Клини для W HILE-поограмм.) Каждая W HILE вычислимая функция вычисляется W HILE-программой с одним W HILE-циклом.
Таким образом, верна
Теорема 4 W HILE-вычислимость и GOT O-вычислимость эквивалентны.
2.4. Лекция 4. Машины Тьюринга |
15 |
2.4Лекция 4. Машины Тьюринга
Определение машины Тьюринга (M =< Q, Σ, , δ, 2 >). Графовое представление. Конфигурация машины Тьюринга. T M-вычислимость. Различные определения машин Тьюринга (наше определение: одно финальное состояние, после перехода в которое МТ останавливается; функция переходов всюду определена, кроме финального состояния; движение головок в обе стороны неограничено, входная лента является выходной, успешная работа завершается установкой головки в начале ее содержимого; содержимое остальных лент в начале работы пустое, в конце работы несущественно). Примеры. Эквивалентность многоголовочной и одноголовочной машины Тьюринга (моделирование перемещения двух головок перемещением одной).
Теорема 5 Каждая W HILE-вычислимая функция - T M-вычислима.
Доказательство. Пусть функция f : INt → IN - W HILE-вычислима программой P , имеющей t LOOP -циклов и переменные x0, . . . , xk. Соответствующая T M, имеет кроме входной, не более k + t лент и работает следующим образом. Если P получает аргументы n1, . . . , nk в переменных x1, . . . , xk, T M имеет на входной ленте bin(n1)# . . . #bin(nk). Сначала T M копирует bin(ni) на i-ю ленту для всех i = 1, k и освобождает 0-ю ленту.
Моделирование шагов P определим индуктивно:
1.xi := 0 - T M записывает на i-ю ленту 0;
2.xi := xi + 1 - T M прибавляет к содержимому i-й ленты 1;
3.A; B - начальное состояние T MB, моделирующей B, отождествляется с финальным состоянием T MA, моделирующей A, множества состояний обеих машин не пересекаются;
4.LOOP xi DO A END - пусть l-я лента не используется программа T MA, моделирующая A; тогда на эту ленту копируется содержимое i-й ленты и работа T MA повторяется до тех пор пока на этой ленте не получится 0: из содержимого ленты вычитается единица после каждой отработки T MA (удобно после этой операции оставлять головку l-й ленты на самой левой единице записанного числа);
16 |
Глава 2. Вычислимость |
5.W HILE xl 6= 0 DO A END - аналогично предыдущему пункту (LOOP ): работа осуществляется непосредственно с l-й лентой.
Следует заметить, что работа машин Тьюринга моделирующих этапы работы программы P , немного различаются. Машина, начинающая работу первой, переносит на ленты, как отмечалось, содержимое переменных. Остальные машины осуществляют лишь моделирование операторов P . При этом в начале работы головки лент переменных от 0-й до k-й стоят в начале содержимых. Множества состояний промежуточных машин Тьюринга не должны пересекаться, финальным состоянием результирующей машины объявляется финальное состояние последней машины.
Теорема 6 Каждая T M-вычислимая функция - GOT O-вычислима.
Доказательство. Пусть функция от k переменных f вычислима одноголовочной T M M =< Q, Σ, , δ, 2 >. Идея моделирования T M состоит в следующем. Конфигурация a1 . . . anqib1 . . . bm кодируется через стеки L = [a1 . . . an) и R = [bm . . . b1) с верхними элементами an и b1 и переменную состояния xs, содержащую i. При этом вместо символов алфавита
иобозначений состояний используются числа - их номера. Обозначим номер aj через j(aj). Ранее было показано, что взаимно-однозначное кодирование стеков натуральными числами и выполнение стековых операций LOOP -вычислимо. Занесем числовые коды стеков в переменные xR
иxL.
Моделирование M состоит из нескольких фаз. В первой фазе переписываем в R значения аргументов функции. Так как в M они записаны в бинарном виде запись в R осуществляется точно также:
{xR := 0}
Mk : Ak; push(R, j(0#0)); Mk−1 : Ak−1; push(R, j(0#0));
. . .
M1 : A1;
{xs := 0} {xL := 0}
Здесь Ai осуществляет двоичную кодировку xi:
2.4. Лекция 4. Машины Тьюринга |
17 |
Mi : y := xi DIV 2; if 2 y = xi
then push(R, j(000)) else push(R, j(010)) end;
xi := y;
if xi 6= 0 then GOT O Mi end ;
Во второй фазе осуществляется моделирование шагов работы M:
B0,0 : . . . ;
B0,1 : . . . ;
. . .
Bm,k : . . . ; goto B0,0;
Здесь Bi,j : . . . осуществляет моделирование чтения в i-м состоянии символа aj:
• Если m-номер финального состояния,
Bm,j : if xs = m then goto C end;
•Если δ(qi, aj) = (qi0 , aj0 , M),
Bi,j : if (xs = i) and (top(R) = j) then xs := i0;
pop(R); push(R, j0);
– Если M = L,
if empty(L) then push(R, j(020));
else push(R, top(L)); pop(L);
end; end;
– Если M = R,

18 |
Глава 2. Вычислимость |
push(L, top(R)); pop(R);
if empty(R) then push(R, j(020)); end;
end;
В третьей фазе результат, лежащий в R переписывается в x0.
C : if not(empty(L)) or empty(R) then goto UNDEF ; end;
D : y := top(R);
if(y 6= j(000))and(y 6= j(010)) then goto UNDEF ; end; if(y = j(000)) then x0 := 2x0 else x0 := 2x0 + 1;;
end; pop(R);
if not(empty(R)) then goto D; end;
Тезис Черча. Класс интуитивно-вычислимых функций совпадает с классом T M-вычислимых функций.
Любую машину Тьюринга с = {0, 1, #, 2} можно закодировать в алфавите, например, {0, 1, #, 2,0 ,0 , B}, перечислив все пятерки, определяющие функцию переходов: "состояние, читаемый символ (код 2 - B), новое состояние, записываемый символ, код направления движения головки". Разделив эти пятерки символом # и поставив в конце кода МТ ##, получим однозначное кодирование < M > машины Тьюринга M. Очевидно, можно построить машину Тьюринга U, которая, получая на вход < M > w, моделирует работу M на слове w, то есть если M(w) = v, то U(< M > w) = v, а если M(w)-неопределено, то и U(< M > w)- неопределено. Такая машина Тьюринга называется универсальной машиной Тьюринга.
2.5Лекция 5. Разрешимость, рекурсивная перечислимость
Один из важных вопросов при исследовании свойств того или иного языка, это задача принадлежности слова языку: x L. Можно определить
2.5. Лекция 5. Разрешимость, рекурсивная перечислимость |
19 |
характеристическую функцию языка χL : Σ → {0, 1} следующим образом:
χL(x) = |
1, если x L |
|
0, в противном случае |
Определение 1 Множество (язык) L Σ - разрешимо, если его характеристическая функция χL вычислима.
Язык K = {< M > |M при вводе < M > останавливается после конечного числа шагов}
называется специальной, или частичной, проблемой остановки.
Теорема 7 Cпециальная проблема остановки - неразрешима.
Доказательство. Пусть теорема неверна, тогда вычислима функция χK некоторой машиной Тьюринга M. Рассмотрим машину Тьюринга M0, которая работает следующим образом:
Input(x);
Стартуем M с x.
Если M(x) = 1, зацикливаем M
в противом случае(M(x) = 0)output(1). Как работает M0 при вводе < M0 >?
M0 на < M0 > останавливается тогда и только тогда (по определению M0),
когда M(< H0 >) = 0 , т.е. по определению M, когда < M; >6 K, т.е. по определению K, когда M0 на < M0 > не останавливается.
Так как построение M0 из M вполне корректно, то невозможно существование M .
Можно определить псевдохарактеристическую функцию языка χ0L : Σ → {0, 1} следующим образом:
χ0 |
(x) = |
|
1, если x L |
L |
|
неопредлена в противном случае |
Определение 2 Множество (язык) L Σ - полуразрешимо, если его псевдохарактеристическая функция χ0L вычислима.
Очевидно, что специальная проблема остановки - полуразрешима. Действительно, соответствующая K машина Тьюринга проверяет является ли входное слово y кодом машины Тьюринга M. В случае положительного ответа M запускается на y. После остановки M содержимое ленты заменяется на 1.

20 |
Глава 2. Вычислимость |
Теорема 8 Множество L разрешимо тогда и только тогда, когда L и L полуразрешимы.
Доказательство. Необходимость очевидна.
Достаточность. Пусть L и L полуразрешимы, а M и M0 вычисляют χ0L и χ0L соответственно. Запускаем M и M0 паралельно. Рабоиа заканчивается, когда одна из 2 машин остановится с выходом 1. Результатом будет 1, если M выдает 1, и 0, если M0 выдает 1.
Следствие 2 K - неразрешимо и неполуразрешимо.
Язык H = {< M > #w|M при вводе w останавливается после конечного числа ша называется (общей) проблемой остановки.
Теорема 9 Проблема остановки - неразрешима.
Доказательство. Покажем, что если H разрешимо, то и K разрешимо. Пусть характеристическая функция χH вычислима. Машина Тьюринга для K при вводе y выдает χH(y#y). Очевидно, эта машина вычисляет χK. Конструкция в доказательстве теоремы называется сводимостью: про-
блема K сводится к H (K ≤ H).
Определение 3 Множество (проблема) A сводится к множеству B, если существует всюду опредленная вычислимая функция f такая, что для любого x выполняется x A f(x) B.
Интересно, что верно и обратное: H сводится к K (H ≤ K). Эта сводимость демонстрируется в доказательстве следующей теоремы:
Теорема 10 H - полуразрешимо.
Доказательство. Псевдохарактеристическая функция χ0K вычислима. Машина Тьюринга для H при вводе y зацикливается, если y не имеет форму < M > #w для некоторой машины Тьюринга M. Построим машину Тьюринга M0, которая независимо от ввода моделирует работу M на w. Вычислим χ0K(M0).
Очевидно, машина, полученная в результате, вычисляет χ0H.
Определение 4 Множество A называется рекурсивно-перечислимым, если совпадает с областью значений вычислимой функции f: IN → Σ , т.е. A = {f(0), f(1), . . . }.