Как работает эвристический алгоритм?

Недавно я изучаю какой-то эвристический алгоритм, такой как алгоритм поиска A *. Я знаю некоторые основные факты об алгоритме эвристического поиска, такие как f(n)=g(n)+h(n), а также знаю, что каждый из них означает допустимый и непротиворечивый. Но что меня смущает, так это то, как работает эвристический алгоритм? Почему лучше, если эвристическое значение ближе к фактическому значению стоимости? Спасибо!


person photosynthesis    schedule 07.10.2013    source источник


Ответы (3)


Подумайте об идеальной эвристике h(n). Он дает точное кратчайшее расстояние до цели из n.

Следовательно, функция стоимости f(s) для каждого узла s на кратчайшем пути будет одинаковой и равной длине кратчайшего пути: пройденное расстояние плюс точное кратчайшее расстояние до цели.

Так что нетрудно заметить, что для всех узлов кратчайшего пути s и любого заданного узла некратчайшего пути n мы имеем f(s) ‹ f(n).

Теперь подумайте о том, как будет вести себя алгоритм A* с такой эвристикой: в каждом узле выбранный следующий узел для расширения в очередь также будет следующим узлом на кратчайшем пути, потому что он должен иметь наименьшее возможное значение f. Поэтому алгоритм будет двигаться напрямую от начальных узлов к целевым по кратчайшему пути без ошибок!

Если у вас нет идеальной эвристики, алгоритм, очевидно, может совершать ошибки, потому что возможно f(n) ‹ f(s), поэтому алгоритм может «сойти с кратчайшего пути» по ненужной ветви.

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

person Gene    schedule 08.10.2013

Эвристика — это всего лишь хорошая обоснованная догадка. Аппроксимация гарантирует, что она находится в некоторых пределах. Алгоритм Кристофидеса является приближенным алгоритмом, но работает только с графом, удовлетворяющим неравенству треугольника (метрика tsp). Источник: https://cs.stackexchange.com/questions/10182/difference- алгоритм между эвристикой и аппроксимацией

person Gigamegs    schedule 07.10.2013

Эвристическая функция действует как оценка наименьшей оставшейся стоимости завершения сквозного пути. f(n) = g(n) + h(n) ограничивает снизу наименьшую стоимость продления и завершения пути g(n). Таким образом, для допустимых эвристических функций гарантируется успех поиска.

Чем ближе эвристическая функция, тем быстрее поиск. Подумайте о крайнем случае, что h(n) = 0 вместо этого у вас будет поиск A, а если h(n) - это точно оставшаяся стоимость, что означает, что f(n) - это реальная стоимость, тогда поиск выполнен.

person Zac Wrangler    schedule 07.10.2013