Тени разума. В поисках науки о сознании - Пенроуз Роджер. Страница 49
Для того чтобы понять, как на основе заданного алгоритма 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) 1→ Y, то в конце следует добавить команду-пустышку ( N - 1) 1→ 0 0R. Наконец, удалим из определения Aкоманду 0 1→ Xи добавим ее к приводимому ниже списку машинных команд, а каждый номер внутреннего состояния, фигурирующий в этом списке, увеличим на N(символом ∅ обозначено результирующее внутреннее состояние 0, а символом « X» в записи «1 1→ X» представлена команда, которую мы рассмотрели выше). (В частности, первые две команды из списка примут в данном случае следующий вид: 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 1→ X, 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.