2017-04-13 21 views
1

「DijkstraのアルゴリズムはDirected Acyclic Graphsでのみ動作する」と書かれています。Dijkstraのアルゴリズムとサイクル

このアルゴリズムは、負のサイクルがない限り、サイクルのグラフでも機能します。あれは正しいですか?

編集1: 本「Grokking Algorithms」 - Aditya Bhargava。 第7章Page 122

+1

は...あなたの引用します偽です。 –

+2

私は聞くかもしれないが、どの本?あなたがそのような見積もりを見つけるためにどこで詳細を提供できるかは素晴らしいでしょう。 – maxik

答えて

4

実際には、すべてのエッジ重みが負でない限り動作します。これは、「負のサイクルなし」としてのより強い条件である。一方、負の重みを持つDAGでは動作しません。だから、あなたが正しく引用されていれば、本の声明は2つの理由から間違っています。

Btw。負のサイクルがある場合は、無限回繰り返す可能性があるため、最短の経路がなくなり、コストは下がります。

+0

ありがとうございます@Henry – sam

4

私はGrokkingアルゴリズムの著者です。このエラーで申し訳ありません.Dijkstraのアルゴリズムは、正のウェイトサイクルである限り、サイクルでグラフ上でを処理しますか?このエラーを反映するようにerrata pageを更新しました。ダイクストラは負の重みサイクルでは動作しません。また、ここに理由を説明する画像です:あなたはそれを巡回グラフのために働くのコースの「最短経路アルゴリズム」を参照している場合は

dijkstra's algorithm with a negative weight cycle

関連する問題