В чем разница между эвристикой и алгоритмом?

В чем разница между эвристикой и алгоритмом?

Ответ 1

Алгоритм - это описание автоматизированного решения проблемы. То, что делает алгоритм, точно определено. Решение может быть или не быть лучшим, но с самого начала вы знаете, какой результат вы получите. Вы реализуете алгоритм , используя некоторый язык программирования, чтобы получить (часть) программу.

Теперь некоторые проблемы сложны, и вы не сможете получить приемлемое решение в приемлемое время. В таких случаях вы часто можете получить не очень плохое решение гораздо быстрее, применяя некоторые произвольные варианты (образованные догадки): это эвристический.

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

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

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

Ответ 2

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

Многие проблемы, для которых не существует эффективного алгоритма для поиска оптимального решения, имеют эвристические подходы, которые очень быстро дают почти оптимальные результаты.

Есть несколько совпадений: "генетические алгоритмы" являются принятым термином, но, строго говоря, это эвристика, а не алгоритмы.

Ответ 3

Эвристика, в двух словах - это "Образованное предположение". Википедия объясняет это красиво. В конечном итоге метод "общего принятия" принимается как оптимальное решение указанной проблемы.

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

В более точных выражениях эвристика поддерживать стратегии, используя доступный, хотя и свободно применимый, информация для решения проблем в людях и машинах.

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

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

Ответ 4

На самом деле я не думаю, что между ними много общего. Некоторые алгоритмы используют эвристику в своей логике (часто делать меньше вычислений или получать более быстрые результаты). Обычно эвристика используется в так называемых жадных алгоритмах.

Эвристика - это "знание", которое, как мы предполагаем, полезно использовать для того, чтобы получить лучший выбор в нашем алгоритме (когда нужно сделать выбор). Например... эвристика в шахматах может быть (всегда возьмите королеву противников, если сможете, так как вы знаете, что это более сильная фигура). Эвристика не гарантирует вас, что приведет вас к правильному ответу, но (если предположения верны) часто получают ответ, близкий к лучшему за гораздо более короткое время.

Ответ 5

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

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

Ответ 6

Алгоритм - это последовательность некоторых операций, которые задают вход, что-то вычисляет (функция) и выводит результат.

Алгоритм может давать точные или приблизительные значения.

Он также может вычислять случайное значение, которое с большой вероятностью близко к точному значению.

Эвристический алгоритм использует некоторое представление о входных значениях и вычисляет не точное значение (но может быть близким к оптимальному). В некоторых особых случаях эвристика может найти точное решение.

Ответ 7

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

Итак, если вы знаете, как решить проблему, используйте алгоритм. Если вам нужно разработать решение, то это эвристика.

Ответ 8

Алгоритм представляет собой автономный пошаговый набор выполняемых операций 4, как правило интерпретируется как конечная последовательность (компьютерных или человеческих) инструкций для определения решения проблемы, такой как: есть ли путь от А до В или какой наименьший путь между А и В. В последнем случае вы могли бы также быть удовлетворены "разумно близким" альтернативным решением.

Существуют определенные категории алгоритмов, одним из которых является эвристический алгоритм. В зависимости от (проверенных) свойств алгоритма в этом случае он попадает в одну из этих трех категорий (примечание 1):

  • Exact: решение оказалось оптимальным (или точным) решением проблемы ввода
  • Approximation: отклонение значения решения, как доказано, никогда не находится дальше от оптимального значения чем некоторая предопределенная граница (например, не более чем на 50% больше оптимального значения)
  • Heuristic: алгоритм не был доказан как оптимальный, а также не в рамках предопределенной границы оптимального решения

Обратите внимание, что алгоритм аппроксимации также является эвристическим, но с более сильным свойством существует доказанная привязка к решению (значению), которое он выводит.

Для некоторых проблем никто не нашел "эффективного" алгоритма для вычисления оптимальных решений (примечание 2). Одной из таких проблем является известная проблема коммивояжера. Например, алгоритм Кристофида для Задачи Путешественника Продавца назывался эвристическим, поскольку не было доказано, что оно находилось в пределах 50% от оптимального решения. Однако, как было доказано, алгоритм Кристофида более точно упоминается как алгоритм аппроксимации.

Из-за ограничений на то, что компьютеры могут делать, не всегда возможно найти оптимальное решение. Если в задаче достаточно структуры, может быть эффективный способ пересечения пространства решений, хотя пространство решений огромно (т.е. В задаче кратчайшего пути).

Эвристики обычно применяются для улучшения времени работы алгоритмов, путем добавления "экспертной информации" или "образованных догадок" для направления поиска. На практике эвристика также может быть подпрограммой для оптимального алгоритма, чтобы определить, где искать в первую очередь.

(примечание 1). Кроме того, алгоритмы характеризуются тем, включают ли они случайные или недетерминированные элементы. Алгоритм, который всегда выполняет один и тот же путь и выдает один и тот же ответ, называется детерминированным.

(примечание 2). Это называется проблемой P vs NP, и проблемы, которые классифицируются как NP-complete и NP-hard, вряд ли будут иметь "эффективный" алгоритм. Заметка; как упоминалось в комментариях @Kriss, существуют даже "худшие" типы проблем, для которых может потребоваться экспоненциальное время или пространство для вычисления.

Есть несколько ответов, которые отвечают на часть вопроса. Я считал их менее полными и недостаточно точными, и решил не редактировать принятый ответ, сделанный @Kriss

Ответ 9

Эвристика обычно представляет собой оптимизацию или стратегию, которая обычно дает достаточно хороший ответ, но не всегда и редко лучший ответ. Например, если бы вы решали проблему коммивояжера с грубой силой, отбрасывая частичное решение, когда его стоимость превосходит стоимость существующего наилучшего решения, это эвристика: иногда это помогает, иногда это не так, и это определенно не означает, t улучшить теоретическую (большую-о-нотацию) время выполнения алгоритма

Ответ 10

Я думаю, что эвристика - это скорее ограничение, используемое в модели, основанной на обучении, в искусственном интеллекте, поскольку предсказать будущее состояние решения трудно.

Но тогда мое сомнение после прочтения выше ответов "Как эвристика может быть успешно применена с использованием Stochastic Optimization Techniques?" Или они могут функционировать как полноценные алгоритмы при использовании со стохастической оптимизацией? "

http://en.wikipedia.org/wiki/Stochastic_optimization

Ответ 11

Одно из лучших объяснений, которое я прочитал, - это отличная книга Code Complete, которую я теперь цитирую:

Эвристика - это метод, который поможет вам найти ответ. это результаты могут быть случайными, потому что эвристика говорит вам только о том, как смотреть, а не искать. Это не говорит вам, как получить прямо от точки A до точки B; он может даже не знать, где точка А и точка B есть. По сути, эвристика - это алгоритм в костюме клоуна. Его менее предсказуемый, более увлекательный, и он приходит без 30-дневного, гарантия возврата денег.

Вот алгоритм для езды в какой-то дом: Take Highway 167 на юг до Пюи-аллюпа. Сверните на Южный Хилл и пройдите 7 км в гору. Поверните направо на свет в продуктовый магазин, а затем первый поворот налево. Повернитесь на подъездную дорогу большого загорающего дома на слева, на 714 северном кедре.

Вот эвристика для того, чтобы добраться до какого-то дома: найдите последний письмо, которое мы отправили вам по почте. Поездка в город по обратному адресу. когда вы попадаете в город, спрашиваете кого-то, где находится наш дом. Все знают нас-кто-то будет рад помочь вам. Если вы не можете найти кого-нибудь, позвоните нам от общедоступного телефона, и хорошо пойдём.

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

Ответ 12

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