Алгоритм, его свойства. Формализация понятия алгоритма.
Чаще используется интуитивное понятие:
Алгоритм - это строгая и четкая конечная система правил, определяющая
последовательность действий над некоторыми объектами, которая после конечного
числа шагов приводит к достижению поставленной цели
(т.е. если эту систему правил (как инструкцию) вручить разным людям,
не знакомым с сутью дела, они, следуя этой системе, будут действовать
одинаково).
Появились задачи, для которых невозможно было построить алгоритм. Но нельзя
было доказать невозможность алгоритмического решения задачи. Следовательно,
возникла проблема: построить формальное определение алгоритма.
Объекты реального мира можно изобразить словами в различных алфавитах
(слово - любая конечная последовательность букв). Это позволяет считать,
что объектами работв алгоритмов могут быть только слова, следовательно,
уточненное определение алгоритма:
Алгоритм - это четкая конечная система правил для преобразования
слов из некоторого алфавита в слова этого же алфавита (входное слово,
выходное слово).
Теперь осталось формально описать действия над объектами словами и порядок
этих действий.
Вверх
30-40-е гг.Первое определение. Английский математик Тьюринг (1936)
описал схему некоторой абстрактной машины и предложил назвать алгоритмами
то, что умеет делать машина, т.е. он сформулировал правила выполнения действий
при помощи описания некоторой инструкции.
Если машина не останавливается, то неприменима к слову.
Тезис Тьюринга (основная гипотеза теории алгоритмов в форме Тьюринга) и
одновременно формальное определение алгоритма:
Всякий алгоритм может быть реализован машиной Тьюринга. |
|
(Позже были другие определения, но всегда удавалось доказать, что они
эквивалентны машинам Тьюринга).
Вверх
Советский математик Марков предложил алгоритмическую схему на основе других
принципов. Обозначая большими буквами слова в некотором алфавите, можем
записать алгоритм в следующем виде:
A1{<->}B1 |
Ai{<->}Bi |
... |
An{<->}Bn |
Т.е. упорядоченный набор пар слов, соединенных между собой стрелками двух
видов -> или |-> (|-> - завершенная формула.)
Пара - формула подстановки (на следующем шаге также к самому началу! Всегда
заменяется первое вхождение).
Пример:
a -> |0| |
b -> |00| |
c -> |000| |
Входное слово: caab
Результат:
c|0|ab |
c|0||0|b |
c|0||0||00| |
|000||0||0||00| |
Схема Маркова также не может быть физически реализована, т.к. допускает
неограниченно большую длину входящих слов, возникающих в процессе подстановки.
Тезис Маркова (основная гипотеза теории алгоритмов в форме Маркова):
Всякий алгоритм нормализуем.
|
Вверх
На бесконечную ленту можно записывать только 0 или 1 (любой
алфавит может быть закодирован 0 или 1). Каждому состоянию у Поста
соответствует не строка программы, как у Тьюринга, а одна команда из шести
типов:
- записать 1, перейти к i (либо поставить метку V и перейти к i)
- записать 0, перейти к i (либо стереть метку и перейти к i)
- сдвиг влево, перейти к i
- сдвиг вправо, перейти к i
- останов (либо "стоп")
- если 1, то к i, иначе к j
Все состояния пронумерованы.
Если закодировать исходный алфавит 0 и 1, то каждое состояние машины Тьюринга
описывается несколькими состояниями машины Поста.
Вверх
Литература:
- Лекция Ливак Е.Н. "Понятие Алгоритма"
- В. Успенский "Занимательные лекции по математике. Машина Поста."
- Лекция Гончаровой М.Н. "Машины Тьюринга."
Подготовил: Дубровка Евгений, МФ ПМ 1 курс, 2002