Файл: Трахтенброт, Б. А. Алгоритмы и вычислительные автоматы.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 19.10.2024
Просмотров: 140
Скачиваний: 0
Мы покажем, как закодировать каждое из названных четырех ком
понент натуральным числом: |
код |
(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