Свойства алгоритмаАлгоритм — это понятное и точное предписание
исполнителю совершить последовательность действий, направленных на
решение поставленной задачи или достижение указанной цели.
Термин имеет интересное историческое происхождение.
В IХ веке великий узбекский математик аль-Хорезми разработал правила-
арифметических действий над десятичными числами. Совокупность этих
правил в Европе стали называть "алгоризм”. Впоследствии слово
трансформировалось до известного нам сейчас вида. Алгоритмом - стали
называть любую последовательность действий, которая приводит к решению
той или иной задачи. Можно сказать, что понятие вышло за рамки
математики и стало применяться в самых различных областях. Свойства алгоритма
• Дискретность - разделение информационного процесса в алгоритме на
отдельные команды. • Однозначность (детерминированность, определенность) - каждая команда алгоритма
однозначно определяет действие исполнителя; • Понятность - в алгоритме используются только система команд
исполнителя (СКИ).
• Результативность (конечность) - т. е. алгоритм должен приводить к
решению задачи за конечное число шагов;
• Массовость (универсальность) - т. е. алгоритм должен выполняться
для любого набора исходных данных, удовлетворяющих условию задачи;
• Дискретность - процесс
решения задачи должен быть разбит на последовательность отдельных шагов,
каждый из которых называется командой.
• Однозначность (детерминированность)
- команды, образующие алгоритм (или, можно
сказать, входящие в СКИ), должны быть предельно четкими и однозначными.
Их результат не может зависеть от какой-либо дополнительной информации
извне алгоритма. Сколько бы раз вы не запускали программу, для одних и
тех же исходных данных всегда будет получаться один и тот же результат.
При наличии ошибок в алгоритме последнее
сформулированное свойство может иногда нарушаться.
Определенность также предполагает, что данные,
необходимые для выполнения очередной команды алгоритма, получены на
одном из предыдущих шагов алгоритма. • Понятность - каждая
команда алгоритма должна быть понятна тому, кто исполняет алгоритм.
• Результативность (Конечность) - результат
выполнения алгоритма должен быть обязательно получен, т.е. правильный
алгоритм не может обрываться безрезультатно из-за какого-либо
непреодолимого препятствия в ходе выполнения. Кроме того, любой алгоритм
должен завершиться за конечное число шагов, Большинство алгоритмов
данным требованиям удовлетворяют, но при наличии ошибок возможны
нарушения результативности.
• Корректность - любой
алгоритм создан для решения той или иной задачи, поэтому нам необходима
уверенность, что это решение будет правильным для любых допустимых
исходных данных. Как показывает опыт, грамотная и всесторонняя отладка
для сложных алгоритмов часто требует значительно больших усилий, чем
собственно разработка этих алгоритмов. При этом важно не столько
количество проверенных сочетаний входных данных, сколько количество их
типов. Например, можно сделать сколько угодно проверок для положительных
значений аргумента алгоритма, но это никак не будет гарантировать
корректную его работу в случае отрицательной величины аргумента.
• Массовость - алгоритм
имеет смысл разрабатывать только в том случае, когда он будет
применяться многократно для различных наборов исходных данных. Например,
если составляется алгоритм обработки текстов, то вряд ли целесообразно
ограничивать его возможности только русскими буквами — стоит
предусмотреть также латинский алфавит, цифры, знаки препинания и т.п.
Тем более что такое обобщение особых трудностей не вызывает.
|