Demyenが彼の論文Efficient Triangulation-Based Pathfinding(p 。
彼は、通常のA *アルゴリズムを三角測量に適応させ、最終ノードに到達/拡張した後でも、他のより最適なパスを検索する方法を説明しています。通常のA *は、最後のノードが展開されると停止しますが、三角グラフで使用される場合、これが常に最適なパスであるとは限りません。これはまさに私が抱えている問題です。
この問題は、78ページの図5.4に示されています。
論文(80ページ)に記載されているgおよびh値の計算方法を理解しています。
そして、検索停止条件は次のとおりです。
if (currentNode.fCost > shortestDistanceFound)
{
// stop
break;
}
ここで、currentNodeは、開いているリスト(優先度キュー)からポップされた検索ノードであり、fスコアが最も低くなります。shortestDistanceFoundは、これまでに見つかった最短経路の実際の距離です。
しかし、以前に見つかったパスを今後の検索から除外するにはどうすればよいですか?もう一度検索すると、明らかに同じパスが見つかるからです。クローズリストをリセットしますか?何かを変更する必要がありますが、何を変更する必要があるのかわかりません。この論文には疑似コードが欠けているため、参考になります。