二分图匹配匈牙利算法和KM算法简介20896.pptx





《二分图匹配匈牙利算法和KM算法简介20896.pptx》由会员分享,可在线阅读,更多相关《二分图匹配匈牙利算法和KM算法简介20896.pptx(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、二分图匹配匈牙利算法和KM算法简介二分图的概念v二分图又称作二部图,是图论中的一种特殊模型。v设G=(V,R)是一个无向图。如顶点集V可分割为两个互不相交的子集,并且图中每条边依附的两个顶点都分属两个不同的子集。则称图G为二分图。112233445最大匹配v给定一个二分图G,在G的一个子图M中,M的边集E中的任意两条边都不依附于同一个顶点,则称M是一个匹配。v选择这样的边数最大的子集称为图的最大匹最大匹配问题配问题(maximal matching problem)v如果一个匹配中,图中的每个顶点都和图中某条边相关联,则称此匹配为完全匹配完全匹配,也称作完备匹配。完备匹配。匈牙利算法v求最大匹
2、配的一种显而易见的算法是:先找出全部匹配,然后保留匹配数最多的。但是这个算法的复杂度为边数的指数级函数。因此,需要寻求一种更加高效的算法。v增广路的定义(也称增广轨或交错轨):v若P是图G中一条连通两个未匹配顶点的路径,并且属M的边和不属M的边(即已匹配和待匹配的边)在P上交替出现,则称P为相对于M的一条增广路径。匈牙利算法v由增广路的定义可以推出下述三个结论:v1P的路径长度必定为奇数,第一条边和最后一条边都不属于M。v2P经过取反操作可以得到一个更大的匹配M。v3M为G的最大匹配当且仅当不存在相对于M的增广路径。匈牙利算法v用增广路求最大匹配(称作匈牙利算法,匈牙利数学家Edmonds于1
3、965年提出)v算法轮廓:v(1)置M为空v(2)找出一条增广路径P,通过取反操作获得更大的匹配M代替Mv(3)重复(2)操作直到找不出增广路径为止匈牙利算法v程序清单:vFunction find(k:integer):integer;vvar st,sf,i,j,t:integer;v queue,father:array1.100 of integer;vbeginv queue1:=k;st:=1;sf:=1;v fillchar(father,sizeof(father),0);v repeat匈牙利算法vfor i:=1 to n dov if(fatheri=0)and(aque
4、uest,i=1)thenv beginv if match2i0 thenv beginv inc(sf);v queuesf:=match2i;v fatheri:=queuest;v end else匈牙利算法vbeginv j:=queuest;v while true dov beginv t:=match1j;v match1j:=i;v match2i:=j;v if t=0 then break;v i:=t;j:=fathert;匈牙利算法vend;v find:=1;v exit;v end;v end;v inc(st);v until stsf;v find:=0;ve
5、nd;匈牙利算法v在主程序中调用下面的程序即可得出最大匹配数。vBmatch:=0;vFor I:=1 to n do Bmatch:=Bmatch+find(i);vWriteln(Bmatch);v一个关于二分图的性质:v最大匹配数最大独立集XY最佳匹配v如果边上带权的话,找出权和最大的匹配叫做求最佳匹配。v实际模型:某公司有职员x1,x2,xn,他们去做工作y1,y2,yn,每个职员做各项工作的效益未必一致,需要制定一个分工方案,使得人尽其才,让公司获得的总效益最大。v数学模型:G是加权完全二分图,求总权值最大的完备匹配。KM算法v穷举的效率n!,我们需要更加优秀的算法。v定理:v设M是
6、一个带权完全二分图G的一个完备匹配,给每个顶点一个可行顶标(第i个x顶点的可行标用lxi表示,第j个y顶点的可行标用lyj表示),如果对所有的边(i,j)in G,都有lxi+lyj=wi,j成立(wi,j表示边的权),且对所有的边(i,j)in M,都有lxi+lyj=wi,j成立,则M是图G的一个最佳匹配。证明很容易。KM算法v对于任意的G和M,可行顶标都是存在的:vl(x)=maxw(x,y)vl(y)=0v欲求完全二分图的最佳匹配,只要用匈牙利算法求其相等子图的完备匹配;问题是当标号之后的Gl无完备匹配时怎么办?1957年(居然比匈牙利算法早?),Kuhn和Munkras给出了一个解决
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二分 匹配 匈牙利 算法 KM 简介 20896

限制150内