Контрольные вопросы
1. Каковы возможные подходы к определению понятия алгоритм?
2. Кто (что) может быть исполнителем алгоритма?
3. В чем особенности графического способа представления алгоритмов?
4. Каковы основные алгоритмические структуры?
5. Чем определяются свойства алгоритмов «дискретность», «определенность»,
«понятность», «результативность», «массовость»?
6. Что такое алгоритмический язык?
§7. ФОРМАЛИЗАЦИЯ ПОНЯТИЯ «АЛГОРИТМ»
7.1. ПОСТАНОВКА ПРОБЛЕМЫ
Понятие алгоритма, введенное в предыдущем параграфе, можно назвать понятием
алгоритма в интуитивном смысле. Оно имеет нечеткий, неформальный характер, ссылается на
некоторые точно не определенные, но интуитивно понятные вещи. Например, при определении и
обсуждении свойств алгоритма мы исходили из возможностей некоторого исполнителя алгоритма.
Его наличие предполагалось, но ничего определенного о нем не было известно. Говоря языком
математики, ни аксиоматического, ни исчерпывающего конструктивного определения
исполнителя мы так и не дали.
Установленные в предыдущем параграфе свойства алгоритмов следует называть
эмпирическими. Они выявлены на основе обобщения свойств алгоритмов различной природы и
имеют прикладной характер. Этих свойств достаточно для практического программирования, для
создания обширного круга программ для компьютеров, станков с ЧПУ, промышленных роботов и
т.д. Однако, как фундаментальное научное понятие алгоритм требует более обстоятельного
изучения. Оно невозможно без уточнения понятия «алгоритм», более строгого его описания или,
как еще говорят, без его формализации.
Известно несколько подходов к формализации понятия «алгоритм»:
• теория конечных и бесконечных автоматов;
• теория вычислимых (рекурсивных) функций;
• λ-исчисление Черча.
Все эти возникшие исторически независимо друг от друга подходы оказались впоследствии
эквивалентными. Главная цель формализации понятия алгоритма такова: подойти к решению
проблемы алгоритмической разрешимости различных математических задач, т.е. ответить на
вопрос, может ли быть построен алгоритм, приводящий к решению задачи. Мы рассмотрим
постановку этой проблемы и некоторые результаты теории алгоритмической разрешимости задач,
но вначале обсудим формализацию понятия алгоритма в теории автоматов на примере машин
Поста, Тьюринга, а также нормальных алгоритмов Маркова, а затем - основы теории рекурсивных
функций. Идеи λ-исчислений Черча реализованы в языке программирования LISP (глава 3).
Вместе с тем, формально определенный любым из известных способов алгоритм не может
в практическом программировании заменить то, что мы называли алгоритмами в предыдущем
параграфе. Основная причина состоит в том, что формальное определение резко сужает круг
рассматриваемых задач, делая многие практически важные задачи недоступными для
рассмотрения.
7.2. МАШИНА ПОСТА
Абстрактные (т.е. существующие не реально, а лишь в воображении) машины Поста и
Тьюринга, предназначенные для доказательств различных утверждений о свойствах программ для
них, были предложены независимо друг от друга (и практически одновременно) в 1936 г.
американским математиком Эмилем Постом и английским математиком Алланом Тьюрингом. Эти
машины представляют собой универсальных исполнителей, являющихся полностью
детерминированными, позволяющих «вводить» начальные данные, и после выполнения программ
«читать» результат. Машина Поста менее популярна, хотя она значительно проще машины
Тьюринга. С ее помощью можно вести обучение первым навыкам составления программ для