第8章节 匹配问题.pptVIP

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章节 匹配问题

第八章 匹配问题 Matching Problem 匹配的定义 匹配 最大匹配 匹配点 暴露点 完美匹配 交错路 增广路 寻找最大匹配 Lemma 1 设P是网络N中关于匹配M的增广路,则M与P的对称差M’=M⊕P=(M∪P)\(P∩M)也是匹配,且|M’|=|M|+1. 外点与内点 对于N中的一条起点为暴露点 和终点 为的路 ,如果路上的弧由匹配弧和自由弧交替出现,则称P为交错路,并称交错路上与起点的距离为偶数的节点为外点(Outer vertex),距离为奇数的节点为内点(Inner vertex)。 寻找最大匹配--增广路算法 根据Theorem 2,如果从某个暴露点p出发找不到增广路,则可以把该节点p以及它所关联的弧从N中删去,而不影响最大匹配的基数. For example 寻找最大匹配--增广路算法 二部基数匹配问题的增广路算法 Step0 在二部图网络N=(V1 ,V2,A)中任取一个匹配M(如M=φ),置所有N中节点i的标号为label(i)=‘null’. Step1 如果V1中不存在暴露点,则M为最大匹配,结束。否则选取N中一个暴露点p,置节点p的标号为label(p)=‘outer’,List={p}. Step2 如果List=φ,则表明不存在从p出发的增广路,所以将节点p以及它所关联的弧从N中删去,转Step1.否则从List中取出一个节点i,令List=List\{i}.如果label(i)=‘outer’,转step3;否则转Step4. Step3 对i的每个相邻节点j:如果j为暴露点,令q=j,pred(q)=i,转Step5;如果j为匹配点且label(j)=‘null’,令pred(j)=i,label(j)=‘inner’, List=List∪{j}.转Step2.(注:所有相邻点均要考虑?碰到末端?) Step4 记i的匹配点为j:如果label(j)=‘null’,令pred(j)=i, label(j)=‘outer’,List=List∪{j},转Step2;否则直接转Step2. 寻找最大匹配--增广路算法 Step5 利用数组pred所记录的信息,从节点q反向追踪确定一条p-q 增广路P,执行增广操作M=M⊕P. 置所有N中节点i的标号为label(i)=‘null’,转Step1. 非二部基数匹配问题 增广路算法失效的例 花Flower 对于网络N的匹配M和暴露点p,由满足以下条件的一条交错路和一个奇圈所构成的子图称为花: (1)该子图中交错路是从p到q的一条交错路,且q在该交错路上是一个外点; (2)该子图中奇圈与交错路的唯一交点为q,圈上自由弧与匹配弧交替出现,且圈上与q关联的两条弧都是自由弧。 花朵的收缩 对于网络N的匹配M和花朵W,网络N关于W的收缩(记为N/W)定义为: (1) 用人工节点w代替花朵W,即增加人工节点w而删去花朵W中的所有节点; (2)修改原网络中的弧,即所有原来与W中节点相邻的节点变成与w相邻。 非二部图的匹配算法(一) Step0 在网络N中任取一个匹配M,置所有N中节点i的标号为label(i)=‘null’. Step1 如果N中不存在暴露点,则M为最大匹配,结束。否则选取N中一个暴露点p,置节点p 的标号为label(i)=‘outer’,list={p}. Step2 如果list=φ,则表明不存在从p出发的增广路,所以将节点p以及它所关联的弧从N中删去,转Step1. 否则从list 中取出一个点i,令list=list\{i}.如果label(i)=‘outer,转Step3;否则转Step4. Step3 对i的每个相邻节点j:如果label(j)=‘outer’,转Step5; 如果j为暴露点,令q=j,pred(q)=i, 转Step6;如果j为匹配点且label(j)=‘null’,令pred(j)=i,label(j)=‘inner’,list=list∪{j}. 转Step2.  ? 非二部图的匹配算法(二) Step4 记i的匹配点为j:如果label(j)=‘inner’,转Step5;如果label(j)=‘null’,令pred(j)=i,label(j)=‘outer’,list=list∪{j},转Step2;否则直接转Step2. Step5 找到对应的花朵,并将该花朵收缩为一个人工节点,同时修改网络和list。令该人工节点的标号为‘outer’,并将该人工节点加入list中,转Step2. Step6 利用数组pred所记录的信息,从节点q反向追踪确定一条p-q增广路P’。展开P’上的人工节点,确定一条

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档