Лекция: Формальные свойства алгоритмов
Различные определения алгоритма в явной или неявной форме содержат следующий ряд общих требований:
· Дискретность — алгоритм должен представлять процесс решения задачи как последовательное выполнение некоторых простых шагов. При этом для выполнения каждого шага алгоритма требуется конечный отрезок времени, то есть преобразование исходных данных в результат осуществляется во времени дискретно.
· Детерминированность (определённость). В каждый момент времени следующий шаг работы однозначно определяется состоянием системы. Таким образом, алгоритм выдаёт один и тот же результат (ответ) для одних и тех же исходных данных. В современной трактовке у разных реализаций одного и того же алгоритма должен быть изоморфный граф. С другой стороны, существуют вероятностные алгоритмы, в которых следующий шаг работы зависит от текущего состояния системы и генерируемого случайного числа. Однако при включении метода генерации случайных чисел в список «исходных данных», вероятностный алгоритм становится подвидом обычного.
· Понятность — алгоритм должен включать только те команды, которые доступны исполнителю и входят в его систему команд.
· Завершаемость (конечность) — при корректно заданных исходных данных алгоритм должен завершать работу и выдавать результат за конечное число шагов.[источник не указан 857 дней] С другой стороны, вероятностный алгоритм может и никогда не выдать результат, но вероятность этого равна 0.
· Массовость (универсальность). Алгоритм должен быть применим к разным наборам исходных данных.
· Результативность — завершение алгоритма определёнными результатами.
· Алгоритм содержит ошибки, если приводит к получению неправильных результатов либо не даёт результатов вовсе.
· Алгоритм не содержит ошибок, если он даёт правильные результаты для любых допустимых исходных данных.