Изменить стиль страницы

Для того чтобы понять, как на основе заданного алгоритма  Aпостроить явное незавершающееся вычисление, факт незавершаемости которого посредством алгоритма Aустановить невозможно, необходимо предположить, что алгоритм Aзадан в виде машины Тьюринга. Эта машина работает с лентой, на которой кодируются два натуральных числа  pи q. Мы полагаем, что если завершается вычисление A( p, q), то вычисление, производимое машиной  T pс числом q, незавершается вовсе. Вспомним, что если машина T pопределена некорректно, то ее работа с числом qне завершается, каким бы это самое qни было. В случае такого «запрещенного»  pисход вычисления A( p, q) может, согласно исходным допущениям, быть каким угодно. Соответственно, нас будут интересовать исключительно те числа p, для которых машина T pопределена корректно. Таким образом, в записанном на ленте двоичном выражении числа  pпяти символов 1подряд содержаться не может. Значит, для обозначения на ленте начала и конца числа  pмы вполне можем воспользоваться последовательностью 11111.

То же самое, очевидно, необходимо сделать и для числа q, причем оно вовсе необязательно должно быть числом того же типа, что и p. Здесь перед нами возникает техническая проблема, связанная с чрезвычайной громоздкостью машинных предписаний в том виде, в каком они представлены в НРК. Удобным решением этой проблемы может стать запись чисел pи  qв  пятеричнойсистеме счисления. (В этой системе запись «10» означает число пять, «100» — двадцать пять, «44» — двадцать четыреи т.д.) Однако вместо пятеричных цифр 0, 1, 2, 3 и 4 я воспользуюсь соответствующими последовательностями символов на ленте 0,10,110,1110 и 11110. Таким образом, мы будем записывать

0 как 0

1 как  10

2 как 110

3 как 1110

4 как 11110

5 как 100

6 как 1010

7 как 10110

8 как 101110

9 как 1011110

10 как 1100

11 как 11010

12 как 110110

13 как 1101110

14 как 11011110

15 как 11100

16 как 111010

25 как 1000

26 как 10010

и т.д.

Под « C p» здесь будет пониматься вычисление, выполняемое корректно определенной машиной Тьюринга T r, где  rесть число, обыкновенное двоичное выражение которого (с добавлением в конце последовательности символов 110) в точности совпадает с числом  pв нашей пятеричной записи. Число q, над которым производится вычисление C p, также необходимо представлять в пятеричном выражении. Вычисление же A( p, q) задается в виде машины Тьюринга, выполняющей действие с лентой, на которой кодируется пара чисел p, q. Запись на ленте будет выглядеть следующим образом:

00111110p111110q11111000…,

где  pи  qсуть вышеописанные пятеричные выражения чисел, соответственно,  pи q.

Требуется отыскать такие числа pи q, для которых не завершается не только вычисление C p( q), но и вычисление A( p, q). Процедура из §2.5позволяет сделать это посредством отыскания такого числа k, при котором вычисление C k, производимое с числом n, в точности совпадает с вычислением A( n, n) при любом n, и подстановки  p= q= k. Для того чтобы проделать это же в явном виде, отыщем машинное предписание  K(= C k), действие которого на последовательность символов на ленте

00111110n11111000

(где  nесть пятеричная запись числа n) в точности совпадает с действием алгоритма  Aна последовательность

00111110n111110n11111000

при любом n. Таким образом, действие предписания  Kсводится к тому, чтобы взять число  n(записанное в пятеричном выражении) и однократно его скопировать, при этом два  n разделяются последовательностью 111110(та же последовательность начинает и завершает всю последовательность отметок на ленте). Следовательно, оно воздействует на получаемую в результате ленту точно так, как на эту же ленту воздействовал бы алгоритм A.

Явную модификацию алгоритма A, дающую такое предписание K, можно произвести следующим образом. Сначала находим в определении Aначальную команду 0 1→  Xи отмечаем для себя, что это в действительности за « X». Мы подставим это выражение вместо « X» в спецификации, представленной ниже. Один технический момент: следует, помимо прочего, положить, чтобы алгоритм Aбыл составлен таким образом, чтобы машина, после активации команды 0 1→  X, никогда больше не перешла во внутреннее состояние 0 алгоритма A. Это требование ни в коей мере не влечет за собой каких-либо существенных ограничений на форму алгоритма [19]. (Нуль можно использовать только в командах-пустышках.)

Затем при определении алгоритма  Aнеобходимо установить общее число Nвнутренних состояний (включая и состояние 0, т.е. максимальное число внутренних состояний  Aбудет равно N - 1). Если в определении  Aнет завершающей команды вида ( N - 1) 1Y, то в конце следует добавить команду-пустышку ( N - 1) 1→ 0 0R. Наконец, удалим из определения  Aкоманду 0 1→  Xи добавим ее к приводимому ниже списку машинных команд, а каждый номер внутреннего состояния, фигурирующий в этом списке, увеличим на N(символом ∅ обозначено результирующее внутреннее состояние 0, а символом « X» в записи «1 1X» представлена команда, которую мы рассмотрели выше). (В частности, первые две команды из списка примут в данном случае следующий вид: 0 1→ N 1R, N 0→ (N + 4) 0R.)

1→ 0 1R, 0 0→ 4 0R, 0 1→ 0 1R, 1 0→ 2 1R, 1 1X, 2 0→ 3 1R, 2 1→ ∅ 0R, 3 0→ 55 1R, 3 1→ ∅ 0R, 4 0→ 4 0R, 4 1→ 5 1R, 5 0→ 4 0R, 51 → 6 1R, 6 0→ 4 0R, 6 1→ 7 1R, 7 0→ 4 0R, 7 1→ 8 1R, 8 0→ 4 0R, 8 1→ 9 1R, 9 0→ 10 0R, 9 1→ ∅ 0R, 10 0→ 11 1R, 10 1→ ∅ 0R, 11 0→ 12 1R, 11 1→ 12 0R, 12 0→ 13 1R, 12 1→ 13 0R, 13 0→ 14 1R, 13 1→ 14 0R, 14 0→ 15 1R, 14 1→ 1 0R, 15 0→ 0 0R, 15 1→ ∅ 0R, 16 0→ 17 0L, 16 1→ 16 1L, 17 0→ 17 0L, 17 1→ 18 1L, 18 0→ 17 0L, 18 1→ 19 1L, 19 0→ 17 0L, 191 → 20 1L, 20 0→ 17 0L, 20 1→ 21 1L, 21 0→ 17 0L, 21 1→ 22 1L, 22 0→ 22 0L, 22 1→ 23 1L, 23 0→ 22 0L, 23 1→ 24 1L, 24 0→ 22 0L, 24 1→ 25 1L, 25 0→ 22 0L, 251 → 26 1L, 26 0→ 22 0L, 26 1→ 27 1L, 27 0→ 32 1R, 27 1→ 28 1L, 28 0→ 33 0R, 28 1→ 29 1L, 29 0→ 33 0R, 29 1→ 30 1L, 30 0→ 33 0R, 30 1→ 31 1L, 31 0→ 33 0R, 31 1→ 11 0R, 32 0→ 34 0L, 32 1→ 32 1R, 33 0→ 35 0R, 33 1→ 33 1R, 34 0→ 36 0R, 34 1→ 34 0R, 35 0→ 37 1R, 35 1→ 35 0R, 36 0→ 36 0R, 36 1→ 38 1R, 37 0→ 37 0R, 37 1→ 39 1R, 38 0→ 36 0R, 38 1→ 40 1R, 39 0→ 37 0R, 39 1→ 41 1R, 40 0→ 36 0R, 40 1→ 42 1R, 41 0→ 37 0R, 41 1→ 43 1R, 42 0→ 36 0R, 42 1→ 44 1R, 43 0→ 37 0R, 43 1→ 45 1R, 44 0→ 36 0R, 44 1→ 46 1R, 45 0→ 37 0R, 45 1→ 47 1R, 46 0→ 48 0R, 46 1→ 46 1R, 47 0→ 49 0R, 47 1→ 47 1R, 48 0→ 48 0R, 48 1→ 49 0R, 49 0→ 48 1R, 49 1→ 50 1R, 50 0→ 48 1R, 50 1→ 51 1R, 51 0→ 48 1R, 51 1→ 52 1R, 52 0→ 48 1R, 52 1→ 53 1R, 53 0→ 54 1R, 53 1→ 53 1R, 54 0→ 16 0L, 54 1→ ∅ 0R, 55 0→ 53 1R.

вернуться

19

Более того, сам Тьюринг первоначально предполагал вообще  останавливатьмашину всякий раз, когда она повторно переходит во внутреннее состояние «0» из любого другого состояния. В этом случае нам не только не понадобилось бы вышеупомянутое ограничение, мы спокойно могли бы обойтись и без команды STOP. Тем самым мы достигли бы существенного упрощения, поскольку последовательность  11110в качестве команды нам была бы уже не нужна, и ее можно было бы использовать как разделитель, что позволило бы избавиться от последовательности 111110. Это значительно сократило бы длину предписания K, и, кроме того, вместо пятеричной системы счисления мы обошлись бы четверичной.