2017-11-26 14 views
0

こんにちは、私はこの質問に苦労しています。Dijkstra'sを使用して重み付き有向グラフで最も重みの低いサイクルを見つける

加重付き有向グラフGで最小ウェイトサイクル(すなわち、グラフのすべてのサイクルのうち、エッジウェイトの合計が最小のもの)を見つけるアルゴリズムを作成します。 V、E)。ランタイムとスペースの複雑さを簡単に正当化します。すべての辺が非負であると仮定する。それはO(| V || E | log | V |)時間で実行する必要があります。 ヒント:Dijkstraのアルゴリズムへの複数の呼び出しを使用します。

私はFloyd-Warshallを使用するソリューションを見たことがありますが、私はDijkstraを使ってこれをどのように行うのかと、時間制約の中でそれをどうやって行うのだろうと思っていました。私は混乱のいくつかのポイント持って

:まず

  • を、どのように私たちも、グラフにあり、どのように それらをチェックするためにどのように多くのサイクルを知っていますか?
  • また、なぜ| E || V | log | V |私の理解では、すべての頂点を通して を走査して、| V | log | V |にする必要があります。

これは私の個人学習用ですので、誰かが使用できる例があれば、大きな助けになります!私は実際に擬似コードを探しているわけではありません。あるノードからすべてのノードまでの最短経路を使ってこの問題を解決する方法を理解する一般的なアルゴリズムです。 ありがとうございました!

答えて

0

各頂点からDijkstraのアルゴリズムを呼び出すと、それ自身が存在する場合、最短経路を見つけることができます。任意の頂点からその頂点までの最短経路は最小の周期です。 ダイクストラのアルゴリズムはO(| E | log | V |)なので、合計時間はO(| V || E | log | V |)です。

グラフにはO(| V |^2)のエッジが存在する可能性があるので、今回はFloyd-Warshallよりも悪いことに注意してください。

関連する問題