
No.3ベストアンサー
- 回答日時:
辺に重みのあるグラフを考えると, その上の最長経路問題は「辺の重みの正負をすべて入れ替えたグラフでの最短経路問題」になりますよね?
で, 得られたグラフには重みが負の辺もあるのでダイクストラ法は使えないんだけど, 閉路を持たないことは仮定されているのでベルマン・フォードを使えば最短経路 (= 元のグラフにおける最長経路) が分かります.
Tacosanさん、わかりました。
最短経路探索は貪欲法のダイクストラ法しか知らなかったので、失礼しました。
どうもありがとうございます!
No.2
- 回答日時:
ごめん, 間違えた. フローは関係なく, ただの最短経路問題です. うろ覚えで書くと, やっぱりよくないなぁ.
で, #1 のように変換するとダイクストラ法は使えないはずです. というのは, ダイクストラ法は「負の重みの辺が存在しない」ことに依存しているのですが, #1 の変換ではどう考えても負の重みの辺ができてしまいます.
ただし, 今考えているグラフは閉路を持たないことが分かっているので, 最短経路を求めることは可能です. そして, 始点と終点は 1つずつなのでベルマン・フォード (これと混同してた) で最短経路を求めることができます.
Tacosanさん御回答ありがとうございます。
すみません。ちょっと混乱してしまって。
辺の重みを全て負数に置き換えると、質問の条件では、最長経路問題が最短経路問題に置き換えられ、ベルマン・フォード法が有効ということですか?
最大フロー=クリティカルパスなのかと思いましたが、そういう訳では。。
No.1
- 回答日時:
「ノードに重みがある」というのは「そのノードに入る辺に重みがある」ように変形することができます. たとえば, ノードa の重みが 3 なら, ノードa に入るすべての辺の重みを 3 とします. スタートノードが 1個だけなら, 必ずそこを通る関係上その重みは無視することができます. スタートノードが複数あるなら, そのようなすべてのノードへの辺を持つ重み 0 のノードを追加すれば OK.
これで「辺に重みのあるグラフ」に変形できるので, そのすべての辺の重みの符号を逆にして最短経路を求める. フルカーソン・フォードでも使うか. これなら最悪ノード数の 3乗に比例する実行時間.
Tacosanさん御回答ありがとうございます。
>「辺に重みのあるグラフ」に変形できるので, そのすべての辺の重みの符号を逆にして最短経路を求める.
これは、質問の条件内であれば、ダイクストラ法でも求められるということでしょうか?
>フルカーソン・フォードでも使うか.
知らなかったのでググってみました。ありがとうございます。
つまり、自分の質問は、最長経路問題ではなく、最大フロー問題なのですね。
正当性がわからなかったのですが、これでなんとかなりそうです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ルート要素ノードが2個ある場合?
-
昔Winnyってありましたけど、あ...
-
TreeView の初期表示について
-
C# TreeView 効率良いノード追...
-
(VB.NET)TreeViewのノード文...
-
XML文書の指定した属性値を持つ...
-
C#でTreeViewのCheckBoxのサイ...
-
CPUの考え方を教えてください ...
-
複数のマックPCによる数値計算...
-
XML、XSLTの適応エラー(IEから...
-
MSXML で Windows-31J のキャラ...
-
重複するものを消したい
-
XMLパースエラー
-
XMLで要素が記述された順番に意...
-
4バイトを10進数に変換する方法
-
eclipseへのxmlファイル追加
-
Excel(2007以降)をxml形式に変...
-
VBでXMLファイルを作ると xmlns...
-
XSLTの動作
-
xmlの複数条件で検索
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CPUの考え方を教えてください ...
-
ルート要素ノードが2個ある場合?
-
SNMP リンクダウンとノードダ...
-
C#でTreeViewのCheckBoxのサイ...
-
昔Winnyってありましたけど、あ...
-
ノードとは
-
同じタグ名の項目取得
-
TreeViewに重複する値をセット
-
TreeViewのNodeについて
-
ツリービューを閉じさせたくない。
-
最長経路探索
-
2分探索木の高さを求めるプロ...
-
各ノードの行数取得
-
4色定理はなぜグラフ理論で証...
-
C# TreeView 効率良いノード追...
-
複数のマックPCによる数値計算...
-
プログラミングC言語について次...
-
C言語:文字列の並び替え
-
CTreeCtrlで、あるノード以下だ...
-
SNMP ステータスポーリングと...
おすすめ情報