私は現在、EdX の Berkeley AI クラスを受講しており、A* 検索について検討しています。以前に A* グラフ検索を使用したことがあり、後継者をフリンジ/キューに追加するときに、後継者がフリンジまたは探索済み/クローズド セットにある場合は後継者を追加しないように実装しました。ただし、クラスの教授は、A* グラフ検索の場合、フリンジにノードを追加し、それらをポップして、それらが既に探索セットにある場合はスキップする必要があると言っていました (つまり、それらを展開することを拒否しますが、それでも追加します)フリンジまで繰り返されるノード)。
ウィキペディアの疑似コードhttp://en.wikipedia.org/wiki/A_star#Pseudocodeでは、A* は別の方法で実行されているようで、探索された/ にない場合にのみフリンジ/キューに追加します。すでに閉じたセット。ただ、後継者のGスコアを極限まで抑えるダイクストラらしい部分もある。
これはすべて、一貫した最適なヒューリスティックを使用していることを前提としています。誰かがそれを実装した結果をよりよく理解するのを手伝ってくれませんか ありがとう!