Шрифт:
… 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] . (Нуль можно использовать только в командах-пустышках.)
19
Более того, сам Тьюринг первоначально предполагал вообще останавливатьмашину всякий раз, когда она повторно переходит во внутреннее состояние «0» из любого другого состояния. В этом случае нам не только не понадобилось бы вышеупомянутое ограничение, мы спокойно могли бы обойтись и без команды STOP. Тем самым мы достигли бы существенного упрощения, поскольку последовательность 11110в качестве команды нам была бы уже не нужна, и ее можно было бы использовать как разделитель, что позволило бы избавиться от последовательности 111110. Это значительно сократило бы длину предписания K, и, кроме того, вместо пятеричной системы счисления мы обошлись бы четверичной.
Затем при определении алгоритма 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.
Теперь мы готовы точно определить предельную длину предписания K, получаемого путем вышеприведенного построения, как функцию от длины алгоритма A. Сравним эту «длину» со «степенью сложности», определенной в §2.6 (в конце комментария к возражению Q8). Для некоторой конкретной машины Тьюринга T m(например, той, что выполняет вычисление A) эта величина равна количеству знаков в двоичном представлении числа m. Для некоторого конкретного машинного действия T m( n) (например, выполнения предписания K) эта величина равна количеству двоичных цифр в большем из чисел тип. Обозначим через и количество двоичных цифр в aи k'соответственно, где
A = T aи K= T k'(= C k).
Поскольку алгоритм Aсодержит, как минимум, 2 N– 1 команд (учитывая, что первую команду мы исключили) и поскольку для каждой команды требуется, по крайней мере, три двоичные цифры, общее число двоичных цифр в номере его машины Тьюринга а непременно должно удовлетворять условию
>= 6 N– 6.
В вышеприведенном дополнительном списке команд для Kесть 105 мест (справа от стрелок), где к имеющемуся там числу следует прибавить N. Все получаемые при этом числа не превышают N+ 55, а потому их расширенные двоичные представления содержат не более 2 log 2( N+ 55) цифр, в результате чего общее количество двоичных цифр, необходимых для дополнительного определения внутренних состояний, не превышает 210 log 2( N+ 55). Сюда нужно добавить цифры, необходимые для добавочных символов 0, 1, Rи L, что составляет еще 527 цифр (включая одну возможную добавочную «команду-пустышку» и учитывая, что мы можем исключить шесть символов 0по правилу, согласно которому 0 0можно представить в виде 0). Таким образом, для определения предписания Kтребуется больше двоичных цифр, чем для определения алгоритма A, однако разница между этими двумя величинами не превышает 527 + 210 log 2( N+ 55):