- •Теория алгоритмов Алгоритм и его свойства
- •Формализация понятия «алгоритм»
- •Машины Поста
- •Машины Тьюринга
- •Нормальные алгорифмы Маркова
- •Рекурсивные функции
- •Сложность алгоритма
- •7. Формальные грамматики
- •7.1. Понятие формальной грамматики
- •7.2. Деревья вывода
- •7.3. Классификация языков по Хомскому
- •7.4. Распознающие автоматы
- •7.5. Понятие транслятора
- •7.6. Основные функции компилятора. Лексический анализ
- •7.7. Переход от недетерминированного распознающего автомата к детерминированному
- •7.8. Переход от праволинейной грамматики к автоматной
- •7.10. Детерминированные автоматы с магазинной памятью
Формализация понятия «алгоритм»
Известно несколько подходов к формализации понятия «алгоритм»:
-
теория конечных и бесконечных автоматов (канонические системы Поста?);
-
теория вычислимых (рекурсивных) функций;
-
λ-исчисление Черча (-нотация);
-
нормальные алгорифмы Маркова.
Все эти возникшие исторически независимо друг от друга подходы оказались впоследствии эквивалентными. Главная цель формализации понятия алгоритма – подойти к решению проблемы алгоритмической разрешимости различных математических задач. Формальное определение резко сужает круг рассматриваемых задач, поэтому он не может в практическом программировании заменить то понятие алгоритма, которое давалось ранее.
В связи с этим задача переформулируется следующим образом:
Задача алгоритмически разрешима, если для нее можно построить -нотацию (рекурсивную функцию, машину Тьюринга, нормальный алгорифм Маркова). И наоборот, если невозможно построить -нотацию и т.п., то задача алгоритмически неразрешима. Важно, что все конкретизации алгоритма равнообъемны, то есть одновременно могут или не могут быть построены для исследуемых задач.
Одним из подходов формализации является теория конечных и бесконечных автоматов. Рассмотрим ее на примере машин Поста, Тьюринга, также нормальных алгоритмов Маркова.
Машины Поста
Машины Поста и Тьюринга являются классическим примером абстрактных автоматов (т.е. существующих не реально, а лишь в воображении). Абстрактные машины Поста и Тьюринга, предназначенные для доказательств различных утверждений о свойствах программ для них, были предложены независимо друг от друга (и практически одновременно) в 1936 г. американским математиком Эмилем Постом и английским математиком Алланом Тьюрингом. Эти машины представляют собой универсальных исполнителей, являющихся полностью детерминированными, позволяющих «вводить» начальные данные, и после выполнении программ «читать» результат. Машина Поста менее популярна, хотя она значительно проще машины Тьюринга.
Как правило, такая машина содержит бесконечную ленту, разделенную на отдельные секции (ячейки), в которых может содержаться метка («V»), и читающую головку, которая в каждый момент времени находится над одной из клеток ленты и, как говорят, обозревает ее. Информация о заполненных клетках характеризует состояние ленты, которое может меняться в процессе работы машины. Информация о местоположении головки вместе с состоянием ленты характеризует состояние машины Поста.
Машина Поста может выполнять шесть типов команд (табл. 1), которые будут задаваться программой. Программой абстрактного автомата будем называть конечный непустой список команд. В общем виде отдельная команда машины Поста имеет следующий вид: n, K, m1, m2; где n – порядковый номер команды, К – тип команды, m1, m2 – порядковые номера следующих команд.
Таблица 1
Тип команды |
Действие команды |
Состояние ленты |
|
до команды |
после команды |
||
1 |
Движение головки на одну клетку вправо . |
|
|
2 |
Движение головки на одну клетку влево |
|
|
3 |
Нанесение метки в ячейку, над которой находится головка, и переход к команде m: |
|
|
4 |
Стирание метки в ячейке, над которой находится головка, и переход к команде m: |
|
|
5 |
Проверка наличия метки в клетке, над которой находится головка; если метка отсутствует, управление передается команде m1, а иначе m2: |
|
|
6 |
Остановка машины: |
|
|
Пример команды машины Поста: 1,1,2,0;. Данная команда имеет порядковый номер 1, тип команды – 1 (движение головки на одну клетку вправо). После выполнения команды управление передается команде, имеющей порядковый номер 2.
Рассмотрим пример простой программы, которая стирает первую метку, записанную на ленте. Предположим, что в начале работы головка находится над крайне левой ячейкой ленты. Поставленная задача может быть выполнена с помощью следующего набора команд.
1, 5, 2, 4; |
1-я команда |
2, 1, 3, 0; |
2-я команда |
3, 5, 2, 4; |
3-я команда |
4, 4, 5, 0; |
4-я команда |
5, 6, 0, 0; |
5-я команда |
Разберем работу программы. 1-я команда – это команда типа 5, т.е. условный переход. Если ячейка пустая, то управление передается команде 2, в противном случае – 4-й команде. 2-я команда – это сдвиг головки на одну ячейку вправо и передача управления 3-й команде. 3-я команда – это опять условный переход. Если метка отсутствует, то возврат ко второй команде и переход на 4-ю в противном случае. 4-я команда стирает метку (очевидно, она там есть, т.к. мы попадаем на 4-ю команду только при наличии метки) и передает управление 5-й команде, которая является командой остановки машины.
Машину Поста можно рассматривать как упрощенную модель ЭВМ: как ЭВМ, так и машина Поста, имеют:
-
неделимые носители информации (клетки – биты), которые могут быть заполненными и незаполненными;
-
ограниченный набор элементарных действий – команд, каждая из которых выполняется за один такт (шаг).
Обе машины работают на основе программы, однако в машине Поста информация располагается линейно и читается последовательно, а в ЭВМ – по адресу; набор команд в ЭВМ шире и т.д.