匈牙利演算法的個人總結

2021-08-26 12:35:13 字數 850 閱讀 2571

匈牙利演算法:用來解決乙個二分的無向圖的最大匹配問題

例如:n個女生,n個男生,每個每個女生都有自己暗戀的物件,男生只要是女生就可以接受,然後求最多可以湊出多少對情侶。

如圖:女生1暗戀男生2、3。

女生2暗戀男生1。

女生3暗戀男生2

女生一可以跟男生二匹配,匹配成功。

女生二可以跟男生一匹配,匹配成功

輪到女生三去找男生二時發現男生二有伴了,於是男生二讓你女生三等等,問女生

二、一是否還有別的喜歡的人,於是女生一找到了男生三,男生三還是單身,於是女生一跟了男生三,女生三跟了男生二。所有匹配均成功!

#include #include#includeusing namespace std;

int book[1001];//記錄當前男生是否已經被哪個女生選中,單身為0

int used[1001];//每輪匹配中男生只能用一次

int need[1001][1001];//need[i][j]表示女生i對那幾個男生有好感 如果對j有好感那麼need[i][j]=1

int n;

bool find(int i)//尋找女生i的歸宿

} }return false;//沒找到

} int main(int argc, char *argv)

}int all=0;

int i;

for(i=0;i

printf("%d\n",all);

} return 0;

}

匈牙利演算法自主總結

看原理之前我們先來了解 匈牙利概念 在我們理解概念之後,我們知道這是乙個優化時間的演算法 至於原理是什麼我們現在來講 以下由乙隻秀逗提供 首先我們先來放一張男女找伴侶的圖 是不是有種鮮花插在牛糞上的感腳 我們看他們相互的連線,所連的線表示男生對某個女生有好感 那麼我們男生按編號從小到大來找物件 很顯...

匈牙利演算法

匈牙利演算法 edmonds演算法 步聚 1 首先用 標記x中所有的非m頂點,然後交替進行步驟 2 3 2 選取乙個剛標記 用 或在步驟 3 中用 yi 標記 過的x中頂點,例如頂點xi,如果xi與y為同一非匹配邊的兩端點,且在本步驟中y尚未被標記過,則用 xi 去標記y中頂點y。重複步驟 2 直至...

匈牙利演算法

匈牙利演算法用來解決二分圖的最大匹配問題。乙個典型的最大匹配問題的描述如下 乙個公司有n項工作,m個員工。每個員工能勝任n項工作中的幾項 0 n 工作。問題是,如何分配才能使得被處理的工作數最大。當然,如果公司裡人員很多,每項工作都有很多員工可以勝任,那麼使每項工作都有人處理的方案是顯而易見的。但遇...