2010-12-14 12 views
0

A *検索アルゴリズムを実装しようとしています。今のところ、私はただの壁に囲まれた環境に良い道を見つけることを試みているだけです。壁は無作為に生成され、場合によっては私のパスが「スタック」になります。検索の前に壁があり、その辺のすべてに(この混乱に導いたものを除いて)見つかった場合、それは停止する。 これを防ぐためにできることはありますか?私は壁を無視し、目的地に到達するまでにどれくらいの距離がかかるかを推測する私のH値のために "カラスが飛ぶ"ポイントシステムを使用しています。これは時々このトラップにつながります。A *検索アルゴリズムが停止する

ありがとうございました。

答えて

2

距離を過小評価することは、A *にとって「適切」です。

しかし、深さや幅の問題があるようです。

特定の位置からオプションを評価する場合は、それらをオプションのリストに追加して、スコアでチェックおよびソートする必要があります。そのポジションを評価した直後に、そのポジションから利用できるオプションをチェックする理由はありません。つまり、各ポジションのすべてのオプションは同じリストに入れなければなりません。このように、デッドエンドを打つと、それ以上のオプションは生成されず、次にスコアの高いオプションをリストから外して評価します。

+0

私はそれを修正しました。オープンオプションのリストから別の「ノード」を取得することと関係していました。問題はそうではなかったということでした。 – Woody

0

致命的なものになった場合は、問題ではありません。あなたのA *アルゴリズムは、次のブロックされていないノードを最低のヒューリスティックで見つけて、やり直すべきです。

0

有向非循環グラフのような状態空間を考えると、A *が末端ノードではない葉ノードに遭遇した場合、そのノードはすでに閉鎖リスト。

非終端(ゴール)リーフノードに遭遇した後すぐにA *の実装が停止し、オープンリストにまだ他のノードがある場合、A *の実装は正しくありません。

+0

これが問題です。私はそれを実装する方法に何か問題があります。私はもっ​​とそれを見ている、ありがとう。 – Woody