二分图匹配归纳

二分图匹配归纳

ID:38178392

大小:31.00 KB

页数:4页

时间:2019-05-24

二分图匹配归纳_第1页
二分图匹配归纳_第2页
二分图匹配归纳_第3页
二分图匹配归纳_第4页
资源描述:

《二分图匹配归纳》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、这几天断断续续学了二分图的匹配算法,学会了二分图的最大匹配的hungary算法和求二分图的最佳匹配的KM算法.二分图是这样一个图,它的顶点可以分类两个集合X和Y,所有的边关联在两个顶点中,恰好一个属于集合X,另一个属于集合Y。hungary算法就是一个不断找增广轨的过程.下面是网上找到的一个比较好的解释,很容易理解,结合程序就能掌握算法的思想了:算法的思路是不停的找增广轨,并增加匹配的个数,增广轨顾名思义是指一条可以使匹配数变多的路径,在匹配问题中,增广轨的表现形式是一条"交错轨",也就是说这条由图的边组成的路径

2、,它的第一条边是目前还没有参与匹配的,第二条边参与了匹配,第三条边没有..最后一条边没有参与匹配,并且始点和终点还没有被选择过.这样交错进行,显然他有奇数条边.那么对于这样一条路径,我们可以将第一条边改为已匹配,第二条边改为未匹配...以此类推.也就是将所有的边进行"反色",容易发现这样修改以后,匹配仍然是合法的,但是匹配数增加了一对.另外,单独的一条连接两个未匹配点的边显然也是交错轨.可以证明,当不能再找到增广轨时,就得到了一个最大匹配.这也就是匈牙利算法的思路.hungary算法适合解决的问题:1.最大匹配(

3、=,=显然....)2.完美匹配3.点覆盖(最小覆盖问题)4.最小路径覆盖5.最大独立集问题参考网上的代码写的一个算法,好像用的人蛮多的#defineN100intbm[N][N],link[N],v[N];intn,m;intpath(intt){    inti;    for(i=1;i<=m;i++)        if(!v[i]&&bm[t][i])         {             v[i]=1;              if(!link[i]

4、

5、path(link[i]))      

6、        {                 link[i]=t;                 return1;      }  }return0;}intmaxmatch(){    inti,c=0;    memset(link,0,sizeof(link));    for(i=1;i<=n;i++)    {       memset(v,0,sizeof(v));         if(path(i))         c++;    }    returnc;}二分图的最佳匹配:算法是理解

7、了,可是定理没有证明=,=.哎,这就是工科生和理科生的区别...【最优完备匹配】对于二分图的每条边都有一个权(非负),要求一种完备匹配方案,使得所有匹配边的权和最大,记做最优完备匹配。(特殊的,当所有边的权为1时,就是最大完备匹配问题)KM算法:(全称是Kuhn-Munkras,是这两个人在1957年提出的,有趣的是,匈牙利算法是在1965年提出的)为每个点设立一个顶标Li,先不要去管它的意义。设vi,j为(i,j)边的权,如果可以求得一个完备匹配,使得每条匹配边vi,j=Li+Lj,其余边vi,j≤Li+Lj

8、。此时的解就是最优的,因为匹配边的权和=∑Li,其余任意解的权和都不可能比这个大定理:二分图中所有vi,j=Li+Lj的边构成一个子图G,用匈牙利算法求G中的最大匹配,如果该匹配是完备匹配,则是最优完备匹配。(不知道怎么证明)问题是,现在连Li的意义还不清楚。其实,我们现在要求的就是L的值,使得在该L值下达到最优完备匹配。L初始化:Li=max{wi,j}(i∈x,j∈y)Lj=0建立子图G,用匈牙利算法求G的最大匹配,如果在某点i(i∈x)找不到增广轨,则得不到完备匹配。此时需要对L做一些调整:设S为寻找从i出

9、发的增广轨时访问的x中的点的集合,T为访问的y中的点的集合。找到一个改进量dx,dx=min{Li+Lj-wi,j}(i∈S,j不∈T)Li=Li-dx(i∈S)Li=Li+dx(i∈T)重复以上过程,不断的调整L,直到求出完备匹配为止。从调整过程中可以看出:每次调整后新子图中在包含原子图中所有的边的基础上添加了一些新边。每次调整后∑Li会减少dx,由于每次dx取最小,所以保证了解的最优性。复杂度分析:设n为点数,m为边数,从每个点出发寻找增广轨的复杂度是O(m),如果找不到增广轨,对L做调整的复杂度也是O(m)

10、,而一次调整或者找到一条增广轨,或者将两个连通分量合成一个,而这两种情况最多都只进行O(n)次,所以总的复杂度是O(nm)扩展:根据KM算法的实质,可以求出使得所有匹配边的权和最小的匹配方案。L初始化:Li=min{wi,j}(i∈x,j∈y)Lj=0dx=min{wi,j-Li-Lj}(i∈S,j不∈T)Li=Li+dx(i∈S)Li=Li-dx(i∈T)【最优匹配】与

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。