2012-05-05 15 views
10

[OK]を、私はこのために、運動のこの質問を投稿:グラフ - ダイクストラシングルソース最長パスの

我々は最大最小を変更することにより、シングルソースの最長経路問題を解決するためにダイクストラのアルゴリズムを変更することはできますか?もしそうなら、あなたのアルゴリズムが正しいことを証明してください。そうでない場合は、反例を提示する。この運動やダイクストラ法に関連するすべてのもののために

私はグラフには負の重みが存在しないと仮定します。さもなければ、最短経路問題でさえ、負エッジが存在する場合、Dijkstraは適切に動作することができないのであまり意味がない。


[OK]を、私の直感は私のためにそれに答え:

をはい、私はそれを修正することができると思います。

私だけ

  1. MININT
  2. に初期化距離アレー
  3. 変更distance[w] > distance[v]+weight
distance[w] < distance[v]+weightから

は、その後、私は私の答えを確認するために、いくつかの研究をしました。私はこの記事を見つけました:

Longest path between from a source to certain nodes in a DAG

まず、私は私の答えが原因で上記のポストで間違っていたと思いました。しかし、私は、上記のポストの答えが間違っていることが分かった。 シングルソース最長パス問題最長パス問題が混在しています。

Bellman–Ford algorithmのウィキでは、それが正しく言った:

ベルマン - フォード法は、加重有向グラフにおいて単一始点最短経路を計算します。 負のエッジ重みを持たないグラフでは、Dijkstraのアルゴリズムが高速になると、という問題も解決されます。したがって、Bellman-Fordは主に負のエッジ重みを持つグラフに使用されます。

私の答えは正しいと思いますよね? Dijkstraは実際にになる可能性があります。シングルソース最長パス問題と私の修正も正しいのですか?

+0

@Kristo、どうぞご覧ください。 –

答えて

12

いいえ、私たちはすることはできません - または非常に少なくとも、何の多項式リダクション/変更が知られていません - ダイクストラは多項式時間で実行中longest path problemは、NP-Hardです!

我々は多項式時間で最長経路問題に答えるためにdijsktraするmodficationを見つけることができればそうでない場合、我々は、反例を提供し、P=NP

を導き出すことができます。

これは非常に悪い作業です。カウンターの例では、特定の変更が間違っている場合がありますが、別の変更がOKである可能性があります。
最長パスの問題が多項式時間で解けるかどうかはわかりませんが、一般的な仮定は - そうではありません。


だけ緩和工程を変更に関して:Aから

 A 
    /\ 
     1 2 
    / \ 
    B<--1---C 
edges are (A,B),(A,C),(C,B) 

ダイクストラは、最初にBを選択し、その後Bが到達可能なことはありません - それはdistancesのセット外のため。

最低でも、最小ヒープを最大ヒープに変更する必要がありますが、それが失敗する理由はさまざまです。


(1)恐らく、おそらくP = NPでも可能ですが、それは非常にありそうもありません。

+0

amit、これは私が私の質問で話していたものです。私は最長パスの問題がシングルソースの最長パスの問題とは異なると思います。 「最長経路問題」では、グラフ全体で最も長い単一の経路を見つける必要があります。しかし、上記の私の質問では、 'single sourced'は、頂点Sを与えられ、次にどのパスがSからの最長のパスであるかを調べることを意味します。 –

+1

ああ、私は間違いをしたと思う。シングルソースの最長経路問題を解くことができれば、各頂点に対して単一ソースの最長パスを作成し、それらをすべて比較し、最長のパス問題を解決します。これは最長経路問題がNPであるため不可能である。私は間違っていると思った。 –

+0

DijkstraでMINをMAXに置き換えると、最長のパスの問題を解決できない理由を簡単な言葉で説明できますか? –

5

はい、できます。あなたの答えはほぼ正しいです。一つのことを除いて。

負の重みなしとします。この場合、ダイクストラのアルゴリズムは最長の経路を見つけることができません。

ただし、負の重みがのと仮定すると、最も長いパスを簡単に見つけることができます。正しさを証明するには、すべてのウェイトの絶対値を取るだけで、正のウェイトを持つ通常のダイクストラのアルゴリズムを正確に得ることができます。

+1

あなたの答えはやっていると思います。負の重みだけを仮定すると、最長の経路は「すべての正の重みの中で最短経路」のようになります。私はそれが消費者が求めているものだとは思わない。 –

+0

@JacksonTale、はい、これはただのトリックです。しかし、それが意味することは、物品テキストから明らかではない。それ以外の場合は、amitの答えは非常に良いです。 –

+0

お返事ありがとうございます。私は、消費財が実際に意味するのは、実際の最長経路問題のためだと思います。そのような前提を付け加えるのは悪いです。 –

1

これは有向非循環グラフでは動作しますが、循環グラフでは動作しません。パスはバックトラックとなるので、ダイクストラのアルゴでそれを避ける方法はありません

関連する問題