欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:87405889       资源大小:165.69KB        全文页数:29页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    二分图匹配匈牙利算法和KM算法简介二分图的概念v二分图又称作二部图,是图论中的一种特殊模型。v设G=(V,R)是一个无向图。如顶点集V可分割为两个互不相交的子集,并且图中每条边依附的两个顶点都分属两个不同的子集。则称图G为二分图。112233445最大匹配v给定一个二分图G,在G的一个子图M中,M的边集E中的任意两条边都不依附于同一个顶点,则称M是一个匹配。v选择这样的边数最大的子集称为图的最大匹最大匹配问题配问题(maximal matching problem)v如果一个匹配中,图中的每个顶点都和图中某条边相关联,则称此匹配为完全匹配完全匹配,也称作完备匹配。完备匹配。匈牙利算法v求最大匹配的一种显而易见的算法是:先找出全部匹配,然后保留匹配数最多的。但是这个算法的复杂度为边数的指数级函数。因此,需要寻求一种更加高效的算法。v增广路的定义(也称增广轨或交错轨):v若P是图G中一条连通两个未匹配顶点的路径,并且属M的边和不属M的边(即已匹配和待匹配的边)在P上交替出现,则称P为相对于M的一条增广路径。匈牙利算法v由增广路的定义可以推出下述三个结论:v1P的路径长度必定为奇数,第一条边和最后一条边都不属于M。v2P经过取反操作可以得到一个更大的匹配M。v3M为G的最大匹配当且仅当不存在相对于M的增广路径。匈牙利算法v用增广路求最大匹配(称作匈牙利算法,匈牙利数学家Edmonds于1965年提出)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(aqueuest,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;vend;匈牙利算法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是一个带权完全二分图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给出了一个解决该问题的有效算法,用逐次修改可行顶标l(v)的办法使对应的相等子图之最大匹配逐次增广,最后出现完备匹配。KM算法v修改方法如下:v先将一个未被匹配的顶点u(u in x)做一次增广路,记下哪些结点被访问那些结点没有被访问。求出d=minlxi+lyj-wi,j其中i结点被访问,j结点没有被访问。然后调整lx和ly:对于访问过的x顶点,将它的可行标减去d,对于所有访问过的y顶点,将它的可行标增加d。修改后的顶标仍是可行顶标,原来的匹配M仍然存在,相等子图中至少出现了一条不属于M的边,所以造成M的逐渐增广。KM算法v上述算法的证明也很容易vKuhnMunkras算法流程:v(1)初始化可行顶标的值v(2)用匈牙利算法寻找完备匹配v(3)若未找到完备匹配则修改可行顶标的值v(4)重复(2)(3)直到找到相等子图的完备匹配为止参考文献v王树禾离散数学引论v吴文虎 王建德图论算法与程序设计v刘汝佳 黄亮算法艺术与信息学竞赛v2002年冬令营论文孙方成偶图的算法及应用v2004年冬令营论文黄源河浅谈图论模型的建立与应用例题1 Place the Robots(ZOJ1654)问题描述 有一个N*M(N,M=50)的棋盘,棋盘的每一格是三种类型之一:空地、草地、墙。机器人只能放在空地上。在同一行或同一列的两个机器人,若它们之间没有墙,则它们可以互相攻击。问给定的棋盘,最多可以放置多少个机器人,使它们不能互相攻击。Wall Grass Empty例题1 Place the Robots(ZOJ)模型一5467832112346578于是,问题转化为求图的最大独立集问题。在问题的原型中,草地,墙这些信息不是我们所关心的,我们关心的只是空地和空地之间的联系。因此,我们很自然想到了下面这种简单的模型:以空地为顶点,有冲突的空地间连边,我们可以得到右边的这个图:例题1 Place the Robots(ZOJ)模型一5467832112346578在问题的原型中,草地,墙这些信息不是我们所关心的,我们关心的只是空地和空地之间的联系。因此,我们很自然想到了下面这种简单的模型:以空地为顶点,有冲突的空地间连边,我们可以得到右边的这个图:这是NP问题!我们将每一行,每一列被墙隔开,且包含空地的连续区域称作“块”。显然,在一个块之中,最多只能放一个机器人。我们把这些块编上号。同样,把竖直方向的块也编上号。例题1 Place the Robots(ZOJ)模型二123451234例题1 Place the Robots(ZOJ)模型二123451234把每个横向块看作X部的点,竖向块看作Y部的点,若两个块有公共的空地,则在它们之间连边。于是,问题转化成这样的一个二部图:112233445由于每条边表示一个空地,有冲突的空地之间必有公共顶点,所以问题转化为二部图的最大匹配问题。例题1 Place the Robots(ZOJ)模型二123412354112233445比较前面的两个模型:模型一过于简单,没有给问题的求解带来任何便利;模型二则充分抓住了问题的内在联系,巧妙地建立了二部图模型。为什么会产生这种截然不同的结果呢?其一是由于对问题分析的角度不同:模型一以空地为点,模型二以空地为边;其二是由于对原型中要素的选取有差异:模型一对要素的选取不充分,模型二则保留了原型中“棋盘”这个重要的性质。由此可见,对要素的选取,是图论建模中至关重要的一步。例题1 Place the Robots(ZOJ)小结例题2 救护伤员(TOJ1148)v无情的海啸夺取了无数人的生命.很多的医疗队被派往灾区拯救伤员.就在此时,医疗队突然发现自己带的药品已经不够用了,只剩下了N种。(1 n=20),随着病人病情的发展,每种药在每天能获得的效果是不一样的。同时,每天病人只能服用一种药。也就是说,这些药还够支持N天。现在,给出你每种药在每天使用的效果,请你判断当每种药都用完后所有药达到的效果之和最大可以是多少。例题3 打猎v猎人要在n*n的格子里打鸟,他可以在某一行中打一枪,这样此行中的所有鸟都被打掉,也可以在某一列中打,这样此列中的所有鸟都打掉。问至少打几枪,才能打光所有的鸟?v建图:二分图的X部为每一行,Y部为每一列,如果(i,j)有一只鸟,那么连接X部的i与Y部的j。v该二分图的最大匹配数则是最少要打的枪数。例题4 最小路径覆盖v一个不含圈的有向图G中,G的一个路径覆盖是一个其结点不相交的路径集合P,图中的每一个结点仅包含于P中的某一条路径。路径可以从任意结点开始和结束,且长度也为任意值,包括0。请你求任意一个不含圈的有向图G的最小路径覆盖数。v理清一个关系:最小路径覆盖数G的定点数最小路径覆盖中的边数例题4 最小路径覆盖v试想我们应该使得最小路径覆盖中的边数尽量多,但是又不能让两条边在同一个顶点相交。v拆点:将每一个顶点i拆成两个顶点Xi和Yi。然后根据原图中边的信息,从X部往Y部引边。所有边的方向都是由X部到Y部。例题4 最小路径覆盖v因此,所转化出的二分图的最大匹配数则是原图G中最小路径覆盖上的边数。因此由最小路径覆盖数原图G的顶点数二分图的最大匹配数便可以得解。

    注意事项

    本文(二分图匹配-匈牙利算法和KM算法简介20897.pptx)为本站会员(jix****n11)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开