Описание тега algorithm

Алгоритм - это последовательность четко определенных шагов, которая определяет абстрактное решение проблемы. Используйте этот тег, если ваша проблема связана с разработкой алгоритма.

Алгоритм - это набор ordered инструкции, основанные на формальном языке, со следующими условиями:

  • Конечное. Количество инструкций должно быть конечным.
  • Исполняемый. Все инструкции должны выполняться каким-либо зависящим от языка способом за конечный промежуток времени.

Алгоритм не должен быть детерминированным - имеется много случайных на основе алгоритмов, например QuickSort с выбором элемента поворота случайным образом.

Алгоритм можно выразить разными способами:

  • Как последовательность инструкций
  • В виде блок-схемы
  • В виде кода на существующем или новом языке программирования
  • Как кусок текста на человеческом языке
  • Как реализация в формальной модели вычислений, такой как машина Тьюринга
  • Или другими похожими способами

Алгоритм может решить класс задач. Например, "сумма 1 и 3" и "сумма 4 и 5" относятся к одному классу: "суммировать два целых числа". Кроме того, данный класс проблем, как правило, можно решить с помощью множества алгоритмов.

Одним из важных аспектов разработки алгоритмов является производительность. Для больших наборов данных хороший алгоритм может на несколько порядков превзойти плохой алгоритм. Производительность алгоритма часто оценивается с помощью нотации Big O или Θ, но следует быть осторожным с асимптотической нотацией, поскольку могут быть задействованы большие константы.

Ключевая классификация алгоритмов известна как сложность алгоритма.

Еще один важный шаг при разработке алгоритма - доказательство правильности. Алгоритм должен действительно обеспечивать правильный результат для любого случая проблемы. Мы всегда должны заботиться обо всех условиях, при которых предлагаемый алгоритм может дать сбой. Это можно сделать с помощью нескольких методов, например, проверки модели, утверждения, инвариантности цикла.

Ссылки по теме

Дополнительные ресурсы по алгоритмам включают: