Есть два эвристические понятия здесь:
Допускаемое эвристический: Когда для каждого узла п в графе, ч (п)никогда не переоценивает стоимость достижения цели ,
Последовательный эвристический: Когда для каждого узла п в графе и каждый узел м его наследников, ч (п) < = H (M) + с (п, м), где c (n, m) - стоимость дуги от n до m.
эвристическая функция является допустимой, но не соответствует, так как вы показали:
ч (А)> Н (В) + с (А, Б), 5> 2.
Если эвристический соответствует, то предполагаемая окончательная стоимость частичного решения всегда будет расти вдоль пути, т.е. е (п) < = е (м) и как мы можем видеть снова:
f (A) = g (A) + h (A) = 7> f (B) = g (B) + h (B) = 5,
эта эвристическая функция не удовлетворяет этому свойству.
Что касается A *:
- A * с использованием допустимой эвристической гарантии, чтобы найти кратчайший путь от начала до цели.
- A * Используя согласованную эвристику, в дополнение к поиску кратчайшего пути, также гарантирует, что после изучения узла мы уже нашли кратчайший путь к этому узлу, и поэтому ни один узел не должен быть повторно исследован.
Итак, отвечая на ваш вопрос, алгоритм A * должен быть реализован для повторного открытия узлов при обнаружении более короткого пути к узлу (обновление также новой стоимости пути), и этот новый путь будет добавлен к открытому set или frontier, поэтому ваш аргумент неверен, , так как B должен быть добавлен снова к границе (теперь с дорожкой S-> A-> B и стоимостью 3).
Если вы можете ограничить использование A * только с помощью согласованных эвристических функций, то да, вы можете отбросить путь к узлам, которые уже были изучены.
Эвристика допустима, но не соответствует. h (A) - расчетная стоимость от A до G, а не S до A, поэтому она не является завышенной. В графическом поиске он не должен повторно открывать B, так как B находится в исследуемом наборе, поскольку он уже был расширен? (Он должен только открывать эти узлы в пограничном/неисследованном наборе) – James