st有向グラフで、多くの小さなカットを見つける方法は?


7

最大流量の問題を解決すると、1つの適格な最小カットが得られます。しかし、私はいくつか(おそらく数百)の小さなカットを候補として求めています。カットは、重量が小さい限り、最小カットである必要はありません。それ、どうやったら出来るの?


軽量とは何ですか?カット数は、定数nn2ですか?
utdiscant

1
簡単にするために、すべてのエッジの重みは1であり、小さいということは、「カットのエッジの数が少なく、たとえば10未満である」ことを意味します。例えば、nカットくらい欲しいです。または数百のうち、設計を容易にする方。ありがとう。
ステフ2012年

@steph:単位重量の場合、問題はおそらく概念的に単純なものに崩壊することに注意してください。そのため、一般的なケースでは解決策が役に立たない可能性があります。
ラファエル

回答:


3

Kargerのアルゴリズムとしても知られているランダム化された縮小アルゴリズムに精通していますか?このアルゴリズムは基本的に、ランダムに均一にエッジを選択し、セルフループを削除してエッジを縮小することで機能します。2つのノードが残っている場合、プロセスは停止し、2つのノードはカットを表します。成功の確率を高めるために、ランダム化されたアルゴリズムが数回実行されます。実行中に、これまでに見つかった最小のカットを追跡します。

私が今提案するのは、ランダム化された縮小アルゴリズムを数回実行することです。アルゴリズムがカットを出力するたびに、カットが十分に小さいかどうかを確認して、カットを保持するかどうかを決定します。当然のことながら、これらの十分に小さいカットを十分に作成したら、停止できます。入力のサイズによっては、これは実際にはかなりうまくいく場合もあります。


ランダム化の代わりに深さ優先検索を実行することにより、これを使用してすべての最小カットを取得することもできます。あるいは、すべての反復で新しいカットを見つける機会を増やすこともできます。
ラファエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.