Описание тега algorithm
Алгоритм - это набор ordered
инструкции, основанные на формальном языке, со следующими условиями:
- Конечное. Количество инструкций должно быть конечным.
- Исполняемый. Все инструкции должны выполняться каким-либо зависящим от языка способом за конечный промежуток времени.
Алгоритм не должен быть детерминированным - имеется много случайных на основе алгоритмов, например QuickSort с выбором элемента поворота случайным образом.
Алгоритм можно выразить разными способами:
- Как последовательность инструкций
- В виде блок-схемы
- В виде кода на существующем или новом языке программирования
- Как кусок текста на человеческом языке
- Как реализация в формальной модели вычислений, такой как машина Тьюринга
- Или другими похожими способами
Алгоритм может решить класс задач. Например, "сумма 1 и 3" и "сумма 4 и 5" относятся к одному классу: "суммировать два целых числа". Кроме того, данный класс проблем, как правило, можно решить с помощью множества алгоритмов.
Одним из важных аспектов разработки алгоритмов является производительность. Для больших наборов данных хороший алгоритм может на несколько порядков превзойти плохой алгоритм. Производительность алгоритма часто оценивается с помощью нотации Big O или Θ, но следует быть осторожным с асимптотической нотацией, поскольку могут быть задействованы большие константы.
Ключевая классификация алгоритмов известна как сложность алгоритма.
Еще один важный шаг при разработке алгоритма - доказательство правильности. Алгоритм должен действительно обеспечивать правильный результат для любого случая проблемы. Мы всегда должны заботиться обо всех условиях, при которых предлагаемый алгоритм может дать сбой. Это можно сделать с помощью нескольких методов, например, проверки модели, утверждения, инвариантности цикла.
Ссылки по теме
Дополнительные ресурсы по алгоритмам включают: