二分圖思想-趣味-包你學會!

小哼今天和小夥伴們一塊兒去遊樂場玩,終於能夠坐上求之不得的妹子過山車了。
在這裏插入圖片描述
過山車的每一排只有兩個座位,爲了安全起見,(對,必定是這個緣由)每一個女生必須與一個男生坐一排。可是,每一個人都但願與本身認識的人坐在一塊兒。舉個例子吧,11號女生與11號男生互相認識,所以11號女生能夠和11好男生坐在一塊兒。另外11號女生-號男生互相認識,所以他們也能夠坐在一塊兒。像這樣的關係的還有22號女生和22號男生、22號女生和33號男生、33號女生和11號男生。請問如何安排座位才能讓更多的人滿意呢?這僅僅是個例子。實際狀況要複雜得多,由於小哼的小夥伴們實在是太多了。11號女生與11號男生互相認識,所以11號女生能夠和11好男生坐在一塊兒。另外11號女生與22號男生互相認識,所以他們也能夠坐在一塊兒。像這樣的關係的還有22號女生和22號男生、22號女生和33號男生、33號女生和11號男生。請問如何安排座位才能讓更多的人滿意呢?這僅僅是個例子。實際狀況要複雜得多,由於小哼的小夥伴們實在是太多了。在這裏插入圖片描述
首先咱們先將這個問題模型化,如上圖,左邊的頂點是女生,右邊的頂點是男生。若是頂點之間右邊,就表示他們能夠坐在一塊兒,像這樣特殊的圖叫作二分圖(注意二分圖是無向圖哦)。對於上面的例子,咱們很容易找出兩種分配方案,以下。
在這裏插入圖片描述



安全

小插曲-- 二分圖的應用

begin:
在這裏插入圖片描述
end;

spa

很顯然,右邊的分配方案更好。咱們把一種分配方案叫作一種匹配。那麼如今的問題就演變成了求二分圖的最大匹配(匹配對數多)。求最大匹配容易想到的辦法是:找出所有匹配,而後輸出配對數最多的。這種方法的時間複雜度是很是之高的,那還有沒有更好的辦法呢? 咱們能夠這麼想,首先先從左邊的11號女生開始考慮。先讓她與11號男生配對,配對成功後就考慮22號女生與22號男生配對,接下來考慮33號女生。此時咱們發現33號女生只可以跟11號男生配對,但是11號男生已經配對給了11號女生了,怎麼辦?其實咱們可讓33號女生跟11號男生談。讓與11號男生相配對的11號女生一塊兒談,看看一號女生能不可以找到其餘的同伴。若是可以找到,就讓33號女生與11號男生坐在一塊兒,讓11號女生與11號女生相配對的那我的坐在一塊兒,若11號女生找到的其餘的能夠與11號女生配對的人已經有同伴的話就讓他的同伴去找,看看其餘人可否做爲她的同伴,而後以此類推。若第ii名男生找到了同伴,就將答案加11。剛纔的匹配過程就叫作增廣路,不難發現,只要找到了一條增廣路答案就會加11,最後只須要輸出答案便可。
謝謝你們的支持!順手點個贊鴨,嘻嘻!
3d

相關文章
相關標籤/搜索