Машина
Поста – это абстрактная (несуществующая реально) вычислительная машина,
созданная для уточнения (формализации) понятия алгоритма. Представляет собой
универсальный исполнитель, позволяющий вводить начальные данные и читать
результат выполнения программы.
В 1936 г. американский математик Эмиль Пост в статье описал систему, обладающую алгоритмической простотой и способную определять, является ли та или иная задача алгоритмически разрешимой.
Если задача имеет алгоритмическое решение, то она представима в форме команд для машины Поста.
Видео с 12.46 мин. до 15. 20 мин
В 1936 г. американский математик Эмиль Пост в статье описал систему, обладающую алгоритмической простотой и способную определять, является ли та или иная задача алгоритмически разрешимой.
Если задача имеет алгоритмическое решение, то она представима в форме команд для машины Поста.
Машина Поста состоит из ленты и каретки (называемой
также считывающей и записывающей головкой).
Лента бесконечна и
разделена на секции одинакового размера — ячейки.
В каждой ячейке ленты может быть либо ничего не
записано, либо стоять метка V. Информация о том, какие ячейки
пусты, а какие содержат метки, образует состояние ленты. Состояние ленты меняется
в процессе работы машины.
Заметим, что наличие метки в ячейке можно
интерпретировать как “1”, а отсутствие — “0”. Такое двоичное представление
информации подобно представлению, используемому практически во всех современных
ЭВМ.
Каретка может передвигаться вдоль ленты влево и
вправо. Когда она неподвижна, она стоит против ровно одной ячейки ленты.
За единицу времени каретка может
совершить одно из трех действий:
- стереть метку,
- поставить метку,
- совершить
движение на соседнюю ячейку.
Состояние машины Поста складывается
из состояния ленты и положения каретки.
Тренажер для изучения универсального исполнителя К.
Полякова
Пароль к архиву — kpolyakov.spb.ru
Машина Поста состоит из каретки (считывающей и записывающей головки) и
бесконечной ленты, разбитой на ячейки. Каждая ячейка ленты может быть либо
пустой («0»), или содержать метку («1»).
Программа состоит из пронумерованных строк. В каждой строке записывается
одна из следующих команд:
> N переместить каретку вправо на 1 ячейку и перейти к строке с номером N;
< N переместить каретку влево на 1 ячейку и перейти к строке с номером N
0 N записать в текущую ячейку «0» (стереть метку) и перейти к строке с номером N
1 N записать в текущую ячейку «1» (поставить метку) и перейти к строке с номером N
? N, M если текущая ячейка содержит «0» (не отмечена), то перейти к строке с номером N, иначе перейти к строке M
. остановить программу
> N переместить каретку вправо на 1 ячейку и перейти к строке с номером N;
< N переместить каретку влево на 1 ячейку и перейти к строке с номером N
0 N записать в текущую ячейку «0» (стереть метку) и перейти к строке с номером N
1 N записать в текущую ячейку «1» (поставить метку) и перейти к строке с номером N
? N, M если текущая ячейка содержит «0» (не отмечена), то перейти к строке с номером N, иначе перейти к строке M
. остановить программу
Номер строки перехода в командах >, <, 0 и 1 можно
не указывать, при этом происходит переход к следующей строке.
Для завершения работы программы достаточно сделать переход на строку 0,
например, так:
? 25, 0 остановить программу, если текущая ячейка содержит «1», иначе перейти к строке 25
? 25, 0 остановить программу, если текущая ячейка содержит «1», иначе перейти к строке 25
В верхней части программы находится поле редактора, в которое можно ввести
условие задачи в свободной форме.
Лента перемещается влево и
вправо с помощью кнопок, расположенных слева и справа от нее. Двойным щелчком
по ячейке ленты можно изменить ее
Пример:
Откройте файл minus1 и выполните алгоритм по шагам
Задания:
1. Прибавить 1 к числу
2. Учебник с. 217 задание 1, 2
3. На ленте задан массив меток. Увеличить длину массива на 2 метки. Каретка находится либо слева от массива, либо над одной из ячеек самого массива
4. Даны два массива меток, которые находятся на некотором расстоянии друг от друга. Требуется соединить их в один массив. Каретка находится над крайней левой меткой первого массива.
3. На ленте задан массив меток. Увеличить длину массива на 2 метки. Каретка находится либо слева от массива, либо над одной из ячеек самого массива
4. Даны два массива меток, которые находятся на некотором расстоянии друг от друга. Требуется соединить их в один массив. Каретка находится над крайней левой меткой первого массива.
Ответы на задания 3 и 4 см. файл Задания с ответами на диске
Спасибо
ОтветитьУдалить