Многоленточная машина Тьюринга



Модели вычислителей

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

 

Конечный автомат (КА)

 

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

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

Иными словами, автоматы — это ус­тройства, механически выполняющие алгоритмы. Можно строить различные мо­дели устройств, автоматически выполняющих алгоритмы, и исследовать классы алгоритмов, которые могут быть реализованы на этих моделях.

 

Функ­ционирование автомата удобно представлять графически. При получении входного сигнала конечный автомат выдает инфор­мацию на выход как функцию этого входного сигнала и текущего состояния и меняет свое внутреннее состояние. На рисунке блок памяти автомата хранит информацию о текущем состоянии S, которое вместе с входным сигналом X определяет выходную реакцию автомата У и следующее состояние.

В качестве примера опишем с помощью конечного автомата поведение родителя, отправившего сына в школу. Сын приносит двойки и пятерки. Отец не хочет хвататься за ремень каждый раз, как только сын получит очередную двойку, и выбирает более тонкую тактику воспитания. Задавать авто­мат удобно ориентированным графом, в котором вершины соответствуют состояниям, а дуга из со­стояния s в состояние q, помеченное х/у, проводится тогда, когда автомат из состо­яния s под воздействием входного сигнала х переходит в состояние q с выходной реакцией у. Граф автомата, моделирующего умное поведение родителя, представ­лен на рисунке.

 

Автомат, описывающий поведение «умного» отца

 

 

Этот автомат имеет четыре состояния {s0, s1, s2, s3} и два входных сигнала — оценки, полученные сыном в школе: {2,5}. Начиная с начального состояния s0 (оно помече­но входной стрелкой), автомат под воздействием входных сигналов переходит из одного состояния в другое и выдает выходные сигналы — реакции на входы. Выхо­ды автомата {у0,..., у5} будем интерпретировать как действия родителя так:

 

у0: — брать ремень;

у1: — ругать сына;

у2: — успокаивать сына;

уЗ: — надеяться;

у4: — радоваться;

у5: — ликовать.

 

Сына, получившего одну и ту же оценку — двойку, ожидает дома совершенно раз­личная реакция отца в зависимости от предыстории его учебы. Отец помнит, как его сын учился раньше, и строит свое воспитание с учетом его предыдущих успе­хов и неудач. Например, после третьей двойки в истории 2,2,2 сына встретят рем­нем, а в истории 2, 2, 5, 2 — будут успокаивать. Каждая предыстория определяет текущее состояние автомата, при этом некоторые входные предыстории эквива­лентны (именно те, которые приводят автомат в одно и то же состояние): история 2,2,5 эквивалентна пустой истории, которой соответствует начальное состояние.

Текущее состояние автомата представляет все то, что автомат знает о прошлом с точки зрения его будущего поведения — реакций на последующие входы. Эта ис­тория в концентрированном виде определена текущим состоянием, и все будущее поведение автомата, как реакция его на последующие входные сигналы, определе­но именно текущим состоянием, но не тем, как автомат пришел в него.

Конечные автоматы могут решать толь­ко узкий класс алгоритмических задач. Конечный автомат как автоматическое устройство, перерабатывающее информацию, ограничен в своих возможностях. Например, никакой КА не может решить проблему умножения двух чисел. Иными сло­вами, не все алгоритмы обработки информации могут быть реализованы конечны­ми автоматами. Класс алгоритмов, которые могут быть реализованы конечными автоматами, весьма ограничен.

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

 

 

Из-за ограниченной внутренней памяти и отсутствия внешней КА может реализовать только узкий класс задач.

Если к модели КА добавить неограниченную внешнюю память, то получим автомат, реализующий любой алгоритм. Такой автомат называется Машиной Тьюринга.

 

 

МТ состоит из 2 частей: ленты и конечного автомата. Лента неподвижна, а головка движется относительно ленты под управлением автомата (влево, вправо, стоит на месте).

 

МТ может выполнять следующие команды:

1) записывать в ячейку ленты новый символ;

2) сдвигаться на одну ячейку влево или вправо;

3) переходить в новое внутреннее состояние.

Больше МТ ничего не может.

 

МТ задается:

1) набором внутренних состояний Q={q1…qn};

2) входным алфавитом S={s1…sk);

3) командами движения головки {L,R,N}.

4) программой управления, которую удобно задавать в табличной форме.

 

 

Автомат останавливается по команде stop (!) в определенном состоянии (конфигурации) <s,q>.

 

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

 

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

 

Рассмотрим примеры решения задач с помощью машины Тьюринга.

 

Пример 1.

 

 

Сокращенная запись:

 

 

Пример 2.

 

Многоленточная машина Тьюринга

 

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

 

Пример. Вычислить сумму 2-х чисел в 2СС

 

Исходные данные

 

**001100111**    //символы на ленте 1

**100111100**    //символы на ленте 2

*************    //символы на ленте 3

 

Головки обозревают первые символы лент

 

Состояния (процессы) выполнения задачи

 

q0 – поиск начала записанных чисел

q1 – движение головок вдоль чисел до последнего

q2 – сложение чисел и запись результата на 3-ю ленту

q3 – сложение чисел с учетом переноса

q4 – конечное состояние, останов МТ

 

Команды 3-ленточной МТ, выполняющей сложение 2 чисел в 2СС

 

q, S1, S2, S3 -> q’, S1’, S2’, S3’, Г1, Г2, Г3

 

0,*,*,*>0,*,*,*,R,R,R           

0,0,0,*>1,0,0,*,R,R,R

0,1,0,*>1,1,0,*,R,R,R

0,0,1,*>1,0,1,*,R,R,R

0,1,1,*>1,1,1,*,R,R,R

1,0,0,*>1,0,0,*,R,R,R

1,1,0,*>1,1,0,*,R,R,R

1,0,1,*>1,0,1,*,R,R,R

1,1,1,*>1,1,1,*,R,R,R

1,*,*,*>2,*,*,*,L,L,L

2,0,0,*>2,0,0,0,L,L,L

2,0,1,*>2,0,1,1,L,L,L

2,1,0,*>2,1,0,1,L,L,L

2,1,1,*>3,1,1,0,L,L,L

2,*,*,*>4,*,*,*,S,S,S

3,0,0,*>2,0,0,1,L,L,L

3,*,*,*>2,*,*,1,L,L,L

3,0,1,*>3,0,1,0,L,L,L

3,1,0,*>3,1,0,0,L,L,L

3,1,1,*>3,1,1,1,L,L,L

 

Программа в табличном виде

 

Вн. сост. *,*,* 0,0,* 1,0,* 0,1,* 1,1,*
q0 q0,*,*,*,R,R,R q1,0,0,*,R,R,R q1,1,0,*,R,R,R q1,0,1,*,R,R,R q1,1,1,*,R,R,R
q1 q2,*,*,*,L,L,L q1,0,0,*,R,R,R q1,1,0,*,R,R,R q1,0,1,*,R,R,R q1,1,1,*,R,R,R
q2 q4,*,*,*,S,S,S q2,0,0,0,L,L,L q2,0,1,1,L,L,L q2,1,0,1,L,L,L q3,1,1,0,L,L,L
q3 q2,*,*,1,L,L,L q2,0,0,1,L,L,L q3,1,0,0,L,L,L q3,0,1,0,L,L,L q3,1,1,1,L,L,L

 


Дата добавления: 2022-01-22; просмотров: 27; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!