Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТА-лекции-2009-10.doc
Скачиваний:
9
Добавлен:
25.12.2018
Размер:
551.94 Кб
Скачать

Формализация понятия «алгоритм»

Известно несколько подходов к формализации понятия «алгоритм»:

  • теория конечных и бесконечных автоматов (канонические системы Поста?);

  • теория вычислимых (рекурсивных) функций;

  • λ-исчисление Черча (-нотация);

  • нормальные алгорифмы Маркова.

Все эти возникшие исторически независимо друг от друга подходы оказались впоследствии эквивалентными. Главная цель формализации понятия алгоритма – подойти к решению проблемы алгоритмической разрешимости различных математических задач. Формальное определение резко сужает круг рассматриваемых задач, поэтому он не может в практическом программировании заменить то понятие алгоритма, которое давалось ранее.

В связи с этим задача переформулируется следующим образом:

Задача алгоритмически разрешима, если для нее можно построить -нотацию (рекурсивную функцию, машину Тьюринга, нормальный алгорифм Маркова). И наоборот, если невозможно построить -нотацию и т.п., то задача алгоритмически неразрешима. Важно, что все конкретизации алгоритма равнообъемны, то есть одновременно могут или не могут быть построены для исследуемых задач.

Одним из подходов формализации является теория конечных и бесконечных автоматов. Рассмотрим ее на примере машин Поста, Тьюринга, также нормальных алгоритмов Маркова.

Машины Поста

Машины Поста и Тьюринга являются классическим примером абстрактных автоматов (т.е. существующих не реально, а лишь в воображении). Абстрактные машины Поста и Тьюринга, предназначенные для доказательств различных утверждений о свойствах программ для них, были предложены независимо друг от друга (и практически одновременно) в 1936 г. американским математиком Эмилем Постом и английским математиком Алланом Тьюрингом. Эти машины представляют собой универсальных исполнителей, являющихся полностью детерминированными, позволяющих «вводить» начальные данные, и после выполнении программ «читать» результат. Машина Поста менее популярна, хотя она значительно проще машины Тьюринга.

Как правило, такая машина содержит бесконечную ленту, разделенную на отдельные секции (ячейки), в которых может содержаться метка («V»), и читающую головку, которая в каждый момент времени находится над одной из клеток ленты и, как говорят, обозревает ее. Информация о заполненных клетках характеризует состояние ленты, которое может меняться в процессе работы машины. Информация о местоположении головки вместе с состоянием ленты характеризует состояние машины Поста.

Машина Поста может выполнять шесть типов команд (табл. 1), которые будут задаваться программой. Программой абстрактного автомата будем называть конечный непустой список команд. В общем виде отдельная команда машины Поста имеет следующий вид: nKm1m2; где 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-й команде, которая является командой остановки машины.

Машину Поста можно рассматривать как упрощенную модель ЭВМ: как ЭВМ, так и машина Поста, имеют:

  • неделимые носители информации (клетки – биты), которые могут быть заполненными и незаполненными;

  • ограниченный набор элементарных действий – команд, каждая из которых выполняется за один такт (шаг).

Обе машины работают на основе программы, однако в машине Поста информация располагается линейно и читается последовательно, а в ЭВМ – по адресу; набор команд в ЭВМ шире и т.д.