2012-10-19 8 views
6

私の質問は次のとおりです。異なるソースによると、ダイクストラのアルゴリズムは、ユニフォームコスト検索の変形です。 Dijkstraのアルゴリズムは、ソースとすべての宛先(単一ソース)との間の最短経路を見つけることがわかります。しかし、私たちはいつでも、DIjkstraを変更して、STARTとGOALの間の最短経路を見つけることができます(目標が優先キューからポップされたとき、単に停止します)。そうすることで、最悪の場合のシナリオは、STARTから他のすべてのノードまでの最短経路を見つけることになります(目標がグラフの最も遠いノードだとします)。ダイクストラのアルゴリズム対ユニフォームコストの検索(時間の複雑性)

最小プライオリティヒープを使用してDijkstraのアルゴリズムを実装すると、実行時間は O(Vlog V + E)になります.Eはエッジ数、Vは頂点数です。

均一コスト検索はDijkstraと同じです(少し異なる実装)ので、UCSの実行時間はDijkstraと似ていますか?しかし、私のAIクラスによると、Uniform Cost Searchは最悪のケースで指数関数的であり、O(b 1 + [C * /ε])です。ここで、C *は最適解のコストです。 (bは分岐係数)

実行時間が異なるアルゴリズムはどちらも同じですか?ランニングタイムは同じですが、見た目は違っていますか?

私はあなたの助けをいただければ幸いです:) :)

答えて

3

ありがとうは、同じ実行している時間ですが、我々はそれを見る方法が違うのですか?

はい。 Dijkstraのオリジナルのアルゴリズムが決して終了しない無限大のグラフでは、統一コスト検索を使用できます。このような状況では、VEの両方で無限となる可能性があり、その結果得られる大きな数字は意味がないため、複雑さを定義することは無意味です。

+1

有限のグラフ(たぶん大きなveeeeery、しかしまだfinite)に固執しましょう。両方のアルゴリズムが同じ実行時間を持つことをどのように証明できますか? – John

+1

@ジョン:どちらかのアルゴリズムの擬似コードをもう一方のものが見つかるまで書き換えます。 Dijkstraは通常メモリ内に完全に格納された有限グラフに対して提示されるが、UCSはエッジ生成関数として表現される可能性のある無限グラフに対してUCSが使用されるため、扱いにくい可能性がある。 –

+1

私はあなたが言ったことに同意しますが、私の場合、ここで私が証明したいことは同意します。都市の地図(グラフ)を与えて、両方のアルゴリズムが同じ時間複雑さを持っていることを証明して、 – John

関連する問題