二部グラフの最大独立セット


19

私はバイパライトグラフの最大独立セットを見つけようとしています。

「1998年5月13日-ワシントン大学-CSE 521-ネットワークフローのアプリケーション」というメモで次のことがわかりました。

問題:

二部グラフ与えられると、可能な限り大きな独立集合を見つけます。ここで、およびです。セットの要素間にのエッジがない場合、セットは独立しています。G=(U,V,E)UVUUVVE

解決:

頂点フローグラフを作成します。各エッジには、から までの無限の容量エッジがあります。各には、からまで単位容量エッジがあり、各には、から までの単位容量エッジがあります。UV{s,t}(u,v)EuvuUsuvVvt

有限容量カット検索と、と。レッツ と。セットは、カットを横切る無限の容量のエッジがないため、独立しています。カットのサイズは。これは、独立セットを可能な限り大きくするために、カットを可能な限り小さくします。(S,T)sStTU=USV=VTUV|UU|+|VV|=|U|+|V||UV|

これをグラフとして考えてみましょう。

A - B - C
    |
D - E - F

これを次のように2部グラフに分割できます (U,V)=({A,C,E},{B,D,F})

ブルートフォース検索により、唯一の最大独立セットがことがわかります。上記の解決策を試してみましょう:A,C,D,F

したがって、構築されたフローネットワークの隣接行列は次のようになります。

stABCDEFs00101010t00010101A1000000B01000C1000000D0100000E10000F0100000

ここで私が立ち往生している、私が見る最小の有限容量カットは些細なものです:容量は3です。(S,T)=({s},{t,A,B,C,D,E,F})

このカットを使用すると、次の誤ったソリューションにつながります。

U=US={}
V=VT={B,D,F}
UV={B,D,F}

を期待していましたか?誰かが私の推論/作業で間違っている場所を見つけることができますか?UV={A,C,D,F}


(S、T)=({s、A、B、C}、{t、D、E、F})は容量2

1
@Brianカット全体でBからEまでの無限の容量エッジがあるため、無限の容量です。
アンドリュートマゾス

ブルートフォースソリューションに基づいてこれを正しく理解する場合、SにAとCが含まれ、TにDとFが含まれるカットが必要です。これにより、カットは{s、A、C}、{t、D、F}になります。 。さて、どのようにカットを構築しますか?
-njzk2

また、これは、エッジに1つの容量があるFord-Fulkersonのように見えます。
njzk2

ハンガリー語のアルゴリズムを調べてください。
パトリックヴェルロス

回答:


14

最大の独立セットの補完は、最小の頂点カバーです。

2部グラフで最小の頂点カバーを見つけるには、ケーニッヒの定理を参照してください。


2
これは(おそらく)問題を解決しますが、質問には答えません。
ラファエル

2
@Raphael:「たぶん」という言葉を削除すると同意します。:)
ユッカスオメラ

1
ああ、私はそれが問題を解決すると確信していますがそれがアンドリューが彼の問題を解決するのに役立つかどうかわかりません。
ラファエル

3
HopcroftKarp->最大マッチング-> Konigs Thereom->最小頂点カバー->補数->最大独立セット。私の質問で説明されているフローメソッドが機能しないように思われる理由をまだ知りたいです。
アンドリュートマゾス

5

反例で示すように、与えられた解決策は明らかに間違っています。グラフU + Vは、無限容量のエッジによって接続されたコンポーネントであることに注意してください。したがって、すべての有効なカットには、A、B、C、D、E、Fのすべてを同じ側に含める必要があります。

ソリューションがどこから来たのを さかのぼってみると、http: //www.cs.washington.edu/education/courses/cse521/01sp/flownotes.pdfは、Ahuja、Magnanti、Orlinによる問題のいくつかについてNetwork Flowsを引用しています。この本は著作権が切れており、http://archive.org/details/networkflows00ahujからダウンロードできますが、この問題と解決策は含まれていないようです(「二部」の出現をすべて検索)。

ソリューションの説明段落では、作成するグラフの最小カットが最大独立セットに対応することを示していないことに注意してください。独立したセットを取得する方法のみを示しています。

それでも、アルゴリズムが何をしようとしているかを確認できます。以下は、s、tカットに関して実際の最大独立セットが対応するものです。

グラフ

アルゴリズムを破る無限容量のエッジが強調されます。

アルゴリズムを意図したものに修正する方法がわかりません。無限のエッジのコストは、逆方向に進むとゼロになるはずです(つまり、SからTに行くが、t側からs側に交差する場合)。しかし、この非線形性で最小カット/最大フローを見つけるのはまだ簡単ですか?また、@ Jukka Suomelaのソリューションから質問のアルゴリズムへの橋渡しの方法を考えると、最大マッチングから最小頂点カバーまで行くのが難しいです:最大マッチングを見つけることはmax-flowによって行うことができます-likeアルゴリズム、flow-likeアルゴリズムを使用して最小頂点カバーをどのように回復しますか?ここで説明したよう、最大一致が見つかった後、UとVの間のエッジは、最小の頂点カバーを見つけるようになります。したがって、これも、min-cut / max-flowの単純なアプリケーションがこの問題を解決するのに必要なすべてであることを示していません。


2

STS


1
私はあなたに同意しますが、フローアルゴリズムの完全な正当性の証明、アルゴリズムがOPの例にどのように適用されるかなど、詳細を追加してください。
xskxzr

このメモには、正確さの短い証拠があります。cs.washington.edu/education/courses/cse521/01sp/flownotes.pdf たとえば、上記のEvgeni Sergeevの図を見ると、エッジはすべて下向きになっているはずです。次に、Sの外にある2つのエッジは(s、e)と(b、t)のみで、太字の赤いエッジはSに入り、カット値にカウントされません。
yu25x

0

カットは、容量ではなく、実際のフローで行う必要があります。sからのフローは有限であるため、{S、T}カットは有限になります。残りは上記で説明されています。


1
本気ですか?通常、カットは容量に基づいて行われますが、いずれにしても、最小カットが有限であることはすでにわかっているため、無限にカットしても問題にならないようです。
デビッドリチャービー16

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.