Анимация
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

совокуиности пар <а (i), р (i)> (t = О, 1, . . .), где а, fj - подходящие примитивно рекурсивные функции. Обозначим через v (х) выражение 2 и введем частичную функцию W (х), полагая

= 32;, если exoa;7oc(exia;),

не определено, если exoa; = a(exia;).

Функция W (х) частично рекурсивна с рекурсивной областью определения. Легко убедиться, что операторный алгоритм, имеющий проградгму:

w{x)

стоп

; 1:

; 2:

2 3 1

; 4:

вычисляет как раз функцию / (х). В самом деле, выполнив над произвольным числом х приказ 1, получим пару (2-, 2). Если X Ф а (0), то, выполнив над 2* приказ 2, получим пару {2-3, 2). Если х Ф а {!), то, выполнив над 2••3 приказ 2, получим пару (2=-3, 2.) и т. д. Процесс продолжается до тех пор, пока, наконец, получится пара (2-3", 2), для которой х = а (п). Так как w (2-•3") не определено, то над числом 2*-3" теперь надо выполнить приказ 3, в результате которого получим пару {?г, 4). Выполнив над п приказ 4, получим пару (Р (п), 0). Так как х = а (п), то (п) = f (х) и, следовательно, алгоритм перерабатывает х в f (х), что и требовалось.

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

Теорема 2 (Минский [1]). Для каждой частично рекурсивной функции i [х) существует операторный алгоритм, программа которого состоит из приказов вида

стоп

»

.d

= 2, 3, 5; d

= 2.3-5),

для любого X перерабатывающий 2 в 2<).

Иными словами, любая частично рекурсивная функция / [х) вычислима при помощи подходящего алгоритма программа которого состоит из приказов вида (4), при условии, что значения аргумента и функции кодируются числами 2", 2(. Из доказательства теоремы будет видно, что в ее формулировке числа 3, 5 можно заменить любыми другими взаимно простыми нечетными числами.

Прежде всего покажем, как для любой машины Тьюринга £ с внешним алфавитом {О, 1} можно построить программу операторного алгоритма, выполняющего, грубо говоря, ту же работу, что и машина £. Мы можем предполагать, что в процессе работы машина % не надстраивает ленты слева. Пусть qo, q, . . ., q - внутренние состояния машины £. Мгновенное состояние всей машины £ описывается машинным словом

у = brbr-i . . . boqiOoay . . . а (bx, = О, 1), (5)

которое мы условимся кодировать парой чисел (2"•3 i), где

а = ао -Ь ai-2 --. . . . + as-2, b = bo + Ьу2 + . . . + Ьг-2Г

В зависимости от i и ао машина £ перейдет из конфигурации р в конфигурацию f. Пусть конфигурация кодируется парой {2-3, ]). Число 2°.3* зависит от чисел 2-3, i, ао, а число / зависит лишь от i и ао. Поэтому полагаем / = h (i, ао).

Но чпсло ао само есть функция числа z = 2"-3 :

ао =

0, если exoz четно,

1, если exoZ нечетно.

Следовательно, с и d будут зависеть от z = 2°-3 и г, п мы можем ввести для каждого i = 1, . . ., п две частичные функцпп Wio, н/ц, полагая по определению

то (z) "41 (Z)

= 2-3, если ex6z четно,

не определено, еслп ехо z нечетно,

=i2=3, если exflS нечетно,

не определено, если exoZ четно.



стоп

h{l, 0)

, 1*:

h{i, 1)

h{n, 0)

h{n, 1)

Пара приказов

h{i, 0)

h{i, 1)

переводит указанную выше пару чисел (2-3, i), отвечаю-щих конфигурации j, в пару чисел (2=-3, /), отвечаюш;их конфигурации f. В частности, если машина £ перерабатывает какую-нибудь начальную конфигурацию

bbr-i . . . boqiaoux . . . в заключительную конфигурацию

ddu-i . . . daqacac-x . . . с,,

(9) (10)

то алгоритм А с программой (8) переработает число 2-3 в число 2-3, где а, b выражаются формулами (6), а с, d вычисляются по таким же формулам для (10).

Приказы программы (8) содержат более сложные функции, чем те, которые указываются теоремой 2. Наша задача состоит в том, чтобы каждый приказ из программы (8) заменить равносильной ему серией приказов впда (4).

Рассмотрим приказ i:

. Нам задана пара чисел

(2-3, г), кодируюш;ая некоторую конфигурацию (5) машпны £. В соответствии с формулой (7) мы должны прежде всего узнать, четно а илп нет. Для этого niimCiM серию приказов

:4 i.l

1.1:

i.2:

:2 i.3 i.4

В результате этих приказов пара (2°-3, i) преобразу-етсяв пару {3o->/, i.3), еслианечетно, пвпару {35/-, i.4), еслп а четно. В первом случае нам надо далее перейти к паре {2°-3, i*). Очевидно, мы достигнем этого

, i.5:

, i.6:

Bo втором случае нам надо от пары {3-5°-/, i.4) перейти к паре (2=-3, /), которая кодирует машинное слово 5, непосредственно следующее за f. Чтобы найти f, надо обратиться к программе машины £. Так как обозреваемая ячейка ао находится в состоянии О, то рассматриваем ту из команд

qfi -> qe, qfi -> qjL, qfi -> qjR,

которая содержится в программе £. Пусть, например, это команда qfi qjR. Тогда

f = bX-x . . . boOqjai . . . Us

и кодирующей парой является пара {2/-3, j).

Чтобы перейти к этой паре от пары {3-5°-/, i.4), пишем приказы

i.4:

, i.7:

в результате которых из пары (3-5"/, i.4) получим пару (2/2.3 i.8). Приказами

i.lO

i.9:

переводим пару (2-/2•3 i.8) в пару (2/2.5 i.lO). Затем приказалш

i.lO:

i.ll

i.ll:

(2/2.5

i.lO

переводим пару {2"-- 5, i.lO) в требуемую пару {2"/ • 3, j).

Итак, мы указали, как постропть серию новых приказов i, i.l, . . ., i.ll, равносильную старому приказу г, в случае, когда машина £ выполняет команду доО- qjR. Ясно, что тем же способом соответствующие серии приказов можно построить п в тех случаях, когда машина £ вместо команды дО qjR выполняет команду qfi -> qjL или команду дО -> де.

Наконец, тем же способом строится и серия новых приказов, заменяющая старый приказ е номером i*.

Рассмотрим операторный алгоритм А с программой

приказами i.3:



Среди новых прикя~ в все еще встречаются приказы, имеющие не тот вид, который требуется теоремой 2. Но от этого недостатка легко избавиться. Например, приказ

равносилен паре приказов У-

а приказ вида у: у:

равносилен приказам

, у.О:

, У.1:

у.2:

, 7.3:

имеющим уже стандартную форму, требуемую теоремой 2. То же относится и к приказам

После всех указанных замен у нас получится операторный алгоритм В, программа которого состоит из приказов вида, требуемого теоремой 2. Из построения видно, что новый алгоритм В об.ладает тем же основным свойством что и алгоритм А, а именно, если машина £ из какой-нпбудь начальной конфигурации (9) переходит через конечное число тактов работы в заключительную конфигурацию (10), то алгоритм В перерабатывает число 2°-3 в число г-З*.

Пусть теперь нам задана какая-нибудь частично рекурсивная функция / (х). В соответствии с п. 12.3 строим машину Тьюринга £, имеющую внешний алфавит {О, 1} и перерабатывающую машинное слово qyOi в слово goOl-. Обозначим через В операторный алгоритм, отвечающий машине £ и имеющий программу вида (4). Так как упомянутые машинные слова кодируются парами

(22»*1-2, 1), (22/М-1-2 0),

то алгоритм В перерабатывает чпсло] 2-" в чпсло 22!(.х)--1-о Мы сначала изменим алгоритм В так, чтобы он переводил 2- в Z-

, 3:

4 5

, 5:

перерабатывает число 2 в число 2--, а алгоритм D, имеющий программу!

, 2:

, .5:

, 3:

перерабатывает 2 в 2*. Таким] образом, алгоритм CBD перерабатывает 2" в 2-\

Нам остается построить программы алгоритмов, пере-рабатыз. ющих 2 в 2* и соответственно 2 в 2". Приказы

. 3:

переведут пару (2, 1) в пару (2-5, 4), а приказы 4:

, 5:

, 6:

, 8:

переведут (2-5-, 4) сначала в пару (2•5=" 4), затем в пару (2* •б"-, 4) и через х циклов] получим) требуемую пару (2 0).

С другой стороны, еслп задана пара (2-, 1), то приказы

, 2: , 4:

X 20

переведут указанную пару

в (32"--5, 5), а

Легко видеть, что алгоритм С, имеющий программу 1:



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