Я изучаю алгоритм поиска пути A *, и все примеры, которые я нахожу, основаны на сетке. Из-за этого все их функции эвристики опираются на какое-то физическое расстояние (например, на основе Манхэттена, диагональ или евклид).Какие эвристические функции можно использовать для графического (несетевого) A *?
Но что, если вместо сетки мы имеем график свободной формы? Скажем, пример ниже, где S
является началом и G
цель:
S---A
|
| G
| |
B---C---D
В этом случае «по прямому» приближению не будет иметь смысла, потому что этот граф является двусмысленным для
S---A
|
B---C---D
|
G
Какую эвристическую функцию я мог бы использовать в этом случае?
Хороший способ найти эвристическую функцию - рассмотреть «расслабленную проблему», где вы расслабляете ограничения реальных проблем, позволяя «незаконным ходам» быть легалями. http://courses.cs.washington.edu/courses/cse573/12au/slides /03heheistics.pdf В вашем случае вы считаете, что все затраты равны 1, и используйте стандартную BFS, чтобы найти расстояние между 2 узлы? Такое расстояние может быть эвристическим для расстояния между двумя узлами. – TuanDT
@ Tuan333 Не использовал бы BFS, чтобы победить цель использования A *? – slider
Эвристики часто представляют собой оценки, основанные на «среде», в которой выполняется поиск. Каков контекст, в котором у вас есть этот график свободной формы? – slider