最大團
問題描述:團就是最大完全子圖。
給定無向圖G=(V,E)。如果UV,且對任意u,vU 有(u,v) E,則稱U
是G 的完全子圖。
G 的完全子圖U是G的團若且唯若U不包含在G 的更大的完全子圖中,即U就是最大完全子圖。
G 的最大團是指G中所含頂點數最多的團。
例如:
(a) (b) (c) (d)
圖a是一個無向圖,圖b、c、d都是圖a的團,且都是最大團。
求最大團的思路:
首先設最大團為一個空團,往其中加入一個頂點,然後依次考慮每個頂點,查看該頂點加入團之後仍然構成一個團,如果可以,考慮將該頂點加入團或者捨棄兩種情況,如果不行,直接捨棄,然後遞迴判斷下一頂點。對於無串連或者直接捨棄兩種情況,在遞迴前,可採用剪枝策略來避免無效搜尋。
為了判斷當前頂點加入團之後是否仍是一個團,只需要考慮該頂點和團中頂點是否都有串連。
程式中採用了一個比較簡單的剪枝策略,即如果剩餘未考慮的頂點數加上團中頂點數不大於當前解的頂點數,可停止繼續深度搜尋,否則繼續深度遞迴
當搜尋到一個葉結點時,即可停止搜尋,此時更新最優解和最優值。
/***************************************************************************************************************************************/
最小割
割:設Ci為網路N中一些弧的集合,若從N中刪去Ci中的所有弧,即:使得從頂點Vs到頂點Vt的路集為空白集時,稱Ci為Vs和Vt間的一個割。
最小割:若從Ci中任意刪去一條弧,Ci便不再成為Vs和Vt間的割時,稱該割滿足割的最小性或為最小割。
( http://baike.baidu.com/view/10778678.htm )
割就是流網路G=(V,E)的割(S,T)將劃分成S和T=V-S兩部分,使得s∈S,t∈T
也就是原點和匯點在兩個不同的子集中
最小割是指流網路中容量最小的割
最小割=最大流!!!
/********************************************************************************************************************************************/
最小頂點覆蓋Or最小點集覆蓋
在一個二分圖中,找出最少的點,使得這些點能覆蓋所有的邊。
最小頂點覆蓋=最大匹配!!!
最小點權覆蓋
在一個二分圖中(分為x部,y部),選出一些點,使得這些點覆蓋所有的邊,並且選出來的點權值最小(這裡點是帶有權值的!!!)
建立模型:
建立源點s,匯點t,在原二分圖中,若存在邊 u--v 則建邊 s--u 權值為u的點權值,u--v 權值為INF,v--t 權值為v的點權值
最小點權覆蓋 = 最小割 = 最大流!!!
最大點權覆蓋
最大點權覆蓋 = Sum-最小點權覆蓋!!!
/************************************************************************************************************************************************/