最佳完美匹配即權值和最大的完美匹配,這里運用到KM算法。 引進兩個概念: 1、可行頂標,為一個節點函數l,使任意邊(u,v)均滿足l(u)+l(v)>=w(u,v); 2、相等子圖,為原圖的一個生成子圖,包含所有點以及滿足l(u)+l(v)=w(u,v)的邊。 定理:如相等子圖G’有完美匹配,則該匹配即為所求。 證明:G’的權值和為所有頂點的頂標和Sum,而此時原圖G任意一個完美匹配的權值和均<=Sum。 算法流程: 1.構造一個可行頂標(一般可令lx(u)為與u相連的邊的最大權值,ly(v)=0); 2.搜索尋找增廣路,如找到換下一個節點,否則轉3; 3.設X為搜索中左邊已訪問的點,Y為右邊已訪問的點,令路M(搜索失敗)上所有邊,在X中的頂標減去d,在Y中的頂標加上d, d為min{l(x)+l(y)-w(x,y)},x屬于X,y不屬于Y。下面說明一下為什么這樣選取d: 如果比d小不能保證有新邊加入,而大于d會頂標變得不可行,破壞性質。
4.調整后l繼續執行2;
時間O(n^4)如果加一個小優化,在計算d時用一個數組slack[v](v不屬于Y)來維護與v相連的邊min{lx(u)+ly(v)-w(u,v)}可降下一個n。 來道板子POJ3565

為什么上面的A了,下面的WA?(窩調了一天QAQ)
新聞熱點
疑難解答