Главная страница / 23. Алгоритм и его свойства. Способы зап...: 23.1. Понятие алгоритма

23.1. Понятие алгоритма

Единого точного определения термина Алгоритм не существует. Разные источники дают его по-разному. Самое простое определение:

алгоритм – это описание последовательности действий, приводящих к требуемому результату.

Под такое определение попадают и кулинарный рецепт, и словесно-формульное описание метода решения квадратных уравнений, и программа, написанная на языке программирования. Поэтому будем считать более правильным и точным следующее определение:

алгоритм – это формализованное описание конечной последовательности дискретных, однозначно определенных действий, приводящих к требуемому результату.

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

Подавляющее большинство алгоритмов, особенно научно-технических, оперируют с данными. Данные – это информация, представленная в форме, пригодной для алгоритмической обработки. Входные данные поставляются в алгоритм извне и обрабатываются им, превращаясь в выходные данные – результат работы алгоритма. В интерактивных алгоритмах входные данные вводятся неоднократно, часто в зависимости от промежуточных результатов. К примеру, все игровые программы основаны на интерактивных алгоритмах. В неинтерактивных (линейных, алгоритмах типа «вход-выход») входные данные вводятся однократно и автоматически преобразуются в выходные, образуя в процессе преобразования промежуточные, или внутренние, данные. Понятие данных позволяет увидеть разницу между алгоритмом и компьютерной программой (которая записывается на «алгоритмическом» языке). По определению Н.Вирта [1],

программа = алгоритм + структуры данных.

Иными словами,

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

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