Алгоритм – это пошаговое решение определенной проблемы. В большинстве своём в общем смысле алгоритм – это любой набор подробных инструкций, которые могут предоставить прогнозируемость конечного результата с известным началом. Алгоритмы хороши только в инструкции, но, и результат будет неправильным, если алгоритм не определен надлежащим образом.
Примеры алгоритмов
Типичный пример алгоритма будет инструкция по сборке модели самолета. Учитывая стартовый набор и число отмеченных частей, можно следовать инструкциям, приведенным в результате с прогнозируемым конечным результатом: собранный самолет. Опечатки в инструкции, или неспособность должным образом следовать шагам, приведёт в неисправность конечный продукт.
Компьютерная программа – это ещё один широко распространенный пример. Каждая компьютерная программа – это просто последовательность инструкций, которые могут различаться по сложности, и перечислены в определённом порядке, предназначенные для выполнения конкретной задачи. Математика также использует алгоритмы для решения уравнений вручную, без использования калькулятора. Последний пример – человеческий мозг: большинство концепций человеческого мозга определяют всё его поведение — от приобретения продуктов питания до влюблённости — как результат сложного алгоритма.
Классы алгоритмов
Пока нет общепризнанных классов для различных типов алгоритмов, но есть общие классы,которым алгоритмы часто могут принадлежать. Среди них:
Алгоритм динамического программирования: этот класс помнит старые результаты и пытается использовать их, чтобы ускорить процесс поиска новых результатов.
Жадные алгоритмы: жадные алгоритмы предпринимают попытку не только найти решение, но и найти идеальное решение для любой проблемы.
Алгоритм переборов: такой подход начинается в какой-то случайной точке и перебирает все варианты, пока не найдёт решение.
Рандомизированные алгоритмы: этот класс включает любой алгоритм, который в ходе процесса в любой момент использует случайное число.
Алгоритмы ветвей и границ: образуют дерево подзадач основной задачи, после каждой ветки, пока она либо не будет решена, либо будет сосредоточена в другой ветке.
Простые рекурсивные алгоритмы: этот тип идёт на прямое решение то сразу, то отступает, чтобы найти более простое решение.
Алгоритмы обратного слежения: такие алгоритмы проводят тест для решения; если решение нашло алгоритм и задача решена, если нет, то он повторяется не один раз, и тесты проходят снова, и продолжаются до тех пор, пока решение не будет найдено.
Алгоритмы разделяй и властвуй: этот алгоритм, похожи на алгоритмы ветвей и границ, за исключением что они используют поиск метода алгоритмов обратного слежения повторяющихся во время разделения задачи на подзадачи.
Последовательные и параллельные алгоритмы
Помимо этих общих классов, алгоритмы также могут быть разделены на две основные группы: последовательные алгоритмы, которые предназначены для последовательного выполнения, в котором каждая операция является принятой в линейном порядке; и параллельные алгоритмы, используемые на компьютерах под управлением параллельных процессоров, в котором имеется ряд операций который выполняются параллельно друг другу. Параллельные алгоритмы существуют в природном мире в случае, например, генетические мутации различных видов.