看原理之前我們先來了解——匈牙利概念
在我們理解概念之後,我們知道這是乙個優化時間的演算法
至於原理是什麼我們現在來講(以下由乙隻秀逗提供)
首先我們先來放一張男女找伴侶的圖
是不是有種鮮花插在牛糞上的感腳
我們看他們相互的連線,所連的線表示男生對某個女生有好感
那麼我們男生按編號從小到大來找物件
很顯然1——>1 2——>2,但是到3號的時候發現跟一號是情敵
那怎麼辦呢?我們假設三號搶的過一號那麼一號女生讓給了三號
還好一號還喜歡二號女生,那麼我們把二號女生給一號
但是之前二號男生喜歡二號女生,那麼只能受委屈
喜歡另乙個目標——三號女生
這樣前三位男生就不再衝突了
就是這種情況(藍線表示兩兩相對關係)
那麼,我們只能恭喜四號男生找到了最漂亮的女生
其實這種找物件方法是乙個遞迴的過程
那麼匈牙利演算法就是這種原理——有條件就上,沒條件就創造條件上
那麼我們來看匈牙利演算法的板子
bool find(int主程式是這樣的x) }
}return
false
;}
for (i=1;i<=n;i++)我們現在就可以做題啦
推薦一道水題——luogu p2071
再次感謝乙隻秀逗提供思路
匈牙利演算法的個人總結
匈牙利演算法 用來解決乙個二分的無向圖的最大匹配問題 例如 n個女生,n個男生,每個每個女生都有自己暗戀的物件,男生只要是女生就可以接受,然後求最多可以湊出多少對情侶。如圖 女生1暗戀男生2 3。女生2暗戀男生1。女生3暗戀男生2 女生一可以跟男生二匹配,匹配成功。女生二可以跟男生一匹配,匹配成功 ...
匈牙利演算法
匈牙利演算法 edmonds演算法 步聚 1 首先用 標記x中所有的非m頂點,然後交替進行步驟 2 3 2 選取乙個剛標記 用 或在步驟 3 中用 yi 標記 過的x中頂點,例如頂點xi,如果xi與y為同一非匹配邊的兩端點,且在本步驟中y尚未被標記過,則用 xi 去標記y中頂點y。重複步驟 2 直至...
匈牙利演算法
匈牙利演算法用來解決二分圖的最大匹配問題。乙個典型的最大匹配問題的描述如下 乙個公司有n項工作,m個員工。每個員工能勝任n項工作中的幾項 0 n 工作。問題是,如何分配才能使得被處理的工作數最大。當然,如果公司裡人員很多,每項工作都有很多員工可以勝任,那麼使每項工作都有人處理的方案是顯而易見的。但遇...