匈牙利演算法自主總結

2022-04-10 03:57:19 字數 898 閱讀 3085

看原理之前我們先來了解——匈牙利概念

在我們理解概念之後,我們知道這是乙個優化時間的演算法

至於原理是什麼我們現在來講(以下由乙隻秀逗提供)

首先我們先來放一張男女找伴侶的圖

是不是有種鮮花插在牛糞上的感腳

我們看他們相互的連線,所連的線表示男生對某個女生有好感

那麼我們男生按編號從小到大來找物件

很顯然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 工作。問題是,如何分配才能使得被處理的工作數最大。當然,如果公司裡人員很多,每項工作都有很多員工可以勝任,那麼使每項工作都有人處理的方案是顯而易見的。但遇...