Алгоритмы как логико-математические средства отражают различные компоненты
человеческой деятельности и тенденции, а сами алгоритмы в зависимости
от цели, начальных условий задачи, путей её решения, определения действий
исполнителя классифицируются следующим образом [2]:
-
механические алгоритмы, называемые детерминированными, жёсткими
(например, алгоритм работы двигателя), задают определённые действия,
обозначая их в единственной и достоверной последовательности, обеспечивая
тем самым однозначный требуемый результат, если выполняются те условия
процесса, для которых разработан алгоритм;
-
гибкие алгоритмы:
-
вероятностные (стохастические) алгоритмы дают программу решения
задачи несколькими путями или способами, приводящими к вероятному
достижению результата;
-
эвристические алгоритмы – это алгоритмы, в которых достижение
конечного результата программы действий однозначно не предопределено,
так же как не обозначена вся последовательность действий, не
выявлены все действия исполнителя. К эвристическим алгоритмам
относят, например, инструкции и предписания. В этих алгоритмах
используются универсальные логические процедуры и способы принятия
решений, основанные на аналогиях, ассоциациях и прошлом опыте
решения схожих задач;
-
линейные алгоритмы – наборы команд, выполняемых последовательно
во времени друг за другом;
-
разветвляющиеся алгоритмы – алгоритмы, содержащие хотя бы одно
условие, в результате проверки которого ЭВМ обеспечивает переход
на один из двух возможных шагов;
-
циклические алгоритмы – алгоритмы, предусматривающие многократное
повторение одного и того же действия (или действий) над исходными
данными. К циклическим алгоритмам сводится большинство методов
вычислений, перебора вариантов;
-
вспомогательные алгоритмы (процедуры) – алгоритмы, ранее разработанные
и целиком используемые при алгоритмизации конкретных задач.
Рассмотрим подробнее три основных вида алгоритмов: линейный, разветвляющийся
и циклический.
Линейный
алгоритм. Приведём пример записи алгоритма в виде
блок-схемы, в виде программы на алгоритмическом языке и на языке Паскаль.
В качестве
примера рассмотрим решение задачи вычисления среднего арифметического
из двух чисел, вводимых с клавиатуры (рис. 1.2).

Разветвляющийся
алгоритм.
В качестве примера рассмотрим алгоритм нахождения максимального из двух
чисел, введённых с клавиатуры (рис. 1.3).

Рис.
1.3. Пример разветвляющегося алгоритма
Циклический
алгоритм. Работу циклического алгоритма рассмотрим на
примере нахождения суммы чётных чисел, находящихся в диапазоне от 0
до n (n вводится с клавиатуры) (рис. 1.4).

Рис. 1.4. Пример
циклического алгоритма
Как
правило, при разработке программ используются одновременно все типы
алгоритмов, причём в одну циклическую структуру могут включаться так
называемые вложенные циклы. В циклах, как правило, используются структуры
ветвления. Поэтому современные программы представляют собой довольно
сложные алгоритмические конструкции.
|