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

Машина Поста

Машина Поста – это абстрактная (несуществующая реально) вычислительная машина, созданная для уточнения (формализации) понятия алгоритма. Представляет собой универсальный исполнитель, позволяющий вводить начальные данные и читать результат выполнения программы.
В 1936 г. американский математик Эмиль Пост в статье описал систему, обладающую алгоритмической простотой и способную определять, является ли та или иная задача алгоритмически разрешимой. Если задача имеет алгоритмическое решение, то она представима в форме команд для машины Поста.

Машина Поста состоит из …

  1. бесконечной ленты, поделенной на одинаковые ячейки (секции). Ячейка может быть пустой (0 или пустота) или содержать метку (1 или любой другой знак),
  2. головки (каретки), способной передвигаться по ленте на одну ячейку в ту или иную сторону, а также способной проверять наличие метки, стирать и записывать метку.

Текущее состояние машины Поста описывается состоянием ленты и положением каретки. Состояние ленты – информация о том, какие секции пусты, а какие отмечены. Шаг – это движение каретки на одну ячейку влево или вправо. Состояние ленты может изменяться в процессе выполнения программы.

Кареткой управляет программа, состоящая из строк команд. Каждая команда имеет следующий синтаксис: i K j,где i - номер команды, K – действие каретки, j - номер следующей команды (отсылка).

Всего для машины Поста существует шесть типов команд:

  • V j - поставить метку, перейти к j-й строке программы.
  • X j - стереть метку, перейти к j-й строке программы.
  • <- j - сдвинуться влево, перейти к j-й строке программы.
  • -> j - сдвинуться вправо, перейти к j-й строке программы.
  • ? j1; j2 - если в ячейке нет метки, то перейти к j1-й строке программы, иначе перейти к j2-й строке программы.
  • ! – конец программы (стоп).

У команды «стоп» отсылки нет.

Варианты окончания выполнения программы на машине Поста:

  1. Команда "стоп" - корректная остановка. Возникает в результате выполнения правильно написанного алгоритма.
  2. Выполнение недопустимой команды – нерезультативная остановка. Случаи, когда головка должна записать метку там, где она уже есть, или стереть метку там, где ее нет, являются аварийными (недопустимыми).
  3. Уход в бесконечность, зацикливание. Машина Поста в результате работы алгоритма может вообще не остановиться (никогда не дойти до команды «стоп» и никогда не завершиться аварийной ситуацией).

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

Почему достаточно лишь два различных символа (есть метка, нет метки)? Дело в том, что любой алфавит может быть закодирован двумя знаками; в зависимости от алфавита возрастать может только количество двоичных символов в букве алфавита.

Пример работы машины Поста:

Задача: увеличить число 3 на единицу (изменить значение в памяти с 3 на 4).
Целое положительное число на ленте машины Поста представимо идущими подряд метками, которых на одну больше, чем кодируемое число. Это связано с тем, что одна метка обозначает ноль, а уже две – единицу, и т.д.

Допустим, точно известно, что каретка стоит где-то слева от меток и обозревает пустую ячейку. Тогда программа увеличения числа на единицу может выглядеть так:
1 -> 2

2 ? 1; 3

Lt;- 4

V 5

5 !

А процесс выполнения может быть таким:

Задания для самостоятельной работы. Машина Поста – это абстрактная (несуществующая реально) вычислительная машина, созданная для уточнения (формализации) понятия алгоритма - student2.ru

Задания для самостоятельной работы

Задача 1.

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

<--   Поиск начала первого числа: сдвигаемся влево
? до тех пор, пока не встретим неотмеченную ячейку.
-->   Сдвигаемся вправо, на 1-ую метку первого числа и
  удаляем ее
-->   ищем конец первого числа: сдвигаемся вправо,
? пока каретка не встанет на неотмеченную ячейку и
V   ставим метку
-->   проверяем, заполнился ли промежуток между числами
? если не заполнился - на первую строку, иначе - переход на
!     Конец

Задача 2. Выбрать правильный ответ

Фрагмент программы машины Поста 1. => 2 2. ? 1; 3 определяет 1. Движение влево до первой метки 2. Движение вправо до первой метки 3. Движение влево до первой пустой ячейки 4. Нахождение метки и её удаление
  Задача 3. Выбрать правильный ответ  
Начальное состояние головки машины Поста: 1. Против самой левой метки на ленте. 2. Против пустой клетки левее самой левой метки на ленте. 3. Против пустой клетки правее самой правой метки на ленте. 4. Против самой правой метки на ленте.

Задача 4.Выбрать правильный ответ

Какой вид будет иметь машина Поста после выполнения указанной программы?

Задания для самостоятельной работы. Машина Поста – это абстрактная (несуществующая реально) вычислительная машина, созданная для уточнения (формализации) понятия алгоритма - student2.ru Задания для самостоятельной работы. Машина Поста – это абстрактная (несуществующая реально) вычислительная машина, созданная для уточнения (формализации) понятия алгоритма - student2.ru
Задания для самостоятельной работы. Машина Поста – это абстрактная (несуществующая реально) вычислительная машина, созданная для уточнения (формализации) понятия алгоритма - student2.ru
Задания для самостоятельной работы. Машина Поста – это абстрактная (несуществующая реально) вычислительная машина, созданная для уточнения (формализации) понятия алгоритма - student2.ru
Задания для самостоятельной работы. Машина Поста – это абстрактная (несуществующая реально) вычислительная машина, созданная для уточнения (формализации) понятия алгоритма - student2.ru

Наши рекомендации