全局最小割StoerWagner算法詳解


前言

StoerWagner算法是一個找出無向圖全局最小割的算法,本文需要讀者有一定的圖論基礎。
本文大部分內容與詞匯來自參考文獻(英文,需科學上網),用興趣的可以去讀一下文獻。


概念

  • 無向圖的割:有無向圖\(G=(V,E)\),設\(C\)為圖\(G\)中一些弧的集合,若從\(G\)中刪去\(C\)中的所有弧能使圖\(G\)不是連通圖,稱\(C\)\(G\)的一個割。
  • \(S-T\):使得頂點\(S\)與頂點\(T\)不再連通的割,稱為\(S-T\)
  • \(S-T\)最小割:包含的弧的權和最小的\(S-T\)割,稱為\(S-T\)最小割。
  • 全局最小割:包含的弧的權和最小的割,稱為全局最小割。
  • 誘導割(induced cut):令圖\(G=(V, E)\)的一個割為\(C\),則割\(C\)在圖\(G\)的子圖\(G'=(V',E')\)中的部分稱為割\(C\)的誘導割。(類似於概念誘導子圖(induced subgraph)

算法流程

大致流程
step1:在圖\(G\)中找出任意\(s-t\)最小割cut-of-the-phase
step2:合並\(s\)\(t\),重復執行step1直到圖G只剩下一個頂點
step3:輸出最小的cut-of-the-phase為最終結果

偽代碼:

def MinimumCutPhase(G, w, a):
    A ← {a}
    while A ≠ V:
        把與A聯系最緊密(most tightly)的頂點加入A中
    cut-of-the-phase ← w(A \ t, t)
    合並最后兩個加入到A的頂點s、t
    return cut-of-the-phase

def StoerWagner(G, w, a):
    while |V| > 1
        MinimumCutPhase(G, w, a)
        根據返回值更新最小割

其中:

  • \(w\)為邊權函數,\(w(e)\)為邊\(e\)的權值大小
  • \(w(A, v)\)為頂點\(v\)到集合\(A\)的所有邊權和
  • \(x\)\(A\)聯系最緊密(most tightly)當且僅當\(x \notin A\)\(w(A,x) = max\{w(A, y) | y \notin A\}\)
  • \(a\)可以取任意頂點作為算法的初始頂點

證明

首先,算法基於這樣一個事實:

兩個頂點s、t,要么在全局最小割的同一個集合中,要么在不同的集合中

那么結果便只可能在是\(s-t\)最小割,或者合並\(s\)\(t\)的新圖的全局最小割。
然后問題就在於如何尋找任意的\(s-t\)最小割。現在來證明MinimumCutPhase找出來的\(s-t\)cut-of-the-phase為什么是最小的。

定理:每個階段割(cut-of-the-phase)是當前圖的\(s-t\)最小割,\(s\)\(t\)是當前階段最后加入的結點。

證明:
以加入集合\(A\)的順序組成一個序列,以\(a\)為開始,以\(s\)\(t\)結束。然后來證明對於任意\(s-t\)\(C\)均不小於階段割(cut-of-the-phase)
我們稱結點\(v\)(\(v \neq a\))是活躍的(active)\(v\)\(v\)的前一個結點分立於C的兩邊。令\(w(C)\)為割C的大小,\(A_v\)為所有在\(v\)前面的頂點(不包括\(v\)),\(C_v\)\(A_v \bigcup \{v\}\)\(C\)割,\(w(C_v)\)為誘導割\(C_v\)的大小。
那么,對於所有活躍的頂點v,有

\[w(A_v,v) \leq w(C_v) \cdots \cdots (1) \]

歸納證明:
對於第一個活躍頂點\(v_0\),該不等式以等號成立。這是由於\(v_0\)前面的點都非活躍點,那么它們都在割C的同一側,另一側為\(v_0\),顯然有\(w(A_{v_0},v_0) = w(C_{v_0})\)
假設對於活躍頂點\(v\)\(v\)滿足不等式。令\(u\)\(v\)的下一個活躍頂點,那么我們令:

\[w(A_u,u)=w(A_v,u)+w(A_u \setminus A_v,u)=:\alpha \]

由於\(v\)加入\(A\)\(u\)早,所以有\(w(A_v,u) \leq w(A_v,v)\)。又因\(v\)滿足不等式,所以有

\[w(A_v,u) \leq w(A_v,v) \leq w(C_v) \]

由於所有 \(A_u \setminus A_v\)\(u\)之間的邊均跨過割\(C_u\),且不是\(C_v\)的一部分,於是有

\[w(C_v)+w(A_u \setminus A_v,u) \leq w(C_u) \]

聯立上式,得到:

\[\alpha \leq w(C_v)+w(A_u \setminus A_v,u) \leq w(C_u) \]

於是對於任意活躍頂點,均滿足不等式\((1)\)
由於\(t\)總是活躍頂點(\(s-t\)割導致\(s\)\(t\)總被割開),則\(t\)總是滿足不等式\(w(A_t,t) \leq w(C_t)\),即任意割小於等於\(w(A_t,t)\)。又因為\(w(A_t,t)\)為單獨割掉頂點\(t\)的大小(鏈接\(t\)的所有邊權和),所以有\(w(A_t,t)\)\(s-t\)最小割。證得MinimumCutPhase找出來的\(s-t\)割是\(s-t\)最小割。


例題

HDU 3691 Nubulsa Expo(全局最小割Stoer-Wagner算法)
HDU 6081 度度熊的王國戰略(全局最小割Stoer-Wagner算法)


參考文獻

stoerwagner-mincut.[Stoer-Wagner,Prim,連通性,無向圖,最小邊割集]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM