二分图匹配——匈牙利算法
匈牙利算法
什么是匈牙利算法
匈牙利算法是一種在多項式時間內求解任務分配問題的組合優化算法,并推動了后來的原始對偶方法。美國數學家哈羅德·庫恩于1955年提出該算法。此算法之所以被稱作匈牙利算法,是因為算法很大一部分是基于以前匈牙利數學家Dénes K?nig和Jen? Egerváry的工作之上創建起來的。 以上均是書上語言,簡單來說匈牙利算法就是用來求解二分圖匹配問題 的;
思路
接下來我們來說一下匈牙利算法的思路,匈牙利算法主要是通過,不斷地尋找增廣路(增廣路徑的定義:設M為二分圖G已匹配邊的集合,若P是圖G中一條連通兩個未匹配頂點的路徑(P的起點在X部,終點在Y部,反之亦可),并且屬M的邊和不屬M的邊(即已匹配和待匹配的邊)在P上交替出現,則稱P為相對于M的一條增廣路徑。 )來求解的,
如圖左側為3個女生,右側為三個男生,連線代表女生對男生有好感可以匹配;
那么我們來為女生匹配男朋友,
本著匹配一對情侶勝造七級浮屠的原則匈牙利算法教你這樣做
========================================================================================
首先我們為一號女生匹配,每次匹配過程中我們都要遍歷一遍所有男生,一號女生對一號男生有好感可以匹配,成功為一號
女生找到男朋友,接下來看二號女生二號女生對一號男生有好感,可以匹配,匹配成~等等,一號男生名草有主了,怎么辦呢?
于是二號女生找到一號女生,“你可以換一個男朋友么?”于是繼續遍歷壹號女生有好感的男生發現一號女生可以和二號男生匹配
(尋找增廣路的過程),那么一號女生和二號男生匹配,二號女生和一號男生匹配成功,接下來看三號女生發現三號女生可以和三號男生匹配,并且三號男生沒有女朋友,匹配成功,至此找男朋友結束。那么最大匹配值為3;
==============================================================================================
這個過程看似很麻煩,實際上就是一個遞歸的過程;
接下來上代碼
原創
總結
以上是生活随笔為你收集整理的二分图匹配——匈牙利算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么退出自适应巡航_买车选配置,自适应巡
- 下一篇: 数据标注的作用及行业现状