匈牙利算法簡述 - 知乎

二分圖:假設G是一個由頂點集合V和邊集合E構成的無向圖,其中V分爲互不相交的A和B,而且E中任何一條邊對應的頂點分別屬於A和B。blog

連通:兩個頂點之間有邊,則二者是連通的。class

匹配邊和匹配點:選擇一條邊,限定該邊跟以前選擇的邊沒有公共節點,這條邊是一個匹配邊,對應的頂點就是匹配點;顯然,一個頂點也只能匹配一次。im

匹配:若干條匹配邊組成一個匹配;顯然一個匹配就是圖G的一個子集。img

最大匹配:一個圖全部的匹配中匹配邊數最大的匹配。集合

完美匹配:圖G中全部的頂點都是匹配點。di

增廣路:從一個未匹配點做爲起點出發,依次走非匹配邊、匹配邊、非匹配邊、匹配邊、非匹配邊……最後或者中間任何一個未匹配點能夠做爲終點,從起點到終點的路叫增廣路。co

增廣路有個特色,就是非匹配邊比匹配邊多一條。所以,任何一個狀態,只要能找到增廣路,交換匹配邊和非匹配邊的身份,變成新的匹配,就比原來的匹配多一條匹配邊。如此迭代,便可找到最大匹配。ps

1、A1嘗試匹配B1,成功

2、A2嘗試匹配B2,成功

3、A3嘗試匹配B1,發現B1已經被佔用,則B1嘗試取消跟A1匹配,而後A1嘗試跟B2匹配,發現B2被佔用,則B2嘗試取消跟A2匹配,A2嘗試跟B3匹配,則原來的A1和B2的嘗試以及A3跟B1的嘗試都成功了。能夠看到,該步驟以前的狀態,從A3->B1->A1->B2->A2->B3,就是一條增廣路,改進匹配,就是將原來匹配邊和非匹配邊交換了身份。

4、繼續再也找不到。

男女匹配的例子:

正常狀況下,男孩和女孩是二分圖中的頂點,一條邊表示某個男孩和某個女孩存在潛在戀愛關係,沒有邊的表明不可能會戀愛。規定一我的不能尋找多我的戀愛,若是某個男孩和某個女孩戀愛了二者就是匹配點,之間的邊叫匹配邊。因此問題是,在規定的潛在戀愛關係圖中,如何分配使得儘量多的情侶。

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息