Per the wikipedia pageA * Search Algorithmでは、なぜg(n)を追加するのですか?
... F(n)はG(N)+ H(n)は、nはパスの最後のノードであり、G(n)は、パスのコストである
を= h(n)は、nから目標までの最も安い経路のコストを推定するヒューリスティックである。
開始ノードから現在の場所までのパスのコストを考えてみませんか?私はこのアルゴリズムを問題のために実装しています。優先キューを使用していましたが、g(n)+ h(n)を実行すると、h(n)を厳密に使用するよりも時間がかかります。ヒューリスティックが正確であれば、あなたがあなたの目標にどれくらい近づいているかだけ気にしているので、h(n)を使うのは理にかなっていませんか?
EDIT:実際に私のg(n)関数が間違って計算されていることがわかりましたが、論理的にg(n)+ h(n)がh(n)
そうでない場合は、不正な結果が得られることがあります。例えば、完全に有効なヒューリスティックh(n)= 0を取る。 – Henry
まあ、開始から目標までの総コストは、開始からのコスト - > n + n - >目標からのコストです。すなわち、「S→G = S→n + n→G = g(n)+ h(n)」となる。 – Kevin
[java]タグは言語に依存しないため、削除することをお勧めします。 –