Алгоритм представляет собой автономный пошаговый набор операций, которые должны быть выполнены 4 , обычно интерпретируемые как конечная последовательность (компьютерных или человеческих) инструкций для определения решение такой проблемы, как: есть ли путь от A до B, или каков наименьший путь между A и B. В последнем случае вы также можете быть удовлетворены «достаточно близким» альтернативным решением.
Существуют определенные категории алгоритмов, одним из которых является эвристический алгоритм. В зависимости от (проверенных) свойств алгоритма в этом случае он попадает в одну из следующих трех категорий (примечание 1):
- Точный : доказано, что решение является оптимальным (или точным решением) входной задачи
- Приближение : доказано, что отклонение значения решения никогда не будет дальше от оптимального значения, чем некоторая предварительно определенная граница (например, никогда не более чем на 50% больше) чем оптимальное значение)
- Эвристический : алгоритм не был доказан как оптимальный, так и в пределах заранее определенной границы оптимального решения
Обратите внимание, что алгоритм аппроксимации также является эвристическим, но с более сильным свойством, что есть доказанная связь с решением (значением), которое он выводит.
Для некоторых задач никто не нашел «эффективного» алгоритма для вычисления оптимальных решений (примечание 2). Одной из таких проблем является известная проблема коммивояжера. Например, алгоритм Кристофида для задачи коммивояжера назывался эвристическим , поскольку не было доказано, что он находится в пределах 50% от оптимального решения. Однако поскольку это доказано, алгоритм Кристофида более точно называется алгоритмом аппроксимации.
Из-за ограничений возможностей компьютеров не всегда возможно эффективно найти решение best . Если в задаче достаточно структуры, возможно, существует эффективный способ пересечь пространство решений, даже если пространство решений огромно (т. Е. В задаче кратчайшего пути).
Эвристика обычно применяется для улучшения времени выполнения алгоритмов путем добавления «экспертной информации» или «образованных догадок» для направления поиска. На практике эвристика также может быть подпрограммой для оптимального алгоритма, чтобы определить, где искать сначала .
(примечание 1) : Кроме того, алгоритмы характеризуются тем, содержат ли они случайные или недетерминированные элементы. Алгоритм, который всегда выполняется одинаково и выдает один и тот же ответ, называется детерминированным.
(примечание 2) : Это называется проблемой P vs NP, и проблемы, которые классифицируются как NP-полные и NP-сложные, вряд ли будут иметь «эффективный» алгоритм. Заметка; как упомянул @Kriss в комментариях, существуют даже «худшие» типы проблем, для вычисления которых может потребоваться экспоненциальное время или пространство.
Есть несколько ответов, которые отвечают на часть вопроса. Я посчитал их менее полными и недостаточно точными и решил не редактировать принятый ответ @ Kriss