web-dev-qa-db-ja.com

均一コスト検索とダイクストラのアルゴリズムの違いは何ですか?

均一コスト検索Dijkstraのアルゴリズムの違いは何だろうと思っていました。それらは同じアルゴリズムのようです。

57
Grief Coder

おそらくよりよく知られているダイクストラのアルゴリズムは、目標状態がなく、すべてのノードが優先度キューから削除されるまで、つまりすべてのノードへの最短パスまで処理が継続する、均一コスト検索の変形とみなすことができます単なる目標ノードではありません)

http://en.wikipedia.org/wiki/Uniform-cost_search#Relationship_to_other_algorithms

40
NotAUser

ダイクストラのアルゴリズムは、グラフ内でルートから他のすべてのノードへの最短経路を検索しますが、均一コスト検索では目標ノードまでのコストの最短経路を検索します。

また、均一コストではスペース要件が少なくなりますが、優先キューは、無限コストで開始時にすべてのノードをキューに追加するダイクストラとは対照的に「怠lazに」満たされます。

24
RobertoR

NotAUser、dreaMone、Bruno Calzaによる他の回答の編集

ダイクストラのアルゴリズムは、ルートノードから他のすべてのノードへの最短パスを見つけます。ルートノードから目標ノードまでのコストの観点から最短パスの均一コスト検索。均一コスト検索は、すべてのポイントへの最短パスではなく、単一のフィニッシングポイントへの単一の最短パスを見つけることに焦点を当てたダイクストラのアルゴリズムです。

UCSは、フィニッシュポイントが見つかるとすぐに停止することでこれを行います。ダイクストラの場合、目標の状態はなく、すべてのノードが優先度キューから削除されるまで、つまり、目標ノードだけでなくすべてのノードへの最短パスが決定されるまで処理が続行されます。

UCSのスペース要件は少なく、優先コストは無限コストで開始時にすべてのノードをキューに追加するダイクストラとは対照的に、徐々に満たされます。

上記の点の結果として、ダイクストラはUCSよりも時間がかかります

UCSは通常木で定式化され、ダイクストラは一般的なグラフで使用されます

Djikstraは、グラフ全体が入力として与えられる明示的なグラフでのみ適用できます。 UCSはソース頂点から始まり、グラフの必要な部分を徐々に横断します。したがって、明示的なグラフと暗黙的なグラフ(状態/ノードが生成される)の両方に適用できます。

15
VineetNayak28

両方の類似点と相違点について説明する論文があります。

http://www.aaai.org/ocs/index.php/SOCS/SOCS11/paper/view/4017/4357

3
Bruno Calza