2. Машина Поста
Машина Поста – это абстрактная
(несуществующая реально) вычислительная
машина, созданная для уточнения
(формализации) понятия алгоритма.
Представляет собой универсальный
исполнитель, позволяющий вводить начальные
данные и читать результат выполнения
программы.
В 1936 г. американский математик Эмиль
Пост в статье описал систему, обладающую
алгоритмической простотой и способную
определять, является ли та или иная задача Эмиль Пост
алгоритмически разрешимой. Если задача (1897-1954),
имеет алгоритмическое решение, то она США
представима в форме команд для машины
Поста.
3. Терминология
Программа - алгоритм записанный по строгим
правилам языка команд исполнителя – на языке
программирования для данного исполнителя.
Алгоритм, по которому работает машина
Поста, будем называть программой.
4. Модель машины Поста
V V V V
Машина Поста состоит из …
бесконечной ленты, поделенной на одинаковые ячейки
(секции). Ячейка может быть пустой (0 или пустота) или
содержать метку (1 или любой другой знак),
головки (каретки), способной передвигаться по ленте на одну
ячейку в ту или иную сторону, а также способной проверять
наличие метки, стирать и записывать метку.
5. Описание работы
Текущее состояние машины Поста описывается
состоянием ленты и положением каретки. Состояние
ленты – информация о том, какие секции пусты, а какие
отмечены. Шаг – это движение каретки на одну ячейку
влево или вправо. Состояние ленты может изменяться в
процессе выполнения программы.
Кареткой управляет программа, состоящая из строк команд.
Каждая команда имеет следующий синтаксис:
i K j,
где i - номер команды, K – действие каретки, j - номер
следующей команды (отсылка).
6. Описание работы
Всего для машины Поста существует шесть типов
команд:
V j - поставить метку, перейти к j-й строке программы.
X j - стереть метку, перейти к j-й строке программы.
<- j - сдвинуться влево, перейти к j-й строке программы.
-> j - сдвинуться вправо, перейти к j-й строке программы.
? j1; j2 - если в ячейке нет метки, то перейти к j1-й строке
программы, иначе перейти к j2-й строке программы.
! – конец программы (стоп).
У команды «стоп» отсылки нет.
7. Варианты окончания выполнения программы
на машине Поста:
Всего для машины Поста существует шесть типов
команд:
V j - поставить метку, перейти к j-й строке программы.
X j - стереть метку, перейти к j-й строке программы.
<- j - сдвинуться влево, перейти к j-й строке программы.
-> j - сдвинуться вправо, перейти к j-й строке программы.
? j1; j2 - если в ячейке нет метки, то перейти к j1-й строке
программы, иначе перейти к j2-й строке программы.
! – конец программы (стоп).
У команды «стоп» отсылки нет.
8. Элементарные действия (команды) машина Поста проще
команд машины Тьюринга. Поэтому программы для
машины Поста имеют большее число команд, чем
аналогичные программы для машины Тьюринга.
Почему достаточно лишь два различных символа (есть
метка, нет метки)? Дело в том, что любой алфавит может
быть закодирован двумя знаками; в зависимости от
алфавита возрастать может только количество двоичных
символов в букве алфавита.
9. Пример работы машины Поста:
Задача: увеличить число 3 на единицу (изменить значение
в памяти с 3 на 4).
Целое положительное число на ленте машины Поста
представимо идущими подряд метками, которых на одну
больше, чем кодируемое число. Это связано с тем, что одна
метка обозначает ноль, а уже две – единицу, и т.д.
Допустим, точно известно, что каретка стоит где-то слева
от меток и обозревает пустую ячейку. Тогда программа
увеличения числа на единицу может выглядеть так:
1 -> 2
2 ? 1;3
3 <- 4
4V5
5!
10.
11. Игра Баше
Играют двое. Перед ними 21 (или 16, или 11 и т.д.) фишка.
Игроки берут фишки по очереди. За один ход можно взять
от 1 до 4 фишек. Проигрывает тот, кто забирает последнюю
фишку.
Имеется выигрышная тактика для игрока, берущего фишки
вторым. Она заключается в том, чтобы брать такое
количество фишек, которое дополняет число
фишек, взятых соперником на предыдущем ходе, до пяти.
Роль фишек на информационной ленте машины Поста
будут выполнять метки (знаки). Машина играет с
человеком. Человеку предоставляется возможность стирать
метки (брать фишки) первым. Машина будет вступать в
игру второй.
12. Игра Баше
Исходная обстановка: на ленте массив из 21 клетки
содержит метки. Каретка установлена на крайней слева
клетке этого массива. Стирать метки можно только подряд.
Выигрышным результатом должна быть одна оставшаяся
метка перед очередным ходом человека.
Машина всегда будет выигрывать, если правильно задано
начальное число меток, которое должно быть равно
5n+1, где n – любое натуральное число. В противном
случае машина может проиграть.
13. Игра Баше
Команда Действие
1 ? 2,1 Машина ждет появления пустой клетки над кареткой. После
очередного хода человека машина делает свой ход. Если человек
видит всего одну метку на ленте, он прекращает игру, признав свое
поражение.
2→3 Эта серия команд выведет каретку на пятую (десятую, пятнадцатую
3 →4 и т.д.) позицию. Какой бы ход ни сделал соперник, в ней
обязательно будет стоять метка.
4→5
5→6
6↕7 Стирается метка в текущей клетке
7←8 Шаг влево
8 ? 9,6 Если клетка не пустая, то возврат к команде 6
9 → 10 Каретка перемещается к первой помеченной клетке. После этого
10 ? 9,1 машина возвращается к команде 1 и ждет хода человека (или
признания им своего поражения)
14. Выводы
Автоматическая обработка информации возможна, если:
1. Информация представлена в формализованном виде – в
конечном алфавите некоторой знаковой системы;
2. Реализован исполнитель, обладающий конечной
системой команд, достаточной для построения
алгоритмов решения определенного класса задач
обработки информации;
3. Реализовано программное управление работой
исполнителя.
15. Задания
1. На информационной ленте машины Поста
расположен массив из N меток. Каретка находится
под крайней левой меткой. Какое состояние
установится на ленте после выполнения следующей
программы?
1→2
2↕3
3→4
4 ? 5,2
5 ←6
6v7
7!
16. Задания
2. На информационной ленте на некотором расстоянии
справа от каретки, стоящей под пустой
клеткой, находится непрерывный массив меток.
Требуется присоединить к правому концу массива
одну метку.
3. На ленте расположен массив из 2n-1 меток.
Составить программу отыскания средней метки и
стирания ее.
4. На ленте расположен массив из 2n меток. Составить
программу, по которой машина раздвинет на
расстояние в одну клетку две половины данного
массива.
17. Задания
3. Придумайте минимально необходимую
систему команд для кассового
аппарата, который подсчитывает стоимость
покупок и сумму сдачи покупателю.
Опишите алгоритм управления работой
таким автоматом.
18. Использованные источники
• Семакин И.Г. Информатика и ИКТ. Базовый уровень:
учебник для 10-11 классов/ И.Г.Семакин, Е.К.Хеннер. – 8-е
изд. – М.: БИНОМ. Лаборатория знаний, 2012.
• http://inf1.info/machinepost
• http://kpolyakov.narod.ru/prog/post.htm