わかりました、この演習のためにこの質問を投稿しました:
ダイクストラのアルゴリズムを変更して、最小値を最大値に変更することで、単一ソースの最長パスの問題を解決できますか? もしそうなら、あなたのアルゴリズムが正しいことを証明してください。そうでない場合は、反例を示してください。
この演習またはダイクストラのアルゴリズムに関連するすべてのことについて、グラフに負の重みがないことを前提としています。そうしないと、最短経路問題であっても、負のエッジが存在するとダイクストラが適切に機能しないため、あまり意味がありません。
わかりました、私の直感は私のためにそれに答えました:
はい、変更可能だと思います。
私はちょうど
- 距離配列を MININT に初期化します
distance[w] > distance[v]+weight
に変更distance[w] < distance[v]+weight
次に、答えを確認するためにいくつかの調査を行いました。この投稿を見つけました:
最初に、上記の投稿のために私の答えが間違っていると思いました。しかし、上記の投稿の答えが間違っている可能性があることがわかりました。The Single-Source Longest Path ProblemとThe Longest Path Problem を混同しました。
Bellman–Ford アルゴリズムの wiki にも、次のように正しく書かれています。
Bellman–Ford アルゴリズムは、重み付き有向グラフで単一ソースの最短パスを計算します。非負のエッジの重みのみを持つグラフの場合、より高速なダイクストラのアルゴリズムも問題を解決します。したがって、Bellman–Ford は、主にエッジの重みが負のグラフに使用されます。
だから私の答えは正しいと思いますよね?ダイクストラは本当に単一ソースの最長パス問題である可能性があり、私の修正も正しいでしょうか?