Stoer Wagner演算法(全域性最小割)

2021-10-01 05:16:37 字數 954 閱讀 5840

題解:全域性最小割stoer-wagner演算法

附上**:

關於證明:

**的證明寫得非常詳細,在此不再贅述

關於時間複雜度

最大鄰接搜尋是來求任意非固定兩點的最小割,做完一次最大鄰接搜尋之後還要縮點重做,直到全圖只剩乙個點

所以使用堆優化的複雜度大概是o(n^2logn)

關於實現

初寫stoer-wagner的時候會覺得比較麻煩,在此提供乙個簡單易懂的o(n^3)寫法:

#include#include#includeusing namespace std;

#define n 605

const int inf=0x3f3f3f3f;

int cap[n][n];

int dis[n];bool vis[n],del[n];

int main()

int ans=inf;

for(i=1;idis[pos]||!pos))

pos=k;

vis[pos]=1;

for(k=1;k<=n;k++)

if(!del[k]&&!vis[k])

dis[k]+=cap[pos][k];

} ans=min(dis[pos],ans);

del[pre]=1;

for(j=1;j<=n;j++)

} printf("%d",ans);

}

全域性最小割Stoer Wagner演算法

借鑑 提到無向圖的最小割問題,首先想到的就是ford fulkerson演算法解s t最小割,通過edmonds karp實現可以在o nm2 時間內解決這個問題 n 為圖中的頂點數,m 為圖中的邊數 但是全域性最小割和s t最小割不同,並沒有給定的指定的源點s和匯點t,如果通過ford fulke...

最小割(Stoer Wagner演算法)

簡介 割 在乙個圖g v,e 中v是點集,e是邊集。在e中去掉乙個邊集c使得g v,e c 不連通,c就是圖g v,e 的乙個割 最小割 在g v,e 的所有割中,邊權總和最小的割就是最小割。例題 minimum cut 描述 n個頂點。下面是m行,a,b,c,這意味著有c個邊連線頂點a和b。inc...

Stoer Wagner演算法(最小割集)

演算法步驟 設最小割cut inf,任選乙個點s到集合a中,定義w a,p 為a中的所有點到a外一點p的權總和.對剛才選定的s,更新w a,p 該值遞增 選出a外一點p,且w a,p 最大的作為新的s,若a g v 則繼續2.把最後進入a的兩點記為s和t,用w a,t 更新cut.合併st,即新建頂...