Слайд 2: Теория Алгоритмов
В 30-х годах XX века возникает новая наука – теория алгоритмов. Вопрос, на который ищет ответ эта наука: для всякой ли задачи обработки информации может быть построен алгоритм решения? Но чтобы ответить на этот вопрос, надо сначала договориться об исполнителе, на которого должен быть ориентирован алгоритм.
Слайд 3: Машина Тьюринга
Английский ученый Алан Тьюринг предложил модель такого исполнителя, получившую название «машина Тьюринга». По замыслу Тьюринга, его «машина» является универсальным исполнителем обработки любых символьных последовательностей в любом алфавите.
Слайд 4: Машина Поста
Практически одновременно с Тьюрингом (1936-1937г.) другую модель алгоритмической машины описал Эмиль Пост. Машина Поста работает с двоичным алфавитом и несколько проще в своем «устройстве». Можно сказать, что машина Поста является частным случаем машины Тьюринга.
Слайд 5: Машина Поста
Алгоритм, по которому работает машина Поста, будем называть программой. Под словом «программа» мы всегда будем понимать алгоритм, записанный по строгим правилам языка команд исполнителя – на языке программирования для данного исполнителя.
Слайд 7: Архитектура машины Поста
Имеется бесконечная информационная лента, разделенная на позиции – клетки. В каждой клетке может либо стоять метка (некоторый знак), либо отсутствовать (пусто). Вдоль ленты движется каретка – считывающее устройство. На рисунке она обозначена стрелкой. Каретка может передвигаться шагами: один шаг – смещение на одну клетку вправо или влево. Клетку, под которой установлена каретка, называется текущей.
Слайд 8: Архитектура машины Поста
Каретка является еще и процессором машины. С ее помощью машина может: • распознать, пустая клетка или помеченная знаком; • стереть знак в текущей клетке; • записать знак в пустую текущую клетку. Существенное отличие каретки-процессора машины Поста от процессора компьютера состоит в том, что в компьютере возможен доступ процессора к ячейкам памяти в произвольном порядке, а в машине Поста – только последовательно.
Слайд 9: Машина Поста
Назначение машины Поста – производить преобразования на информационной ленте. Исходное состояние ленты можно рассматривать как исходные данной задачи, конечное состояние ленты – результат решения задачи. Кроме того, в исходные данные входит информация о начальном положении каретки.
Слайд 10: Система команд машины Поста
n ← m Сдвиг каретки на шаг влево и переход к выполнению команды с номером m n → m Сдвиг каретки на шаг вправо и переход к выполнению команды с номером m n v m Запись метки в текущую пустую клетку и переход к выполнению команды с номером m n ↕ m Стирание метки в текущей клетке и переход к выполнению команды с номером m
Слайд 11: Система команд машины Поста
n ! Остановка выполнения программ n?m,k Переход в зависимости от содержимого текущей клетки: если текущая клетка пустая, то следующей будет выполняться команда с номером m, если непустая – команда с номером k
Слайд 12: Пример программы решения задачи
Исходное состояние показано на рисунке. Машина должна стереть знак в текущей клетке и присоединить его слева к группе знаков, расположенных справа от каретки. 1↕2 Стирание метки; переход к следующей команде 2→3 Сдвиг вправо на один шаг 3?2,4 Если клетка пустая, то переход к команде 2, иначе – к команде 4 4←5 Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5v6 Запись метки в пустую клетку 6! Остановка машины
Слайд 13: Пример программы решения задачи
1↕2 Стирание метки; переход к следующей команде 2→3 Сдвиг вправо на один шаг 3?2,4 Если клетка пустая, то переход к команде 2, иначе – к команде 4 4←5 Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5v6 Запись метки в пустую клетку 6! Остановка машины Пример программы решения задачи
Слайд 14: Пример программы решения задачи
1↕2 Стирание метки; переход к следующей команде 2→3 Сдвиг вправо на один шаг 3?2,4 Если клетка пустая, то переход к команде 2, иначе – к команде 4 4←5 Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5v6 Запись метки в пустую клетку 6! Остановка машины Пример программы решения задачи
Слайд 15: Пример программы решения задачи
1↕2 Стирание метки; переход к следующей команде 2→3 Сдвиг вправо на один шаг 3?2,4 Если клетка пустая, то переход к команде 2, иначе – к команде 4 4←5 Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5v6 Запись метки в пустую клетку 6! Остановка машины Пример программы решения задачи
Слайд 16: Пример программы решения задачи
1↕2 Стирание метки; переход к следующей команде 2→3 Сдвиг вправо на один шаг 3?2,4 Если клетка пустая, то переход к команде 2, иначе – к команде 4 4←5 Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5v6 Запись метки в пустую клетку 6! Остановка машины Пример программы решения задачи
Слайд 17: Пример программы решения задачи
1↕2 Стирание метки; переход к следующей команде 2→3 Сдвиг вправо на один шаг 3?2,4 Если клетка пустая, то переход к команде 2, иначе – к команде 4 4←5 Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5v6 Запись метки в пустую клетку 6! Остановка машины Пример программы решения задачи
Слайд 18: Пример программы решения задачи
1↕2 Стирание метки; переход к следующей команде 2→3 Сдвиг вправо на один шаг 3?2,4 Если клетка пустая, то переход к команде 2, иначе – к команде 4 4←5 Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5v6 Запись метки в пустую клетку 6! Остановка машины Пример программы решения задачи
Слайд 19: Пример программы решения задачи
1↕2 Стирание метки; переход к следующей команде 2→3 Сдвиг вправо на один шаг 3?2,4 Если клетка пустая, то переход к команде 2, иначе – к команде 4 4←5 Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5v6 Запись метки в пустую клетку 6! Остановка машины Пример программы решения задачи
Слайд 20: Пример программы решения задачи
1↕2 Стирание метки; переход к следующей команде 2→3 Сдвиг вправо на один шаг 3?2,4 Если клетка пустая, то переход к команде 2, иначе – к команде 4 4←5 Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5v6 Запись метки в пустую клетку 6! Остановка машины Пример программы решения задачи
Слайд 21: Пример программы решения задачи
1↕2 Стирание метки; переход к следующей команде 2→3 Сдвиг вправо на один шаг 3?2,4 Если клетка пустая, то переход к команде 2, иначе – к команде 4 4←5 Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5v6 Запись метки в пустую клетку 6! Остановка машины Пример программы решения задачи
Слайд 22: Пример программы решения задачи
1↕2 Стирание метки; переход к следующей команде 2→3 Сдвиг вправо на один шаг 3?2,4 Если клетка пустая, то переход к команде 2, иначе – к команде 4 4←5 Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5v6 Запись метки в пустую клетку 6! Остановка машины Пример программы решения задачи
Слайд 23: Пример программы решения задачи
1↕2 Стирание метки; переход к следующей команде 2→3 Сдвиг вправо на один шаг 3?2,4 Если клетка пустая, то переход к команде 2, иначе – к команде 4 4←5 Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5v6 Запись метки в пустую клетку 6! Остановка машины Пример программы решения задачи
Слайд 24: Пример программы решения задачи
1↕2 Стирание метки; переход к следующей команде 2→3 Сдвиг вправо на один шаг 3?2,4 Если клетка пустая, то переход к команде 2, иначе – к команде 4 4←5 Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5v6 Запись метки в пустую клетку 6! Остановка машины Пример программы решения задачи
Слайд 25: Задание 1
На информационной ленте машины Поста расположен массив из N меток. Каретка расположена под крайней левой меткой. Какое состояние установится на ленте после выполнения следующей программы? 1 → 2 2 ↕ 3 3 → 4 4? 5, 2 5 ← 6 6 V 7 7 !
Слайд 26: Задание 2
На ленте поставлена метка в одной-единственной ячейке. Каретка стоит на некотором расстоянии левее этой ячейки. Необходимо подвести каретку к ячейке, стереть метку и остановить каретку слева от этой ячейки.