19

ウィキペディアは、A *の複雑さについて次のように述べています(リンクはこちら)。

時間計算量よりも問題なのは、A*のメモリ使用量です。最悪の場合、指数関数的な数のノードも記憶する必要があります。

これが正しいとは思えません。理由は次のとおりです。

後続のB、C、およびDとともにノードAを探索するとします。次に、B、C、およびDを開いているノードのリストに追加します。それぞれにAへの参照が付いており、Aを開いているノードから閉じているノードに移動します。ノード。

ある時点で、Aを経由するパスよりも優れたBへの別のパス(たとえば、Q経由)を見つけた場合、必要なのは、BのAへの参照を変更してQをポイントし、実際のコストg(そして論理的にf)。

したがって、ノードにその名前、参照ノード名、およびそのg、h、fスコアを格納すると、格納されるノードの最大数はグラフ内の実際のノード数になりますね。アルゴリズムが最適な(最短)パスの長さに対して指数関数的な量のノードをメモリに格納する必要がある理由を、私は本当に理解できません。

誰か説明してもらえますか?


編集あなたの答えを読んでいると理解しているので、私は問題の間違った観点から推論していました。私は与えられたグラフを当然のことと思っていましたが、指数関数的な複雑さは、「分岐係数」によってのみ定義される概念的なグラフを指します。

4

3 に答える 3

36

A *は、幅優先探索のガイド付きバージョンであり、ソリューションの長さに関してメモリの複雑さが指数関数的になります。

一定のヒューリスティックを使用する場合、A*は通常の幅優先探索になります。正確には均一コスト探索。

最適なヒューリスティックを使用するO(n)場合、ヒューリスティック計算自体の複雑さを無視すると、A*は空間と時間の両方の複雑さになります。ここでもn、ソリューションパスの長さです。

于 2009-11-11T15:38:04.740 に答える
7

ノードBに戻って展開し、次にノードCに戻って展開し、次にノードDに戻ると、指数関数性が作用すると思います。次に、ノードAのすべての子を追跡する必要があります。 B、C、およびD。

バックトラッキングは、次のノードに移動するためのエッジのコストに基づいているため、これは現実的な可能性ですが、最悪の場合です。

各ノードに正確に2つの子があり、各ノードのコストが同じである場合、方程式は2 ^ nになります。ここで、nはこれまでの検索の深さです。

たとえば、ノード0から始めます。0には2つの子00と01があります。00には2つの子000と001があります。深さが4の最悪の場合、方程式は2 ^ 4です。ここで、2はそれぞれの子の数です。ノードにはがあり、4は検索の深さです。

于 2009-11-11T14:27:43.507 に答える
2

私は専門家ではありませんが、ウィキペディアの記事をしばらく勉強しました。私の説明はこれです(よく理解しているといいのですが:)

たとえば、ノードの4x4マトリックスがあります。
A、B、C、Dは、特定の時間(北、南、東、西)に進むことができる方向
です。A*アルゴリズムが検索を開始します。

A
キュー:B、C、D
AA
キュー:B、C、D、AB、AC、AD
AAA->目標
キュー:B、C、D、AB、AC、AD、AAB、AAC、AAD
目標が達成されましたしかし、考慮すべき他の可能性がまだあります。

D
キュー:B、C、AB、AC、AD、AAB、AAC、AAD
DC
キュー:B、C、AB、AC、AD、AAB、AAC、AAD、DA、DB、DD
DCA
キュー:B、C、AB 、AC、AD、AAB、AAC、AAD、DA、DB、DD、DCB、DCC、DCD
DCAB->ゴール
キュー:B、C、AB、AC、AD、AAB、AAC、AAD、DA、DB、DD 、DCB、DCC、DCD、DCAA、DCAC、DCAD
など

ご覧のとおり、実行されるステップごとに、さらに3つのノードがキューに追加されます。
A *は非循環パスのみをたどるので[1]、ルートあたりの最大ステップ数は15です。
この場合の可能なルートの最大数は3 ^ 15、つまりdirections^nodesです。
すべてのルートには15のステップがあるため、最悪の場合のステップは15 * 3^15です。
絶対的な最悪の場合、これまでに取られたすべてのステップは「間違っている」。
その場合、答えを見つける前に3 * 15 * 3^15ノードがキューにあります。
したがって、メモリに保持する必要のあるノードの最悪の場合の量は、使用可能なノードの数の累乗で一定です。言い換えると、メモリ使用量はノード数に対して指数関数的です。

[1] http://www.autonlab.org/tutorials/astar08.pdf、スライド15

于 2009-11-11T15:32:24.703 に答える