最佳匹配KM(kuhn-Munkres)算法

給定一個二分圖GMG邊集的一個子集,如果M滿足當中的任意兩條邊都不依附於同一個頂點,則稱M是一個匹配。

  極大匹配(Maximal Matching)是指在當前已完成的匹配下,無法再通過增加未完成匹配的邊的方式來增加匹配的邊數。最大匹配(maximum matching)是所有極大匹配當中邊數最大的一個匹配。選擇這樣的邊數最大的子集稱爲圖的最大匹配問題。

  如果一個匹配中,圖中的每個頂點都和圖中某條邊相關聯,則稱此匹配爲完全匹配,也稱作完備匹配。完美匹配:如果所有點都在匹配邊上,稱這個最大匹配是完美匹配。

求二分圖最大匹配可以用最大流(Maximal Flow)或者匈牙利算法(Hungarian Algorithm)

如果G爲加權二分圖,則權值和最大的完備匹配稱爲最佳匹配,求一個二分圖的最佳匹配的普遍算法是KM(Kuhn-Munkres)算法。

  KM算法的基本思想是,把權值轉化爲可行頂標,再用匈牙利算法求出一組完備匹配,如果無法求出完備匹配,則修改可行頂標,直至找到完備匹配爲止,這時的完備匹配爲最佳匹配。

  KuhnMunkras算法流程:

  (1)初始化可行頂標的值

  (2)用匈牙利算法尋找完備匹配

  (3)若未找到完備匹配則修改可行頂標的值

  (4)重複(2)(3)直到找到相等子圖的完備匹配爲止

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章