Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [ 50 ] 51 52 53 54 55 56 57 58 59 60

программу вида 0:

стоп

, 1:

, . . п:

где t,i означает одну из операций х2, хЗ, Х5,: 30. Все эти операции перерабатывают числа вида 2°35 в числа того же вида. Поэтому, начиная перерабатывать число 2* по программе (2), мы после к-то шага вычислений получим (см. и. 14.3) пару вида (2"•3•5 i), где 2•З-5"= - полученное в этот момент число, а г - номер приказа в программе (2), который следует далее выполнять над числом 2•3-5=.

С парой (2° • 3-5", i) сопоставляем конфигурацию (а, Ь, с; i) трехленточной машины Минского, име1ош;ей внутренние состояния до, д, . . ., д. Нам остается подобрать программу (1) машины М так, чтобы выполнялось условие: если алгоритм А переводит пару (2-3-5 i) в пару (2"-3"»5, /), то машина М должна переходить из конфигурации (а, Ь, с; i) в конфигурацию (и, v, w, j).

Эта цель, очевидно, будет достигнута, если мы поступим следующим образом:

а) Если t,i = : 30, то вносим в программу М команды

qtOOO qaJiTyTy, qtabc -> q.TJJ, (abс ф 0).

б) Если 1,1- х2, то в программу М вносим команды

даЬс -> g.T-iToT, (а, Ь, с = О, 1).

в) Если ti - хЗ, то вносим команды

qtabc- да.ТоТ-уТ,.

г) Еслп t,i = X 5, то вносим кодшнды

qiabc -> q.ToToT-y.

Так как алгоритм А перерабатывает пару (2*, 1) в пару (2W, 0), то машпна М с командами а) - г) из конфигурации {х, О, 0; 1) переходит в конфигурацию (/ {х), О, 0; 0), что и требовалось.

Рассмотрим теперь более детально двухленточные машины Мпнского. Пусть qo, q-y, . . ., g,, - внутрепнпе состояния какой-нибудь двухленточноп машины Минского М. Тогда для полного задания машины М достаточно

Рис. 4

задать ее программу, состоящую из команд вида qiab длТТу,

удовлетворяющих условию (2).

Далеко не все частично рекурсивные функции вычислимы на двухленточных машинах Минского в указанном выше смысле. Напри.мер, не существует двухленточной машины Минского, перерабатывающей х ъ х (см. Б а р -3 д и и ь [1]). Тем не менее, если значения аргумента и функции кодировать степенями двойки, то вычислимость частично рекурсивных функций восстанавливается.

Теорема 2 (Минский [1]). Для каждой частично рекурсивной функции f{x) существует двухленточ-ная машина Минского, которая для любого натурального X перерабатывает число 2 в число 2/<=), если / {х) определено, и работает безостановочно, не переходя в заключительное внутреннее состояние qo, если / {х) не определено.

Для краткости условимся тройкой (а, Ь, д,) обозначать ту конфигурацию машины Минского, при которой д - внутреннее состояние машины, & а, b - расстояния от воспринимаемых машиной ячеек до левых концов первой и соответственно второй лент. Например, (О, 2; д;) есть конфигурация, определенная машинными словами gjl, lOgjO и изображенная на рис. 4. Формулой (а, Ь; qi) \- (с, d; qj) будем обозначать утверждение, что машина, начав работать в конфигурации (а, Ь; qi), через конечное число тактов работы приобретет конфигурацию (с, d; q). Если машина из конфигурации (а, Ь; qi) неносредственно переходит в конфигурацию (с, d; qj), то пишем

(а, Ь; qi) (с, d; qj). (3)

Как уже говорилось, задать машину Мпнского - это значит указать ее программу. Однако вместо того, чтобы указывать команды, составляющие программу машины, мы будем писать преобразования (3), выио.лняемые машиной. При этом следует иметь в впду такие обстоятельства. Пусть, например, указывается, что машпна выполняет



стон

, 1:

«1

, . . ., s:

вычисляет функцию g {x) и пусть для некоторой магиини Минского М с внутренними состояниями до, д, . . ., gs, gib • •, 4si = 1, 2, . . .) имеем

(z, 0; g;) !- Hi (z), 0; gaj), если t,i (z) определено, (7) (z, 0; qi) - (z, 0; gg.), если (z) не определено. (8)

Тогда машина М вычисгяет ту же функцию g {х), что и алгоритм А.

В самом деле, пусть, начиная с заданного чпсла х, алгоритм А после т шагов дает чпсло х,п и указание выполнять приказ с номером i. Покажем, что в этом слчае

(х, 0; gi) 1- {.г,п, 0; г)-

Для т = о это утверждение тривиально. Пусть оно верно для какого-нибудь т. Если t,i {Хт) определено, то алгоритм А после {т -j- 1)-го шага дает число (Хт) и указание выполнять приказ с номером а. Но в этом случае

(х,п, 0; qi) h ili im), 0; дщ)

и потому

(х, 0; gi) [- Zi (хт), 0; qa{).

Аналогично доказывается это соотношение и в случае, когда li (Хт) не определено.

Пусть теперь алгоритм А перерабатывает число х в число у. Это значит, что через какое-то число шагов т алгоритм А дает число у и указание выполнять приказ с номером 0. По доказанному

{х, 0; gi) Ь {у, 0; до),

т. е. машина М перерабатывает х ъ у.

Если, начиная с х, алгоритм А работает вечно, то получаем бесконечную последовательность

{х, 0; gi) 1- («1, 0; g;,)

показывающую, что машина М в этом случае также работает вечно.

Перейдем к доказательству основной теоремы. Пусть / (х) - заданная частично рекурсивная функция. Согласно теореме 2 из и. 14.3 существует операторный алгоритм А, перерабатывающий 2 в 2/(=), программа которого имеет вид (6), где i-й приказ есть или

(с = 2, 3, 5),

:с а

(с = 30).

(10)

Пусть Л/ - машпна Минского с внутреннплш состоя-нпямп до, gi, . . ., g„, каждое нз которых соответствует определенному приказу программы (6), и донолните.чьными состояниями qij (i = 1, . . .; j = О, 1, . . .), точное чпсо которых будет указано ниже. Нам надо найтп такую программу для машины Л1, чтобы былп выполнены условия (7), (8) леммы 1. Рассмотрим какое-нибудь i, 1 i s.

преобразование

(2, 5;д,)~>(1, 6;д,.). (4)

Отсюда следует, что машина выполняет команду

qtOO -> qjTiT i

И потому для любых положительных а, b

{а, Ь; дг) -> (а - 1, 6 + 1; q). (5)

В то же время наличие в программе машины преобразования (4) еш;е ничего не говорит о том, во что перейдут конфигурация (О, Ь; gi) или конфигурации (6, 0; д,), (О, 0; д,), где 6 > 0. Поэтому, присоединив к программе машины преобразование (4), мы не можем присоединять к программе преобразования, противоречашие преобразованиям (5), но все еш;е можем по произволу присоединить преобразования

(О, Ь; qi) (и, у; д) {и = О, i; v = Ь, b ± 1), {b, 0; qi) -> К, Vx, gp) {Vi = 0, i;ui = b, b ± 1), (0, 0; g;) -> («2, щ; qv) (Щ, Щ = 0, 1).

Нам надо для каждой частично рекурсивной функции / (х) указать программу машины Минского, перерабатывающей 2 в 2W. Нижеследующая лемма сводит эту задачу к двум простым частным случаям.

Лемма!. Пусть операторный алгоритм А с программой



Пусть i-ш приказ в программе (6) имеет вид (9). Постараемся написать такую серию команд для машины М, содер-жаш;их лишь внутренние состояния qi, qi, . . ., go Ча, в результате которой условие (7) для этого i будет выполнено. Пусть а > 0. Вносим в программу машины ikf следующую серию преобразований:

(а, 0; qi) -> {а, 1; д)

-> {а, 2; qtz) ->...-> (а, с; qt) (а - 1, с; qt) (И)

и дополняем ее еще преобразованием

{а, 1; qt) {а, 2; q,). (12)

Тогда, если в серии (11) а - 1 О, то в силу команд, отвечающих преобразованиям (И), (12), конфигурация (а - 1, с; qi) далее будет меняться следующим образом:

(а - 1, с; дО (а - I, с -Ь 1; qd) . . .

. . (а - 1, 2с; ?;,) (а - 2, 2с; дО ->

(а - 2, 2с -I- 1; д) ->...-> (О, ас; qt).

Чтобы переставить числа О и ас, дополняем программу преобразованиями

(О, ас; qi) (1, ас - 1; q,) -» (2, ас - 2; q,) . .

. . . {ас, 0; дго) («с, 0; ?„). (13)

В результате условий (И) - (13) для машины М будет гарантировано свойство

(а, 0; qt) \- {са, 0; д„) (а > 0). (14)

Чтобы гарантировать свойство (14) и для а = О, внесем в программу М преобразование

(О, 0; qt) (О, 0; q).

(15)

Итак, внося в программу машины М команды (И) - (13), (15) для тех г, для которых г-й приказ программы А имеет вид (9), мы обеспечим для этих значений i выполнение условпя (7) из летш 1.

Теперь рассмотрим более сложный слчай, когда i-й приказ имеет вид (10). Прежде всего в программу машины М вносим команды, отвечающие для ж > с, г/ > О следующей серии преобразований:

{х, у; qi) (ж - 1, у + 1; qi) (ж - 2, г/ + 1; д)

(а; - с, г/ + 1; д,)- {х - с, у + i; qi), (16)

И команды, отвечающие преобразованиям (13) и (14). Вследствие команд (16) для ж > с, г/ О имеем

{х, у; qd h- {х-с,у + \.; qi)

И, значит,

{х, 0; qi) I- (О, а; : с; gO, если X делится на с. Так как из (16), (13), (14) вытекает (О, X : с; qi) \- {х:с, 0; д),

{х, 0; qi) - {х: с, 0; д»), если х : с определено.

Пусть теперь а; не делится на с, ж = cz -j- г, О < г < с. В силу (16)

. {х, 0; qt) Н {г, z; qi) \- {О, z + 1; qi,).

Нам надо теперь от конфигурации (О, z -Ь 1; qir) перейти к конфигурации {х, 0; gg). Поэтому к программе М добавляем преобразования (z = 1, 2, . . .; г =1, . . ., с - 1)

(О, Z -Ь 1; qir) (1, z; girl) . . . (с, z; gi.) ->

(с -Ы, z - 1; gi,i), (17)

в силу которых

(О, г -Ь 1; qir) - (cz + 1, 0; gi,i). Наконец, добавляя в программу преобразования

(cz + 1, 0; gi,i) -> (cz + 2, 0; qi) -> . . .

. . . -> (cz + r, 0; qi„) {cz + r, 0; gp), (18)

ползучим

{x, 0; qi) [- {x, 0; gg), если ж : с не определено.

Мы видим, что машина Минского с нрогратюй, построенной согласно правилам (И) - (13), (15) - (18), удовлетворяет условиям лелшы 1, что и требовалось.

Так же, как и для одноленточных машин Тьюринга (и. 12.5), для машин Минского естественно формулируются следующие две проблемы.

1) Проблема остановки. Задана машина Минского М {своей програмлюй). Указать алгоритль, рас-познающийте конфигурации {а, Ъ; q), начиная с которых машина останавливается через конечное число тактов работы.



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [ 50 ] 51 52 53 54 55 56 57 58 59 60