Файл: Трахтенброт, Б. А. Алгоритмы и вычислительные автоматы.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А

 

л

 

 

 

Г\Чх *п

Уп

А^Х

 

 

 

 

Л.

 

лЩу

хЛ$у

УЩу

Л %

 

 

л

•Л

 

 

 

 

 

хП^й

УЧл

Л 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