Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
40
Добавлен:
10.02.2015
Размер:
334.79 Кб
Скачать

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), . . . }.

Соседние файлы в папке теория вычислительной сложности