Алгоритм – это точная, однозначная, конечная последовательность действий, которые необходимо выполнить, для достижения конкретной цели либо для решения конкретной задачи или группы задач».
Определение алгоритма
Понятие алгоритма, алгоритмизация задачи.
После построения модели наступает следующий этап выработка на ее основе алгоритма.
Компьютер при всей своей вычислительной мощи является быстрым, аккуратным, точным и вместе с тем совершенно тупым исполнителем. При использовании его при решении различных задач нельзя рассчитывать на то, что компьютер о чем-то догадается сам, ему для работы нужны очень точные и подробные инструкции. Здесь мы с вами подходим к одному из множества определений алгоритма. АЛГОРИТМ – строго установленный порядок выполнения каких-то действий, необходимых для получения конечного результата. Как ни странно это может прозвучать, в реальной жизни мы постоянно сталкиваемся с алгоритмами. Инструкция по пользованию телефоном-автоматом, содержащая порядок действий необходимых для успешного телефонного звонка. Правила использования бытовой техники и многое другое в краткой, лаконичной форме сообщают нам, что надо делать в той или иной ситуации, определяя тем самым алгоритм нашего поведения. Само слово «алгоритм» – арабского происхождения. Одна из версий предполагает, что в основу данного термина положена арабская фамилия «аль-Хорезми» (из Хорезма). Алгоритм является основой для разработки тех инструкций, которыми руководствуется компьютер при работе, но напрямую использовать алгоритм мы не сможем, так как он пишется на естественном человеческом языке, компьютеру не понятном.
Для того, чтобы компьютер понял алгоритм его переводят на язык понятный машине и именной такой алгоритм, записанный в на машинном языке называется программой.
Единого «истинного» определения понятия «алгоритм» нет.
«Алгоритм — это конечный набор правил, который определяет последовательность операций для решения конкретного множества задач и обладает пятью важными чертами: конечность, определённость, ввод, вывод, эффективность». (Д. Э. Кнут)
«Алгоритм — точное предписание о выполнении в определённом порядке некоторой системы операций, ведущих к решению всех задач данного типа». (Философский словарь / Под ред. М. М. Розенталя)
Давайте рассмотрим пример алгоритма.
Классическая история о козе, капусте и волке, которых необходимо переправить на другой берег реки с помощью одной лодки и перевозчика. Нам необходимо разработать алгоритм для проведения этой операции.
Исходное состояние задачи: все на левом берегу. Налагаемые ограничения: не допустить, чтобы кто-нибудь кого-нибудь съел во время перевозки.
1. Первой везем козу. Другие варианты не возможны, т. к. приводят к нарушению условий.
2. Лодка возвращается обратно, забирает капусту и везет на другой берег.
3. Капусту с козой оставлять нельзя, забираем козу обратно.
4. Оставляем козу, забираем волка и везем его к капусте.
5. Затем возвращаемся за козой и перевозим ее на другой берег.
6. Задача решена.
Теперь, имея в своем распоряжении такой алгоритм, вы сможете решить подобную задачу, не задумываясь.
Различные определения алгоритма в явной или неявной форме содержат следующий ряд общих требований:
Дискретность — алгоритм должен представлять процесс решения задачи как последовательное выполнение некоторых простых шагов. При этом для выполнения каждого шага алгоритма требуется конечный отрезок времени, то есть преобразование исходных данных в результат осуществляется во времени дискретно.
Детерминированность — определённость. В каждый момент времени следующий шаг работы однозначно определяется состоянием системы. Таким образом, алгоритм выдаёт один и тот же результат (ответ) для одних и тех же исходных данных. В современной трактовке у разных реализаций одного и того же алгоритма должен быть изоморфный граф. С другой стороны, существуют вероятностные алгоритмы, в которых следующий шаг работы зависит от текущего состояния системы и генерируемого случайного числа. Однако при включении метода генерации случайных чисел в список «исходных данных», вероятностный алгоритм становится подвидом обычного.
Понятность — алгоритм для исполнителя должен включать только те команды, которые ему (исполнителю) доступны, которые входят в его систему команд.
Конечность (Выполнимость) — при корректно заданных исходных данных алгоритм должен завершать работу и выдавать результат за конечное число шагов. С другой стороны, вероятностный алгоритм может и никогда не выдать результат, но вероятность этого равна 0.
Массовость — пригодность алгоритма для решения определенного класса задач, алгоритм должен быть применим к разным наборам исходных данных.