ここに私が解決しようとしている過去の試験からの質問があります:
無向グラフの 正の重みを有するW (E )≥ 0、Iは、最小カットを発見しようとしています。max-flow min-cut定理を使用する以外に、それを行う他の方法は知りません。しかし、グラフは無向であるため、どのように指示すればよいですか?両端にエッジを向けることを考えましたが、どの頂点がソースになり、どの頂点がシンクになりますか?または、最小カットを見つける別の方法はありますか?
ここに私が解決しようとしている過去の試験からの質問があります:
無向グラフの 正の重みを有するW (E )≥ 0、Iは、最小カットを発見しようとしています。max-flow min-cut定理を使用する以外に、それを行う他の方法は知りません。しかし、グラフは無向であるため、どのように指示すればよいですか?両端にエッジを向けることを考えましたが、どの頂点がソースになり、どの頂点がシンクになりますか?または、最小カットを見つける別の方法はありますか?
回答:
無向グラフの最小カットを見つけるためのアルゴリズムはたくさんあります。Kargerのアルゴリズムは、シンプルでありながら効果的なランダム化アルゴリズムです。
要するに、アルゴリズムはエッジを一様にランダムに選択し、自己ループを削除してそれらを縮小することで機能します。2つのノードが残っている場合、プロセスは停止し、2つのノードはカットを表します。成功の確率を高めるために、ランダム化アルゴリズムが数回実行されます。実行中に、これまでに見つかった最小カットを追跡します。
詳細については、Wikipediaのエントリを参照してください。おそらくより良い紹介については、Michael MitzenmacherとEli Upfalによる確率とコンピューティング:ランダム化アルゴリズムと確率分析の最初の章をご覧ください。
すべての無向エッジ、2つの有向エッジ(u 、v 、w e i g h t )および(v 、u 、w e i g h t )を作成します。
...しかし、どの頂点がソースになり、どの頂点がシンクになりますか?
関係ありません。
Ford-Fulkersonアルゴリズムが動作するはずです。2つの偽の頂点を作成できます。ソースとシンク。
Edmonds-Karpアルゴリズムもご覧ください。次の2つのバリエーションがあります。
、任意のパスを選択するFord-Fulkersonとは対照的。
これは良いリソースです。