- 1、本文档共73页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
离散数学高等里离散数学-课件-CHAP9.ppt
* 求一个二分图的完美匹配 x1 x2 x3 x4 x5 y1 y2 y3 y4 y5 现在匹配变成了: M={x1y2, x2y1, x3y3, x5y5}。 ⑴X中有非M–饱和点x4,令S={x4},T= ?; ⑵ NG(S)={y2, y3} ≠T, 取y2∈NG(S)–T ; ⑶y2是M–饱和点, x1y2∈M, S为{x4, x1}, T为{y2}。 ⑵ NG(S)={y2, y3}≠T, 取y3∈NG(S)–T ; ⑶y3是M–饱和点, x3y3∈M, S为{x4, x1, x3}, T为{y2, y3}。 ⑵ NG(S)={y2, y3, y4}≠T, 取y4∈NG(S)–T ; ⑶y4是非M–饱和点, x4y2x1y3x3y4为M–可增广路P; * 求一个二分图的完美匹配 x1 x2 x3 x4 x5 y1 y2 y3 y4 y5 于是M为M ?E(P),也就是, M={x2y1, x5y5 , x4y2, x1y3, x3y4} 。 ⑴X没有非M–饱和点,算法终止。M即为所求。 一个图的完美匹配可能不唯一,例如右边是本问题的另一种完美匹配。 x1 x2 x3 x4 x5 y1 y2 y3 y4 y5 * 匈牙利算法的数据结构 W[X, Y]表示人员与工作的关系。W[i, *]为xi所胜任的所有工作, W[*, j]为所有胜任yj的人员。 X[n]和Y[n]表示匹配,X[i]为xi所分配的工作,Y[i]为承担yi的人员。 S[n]和T[n]表示算法中的S和T,N[n]表示NG(S)。 P[n, 2]表示M–交错路, P[i, 1]?S, P[i, 2]?T, 显然,P[i, 1]P[i, 2]?M,P[i, 2]P[i+1, 1]?M。 xk yj xu … … i i+1 * 实现匈牙利算法的难点 匈牙利算法是建立一个含未饱和点x的S。取S的邻接点。如果是一个饱和点则扩大S;否则就存在一条M-可增广路P。 但是匈牙利算法中并没有直接给出这条M-可增广路P。 因此在实现匈牙利算法的程序中要同时建立这条M–可增广路P。这是实现匈牙利算法的较为困难之处。 * 匈牙利算法的程序实现 Hungary(input W, output X); begin InitialMatch( ); q:=true; //建立初始匹配 while q do begin //循环修改初始匹配 u:=Check(X); //取出一个非饱和点u if un then q:=false //若X全部饱和则终止 else begin //u为起点寻找交错路 p:=Mixed-Route(u); //有交错路时p为真 if p then NewMatch( ) //有交错路就更新匹配 else q:= false; end //无完美匹配而终止 end //注:程序中只给出终end //止处而省略了其输出 * 初始匹配 InitialMatch( ); //产生初始匹配 begin for i=1 to n do X[i]:=Y[i]:=0; //将X和Y置零 for i=1 to n do begin q := true; j:=1; while q and j=n do //Y[j]=0表示yj尚未匹配 if W[i, j]=1 and Y[j]=0 then begin X[i]:=j; Y[j]:=i; q:=false end else j:=j+1 //依据W取出若干不相邻接的边 end end * 更新匹配 用M–可增广路更新匹配的子过程: RenewMatch( ); // begin for j:=1 to last do begin X[P[j, 1]]:= P[j, 2]; //修改xi的匹配
您可能关注的文档
最近下载
- 软件工程报告.pdf VIP
- Song of the sea-海洋之歌-中英对照剧本中英文对白剧本台词.docx VIP
- 工业管道GC2-程序文件(2023版精华).doc VIP
- 新课标《物联网实践与探索》无人机互联表演教学设计.docx VIP
- SH-T3902-2014石油化工配管工程常用缩略语.pdf VIP
- 新版 (JR金融)JRT 0068-2020 网上银行系统信息安全通用规范.pdf VIP
- 2022年东北林业大学软件工程专业《计算机组成原理》科目期末试卷B(有答案).docx VIP
- 焊工技能考试(高级技师)习题库(第2部分).pdf VIP
- DLT1066-2007 水电站设备检修管理导则.docx VIP
- 外研版 英语五年级上册 课课练.pdf VIP
文档评论(0)