
книги из ГПНТБ / Трахтенброт, Б. А. Алгоритмы и вычислительные автоматы
.pdfпримитивно рекурсивным, если в нем ле участвует u-оператор, т.е. допускаются только операторы суперпозиции введения фиктивных переменных п примитивной рекурсии. Функция называется примитив но рекурсивной, если для нее существует примитивно-рекурсивное описание. Предложенное нами описание функции [log2 ] показывает, что эта функция рекурсивна; поскольку в нем встречается (i-оператор, это не дает нам основания утверждать, то [log,] примитивно рекур сивна. Однако это также не дает нам основания утверждать, что
функция [log2 ] |
наверняка |
|
не примитивно рекурсивна, |
ибо заранее |
не исключено, |
что можно |
придумать другое описание, |
которое при |
|
митивно-рекурсивно (и н |
самом деле такое можно |
придумать!). |
«Начальные куски» рассмотренного нами описания являются рекур сивными и даже примитивно рекурсивными описаниями промежу точных функций, возникших по пути определения [log2 ], а именно суммы, произведения и т. п.
По смыслу операторов суперпозиции, примитивной рекурсии и (.(.-оператора ясно, что рекурсивное описание некоторой функции может рассматриваться как своего рода программа — ее можно на зывать рекурсивной программой — для вычисления функции <р. Например, для вычисления [log,7| нужно приступать к вычислению значений 2°, 21 , 1", .... что возвращает нас к функции 1Х~ Вычисление значений этой функции сводится к вычислению значений произведе ния п так далее, вплоть до исходных функций. Однако, подытожи
вая материал предыдущих разделов, мы |
можем |
теперь |
высказать |
|||||||
более |
точное утверждение. |
Справедлива |
|
|
|
|
|
|||
Т е о р е м а . |
Всякая |
рекурсивная |
функция |
вычислима |
по |
Тью |
||||
рингу; |
существует |
алгоритм, |
который |
по любой рекурсивной |
про |
|||||
грамме |
строит |
тыорингову |
программу, |
вычисляющую |
ту |
оке |
||||
функцию. |
|
|
|
|
|
|
|
|
|
|
На первый взгляд, выбор функции 0 |
( A - ) , S |
( Л - ) |
И S |
( А - ) |
В каче |
|||||
исходных может |
показаться |
случайным. |
В некотором |
смысле |
это |
|||||
на самом деле так; можно было бы рассматривать |
и другие |
исходные |
||||||||
функции. Однако |
весьма |
примечательным |
и глубоким |
является то |
обстоятельство, что даже при нашем бедном выборе исходных функции можно получать рекурсивные описания для всех функций, наиболее употребительных в арифметике и в теории чисел; следова тельно, расширение запаса исходных функций за счет присоедние
ния |
других |
естественно |
напрашивающихся |
«кандидатов» |
не приве |
|||||||||||||||
дет |
к |
расширению |
класса |
функций, |
допускающих |
|
рекурсивные |
|||||||||||||
описания. |
Мы ограничимся |
здесь |
еще |
некоторыми |
иллюстрациями |
|||||||||||||||
широты |
класса рекурсивных |
а значит |
и класса |
функций, вычисли |
||||||||||||||||
мых |
по |
Тьюрингу. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
Конечные |
функции. |
Так |
мы называет функции, которые почти |
||||||||||||||||
константны |
в |
следующем |
смысле: |
|
существует |
такая |
константа |
с, |
||||||||||||
что I принимав: значения, |
отличные от с не |
более, чем конечное чис |
||||||||||||||||||
ло раз. |
Пусть, |
например, |
I (0) = |
2; |
\ |
(1) = |
Б, /; |
( А |
) |
= |
7 при |
х > 3. |
||||||||
Тогда посредством примитивных рекурсий (типа ( # ) на |
стр. 105) |
по |
||||||||||||||||||
следовательно |
определяем |
f, |
(0) = 5 , |
fa |
(х + |
1) = |
7; |
ft (0) = |
2, |
|||||||||||
I (х |
-\- 1) = |
[Л |
( А ) . |
Показать, |
что |
все конечные |
|
функции |
прими |
тивно рекурсивны! Запомним следующие конечные функции, назы ваемые сигнум и антисигнум:
при х ф 0, при А ' = 0.
110
Арифметические функции и отношения. Мы уже установили при митивную рекурсивиость суммы, произведения, показательной функ ции и др. Применением суперпозиций можно получить всевозможные
многочлены с натуральными |
коэффициентами, |
а также более |
слож |
||
ные выражения |
типа |
|
|
|
|
|
((5**+ 4 г)* , + 1 7 +2xyz)-2^v |
+ |
5 |
|
|
и т.п. |
|
|
|
|
|
Некоторые |
затруднения |
возникают в связи |
с описанием |
обрат |
ных операций: вычитания, деления и т.п. Поскольку они не всегда выполнимы, обычно их доопределяют дополнительными соглаше ниями, рассматривают так называемые арифметические варианты функций и т. п. Например, вместо разности я — х рассматривают
арифметическую |
разность |
п х = |
{ |
~0 Х |
при я |
< |
х |
к 0 |
Т 0 Р а я |
|||
определяется |
примитивной |
рекурсией! |
|
|
|
|
|
|
|
|||
|
|
|
п — 0 — n п - (х + 1) = s (л |
я). |
|
|
|
|
||||
Отсюда |
видно, |
что суперпозиция |
sgn |
(л — х) |
описывает |
предикат |
||||||
Мн (х, |
л), а |
суперпозиция |
sgn (л — х) X |
sgn |
(х |
л) |
определяет |
|||||
предикат Рв |
(л, |
х). Следовательно, |
функции |
част (х, |
л) |
и ост |
( А - , л), |
при определении которых с помощью совместной примитивной ре курсии (11.3) использовались предикаты Мн и Рв, также примитив но рекурсивны.
Отношение делимости и свойство быть простым числом прими тивно рекурсивны в том смысле, что примитивно рекурсивны их характеристические функции
1, если х нацело делится на я,
Ов противном случае.
1.если х простое число.
пр (х) = О в противном случае.
Действительно, х\п = Рв (ост (х, л), 0); напомним, что в соот ветствии с принятым ранее определением функции ост (х, л) мы долж ны считать х\ 0 = 1.. Что же касается пр (А-), то здесь можно посту пать по-разному, но мы остановимся на следующем описании! сум ма v (и, х) вида ( * : 0 ) + (л-- 1) + ... + ( * ' : ") равна числу делителей числа х, не превосходящих и. Эта сумма может быть описана рекур сивно:
v (0, х) = 1, v (и + 1, х) = v (и, х) + (х\ {и + I)). Поэтому функция п (х), равная числу всех делителей числа х, может
быть выражена так: n(x)=v |
(х, х). |
Наконец, х—простое число, когда |
|||||
оно больше 1 и имеет в точности |
три |
делителя (а именно 0, 1 и само |
|||||
х). Следовательно, |
пр (х) = |
Мн (1, |
х) X Рв (л (х), |
3). |
|
||
Пусть функция |
П (Л) пересчитывает в порядке возрастания все |
||||||
простые числа, т. е. П ( 0 ) = 2 , П (1) = 3, |
П ( 2 ) = 5, |
... |
Очевидно, |
||||
произведение пр {у) |
X Мн (Я (х), у) |
равно |
единице |
в том |
и только |
в том случае, когда у — простое число, превосходящее П (х). Следо
вательно |
функция П (х) рекурсивна |
ибо ее |
можно определить |
так: |
|
|
|
/7(0) |
= 2 . Я ( А - + 1 ) = ( . 1 ( / ( ( П Р ( ( / ) Х М Н ( / 7 ( Л ) |
< / ) ) = 1) |
I I I
11.6. Рекурсивное программирование функций, вычислимых по Тьюрингу. Вычислимы ли на машинах Тьюринга такие функции, которые не рекурсивны? Отрицательный ответ па &тот вопрос оытекает из следующей теоремы, доказательству которой и посвящен
данный параграф. |
Пусть |
машина |
Тьюринга |
|
вычисляет |
функцию |
|||
|
Т е о р е м а . |
9)f |
|||||||
f {х\, |
* т ) ; |
тогда |
по заданной |
функциональной |
схеме машины 9Л |
||||
(по |
заданной |
тыорин.'оеоп |
программе) можно |
построить |
рекурсив |
||||
ное описание |
этой |
функции |
f (х\, |
хт). |
степени примечательный |
||||
|
Таким образом, |
выясняется |
в высшей |
факт, что два класса функций, первоначально описанные в разных терминах, а именно, класс тыорингово вычислимых функций и класс рекурсивных функций, совпадают. Доказательство теоремы само по
себе очень поучительное, |
ибо оно основано на весьма любопытном |
||||||
методе арифметической |
интерпретации |
(арифметизации), |
который |
||||
уже упоминался |
бегло |
в н . |
11.1 В нашем |
случае |
арифметизация на |
||
чинается с того, что с каждой конечной конфигурацией |
К машины 9Л |
||||||
сопоставляются |
четверка |
натуральных |
чисел |
s (К), |
q (К), |
т (К), |
|
п (К) — координаты этой |
конфигурации. Хорошо известно, сколь |
плодотворным является применение координатного метода в геомет рии; он позволяет (в рамках аналитической геометрии) применять к решению геометрических задач хорошо разработанные алгебраи ческие и аналитические методы. При этом в каждой конкретной ситуации успех дела и простота решения в значительной мере за висят от того, насколько удачно выбрана система координат. В на шем случае (в отличие от аналитической геометрии!) в качестве коор динат используются не любые действительные числа, а натуральные числа; соответственно, на смену алгебраическим и аналитическим методам приходят теоретико-числовые (арифметические) конструк ции и методы.
Пусть К' — конфигурация, непосредственно следующая за /(; обозначим через s, q т п координаты «текущей» конфигурации /( и через s', q', т', п' —- координаты конфигурации К'. Наша ближай шая цель — описать такую координатизацнго, для которо.н выполне но следующее условие которое можно называть условием коррект ности: функции
s' = s' (s, q. m, n)\ q' = q' (s, q, m, n)\ m' •= m' (s q, т. я); n' = n' (s, q, m, n)
примитивно рекурсивны Именно такой удачный выбор «системы координат» — корректная координатизация — и обеспечит успех дела в целом, т. е. доказательство теоремы в полном объеме. Заметим
сначала, что любая конечная тыорингова |
конфигурация К однознач |
||||
но определена четверкой (si. qj, Ki, |
Кр), |
где$г — обозреваемый сим |
|||
вол, qj — внутреннее |
состояние. |
/С; и |
Кр — соответственно левое |
||
и правое крыло конфигурации, т. е. |
слова |
(возможно |
пустые), |
||
располагающиеся на |
ленте левее |
и правее |
обозреваемой |
ячейки. |
Разъясним это несколько подробнее. Если левее обозреваемой ячей
ки — сплошь |
пустые |
символы |
Л, |
то /<; = л ; |
в противном |
случае |
|
/<; — слово, |
простирающееся |
от |
самого |
левого |
непустого |
символа |
|
до той ячейки, которая непосредственно левее оборзеваемой |
Напри |
||||||
мер, для конфигурации К (рис. 27) |
|
|
|
||||
|
si=i |
?/ = ?з |
/</ = ! * * . |
Кр = |
* Л 1 |
|
112
Мы покажем, как закодировать каждое из названных четырех ком
понент натуральным числом: |
код |
(s;). |
код (</_,•). |
код |
(К:) код (Кр). |
|||||
Это и будет четверка координат конфигурации |
/(. |
|
|
|
||||||
Будем считать, что символы внешнего алфавита и символы со |
||||||||||
стояний занумерованы натуральными |
числами S- = |
{s0 , s1, |
Sr-x), |
|||||||
Q = |
{?о. 4\i |
Qi' •••> Qh-yi- Соответственно положим |
код |
(S;-) = (', |
||||||
код (qj) = /. |
Для |
дальнейшего |
удобно считать, |
что |
s0 |
есть |
пустой |
|||
знак; |
итак, |
ниже |
всюду код (л) = |
0. |
Символы |
s0, |
|
sr_j |
можно |
рассматривать как цифры г-ичной системы счисления. Поэтому сло
во Ki можно |
рассматривать как о-ичную запись некоторого |
натураль |
|||||||||||||||||||||
ного |
числа; |
это |
и будет код (Ki)- |
Например, |
для |
конфигурации |
К |
||||||||||||||||
рис. |
27, |
|
полагая код |
(л) |
= |
0, |
код |
(•») = |
|
1, |
код |
( [ ) = |
2. |
|
имеем |
||||||||
(в |
троичной |
системе |
счисления): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
код (К;) |
==-2 • З 3 + |
1 • З 1 |
+ |
1 • 3" = |
22 = |
[211 ] 3 *>. |
|
|
|
|||||||||
Что же касается Кр, |
то при определении код (Кр) |
нам удобно интер |
|||||||||||||||||||||
претировать |
Кр как число, записанное «зеркально», т. е. старшие раз |
||||||||||||||||||||||
ряды записаны правее младших. Например, для |
конфигурации |
К |
|||||||||||||||||||||
рис. |
27 |
имеем |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
код |
(Кр) |
= |
1,3° |
+ 0,3" + 2-3? = |
19 = |
[201]3 . |
|
|
|
|
|
|
|
|||||||||
Итак, |
для |
конфигурации |
К имеем: s = 2, |
9 = 3 , |
т= |
22, |
п= |
|
19. |
||||||||||||||
На рис. 27 изображена также конфигурация К', |
получаемая |
из |
К |
||||||||||||||||||||
применением |
команды |
| qs |
-*• »I7q2 . |
Для нее s' |
= |
1, q' = |
2, |
tn' |
= |
||||||||||||||
= |
68, п' |
= |
6. |
Теперь |
покажем, что s', |
q', |
/и', п' |
как |
функции |
от s, |
|||||||||||||
q, |
т, |
п |
примитивно |
рекурсивны. |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
Ранее |
мы |
уже |
закодировали |
внешние |
символы |
и |
состояния |
|||||||||||||||
числами. Закодируем еще и сдвиги: |
Г — с д в и г |
вправо, |
2 — сдвиг |
||||||||||||||||||||
влево, 0 — отсутствие |
сдвига. Тогда |
функциональная |
схема |
маши |
|||||||||||||||||||
ны Ш задается посредством тройки функций S (s, q), |
Р (s, q), |
Q (s, |
q), |
||||||||||||||||||||
которые по кодам s, q входной пары вырабатывают |
соответственно |
||||||||||||||||||||||
коды переработанного символа, сдвига и |
нового |
состояния. |
Эти |
||||||||||||||||||||
функции |
определены |
только при s |
< |
г и q < |
k, |
но, доопределяя |
их |
на всех остальных значениях аргументов одним и тем же констант ным значением, мы превращаем их во всюду определенные функции, которые конечны, а следовательно (см. п. 11.5), примитивно рекур
сивны. Вернемся теперь к интересующим нас функциям s' |
(s, q, |
т, |
п), |
|||||||||||||||
q' (s, q, tn, n), |
m' |
(s, q, tn, n) и n' |
(s, |
q, |
tn, |
n). |
|
|
|
|
|
|
||||||
|
Примитивная |
рекурсивность |
функций s' |
и q' |
очевидна, |
ибо |
||||||||||||
s' |
(s, q, m, n) |
= |
S |
(s, |
q), q' (s, |
q, |
tn, |
n) = |
Q (s, |
q). Что же касается |
||||||||
функций |
т ' и |
п', |
то мы рассмотрим в отдельности три случая |
в зави |
||||||||||||||
симости |
от того, |
какой сдвиг |
произошел |
при |
переходе |
от |
К к |
/ ( ' . |
||||||||||
|
1. Отсутствие сдвига, т. е. Р |
(s, |
q) = |
0. Тогда |
tn' = |
т, |
п' |
= |
п. |
|||||||||
|
2. |
Сдвиг |
вправо, |
т. е. Р (s, q) = |
1. Тогда |
левое крыло Ki раз |
||||||||||||
растается вправо |
и, |
захватывая |
s', |
образует |
Ki, |
Поэтому |
т' |
= |
||||||||||
= |
код (K'i) = |
rn-r |
+ |
s'. Правое же крыло Кр укорачивается, |
отсту |
|||||||||||||
пая из |
самой |
левой ячейки, в которой |
записан |
младший |
разряд чис |
|||||||||||||
ла п. Поэтому |
п' => паст (п, г). |
|
|
|
|
|
|
|
|
|
|
|
||||||
|
3. |
Сдвиг |
влево, т. е. Р (s, q) = |
2. |
Аналогично |
проверяется, |
что |
|||||||||||
т' |
= |
част (т. |
г), |
п' = n-r + |
s'. |
|
|
|
|
|
|
|
|
|
|
*> Нижний индекс «3» указывает систему счисления. При отсут ствии специальных оговорок или обозначений числа считаются записанными в десятичной системе.
113
Только что приведенные словесные формулировки могут быть записаны так:
т ' = |
p B (P(s, |
q), |
0)-т |
+ Рв (Р (s, q), |
l)-(m-r + s') |
+ |
|||||
|
|
+ |
Рв (Р (s. |
1/), |
2) |
-част (//г, л)| |
|
||||
п ' = |
Р в ( Р ( 5 . |
q), |
0)-и |
+ |
P |
B ( P |
( S , |
q), |
1)част(п, /•)+ |
||
|
|
|
+ |
Рв ( P ( s , |
q), |
2)(п- |
+.s')- |
|
|||
Итак, функции т' |
(s, |
q, т, п) и п' |
(s, |
q, |
in, п) представлены посредст |
||||||
вом суперпозиций |
примитивно |
рекурсивных функций Рв, Р, s' |
|||||||||
(она же S), част, + , |
X . Следовательно, они |
примитивно |
рекурсивны. |
||||||||
Тем самым корректность |
предложенной коордииатизацни пол |
ностью проверена. В качестве прямого следствия этого факта можно установить примитивную рекурсивность и для других функций, опи
сывающих |
работу машины |
Тьюринга. Пусть |
машина |
Ш запущена |
в некоторой |
конфигурации |
/( с координатами s, |
q, in, п. |
Тогда после |
t тактов возникает конфигурация, которую мы обозначим К1 (счи
таем, |
что |
/<° = |
К). |
|
Координаты |
конфигурации |
|
/ ( ' , естественно, |
||||||||||||||||||
зависят от координат исходной конфигурации |
/( и от t, |
т. е. являют |
||||||||||||||||||||||||
ся функциями от пяти аргументов: t, s, q, |
in, n; обозначим их S, Q, |
|||||||||||||||||||||||||
M, |
N- |
Легко видеть, |
что эта |
четверка функций |
определяется |
одно |
||||||||||||||||||||
временной |
примитивной |
рекурсией, |
исходя |
из |
функций s',q', |
|
in', |
|||||||||||||||||||
п', |
а следовательно, |
все |
они |
тоже |
примитивно рекурсивны. Дейст |
|||||||||||||||||||||
вительно, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
S (0, 5 ' , |
q, |
т, |
п) |
= |
s, |
|
Q (0, |
s, |
q, |
in, |
п) |
= |
q; |
|
|
||||||
|
|
|
|
|
М |
(О, s, |
q, |
in, |
п) |
«= |
m, |
/V (0, |
s, |
q, |
in, |
n) |
•= |
n; |
|
|
||||||
S |
(t+ |
\,s,q. |
|
in, |
n) = |
s' |
|
(5 |
(/, s, q, |
m, n), |
Q |
(I, s, q, in, |
л), |
M |
(I, s, q. |
m, |
n), |
|||||||||
|
|
|
|
|
|
|
|
|
|
N |
(t, s, |
q, |
in, |
n)); |
|
|
|
|
|
|
|
|
|
|||
Q |
(t + |
1, |
s, |
q, in, |
n) = |
q' |
(S |
(I, |
s, |
q, in, |
n), |
Q (t, s, |
q, |
m, n), M |
(I, |
s, |
||||||||||
|
|
|
|
|
|
|
|
|
q, |
in, |
n), N |
(I, |
s, |
q, |
m, |
n)); |
|
|
|
|
|
|
||||
M |
(I |
+ |
1, |
s, |
q, |
m, |
|
n) |
|
= |
m' (S |
(I, |
s, |
q, in, |
n), |
|
|
|
|
|
|
|
||||
Q |
(t, |
s, |
q, |
in, |
n), |
M |
(I, |
s, |
q, |
m, |
n) |
N |
(t, |
s, |
q, |
in, |
n)); |
|
|
|
|
|
|
|||
N |
(t |
+ |
1, |
s, |
q, |
m, |
n) |
= |
n' |
(S |
(I, |
s, |
q, |
ill, n), |
|
|
|
|
|
|
|
|||||
Q |
(I, |
s, |
q, |
m, |
n), |
M |
[t, |
|
s, |
q, |
in, |
n), |
N |
(I, s, |
q, |
in, |
n)). |
|
|
|
|
|
Указанная схема выражает следующий очевидный факт: резуль тат применения t + 1 шагов и исходной конфигурации К — это то же самое, что результат применения одного шага к результату К1, полученному после t шагов.
Теперь мы располагаем всем необходимым для завершения дока зательства теоремы в целом.
Для простоты рассмотрим случай, когда на машине Ш идет вы числение одноместной функций ft (х)\ случай многоместной функции отличается совершенно незначительными деталями. Будем также считать, что аргументы и значения ft представлены в унарной записи; как уже отмечалось в § 11.1, это ограничение тоже несущественно. Далее, для определенности полагаем, что символ | (палочка) коди руется старшей цифрой системы счисления, возникающей при арифметизации, т. е. код ( | ) = г — 1. В начальной конфигурации с ар гументом х левое крыло пусто, правое крыло Кр состоит из х — 1
114
палочки, |
а |
еще одна палочка обозревается головкой |
в |
начальном |
||||||||||||||
состоянии |
qx |
(см. рис. 27). Следовательно, код |
(Кр) |
= |
(г— l ) r v ~ 2 |
+ |
||||||||||||
+ |
(г — 1)гх~3 |
|
+ ... |
+ |
(г — 1)л° = |
г * - 1 |
— |
1, |
а |
четверка |
коор |
|||||||
динат конфигурации |
Кр |
такова: г — |
I , |
1, 0, |
г 1 " - ' |
— 1. |
|
|
|
|||||||||
|
Поэтому при варьировании начальной конфигурации с унарной |
|||||||||||||||||
записью аргумента х координатные функции S, |
Q, М, |
N |
становятся |
|||||||||||||||
функциями |
от |
двух |
переменных |
I, |
х. |
Введем |
для |
них |
обозначения |
|||||||||
S, |
Q, М, |
N, |
т. е.. S (1, х) |
= |
S (t, |
г — |
1, |
1. О, |
г*"1 —J ) , |
Q |
х) |
= |
||||||
<= Q (/,/•— 1, |
1, 0, |
г * - 1 |
— |
1) и т.д_. Очевидно, |
S, Q, М, 7V тоже |
при |
||||||||||||
митивно-рекурсивные функции. Пусть стоп-состояипе |
закодировано |
константой к; тогда функция г (х), равная числу тактов, которые
расходует машина fflj при вычислении значения I (х), |
может быть вы-, |
|||||||
ражена посредством |
ц-оператора, |
|
исходя |
из Q: |
|
|||
|
|
T |
( X ) = U * ( |
Q |
[I. x) |
= |
k), |
|
а следовательно, тоже |
является |
рекурсивной. |
|
|||||
Далее, |
рекурсивная функция |
|
|
|
|
|||
|
Л/(т(х), |
x) = N{%(x), |
|
г — 1, |
1, |
0, л * - 1 |
_ 1) |
|
в точности |
задает |
л-координату |
заключительной |
конфигурации |
(см. |
рис. |
27), |
которая |
равна |
— 1. Значит, |
окончательно |
||||||
для |
функции |
f/ (х) |
получается |
представление: |
|
|
|
|
||||
|
|
/(х) = |
1 + |
logr |
[iV (т (х) |
1, 0, |
^ - 1 — 1 ) + 1 ] . |
|
|
|||
Этим и завершается |
|
рекурсивное описание |
функции |
I (х). |
|
|
||||||
|
|
|
§ 12. ВАРИАНТЫ ВНЕШНЕЙ ПАМЯТИ |
|
|
|||||||
|
Правильное течение любого вычислительного процесса обеспечи |
|||||||||||
вается тем, что |
на каждой его стадии в памяти (машины или |
вычис |
||||||||||
лителя) сохраняются |
|
те данные, |
которые могут понадобиться |
набо |
||||||||
лев поздних стадиях. Такие данные не только |
не могут быть искаже |
|||||||||||
ны |
или стерты |
раньше времени, |
но и должны размещаться достаточ |
|||||||||
но удобно в памяти, |
|
чтобы их можно было отыскать и |
использовать |
|||||||||
в нужный момент. В реальных |
вычислительных |
машинах это, |
как |
|||||||||
известно, |
достигается |
засылкой |
промежуточных |
результатов |
в |
спе |
||||||
циальные устройства |
— регистры машины или в ячейки |
памяти с из |
||||||||||
вестными |
адресами, |
где они хранятся вплоть до того момента, |
когда |
они потребуются для дальнейшей обработки. Значительно сложнее обстоит дело для машины Тьюринга; ведь в ее распоряжении имеет ся лишь одна лента, на которой п можно записывать как исходные так и результирующие и все промежуточные данные. Мы уже столк нулись с этими трудностями при параллельной композиции алго ритмов. В этом параграфе будут изложены и иллюстрированы неко торые общие соображения и методы, которые позволяют преодолевать трудности, связанные со спецификой внешней памяти машины Тью
ринга. В качестве следствия мы |
получим доказательство теоремы |
о программировании параллельной |
композиции, сформулированной |
li многократно использованной нами в предыдущих параграфах. |
Однако излагаемые здесь понятия и методы представляют н само стоятельный интерес. Они пригодятся нам и в дальнейшем'.
115
12.1. Полуленты и параллельная композиция. Для лучшего понимания того, каким образом машина Тьюринга может успешно «эксплуатировать» свою внешнюю память, целесообразно рассматри
вать некоторые разновидности тыоринговой |
машины, |
отличающие |
ся от ранее изученного основного образца |
лишь |
особенностями |
внешней памяти, т. е. ленты. Сначала рассмотрим машину 'Ш с пра |
|
вой полулентой (рис. 28, |
о), бесконечной только в одну сторону — |
а именно вправо. Можно |
считать, что ячейки ленты занумерованы |
слева направо числами 0, 1, 2, 3, ... В нулевой ячейке помещен спе циальный знак — обозначим его ||. Команды машины и их выпол-
«; |
О |
1 |
Z |
. . . |
II |
<"/ |
|
||
|
|
Pit) P(2) |
. . . |
|
|
|
i |
|
|
8) |
И Р(ПP(2) |
|
V
P(v)
Piu) А
в) |
II |
X |
X |
У |
У |
X |
А |
1 |
|
|
|
|
|
|
|
? |
|
г) |
II |
X |
X |
У |
У |
X |
Ч |
д- |
|
|
|
|
|
|
|
1 |
|
з) |
Н |
|
X |
У |
У |
X |
Д |
гi
ег |
и |
X |
X |
У |
У |
X |
д |
|
|
|
7. |
|
|
|
3 |
Z |
/ |
О |
|
ж) Pit) |
|
|
|
ЦЪ-2) |
Pto) |
II |
|
||
|
р, |
|
|
|
|
|
|
|
|
|
|
|
Рис. |
28. |
|
|
|
|
|
нение имеют такой же вид, как |
обычно, |
с единственной |
оговоркой: |
||||||
в каком бы состоянии машина |
|
ни обозревала |
знак |
|| , команда |
|||||
предусматривает |
сдвиг |
вправо |
без изменения |
символа || . Иначе |
говоря, если в процессе вычисления головка достигнет нулевой ячей ки (о чем она узнает, обозревая символ | | ) , то она покидает ее и воз вращается направо. Пусть в начальной конфигурации исходное сло
во Р = |
Р |
(\)Р |
(2) ... Р |
(v) |
(см. рис. |
28, а) записано на краю полу |
||
ленты, |
т. |
е. в |
ячейках |
с |
номерами |
1, 2, |
тогда |
фактически |
весь процесс вычисления |
происходит правее знака || , и он |
может за |
||||||
кончиться |
выдачей некоторого результата |
R = R (\)R |
(2) ...R (s), |
расположенного правее этого знака. В случае отсутствия особых
оговорок |
мы, |
как и |
прежде, будем применять обозначение вида |
|||
Ш (Р) = |
R и считать, |
что начальная |
и заключительная |
конфигура |
||
ции стандартны, т. е. что обозревается |
первый |
символ слова (не счи |
||||
тая символа || |
из нулевой ячейки). Аналогично определяется машина |
|||||
с левой |
полулентой. |
Обозначение Ю? (Я) = |
R будет |
применяться |
в следующем смысле: в начальной конфигурации слово Р располо жено на краю полуленты (рис. 28, ж) и обозревается первый (слева)
его |
символ. |
Результат — слово |
R — записан |
где-то левее символа |
|| и |
в нем |
также обозревается |
первый слева |
символ. Совершенно |
116
очевидно, что функциональную схему любой машины 9Л с полулен той можно перестроить в функциональную схему обычной машины Тьюринга Эь которая в точности имитирует работу машины 93J. Отсюда следует, в частности, что все проблемы, которые можно ре шать па машинах с полулентой, можно решать (причем «почти» тем же способом) на обычных машинах. Действительно, пусть зада-
па 93с. Тогда Ш является последовательной |
композицией |
трех |
схем: |
||||||
9i = |
91 ° Ш 0 |
2, |
где 3( переводит |
слово |
Я в слово |
|| Я |
и возвра |
||
щает |
головку |
к первой букве |
слова |
Я, 2 |
отыскивает |
символ |
|| ле |
||
вее результата |
R, |
стирает его |
и* возвращает |
головку к первому |
сим |
волу этого слова. Однако оказывается (а это уже менее тривиально), что на самом деле замена неограниченной в обе стороны лепты нолулентой не ослабляет вычислительных возможностей машины.
Справедливы |
следующие |
утверждения. |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
Т е о р е м а |
|
1. |
Существует |
программирующий |
|
|
алгоритм, |
|
ко |
|||||||||||||||||
торый |
любую |
тыорингову |
программу |
91 перерабатывает |
в |
программу |
||||||||||||||||||||
(|| 9!) |
для |
машины |
|
с правой |
полулентой; |
при |
этом |
|
выполняются |
|||||||||||||||||
условия: |
a) |
91 (Р) •= R тогда |
и |
только |
|
тогда, |
когда |
(Ц91) |
(Я) |
= |
R; |
|||||||||||||||
б) в машине |
|| 91 |
результат |
|
R |
(так |
же, как |
и |
Р) |
записан |
на |
краю |
|||||||||||||||
полуленты. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
строится |
|||||
2. |
Т е о р е м а |
2 формулируется |
|
аналогично; |
|
по 91 |
||||||||||||||||||||
программа |
(91 || ) |
для |
машины |
с левой |
|
|
полулентой. |
|
|
|
|
|
|
|
|
|||||||||||
Прежде чем привести соответствующие доказательства, |
|
пока |
||||||||||||||||||||||||
жем, как из этих теорем выводится теорема о программировании |
па |
|||||||||||||||||||||||||
раллельной композиции |
'JI, || %2 |
двух |
|
алгоритмов |
?lj |
я[2 |
Сначала |
|||||||||||||||||||
строим |
программы |
91, || |
и |
|| 912 . Затем |
|
формируем |
9t, || >}12 |
как |
ком |
|||||||||||||||||
позицию |
следующих |
четырех |
|
программ: |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
1) |
|
|
||) |
перерабатывает |
Я, || Я 2 |
в |
31г |
(Я,) || |
Я 2 ; |
|
|
|
|
|
|
|
||||||||||
2) 2, перемещает головку с первой |
|
буквы |
слова |
"Л, (Ях ) |
к |
пер |
||||||||||||||||||||
вой букве |
слова |
Я 2 ; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
3) |
(II 312) |
продолжает |
переработку |
|
до |
выдачи |
слова |
'JIj (Рг) || |
||||||||||||||||||
11ч-'г (^г)• |
причем |
головка |
обозревает |
первую |
букву |
из |
912 |
(Я2 ); |
||||||||||||||||||
4) |
£ 2 |
|
перемещает головку |
с |
первой |
буквы |
$[2 |
(Я2 ) |
к |
первой |
||||||||||||||||
букве |
2d |
|
(Pi). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Построение |
стандартных |
программ |
|
£ 2 |
тривиально, и мы его |
|||||||||||||||||||||
здесь |
опускаем'. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
У п р а ж н е н и е . |
Описать |
программирующий |
алгоритм |
|
для' |
|||||||||||||||||||||
параллельной композиции трех или более программ. |
|
|
|
|
|
|
||||||||||||||||||||
12.2. |
|
Доказательство |
теоремы |
о |
|
полуленте. |
Перейдем |
теперь |
||||||||||||||||||
к доказательству |
теорем |
1 и 2. Для |
определенности |
рассмотрим |
слу |
|||||||||||||||||||||
чай с правой |
полулентой. Программа |
|
|
(ЦЭ1) |
строится |
как |
последо |
|||||||||||||||||||
вательная |
композиция трех программ: |
|
"21»97"8, |
из |
которых |
основ |
||||||||||||||||||||
ную нагрузку несет |
91, |
в |
то |
|
время |
|
как |
21, 2 |
— две |
стандартные |
||||||||||||||||
программы, не зависящие |
от |
исходной |
|
программы |
|
91 и |
выполняю |
щие вспомогательные функции. Во избежание громоздкости будем считать, что в исходной программе 91 помимо пустого символа л имеются лишь два «значащих» символа х, у; в общем случае про цедура в принципе ничем не отличается, а становится лишь более громоздкой. Итак, опишем конструкции программ 21, 91, £ и разъ ясним их назначение.
1. Программа 21 (рис. 29) вписывает символ А в первую пустую ячейку исходного слова Р. Соответствующие конфигурации — ис ходная и заключительная — изображены на рис. 28, а, б.
117
2. Программа 9~7 (рис. 30). Итак, к началу применения програм
мы 9 i символы || |
и Д ограничивают на лепте зону, содержащую за |
||||||||||||||||
пись исходного слова Р. Далее в процессе |
работы |
программы |
9 } |
сим |
|||||||||||||
вол |
|| (неподвижная |
метка) |
сохраняется |
в |
своем |
ячейке, |
а |
сим |
|||||||||
вол |
А (подвижная |
метка) перемешается |
вправо в каждой ситуации, |
||||||||||||||
|
|
|
|
когда |
выясняется, |
что внутри |
зоны, |
ограни |
|||||||||
|
/7 |
л |
|
ченной метками |
|| |
и А |
(для |
краткости |
будем |
||||||||
X |
|
называть |
ее просто |
зоной), |
нехватает |
места |
|||||||||||
У |
П |
л |
|
для вычислений. К концу |
работы |
программы |
|||||||||||
Л |
|
|
|
9t в зоне, |
которая |
сложится |
к |
тому |
времени, |
||||||||
|
|
|
будет расположена |
запись слова |
R — резуль |
||||||||||||
Д |
|
|
|
||||||||||||||
|
Л! |
|
тата. |
Программа |
9 i |
получается |
путем |
рас- |
|||||||||
II |
|
|
ширения |
программы |
9! |
так, |
как |
|
указано в |
||||||||
|
|
|
|
схеме рис. 30. Алфавит U , у, Л) программы;)! |
|||||||||||||
|
|
|
|
расширяется за |
счет |
символов |
|| , |
Д. |
Далее, |
Рис. 29. для каждого состояния 17 программы 9 ! добав ляются еще 7 связанных с q состояний, которые именуются q, q^, qx, qu, qA qA, q'. Итак, число состояний в 8 раз
превосходит число состояний в Эи Проследим теперь за работой программы 9 ! и сравним ее с работой заданной программы D i . По ка головка находится внутри зоны, 9 i работает в точности так же, как 9с. Пусть впервые головка вышла на метку Д в некотором состоя
нии q |
(см. рис. |
28, в). |
Тогда |
она стирает |
Д (команда Aq -+ |
Л flq), |
||||||
X |
|
'7 |
|
г |
<t« • |
1х- |
1» |
|
1л |
1А |
|
л |
|
|
|
Г\Чх *п!х |
Уп1х |
А^Х |
|
|
|||||
|
|
Л. |
|
лЩу |
хЛ$у |
УЩу |
Л % |
|
|
л |
||
•Л |
|
|
|
|
|
хП^й |
УЧл |
Л ffqА |
|
|
л |
|
д |
|
I\t7g |
|
|
|
УЧ& |
|
|
|
|
|
|
II |
|
п1п |
|
|
|
|
|
|
|
|
|
/71 |
|
|
|
|
|
Рис. |
30. |
|
|
|
|
|
|
уходит |
вправо |
в пустую ячейку, вписывает там |
Д (команда |
Aij -»- |
||||||||
— SJIq) |
и возвращается |
опять-таки |
в состоянии |
q, |
туда, |
где |
прежде |
|||||
была |
метка Д, |
а теперь |
уже |
пустая |
ячейка |
(см. |
рис. 28, |
г). |
Короче, |
метка сдвинута вправо и машина продолжает работать так же, как программа 9} в расширенной зоне. Допустим, что головка вышла на метку || в состоянии q (см. рис. 28, д). Поскольку метка || непод вижна и, следовательно, зону нельзя расширить влево, то высво бождение на левом конце пустой ячейки, необходимой для вычисле ний по программе 97, осуществляется так. Всю запись в зоне, вклю чая и метку Д, перемещают на одну ячейку вправо, а в освободившую ся пустую ячейку по соседству с меткой || помещают головку в том же состоянии q, в котором она первоначально (в поиске «свободного
пространства»!) наткнулась на метку || (см. |
рис. 28, е). Тем |
самым |
и достигается нужный эффект от программы |
91Проследим |
подроб- |
118
нее по программе, как это происходит. Наткнувшись на || в состоя нии q головка уходит вправо (команда || q -* Яг/ц), очищает сосед нюю справа ячейку и, запоминая ее содержимое, уходит вправо
(команда |
типа А-<7Ц -> Л/7<7Л содержит |
состояние qx, «запоминаю |
|
щее л-»). |
Из |
столбцов программы, соответствующих состояниям <7ц, |
|
qx, qv, qA, |
qA, |
видно, что процесс перенесения содержимого каждой |
|
ячейки в соседнюю с ней ячейку справа |
продолжится до тех пор, по |
ка головка не переместит символ Д, а потом в состоянии q' начнет
сдвиг влево, дойдет до |
|| |
и, наконец, |
в состоянии |
q вернется в ячей |
ку, соседствующую с |
|| |
справа. |
|
|
Программа 2 {рис. |
|
31). Заметим, |
что по окончании работы |
|
результат R записан где-то в удлинившейся по ходу вычисления |
||||
зоне. Программа £ перемещает слово |
R впритык |
к метке || и уби |
||
рает правую метку Д. |
|
|
|
|
|
р, |
Р., |
|
4 |
Рг |
|
|
Ц |
|||
X |
лРо: |
РРХ |
|
Л |
|
У |
ЛРч |
"PL |
щ |
|
Л |
Л |
П |
Л |
л |
хЛр, УПР, |
л |
д |
1\Лр, |
|
пр'у |
|
л |
II |
|
РРх |
|
Л! |
|
|
|
|
Рг |
31. |
|
Тем самым теорема доказана для случая правой полуленты. Программирующий алгоритм в случае левой полуленты совсем не
значительно отличается |
от описанной |
выше |
конструкции. |
12.3. Многоэтажные |
и многомерные |
ленты. |
В заключение этого |
параграфа укажем бегло на другие возможные модификации внешней памяти машины Тьюринга.
Сначала рассмотрим случай, когда каждая ячейка ленты состоит
из верхнего и нижнего этажей и, соответственно, способна |
содержать |
||||
|
|
|
|
А' |
X' |
два символа — верхний |
и нижний. Команды имеют вид |
yq |
-*• y'Pq |
||
и выполняются так: если |
в состоянии q машина обозревает верхний |
||||
символ х и нижний символ у, то она записывает на верхнем |
этаже |
||||
А'', на нижнем |
этаже у', осуществляет сдвиг Р н переходит в состоя |
||||
ние q'. Легко |
понять, что новая концепция |
несущественно |
отличает |
||
ся от обычной: все новшество заключается |
лишь в том, что в качест |
||||
ве внешних символов берутся пары (столбцы высотой в две |
буквы) |
из какого-то другого алфавита*1 . Точно так же машина с v-этажной лентой — по существу обычная машина, внешние символы которой являются столбцами высоты v из символов некоторого алфавита. Это простое замечание позволяет строго доказать, что привлечение
*> Впрочем, можно заметить, что и обычно в реальных ситуа циях символ, трактуемый как единый объект, можно рассматривать и как нечто состоящее из двух частей — верхней и нижней, например русские буквы й, ё пли символы типа а', Ь и т. п.
119