青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

A Za, A Za, Fighting...

堅信:勤能補拙

[zz] 二分圖匹配的匈牙利算法

二分圖指的是這樣一種圖:其所有的頂點分成兩個集合M和N,其中M或N中任意兩個在同一集合中的點都不相連。二分圖匹配是指求出一組邊,其中的頂點分別在兩個集合中,并且任意兩條邊都沒有相同的頂點,這組邊叫做二分圖的匹配,而所能得到的最大的邊的個數(shù),叫做最大匹配。

匈牙利算法。這個算法說白了就是最大流的算法,但是它跟據(jù)二分圖匹配這個問題的特點,把最大流算法做了簡化,提高了效率。匈牙利算法其實很簡單,但是網(wǎng)上搜不到什么說得清楚的文章。所以我決定要寫一下。
最大流算法的核心問題就是找增廣路徑(augment path)。匈牙利算法也不例外,它的基本模式就是:

初始時最大匹配為空
while 找得到增廣路徑
    do 把增廣路徑加入到最大匹配中去

可見和最大流算法是一樣的。但是這里的增廣路徑就有它一定的特殊性,下面我來分析一下。
(注:匈牙利算法雖然根本上是最大流算法,但是它不需要建網(wǎng)絡(luò)模型,所以圖中不再需要源點和匯點,僅僅是一個二分圖。每條邊也不需要有方向。)

圖1 圖2


圖1是我給出的二分圖中的一個匹配:〔1,5〕和〔2,6〕。圖2就是在這個匹配的基礎(chǔ)上找到的一條增廣路徑:3->6->2->5->1->4。我們借由它來描述一下二分圖中的增廣路徑的性質(zhì):

(1)有奇數(shù)條邊。
(2)起點在二分圖的左半邊,終點在右半邊。
(3)路徑上的點一定是一個在左半邊,一個在右半邊,交替出現(xiàn)。(其實二分圖的性質(zhì)就決定了這一點,因為二分圖同一邊的點之間沒有邊相連,不要忘記哦。)
(4)整條路徑上沒有重復(fù)的點。
(5)起點和終點都是目前還沒有配對的點,而其它所有點都是已經(jīng)配好對的。(如圖1、圖2所示,〔1,5〕和〔2,6〕在圖1中是兩對已經(jīng)配好對的點;而起點3和終點4目前還沒有與其它點配對。)
(6)路徑上的所有第奇數(shù)條邊都不在原匹配中,所有第偶數(shù)條邊都出現(xiàn)在原匹配中。(如圖1、圖2所示,原有的匹配是〔1,5〕和〔2,6〕,這兩條配匹的邊在圖2給出的增廣路徑中分邊是第2和第4條邊。而增廣路徑的第1、3、5條邊都沒有出現(xiàn)在圖1給出的匹配中。)
(7)最后,也是最重要的一條,把增廣路徑上的所有第奇數(shù)條邊加入到原匹配中去,并把增廣路徑中的所有第偶數(shù)條邊從原匹配中刪除(這個操作稱為增廣路徑的取反),則新的匹配數(shù)就比原匹配數(shù)增加了1個。(如圖2所示,新的匹配就是所有藍(lán)色的邊,而所有紅色的邊則從原匹配中刪除。則新的匹配數(shù)為3。)

不難想通,在最初始時,還沒有任何匹配時,圖1中的兩條灰色的邊本身也是增廣路徑。因此在這張二分圖中尋找最大配匹的過程可能如下:

(1)找到增廣路徑1->5,把它取反,則匹配數(shù)增加到1。
(2)找到增廣路徑2->6,把它取反,則匹配數(shù)增加到2。
(3)找到增廣路徑3->6->2->5->1->4,把它取反,則匹配數(shù)增加到3。
(4)再也找不到增廣路徑,結(jié)束。

當(dāng)然,這只是一種可能的流程。也可能有別的找增廣路徑的順序,或者找到不同的增廣路徑,最終的匹配方案也可能不一樣。但是最大匹配數(shù)一定都是相同的。

對于增廣路徑還可以用一個遞歸的方法來描述。這個描述不一定最準(zhǔn)確,但是它揭示了尋找增廣路徑的一般方法:
“從點A出發(fā)的增廣路徑”一定首先連向一個在原匹配中沒有與點A配對的點B。如果點B在原匹配中沒有與任何點配對,則它就是這條增廣路徑的終點;反之,如果點B已與點C配對,那么這條增廣路徑就是從A到B,再從B到C,再加上“從點C出發(fā)的增廣路徑”。并且,這條從C出發(fā)的增廣路徑中不能與前半部分的增廣路徑有重復(fù)的點。

比如圖2中,我們要尋找一條從3出發(fā)的增廣路徑,要做以下3步:
(1)首先從3出發(fā),它能連到的點只有6,而6在圖1中已經(jīng)與2配對,所以目前的增廣路徑就是3->6->2再加上從2出發(fā)的增廣路徑。
(2)從2出發(fā),它能連到的不與前半部分路徑重復(fù)的點只有5,而且5確實在原匹配中沒有與2配對。所以從2連到5。但5在圖1中已經(jīng)與1配對,所以目前的增廣路徑為3->6->2->5->1再加上從1出發(fā)的增廣路徑。
(3)從1出發(fā),能連到的不與自已配對并且不與前半部分路徑重復(fù)的點只有4。因為4在圖1中沒有與任何點配對,所以它就是終點。所以最終的增廣路徑是3->6->2->5->1->4。

但是嚴(yán)格地說,以上過程中從2出發(fā)的增廣路徑(2->5->1->4)和從1出發(fā)的增廣路徑(1->4)并不是真正的增廣路徑。因為它們不符合前面講過的增廣路徑的第5條性質(zhì),它們的起點都是已經(jīng)配過對的點。我們在這里稱它們?yōu)?#8220;增廣路徑”只是為了方便說明整個搜尋的過程。而這兩條路徑本身只能算是兩個不為外界所知的子過程的返回結(jié)果。
顯然,從上面的例子可以看出,搜尋增廣路徑的方法就是DFS,可以寫成一個遞歸函數(shù)。當(dāng)然,用BFS也完全可以實現(xiàn)。

至此,理論基礎(chǔ)部份講完了。但是要完成匈牙利算法,還需要一個重要的定理:

如果從一個點A出發(fā),沒有找到增廣路徑,那么無論再從別的點出發(fā)找到多少增廣路徑來改變現(xiàn)在的匹配,從A出發(fā)都永遠(yuǎn)找不到增廣路徑。

要用文字來證明這個定理很繁,話很難說,要么我還得多畫一張圖,我在此就省了。其實你自己畫幾個圖,試圖舉兩個反例,這個定理不難想通的。(給個提示。如果你試圖舉個反例來說明在找到了別的增廣路徑并改變了現(xiàn)有的匹配后,從A出發(fā)就能找到增廣路徑。那么,在這種情況下,肯定在找到別的增廣路徑之前,就能從A出發(fā)找到增廣路徑。這就與假設(shè)矛盾了。)
有了這個定理,匈牙利算法就成形了。如下:

初始時最大匹配為空
for 二分圖左半邊的每個點i
    do 從點i出發(fā)尋找增廣路徑。如果找到,則把它取反(即增加了總了匹配數(shù))。

如果二分圖的左半邊一共有n個點,那么最多找n條增廣路徑。如果圖中共有m條邊,那么每找一條增廣路徑(DFS或BFS)時最多把所有邊遍歷一遍,所花時間也就是m。所以總的時間大概就是O(n * m)。

posted on 2010-10-20 15:13 simplyzhao 閱讀(216) 評論(0)  編輯 收藏 引用 所屬分類: G_其他

導(dǎo)航

<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

統(tǒng)計

常用鏈接

留言簿(1)

隨筆分類

隨筆檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一区二区毛片| 欧美国产日韩精品免费观看| 国产精品嫩草影院av蜜臀| 久久偷看各类wc女厕嘘嘘偷窃| 亚洲精品偷拍| 一个色综合av| 国产精品视频免费观看www| 91久久夜色精品国产九色| 亚洲国产婷婷| 亚洲一二三级电影| 欧美一级欧美一级在线播放| 久久激情婷婷| 亚洲高清免费在线| 亚洲国产成人av在线 | 午夜在线观看免费一区| 久久国产精彩视频| 欧美福利视频网站| 一二三区精品| 久久福利影视| 欧美日韩成人网| 国产欧美一区二区白浆黑人| 136国产福利精品导航网址应用 | 久久成人人人人精品欧| 久久久久网址| 亚洲日韩欧美视频一区| 亚洲女性裸体视频| 久久香蕉国产线看观看av| 欧美国产日本韩| 国产亚洲欧洲一区高清在线观看| 在线日本欧美| 亚洲一区在线直播| 欧美不卡视频一区发布| 亚洲午夜精品17c| 裸体一区二区三区| 国产女精品视频网站免费| 亚洲国产高清aⅴ视频| 午夜精品在线看| 亚洲人成在线播放| 久久久久久久999| 国产精品日韩一区二区| 亚洲精品永久免费| 久久久久久精| 亚洲图片欧洲图片日韩av| 久久综合综合久久综合| 国产精品视频大全| 一区二区三区四区五区视频| 女人天堂亚洲aⅴ在线观看| 亚洲在线一区| 欧美日韩亚洲高清一区二区| 亚洲精品看片| 欧美激情无毛| 欧美 日韩 国产 一区| 欧美国产欧美亚州国产日韩mv天天看完整 | 欧美日韩美女| 亚洲日本中文字幕| 久久视频一区二区| 欧美一区2区三区4区公司二百| 欧美调教vk| 在线亚洲激情| 亚洲三级电影在线观看 | 美女精品在线观看| 亚洲在线免费| 国产精品老女人精品视频| 日韩视频免费观看| 亚洲乱码日产精品bd| 欧美精品在线网站| 在线视频欧美日韩| 一区二区三区日韩在线观看| 国产精品jizz在线观看美国| 亚洲女人天堂成人av在线| 99re8这里有精品热视频免费| 欧美另类69精品久久久久9999| 亚洲最黄网站| 99视频精品| 欧美性色aⅴ视频一区日韩精品| 亚洲欧美文学| 亚洲国产一区二区a毛片| 久久免费观看视频| 久久综合九九| 一区二区国产在线观看| 日韩亚洲国产精品| 国产精品一区久久久| 久久精品二区亚洲w码| 久久精彩视频| 亚洲九九精品| 在线视频欧美精品| 国产亚洲精品aa午夜观看| 久久综合电影| 欧美紧缚bdsm在线视频| 性欧美大战久久久久久久久| 性色av一区二区三区在线观看| 一区二区三区在线看| 亚洲人成人99网站| 国产精品久久久久影院色老大| 久久精品盗摄| 欧美国产日韩视频| 欧美在线一二三| 欧美a级一区二区| 一区二区欧美亚洲| 午夜精品久久久久久| 一区二区三区在线高清| 亚洲黑丝在线| 国产精品夫妻自拍| 免费日韩av| 国产欧美日韩另类视频免费观看| 美女主播精品视频一二三四| 欧美日韩人人澡狠狠躁视频| 久久久免费精品视频| 欧美日韩ab| 欧美77777| 国产精品一级久久久| 亚洲第一在线视频| 国产午夜亚洲精品不卡| 亚洲国产欧美在线人成| 国产精品嫩草99av在线| 亚洲成人在线视频播放 | 夜夜嗨av一区二区三区| 久久成人资源| 欧美亚洲一级片| 欧美久久久久| 麻豆九一精品爱看视频在线观看免费| 欧美三级乱码| 亚洲国产裸拍裸体视频在线观看乱了中文| 国产精品乱码久久久久久| 亚洲国产三级| 亚洲国产精品久久精品怡红院| 午夜欧美视频| 久久国产精品第一页| 国产精品乱人伦中文| aa级大片欧美| 一本色道久久88综合亚洲精品ⅰ| 久久久久国色av免费观看性色| 亚洲一区在线直播| 欧美电影电视剧在线观看| 久热精品视频在线| 亚洲电影在线| 国产日产欧美一区| 亚洲欧美国产制服动漫| 亚洲视频免费观看| 欧美日韩一区二区三区免费| 91久久精品一区二区别| 在线视频观看日韩| 老司机精品视频一区二区三区| 久热国产精品视频| 亚洲高清激情| 欧美国产欧美亚洲国产日韩mv天天看完整 | 国产亚洲欧美一区二区| 香蕉久久夜色精品国产使用方法| 午夜伦欧美伦电影理论片| 国产精品久久久久久久久借妻 | 国产乱人伦精品一区二区| 亚洲欧美日韩综合| 久久九九免费视频| 1024成人| 欧美精品国产| 亚洲夜晚福利在线观看| 久久精品二区亚洲w码| 在线欧美小视频| 欧美国产成人精品| 亚洲午夜精品久久| 久久久噜噜噜久久中文字幕色伊伊| 一区二区三区在线视频免费观看| 美女黄色成人网| 亚洲三级性片| 亚洲欧美日韩在线播放| 国产一区二区按摩在线观看| 久久久久国产精品www| 亚洲国产欧美国产综合一区| 亚洲一区自拍| 永久91嫩草亚洲精品人人| 久久亚洲国产成人| 一本色道久久88亚洲综合88| 久久久久欧美精品| 中文日韩在线| 在线免费观看日本欧美| 国产精品久久久久久久7电影| 久久久噜噜噜久噜久久| 99国产一区| 免费观看国产成人| 亚洲一区二区三区涩| 在线看国产一区| 欧美少妇一区二区| 久久综合色婷婷| 亚洲自拍三区| 亚洲第一黄色网| 亚洲欧美激情一区| 亚洲韩国日本中文字幕| 国产精品主播| 欧美风情在线| 中文高清一区| 亚洲第一精品影视| 欧美中文字幕| 中文日韩电影网站| 久久精品国产亚洲精品| 欧美~级网站不卡| 亚洲字幕一区二区| 亚洲韩日在线| 欧美福利精品| 美国三级日本三级久久99| 欧美在线一二三四区|