Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория алгоритмов.doc
Скачиваний:
12
Добавлен:
29.07.2019
Размер:
154.62 Кб
Скачать

Машина поста.

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

Эти машины представляют собой универсальные исполнители, являющиеся полностью детерминированными, позволяющие вводить начальные данные и после выполнения программ «читать» результат.

Машина Поста менее популярна, хотя она значительно проще машины Тьюринга. С её помощью можно вести обучение первым навыкам составления программ для ЭВМ.

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

Информация о заполненных метками клетках ленты характеризует состояние ленты, которое может меняться в процессе работы машины. В каждый момент времени головка находится над одной из клеток ленты, и, как говорят, обозревает её. Информация о местоположении головки, вместе с состоянием ленты характеризует состояние машины Поста.

Команда машины поста имеет следующую структуру nKm, где n – порядковый номер команды; K – действие, выполняемое головкой; m – номер следующей команды, подлежащей выполнению.

Программой для машины поста называется непустой список команд, такой, что на n-ом месте находится команда под номером n, а номер m каждой команды совпадает с номером какой-либо команды списка.

С точки зрения свойств алгоритма, изучаемых с помощью машины Поста, наибольший интерес представляют причины останова машины при выполнении программы:

1. Останов по команде СТОП. Такой останов называется результативным и указывает на корректность алгоритма (программы);

2. Останов при выполнении недопустимой программы. В этом случае останов называется безрезультативным;

3. Машина не останавливается никогда. В этом и предыдущем случае мы имеем дело с некорректным алгоритмом.

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

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

q0, q1, q2,…,qs принадлежат некоторой конечной совокупности, при этом q0 называется начальным состоянием .

Читающая и пишущая головка может читать буквы рабочего алфавита: A={a0,a1,…at}, стирать и печатать.

Каждая ячейка ленты в каждый момент времени занята буквой из множества A. Чаще всего встречается буква a0 – пробел.

Головка находится в каждый момент времени над некоторой ячейкой ленты – текущей рабочей ячейкой.

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

Порядок работы машины Тьюринга описывается таблице. Эта таблица является матрицей со столбцами (s+1) и строками (t+1)

Каждая строка имеет вид: aj vij aij , при a ≤ i ≤ s ; 0 ≤ j ≤ t ; u,j € {q0, q1,…,qs}

Через Vij обозначен элемент объединения алфавита A={a0,a1,…at} и множество предписаний для лентопротяжного механизма;

Vij – действие машины Тьюринга, состоящее либо в занесении в ячейку текущей ленты символа алфавита, либо в движении головки, либо в останове машины.

qij – является последующим состоянием.

Машина Тьюринга работает согласно следующим правилам:

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

  2. Если Vij буквы рабочего алфавита, то головка стирает содержимое рабочей ячейки и заносит туда эту букву.

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

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

Пример: A={0,1,2,3,4,5,6,7,8,9,_}

Алгоритм прибавления 1 к числу [][3][2][][][][]

a

q1

q2

0

1

2

3

4

5

6

7

8

9

_

0Пq1

1Пq1

2Пq1

3Пq1

4Пq1

5Пq1

6Пq1

7Пq1

8Пq1

9Пq1

_Лq1

1Сq2

2Сq2

3Сq2

4Сq2

5Сq2

6Сq2

7Сq2

8Сq2

9Сq2

0Сq2

1Сq2