Понятие алгоритма так же фундаментально для информатики, как и понятие информации.
Само слово «алгоритм» происходит от имени выдающегося математика средневекового Востока Мухаммеда аль-Хорезми (Его полное имя Абу Абдуллах (или Абу Джафар) Мухаммад ибн Муса аль-Хорезми. Известно, что он родился до 800 г., а умер после 847 г., жил и работал в Багдаде – крупном научном центре и влиятельной столице Древнего Востока). Им были предложены приемы выполнения арифметических вычислений с многозначными числами (они всем хорошо знакомы из школьной математики). Позже в Европе эти приемы назвали алгоритмами от «Algorithmi» - латинского написания имени аль-Хорезми. |
В наше время понятие алгоритма понимается шире, не ограничиваясь только арифметическими вычислениями. Термин "алгоритм" стал достаточно распространенным не только в информатике, но и в быту.
Под алгоритмом (в быту) понимают описание какой-либо последовательности действий для достижения заданной цели. |
В этом смысле, например, алгоритмами можно назвать
инструкцию по использованию кухонного комбайна, кулинарный рецепт, правила
перехода улицы и пр.
Для использования понятия алгоритма в
информатике требуется более точное определение, чем данное выше.
Ключевыми словами, раскрывающими смысл этого понятия, являются: исполнитель, команда, система
команд исполнителя.
Алгоритм представляет собой последовательность команд
(еще говорят - инструкций, директив), определяющих действия исполнителя
(субъекта или управляемого объекта). Всякий алгоритм составляется в расчете на
конкретного исполнителя с учетом его возможностей. Для того, чтобы алгоритм был
выполним, нельзя включать в него команды, которые исполнитель не в состоянии
выполнить. Нельзя повару поручать работу токаря, какая бы подробная инструкция
ему не давалась. У каждого исполнителя имеется свой перечень команд, которые он
может исполнить. Такой перечень называется системой команд исполнителя
алгоритмов. (СКИ).
Например:
Исполнитель | Система команд исполнителя |
“Черепашка” в среде Лого | ВП, ПР, ЛВ, ПО, ПИШИ, НЦ, КРАСЬ, БЫСТРО, ПОВТОРИ и т.д. |
Операционная система | CLS, CD, DIR, COPY, RENAME, TIME, MD и т.д. |
СОБАКА | “сидеть”, ”лежать”, ”апорт”, ”фас”, ”барьер” и т.д. |
Дискретность.
Процесс решения задачи должен
быть разбит на последовательность отдельных шагов. Таким образом,
формируется упорядоченная совокупность отделенных друг от друга команд
(предписаний). Образующаяся структура алгоритма оказывается прерывной
(дискретной): только выполнив одну команду, исполнитель сможет приступить к
выполнению следующей.
Точность
(определенность)
Каждая команда алгоритма должна определять
однозначное действие исполнителя. Это требование называется точностью
алгоритма.
Понятность.
Алгоритм, составленный для
конкретного исполнителя, должен включать только те команды, которые входят в его
систему команд. Это свойство алгоритма называется понятностью.
Алгоритм не должен быть рассчитан на принятие каких-либо самостоятельных
решений исполнителем, не предусмотренных составителем алгоритма.
Конечность
(результативность)
Еще одно важное требование, предъявляемое к
алгоритму, — это конечность (иногда говорят - результативность) алгоритма. Это значит, что исполнение
алгоритма должно завершиться за конечное число шагов.
Массовость.
Разработка алгоритмов -
процесс интересный, творческий, но непростой, требующий многих умственных усилий
и затрат времени. Поэтому предпочтительно разрабатывать алгоритмы,
обеспечивающие решение всего класса задач данного типа.
Например, если составляется алгоритм решения уравнения А
: Х = С, то он должен быть вариативен, т.е. обеспечивать возможность решения для
любых допустимых исходных значений коэффициентов А и С. Про такой алгоритм
говорят, что он удовлетворяет требованию массовости.
Свойство
массовости не является необходимым свойством алгоритма. Оно скорее определяет
качество алгоритма: в то же время свойства точности, понятности и конечности
являются необходимыми (иначе это не алгоритм).
Для успешного выполнения любой работы мало иметь ее
алгоритм. Всегда требуются еще какие-то исходные данные, с которыми будет
работать исполнитель (продукты для приготовления блюда, детали для сбора
технического устройства и т.п.). Исполнителю, решающему математическую задачу,
требуется исходная числовая информация. Задача всегда формулируется так: дана
исходная информация, требуется получить какой-то результат.
Приступая
к решению любой задачи, нужно сначала собрать все необходимые для ее решения
данные.
Еще пример: для поиска номера телефона нужного вам человека исходными данными являются: фамилия, инициалы человека и телефонная книга (точнее, информация, заключенная в телефонную книгу). Однако этого может оказаться недостаточно. Например, вы ищите телефон А. И. Смирнова и обнаруживаете, что в книге пять строк с фамилией «Смирнов А. И.» Ваши исходные данные оказались неполными для точного решения задачи (вместо одного телефона вы получили пять). Оказалось, что нужно знать еще домашний адрес. Набор: фамилия — инициалы — телефонный справочник — адрес — является полным набором данных в этой ситуации. Только имея полный набор данных, можно точно решить задачу. Обобщая все сказанное, сформулируем определение алгоритма.
Алгоритм — понятное и точное предписание исполнителю выполнить конечную последовательность команд, приводящую от исходных данных к искомому результату. |
Если алгоритм обладает перечисленными выше свойствами, то работа по нему будет производиться исполнителем формально (т.е. без всяких элементов творчества с его стороны). На этом основана работа программно-управляемых исполнителей-автоматов, например промышленных роботов. Робот-манипулятор может выполнять работу токаря, если он умеет делать все операции токаря (включать станок, закреплять резец, перемещать резец, замерять изделие и т.д.). От исполнителя не требуется понимание сущности алгоритма, он должен лишь точно выполнять команды, не нарушая их последовательности.