Файл: Трахтенброт, Б. А. Алгоритмы и вычислительные автоматы.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 19.10.2024
Просмотров: 138
Скачиваний: 0
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
многоэтажных лент не расширяет класса функций, вычислимых тыорингопыми машинами (подобно тому как отказ от бесконечных в обе стороны лент не суживает этого класса). Однако с точки зре ния методики программирования такое привлечение может оказать ся удобным. В качестве упражнения рекомендуется доказать теоре му о программировании параллельной композиции, исходя из сле дующей идеи. Применяя двухэтажную лепту, можно на одном этаже
вычислить 91] {Pi), на другом — |
{Р2), а потом свести результаты |
к виду «31, (PJ || <2U (Рг1 |
|
Ь\Ь\Ь\ |
\b\b\b |
Рис. 32.
Перейдем к рассмотрению тыоринговых машин с многомерной
внешней памятью. В случае двумерной памяти |
картина выглядит |
так. Плоскость замощена квадратными ячейками |
(рис. 32), каждая |
из которых может содержать один символ внешнего алфавита. Вмес те трех вариантов сдвига, как это было прежде, теперь допускаются
пять: |
вправо, влево, вверх, |
вниз, на месте. Команды имеют вид |
xq -> х |
Pq и выполняются, |
как обычно, с той лишь оговоркой, что |
Р может принимать любое из указанных выше пяти значений. Можно принять следующую концепцию вычисления функции R = / (Я). В исходной конфигурации слово Н записано в строку (по горизон тальней строке) и, хотя промежуточная информация может распола
гаться произвольным образом па |
плоской ленте, результат R так |
же записан в строку. Тем не менее |
можно показать, что если функция |
вычислима на машине с двумерной памятью, то она вычислима и на обычной машине с одномерной лептой. Это утверждение справедли
во и для любой /г-мернон |
памяти {k — |
2, 3, . . . ) . Оно основано на той |
же идее, которая была |
использована |
при доказательстве теоремы |
о полуленте. Именно программу машины 9)2 с /е-мерной лентой можно перестроить в программу машины 93с' с обычной лентой, которая в определенном смысле имитирует работу машины 9Л. Однако реали зация этой идеи в данном случае несколько сложнее.
§ 13. ОСНОВНАЯ ГИПОТЕЗА ТЕОРИИ АЛГОРИТМОВ
13.1. Гипотеза и ее значение. Разбор предыдущих при меров создает впечатление о процессе, происходящем в тыо ринговой машине, как о чрезвычайно замедленной кино съемке процесса вычисления, выполняемого человеком
120
в соответствии с некоторым алгоритмом. Вместе с тем эти примеры подсказывают нам мысль задавать посредством функциональных схем тыоринговых машин и другие из вестные нам алгоритмы, которые обычно задаются иным способом, например в виде какого-либо словесного пред писания или же в виде каких-либо специальных формул. Уже на данной стадии наших рассмотрений представляется весьма правдоподобным, чтб это действительно должно уда ваться и в других случаях. Так ли оно на самом деле? На сколько общими являются понятия тьюринговой машины и тыорннговой функциональной схемы? Можно ли считать,- что способ задания алгоритмов посредством функциональ ных схем является универсальным в том смысле, что всякий алгоритм может быть задан таким образом?
На эти вопросы современная теория |
алгоритмов пред |
||
лагает ответ в виде следующей |
гипотезы. |
||
О с н о в н а я г и п о т е з а т е о р и и а л г о р и т- |
|||
м о в. Всякий |
алгоритм может быть |
задан посредством |
|
тыорннговой функциональной |
схемы и |
реализован в соот |
|
ветствующей |
машине Тьюринга. |
|
Мы рассмотрим здесь два вопроса, возникающих в связи
сформулировкой гипотезы:
1.В чем заключается значение этой гипотезы для тео рии алгоритмов?
2.В чем заключается обоснование гипотезы?
Прежде всего обратим внимание на следующую харак терную особенность приведенной формулировки гипотезы. В этой формулировке речь идет, с одной стороны, о всяком алгоритме, т. е. об общем понятии алгоритма, которое, как уже подчеркивалось неоднократно, не является точным математическим понятием; с другой же стороны, в этой же формулировке речь идет о таком точном математическом понятии, как тыорингова функциональная схема.
Значение гипотезы как раз и заключается в том, что она уточняет общее, но расплывчатое понятие «всякого ал горитма» через более специальное, но уже совершенно точ ное математическое понятие тьюринговой функциональной схемы (и ее реализации в тьюринговой машине); таким об разом, теория алгоритмов и объявляет в качестве объекта своего исследования всевозможные тыоринговы функцио нальные схемы (тыоринговы машины). Вместе с тем стано вятся уже осмысленными постановки таких вопросов, как вопрос о возможности или невозможности разрешающего алгоритма для задачи того или другого типа. Именно теперь
121