Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
27
Добавлен:
09.02.2015
Размер:
399.87 Кб
Скачать

Автоматизация формальных

символьных манипуляций.

Абстрактная вычислительная машина.

Лекция 8.

 

4.1. Обсуждаются два принципиальных вопроса,

 

которые кратко можно сформулировать так:

 

1) что могут делать вычислительные машины?

2) как они это делают?

Первый вопрос направлен на выяснение “интеллектуальных” возможностей машины. Его актуальность

 

связана, в частности, с тем, что не все, а точнее, очень мало из области нашей человеческой деятельности

 

удается представить в виде алгоритма. Подчеркнем, что трудности алгоритмизации не связаны с какими-либо

 

запретами принципиального характера, а обусловлены “всего лишь” ограниченными возможностями самого

 

человека.

Здесь уместно привести высказывание Э. Дейкстры, одного из основоположников структурного

 

программирования: “… человек соображает медленно, а емкость его памяти очень мала, и ему следует

 

получше научиться жить в таких условиях, учитывать ограниченность своих возможностей и относиться к

 

ней с полным уважением, а не пытаться игнорировать ее, так как такие тщеславные попытки будут обречены

 

на неудачу”/.

Стремление сделать понятие алгоритма достаточно отчетливым и доступным изучению математическими

 

средствами привело к разработке точных концепций алгоритма. В настоящее время известны ряд таких

 

концепций (машины Поста, Тьюринга, Минского, нормальные алгоритмы Маркова, рекурсивные функции и

 

т.д.), причем все эти концепции равнообъемны.

Виртуальные (умозрительные) конструкции Тьюринга-Поста остаются ярчайшими образцами научного

 

предвидения; именно на абстрактных математических моделях, представленных этими машинами, было

 

строго доказано существование универсальных вычислительных машин. Более того, и по сей день в теории

 

алгоритмов машина Тьюринга постоянно используется в качестве основной модели для выяснения сущности

 

таких понятий, как “вычислительный процесс”, “алгоритм”, “программа”, а также для выяснения связи между

 

алгоритмами и вычислительными машинами. Хотя, как упомянуто выше, возможны и другие абстрактные

 

модели вычислительных машин, отличные от машины Тьюринга, тем не менее все они равносильны друг

 

другу (а, значит, и тьюринговой модели) в следующем смысле: класс проблем, которые можно решать на

 

моделях одного типа, в точности совпадает с классом проблем, которые можно решать на моделях другого

 

типа, в частности, на машинах Тьюринга. Именно благодаря этому в математических категориях приобретают

 

свой точный смысл и решаются два упомянутые выше принципиальных вопроса.

/ Дал У., Дейкстра Э., Хоор К. Структурное программирование: Пер. с англ. /Под. ред. Э.З. Любимского и

 

 

В.В. Мартынюка. – М.: Мир, 1975. – 246 с.

Машина Тьюринга былаМашинапредложена в качествеТьюрингамодели алгоритма в 30-е годы прошлого столетия. Она была придумана не для того, чтобы производить на ней реальные вычисления, а для того, чтобы показать, что любой сколь угодно сложный алгоритм можно построить из очень простых процессов (операций), не допускающих какой-либо двусмысленности в их толковании. При этом сами операции и переход от одной операции к другой выполняются автоматически, с помощью простых технических средств.

Машина состоит из трех частей (рис. 4.1): ленты, головки и управляющего устройства. Лента бесконечна в обе стороны, разбита на ячейки. В каждой ячейке может быть записана

только одна буква из алфавита машины A = {a1, …, ak, …, aK}. Отсутствие буквы в ячейке

обозначается. специальным (“пустым”) символом. Головка всегда расположена над некоторой ячейкой ленты. Она может читать и писать буквы, стирать их, а также перемещаться вдоль ленты. Головка на каждом шаге работы находится в одном из состояний, образующих конечное

множество Q = {q1, …, qm, …, qM}/.

 

Среди состояний выделяются начальное

 

 

Устройство управления (УУ)

 

 

 

 

q0

заключительное

qmF

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

qm

 

 

 

 

 

 

 

и Работа машины представляет собой

 

 

 

 

 

 

 

 

 

 

некоторую последовательность шагов. Шаг

 

 

 

 

 

 

 

 

 

 

 

 

 

заключается в следующем. Головка считывает

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Головка записи/чтения

букву, записанную в ячейке, над которой она

 

 

 

 

 

 

 

 

 

 

 

 

Лента

находится. В зависимости от своего состояния,

 

 

akj 2

 

 

akj

 

 

 

akj 3

 

 

 

 

 

 

 

 

 

представленного буквой алфавита состояний

 

 

 

Ячейка

 

 

 

 

УУ, и прочтенной буквы она переходит в новое

 

 

 

 

 

 

 

состояние (возможно подтверждение старого)

 

Рис. 4.1. Концептуальная схема машины Тьюрингареализует команду. В команде указано,

 

 

 

какую букву записать и какие перемещения

 

/ Можно представить себе текущее состояние как

 

некоторый указатель на то, что произошло в машине

совершать. После выполнения команды

 

к настоящему шагу (моменту) работы и что

машина готова к реализации следующего

 

произойдет в следующем.

 

 

 

 

шага.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Машина Тьюринга

Принимая во внимание введенное ранее определение процесса путем задания его множества состояний (с выделением из него некоторого начального) и правил перехода из одного состояния в другое, нетрудно конкретизировать развивающийся в машине Тьюринга процесс следующим образом. Множество состояний процесса – это множество состояний УУ; в результате воздействия на процесс со стороны ленты, точнее, буквы в конкретной ячейке ленты, процесс изменяет (либо сохраняет) свое состояние и откликается на внешнее воздействие записью в ячейку ленты конкретной буквы алфавита машины A. Благодаря таким действиям процесс переводит одно слово, присутствующее на ленте, в другое, причем слова представлены в одном и том же алфавите A.

правил, по которым работает машина. Они имеют вид:

(если головка находится в состоянии qi, а в обозреваемой ячейке записана буква aj, то

q, в ячейку вместо a записываетсяa , головка делает движение d , головка переходит в состояниеi j j k

которое имеет три варианта: на ячейку влево, на ячейку вправо, остаться на месте). Для каждой возможной конфигурации <qi, aj> имеется ровно одно правило. Правил нет только

для заключительного состояния, попав в которое машина останавливается/. Поскольку различных множеств A и Q и правил может быть сколь угодно много, то и конкретных машин Тьюринга тоже бесконечно много.

/ Машина Тьюринга управляется данными (data-driver). Алгоритм на каждом шаге производит локальное преобразование данных (имеет место так называемый принцип локальной правильности).

Программа машины

Тьюринга

Программой машины Тьюринга называется конечный непустой список команд (правил) машины Тьюринга, занумерованный последовательно числами 1, 2, 3, …, M.

Естественно также потребовать, чтобы значения всех операндов в командах программы не выходили за пределы диапазона номеров, использованных для нумерации команд в этой программе.

Отметим также, что для представления слов, с которыми работает машина, можно без каких-либо ограничений общности рассматривать алфавит { , }, содержащий лишь две буквы. Действительно, все, что можно записать в бесконечном алфавите 1, 2, …, можно воспроизвести и в алфавите { , }: для этого достаточно закодировать буквы 1, 2, … словами вида , , … .

Если теперь, задавшись программой и какой-либо начальной конфигурацией (т.е. положением головки и словом на ленте), пустить машину в ход, то осуществится один из следующих трех вариантов:

1.Произойдет рабочий шаг машины.

2.Произойдет результативная остановка при выполнении команды СТОП. Соответствующая конфигурация машины представляет результат выполнения программы.

3.Машина “зациклится”, т.е. работа машины продолжается бесконечно.

 

Пример.

 

2

 

 

 

 

 

 

1

 

 

 

 

 

0

 

Анализ работы машины Тьюринга, программа для

1

 

 

которой задана таблицей

 

 

3

 

На рис. 4.2 представлен процесс изменения

2

 

 

 

4

 

конфигураций машины Тьюринга,

3

 

 

обеспечивающий решение задачи удвоения

 

4

 

числа, заданного словом в однобуквенном

4

 

 

1

алфавите (набором крестиков “ ”). На входе

5

 

имеем “ ”, а на выходе – “ ”. Машина

 

 

2

 

работает в двухбуквенном алфавите A = {пусто,

6

 

 

 

}.

 

Буква на ленте

 

3

 

 

 

7

 

 

Состояние

 

 

 

3

 

Пусто

 

8

 

 

УУ

 

3

 

 

 

 

 

9

 

 

 

 

1.Стереть

 

 

 

 

 

 

4

 

1

 

СТОП

2.Перейти к

10

 

 

 

состоянию 2

4

 

 

 

 

 

 

 

 

 

3.Влево

 

 

 

 

 

11

 

 

 

 

1.Записать

1.Сохранить

 

4

 

 

 

2.Перейти к

12

 

 

2

 

состояние 2

 

 

состоянию 3

 

 

4

 

 

2.Влево

13

 

 

 

3.Влево

 

1

 

 

1.Записать

1.Сохранить

14

 

3

 

2.Перейти к

 

 

состоянию 4

состояние 3

 

 

 

 

 

2.Влево

 

 

 

 

 

3.Вправо

15

 

 

 

 

 

 

 

4

 

1.Перейти к

1.Сохранить

Рис. 4.2. Изменение конфигураций машины

 

состоянию 1

состояние 4

Тьюринга при решении задачи удвоения числа,

 

 

2.Вправо

2.Вправо

заданного словом в однобуквенном алфавите

 

 

 

 

Тезис Тьюринга

Интуитивное понятие алгоритма равнообъемно с точным понятием

алгоритма Тьюринга.

Другими словами для любой вычислимой функции (т.е. функции, для которой существует вычисляющий ее алгоритм) можно построить машину, которая ее вычисляет. Это и означает, что машина Тьюринга является универсальной алгоритмической моделью.

Одна часть тезиса Тьюринга очевидна – всякий алгоритм Тьюринга является несомненно алгоритмом и в интуитивном смысле. Действительно, если дан алгоритм Тьюринга, мы можем выполнить его для произвольных исходных данных (начальная разметка ленты, начальное положение головки). Каждый шаг работы машины вполне точен и общепонятен. Значит, и результат обработки данных будет вполне определенным.

Вторая часть тезиса – основная. Она утверждает, что всякий алгоритм в интуитивном смысле является и алгоритмом Тьюринга. Подчеркнем, что эта часть тезиса Тьюринга ни в коей мере не является математическим утверждением, а представляет собой естественнонаучный закон о границах алгоритмических способностей человека. Таким образом, и весь тезис Тьюринга выражает закон природы, а не математическое утверждение, установленное логическим путем.

К числу убедительных соображений, подтверждающих этот тезис, относится тот факт, что многие сильно различающиеся подходы к уточнению понятия алгоритма (исчисление равенств (Гёдель), -определимость (Чёрчь), абстрактные машины (Пост), нормальные алгоритмы (Марков) и целый ряд других) оказались эквивалентными. В каждом из этих подходов справедлив свой “закон природы”, аналогичный тезису Тьюринга/.

/ Успенский В.А. Машина Поста / 2-е изд. – М: Наука, 1988. – 95 с.

Машина Тьюринга крайне проста. Вместе с тем эта модель отражает существенные свойства любой вычислительной машины в смысле того, что эти машины вообще могут делать, и как они это делают.

Прежде всего, в этой формальной системе не видно понятия символа как элемента, который что-то обозначает. Данные рассматриваются просто как конечные последовательности букв некоторого алфавита. Это обстоятельство, а именно нейтральность данных, существенна для сведения вычислений к физическим процессам. Далее, действия по обработке данных регламентируются соответствующими им состояниями управляющего устройства машины. Его память конечна и выступает, по существу, в качестве хранилища совокупности знаний системы. То, что было достигнуто на этом этапе развития теории вычислений, во многом способствовало прояснению принципа интерпретации, относящегося к числу важнейших в информатике: было показано, что машина может действовать, исходя из описания процесса вычислений. В прагматическом отношении суть этого этапа состоит в автоматизации формальных символьных манипуляций.

В этой связи следует особо отметить, что возникновение электронных вычислительных машин нельзя рассматривать как результат развития только инженерного изобретательства и электронной техники. Действительно, применение электронной техники обеспечивает большую экономию во времени при реализации элементарных операций, совершаемых машиной. Однако главнейшая черта этих машин – автоматическое управление процессами обработки данных – не является следствием применения электронной техники. Основной вклад в решение этой принципиально важной для развития информатики проблемы принадлежит математическим логикам, сформулировавшим понятие абстрактной вычислительной машины.

4.2. Вычисления на машинах

Тьюринга

Составление алгоритма отнюдь не легкое дело. Оно может потребовать глубокого анализа содержания рассматриваемой задачи и изобретательности. Если же мы хотим представить в виде

тьюринговой программы алгоритм, первоначально описанный на иных алгоритмических языках (как правило, уровня более высокого, чем язык машины Тьюринга), то у нас возникают дополнительные трудности; они как раз и связаны с чрезвычайной простотой операций машины Тьюринга и крайне ограниченным доступом машины к ее внешней памяти. Напомним, что на каждом такте происходит преобразование лишь в одной ячейке и возможен сдвиг лишь в соседнюю ячейку. Хотя формально в определении машины Тьюринга идет речь о бесконечной ленте, на самом деле имеют значение лишь конечные ее куски. В тех случаях, когда памяти не хватает (головка доходит до края ленты), эти куски можно удлинять. Математики такие объекты связывают с понятием потенциально бесконечного множества (в отличие от актуально бесконечного множества, когда множество в виде абстрактного бесконечного объекта вводится в рассмотрение изначально). В этой связи правильнее рассматривать машину Тьюринга не как бесконечную машину, а как растущую.

При рассмотрении задач мы будем использовать два варианта машины Тьюринга. Первый (назовем

его обобщенным) задается множеством пятерок вида q

a

 

q a d

k, о чем речь шла выше.

 

 

 

 

 

i

 

j

i j

 

 

Напомним, что здесь на каждом шаге работы машины возможны

 

 

как состояния

головки qi qi и буквы

a

 

a в обозреваемой ячейке ленты, такизмененияположения головки dk

 

 

j

j

– без изменения). Второй (назовем его

 

 

{R, L, } (R – вправо, L – влево,

 

 

простейшим) на каждом шаге работы машины разрешает изменения либо

 

буквы алфавита машины, либо положения головки, т.е. совместные изменения

(буквы, положения головки) запрещены. Для простейшего варианта, таким

 

образом, оказываются

 

пятерки вида либо

qi a j qi a j , либо

 

qi a j qi a j dk, d {R, L}. Понятно,справедливымичто этом случае следует говорить о задании

 

k

 

 

 

четверками qi a j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

qi a j qi a j dk ,

qi a j

и qi a j qi dk , или qi a j qi j ,

машины Тьюринга не пятерками

 

 

 

 

 

 

q a

 

q a d

 

 

где j {a j , dk } Тогда шаг обобщенной машины, представленной пятеркойi

j

i j

k

 

эквивалентен (в смысле достигаемой конфигурации машины) двум последовательно

 

 

 

 

 

qi a j qi a j и

qi a j qi dk

.

 

 

 

 

исполняемым шагам простейшей машины :

 

 

 

 

 

 

 

 

 

.

Задачи

Условимся еще в определенном стандартном задании исходной и результирующей информации при вычислениях на машинах Тьюринга. Как уже указывалось, эта информация изображается в виде исходного слова P в алфавите машины A и результирующего слова R в том же самом алфавите. Примем соглашение о том, какие ячейки должны обозреваться в начале и в конце вычисления. Если противное не оговорено, то в начальной и заключительной конфигурациях должен обозреваться первый символ слова P или соответственно слова R. В этом случае будем говорить о стандартном изображении слов P и R посредством начальной и заключительной конфигурации. Если машина Тьюринга F перерабатывает слово P, изображенное стандартно, в слово R, также изображенное стандартно, то это будем записывать так: R = F(P).

Задача 1. Оператор тождественного преобразования R = E(P) перерабатывает каждое слово P в некотором заданном алфавите в это же самое слово P: E(P) = P.

Примем для определенности алфавит машины, состоящим из трех букв {0, 1, B}:

0, 1 – используется для представления информации на ленте;

B – обозначает отсутствие информации в ячейке ленты (пустой символ).

В основу алгоритма можно положить следующие соображения. Слово P занимает некоторую часть ленты, отличающуюся от остальной части ленты заполненными нулями либо единицами ячейками. Тождественное преобразование состоит в подтверждении содержания этих ячеек путем последовательного их просмотра перемещающейся головкой, начиная с исходной позиции слева направо. При достижении правой границы слова состояние машины должно измениться с тем, чтобы обеспечить обратное движение (справа налево) головки. На обратном пути каких-либо изменений содержимого ячеек памяти происходить не должно. Переход из этого состояния в первое (исходное) должен произойти при достижении возвращающейся головки левой границы преобразуемого слова P. Переход в это состояние сопровождается сдвигом головки вправо на одну позицию с тем, чтобы она заняла исходное положение.

Соседние файлы в папке презентации