Автоматическая обработка информации Чебышев Михаил10 класс
В 30-х годах XX века возникает новая наука теория алгоритмов. Вопрос, на который ищет ответ эта наука: для всякой ли задачи обработки информации может быть построен алгоритм решения? Но чтобы ответить на этот вопрос, надо сначала договориться об исполнителе, на которого должен быть ориентирован алгоритм.
Английский ученый Алан Тьюринг предложил модель такого исполни теля, получившую название «машина Тьюринга». По замыслу Тьюринга, его «машина» является универсальным исполнителем обработки любых символьных последовательностей в любом алфавите.
Практически одновременно с Тьюрингом ( гг.) другую модель алгоритмической машины описал Эмиль Пост. Машина Поста работает с двоичным алфавитом и несколько проще в своем «устройстве». Можно сказать, что машина Поста является частным случаем машины Тьюринга. Однако именно работа с двоич ным алфавитом представляет наибольший интерес, поскольку, как вы знаете, современный компьютер тоже работает с двоичным алфавитом.
Алгоритм, по которому работает машина Поста, будем называть программой. Договоримся о терминологии: под словом «программа» мы всегда будем понимать алгоритм, записанный по строгим правилам языка команд исполнителя на языке программирования для данного исполнителя.
Опишем архитектуру машины Поста. Имеется бесконечная информационная лента, разделенная на позиции клетки. В каждой клетке может либо стоять метка (некоторый знак), либо отсутствовать (пусто). vvvvv Вдоль ленты движется каретка считывающее устройство. На рисунке она обозначена стрелкой. Каретка может передвигаться шагами: один шаг смещение на одну клетку вправо или влево. Клетку, под которой установлена каретка, будем называть текущей. Каретка является еще и процессором машины. С ее помощью машина может: распознать, пустая клетка или помеченная знаком; стереть знак в текущей клетке; записать знак в пустую текущую клетку.
Если произвести замену меток на единицы, а пустых клеток на нули, то информацию на ленте можно будет рассматривать как аналог двоичного кода телеграфного сообщения или данных в памяти компьютера. Существенное отличие каретки-процессора машины Поста от процессора компьютера состоит в том, что в компьютере возможен доступ процессора к ячейкам памяти в произвольном порядке, а в машине Поста только последовательно.
Назначение машины Поста производить преобразования на информационной ленте. Исходное состояние ленты можно рассматривать как исходные данные задачи, конечное состояние ленты результат решения задачи. Кроме того, в исходные данные входит информация о начальном положении каретки.
Система команд машины Поста КомандаДействие n mСдвиг каретки на шаг влево и переход к выполнению команды с номером m n mСдвиг каретки на шаг вправо и переход к выполнению команды с номером m n v mЗапись метки в текущую пустую клетку и переход к выполнению команды с номером m n mСтирание метки в текущей клетке и переход к выполнению команды с номером m n !Остановка выполнения программы n ? m,kПереход в зависимости от содержимого текущей клетки: если текущая клетка пустая, то следующей будет выполняться команда с номером m, если непустая – команда с номером k
Пример программы решения задачи на машине Поста Исходное состояние показано на рисунке. Машина должна стереть знак в текущей клетке и присоединить его слева к группе знаков, расположенных справа от каретки. vvvvv КомандаДействие 1 2Стирание метки; переход к следующей команде 2 3Сдвиг вправо на один шаг 3 ? 2,4Если клетка пустая, то переход к команде 2, иначе – к команде 4 4 5Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5 v 6Запись метки в пустую клетку 6 !Остановка машины
Исходное состояние показано на рисунке. Машина должна стереть знак в текущей клетке и присоединить его слева к группе знаков, расположенных справа от каретки. vvvvv КомандаДействие 1 2Стирание метки; переход к следующей команде 2 3Сдвиг вправо на один шаг 3 ? 2,4Если клетка пустая, то переход к команде 2, иначе – к команде 4 4 5Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5 v 6Запись метки в пустую клетку 6 !Остановка машины vvvv
Исходное состояние показано на рисунке. Машина должна стереть знак в текущей клетке и присоединить его слева к группе знаков, расположенных справа от каретки. vvvv КомандаДействие 1 2Стирание метки; переход к следующей команде 2 3Сдвиг вправо на один шаг 3 ? 2,4Если клетка пустая, то переход к команде 2, иначе – к команде 4 4 5Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5 v 6Запись метки в пустую клетку 6 !Остановка машины
Исходное состояние показано на рисунке. Машина должна стереть знак в текущей клетке и присоединить его слева к группе знаков, расположенных справа от каретки. vvvv КомандаДействие 1 2Стирание метки; переход к следующей команде 2 3Сдвиг вправо на один шаг 3 ? 2,4Если клетка пустая, то переход к команде 2, иначе – к команде 4 4 5Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5 v 6Запись метки в пустую клетку 6 !Остановка машины
Исходное состояние показано на рисунке. Машина должна стереть знак в текущей клетке и присоединить его слева к группе знаков, расположенных справа от каретки. vvvv КомандаДействие 1 2Стирание метки; переход к следующей команде 2 3Сдвиг вправо на один шаг 3 ? 2,4Если клетка пустая, то переход к команде 2, иначе – к команде 4 4 5Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5 v 6Запись метки в пустую клетку 6 !Остановка машины
Исходное состояние показано на рисунке. Машина должна стереть знак в текущей клетке и присоединить его слева к группе знаков, расположенных справа от каретки. vvvv КомандаДействие 1 2Стирание метки; переход к следующей команде 2 3Сдвиг вправо на один шаг 3 ? 2,4Если клетка пустая, то переход к команде 2, иначе – к команде 4 4 5Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5 v 6Запись метки в пустую клетку 6 !Остановка машины
Исходное состояние показано на рисунке. Машина должна стереть знак в текущей клетке и присоединить его слева к группе знаков, расположенных справа от каретки. vvvv КомандаДействие 1 2Стирание метки; переход к следующей команде 2 3Сдвиг вправо на один шаг 3 ? 2,4Если клетка пустая, то переход к команде 2, иначе – к команде 4 4 5Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5 v 6Запись метки в пустую клетку 6 !Остановка машины
Исходное состояние показано на рисунке. Машина должна стереть знак в текущей клетке и присоединить его слева к группе знаков, расположенных справа от каретки. vvvv КомандаДействие 1 2Стирание метки; переход к следующей команде 2 3Сдвиг вправо на один шаг 3 ? 2,4Если клетка пустая, то переход к команде 2, иначе – к команде 4 4 5Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5 v 6Запись метки в пустую клетку 6 !Остановка машины
Исходное состояние показано на рисунке. Машина должна стереть знак в текущей клетке и присоединить его слева к группе знаков, расположенных справа от каретки. vvvv КомандаДействие 1 2Стирание метки; переход к следующей команде 2 3Сдвиг вправо на один шаг 3 ? 2,4Если клетка пустая, то переход к команде 2, иначе – к команде 4 4 5Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5 v 6Запись метки в пустую клетку 6 !Остановка машины
Исходное состояние показано на рисунке. Машина должна стереть знак в текущей клетке и присоединить его слева к группе знаков, расположенных справа от каретки. vvvv КомандаДействие 1 2Стирание метки; переход к следующей команде 2 3Сдвиг вправо на один шаг 3 ? 2,4Если клетка пустая, то переход к команде 2, иначе – к команде 4 4 5Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5 v 6Запись метки в пустую клетку 6 !Остановка машины
Исходное состояние показано на рисунке. Машина должна стереть знак в текущей клетке и присоединить его слева к группе знаков, расположенных справа от каретки. vvvv КомандаДействие 1 2Стирание метки; переход к следующей команде 2 3Сдвиг вправо на один шаг 3 ? 2,4Если клетка пустая, то переход к команде 2, иначе – к команде 4 4 5Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5 v 6Запись метки в пустую клетку 6 !Остановка машины v
Исходное состояние показано на рисунке. Машина должна стереть знак в текущей клетке и присоединить его слева к группе знаков, расположенных справа от каретки. vvvvv КомандаДействие 1 2Стирание метки; переход к следующей команде 2 3Сдвиг вправо на один шаг 3 ? 2,4Если клетка пустая, то переход к команде 2, иначе – к команде 4 4 5Сдвиг влево на шаг (команда выполнится, когда каретка выйдет на первый знак группы) 5 v 6Запись метки в пустую клетку 6 !Остановка машины
В процессе выполнения приведенной программы многократно повторяется выполнение команд с номерами 2 и 3. Такая ситуация называется циклом. Напомним, что цикл относится к числу основных алгоритмичес ких структур вместе со следованием и ветвлением.
Источники Семакин И.Г., Хеннер Е.К., Информатика и ИКТ Издательство БИНОМ Лаборатория знаний, 2009