二分图.pptVIP

  1. 1、本文档共40页,可阅读全部内容。
  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文档。上传文档
查看更多
二分图

定义与构造方法 满足图中每一条边都有至少一个点在其之中的点集,被称为图的覆盖。 最小覆盖就是包含点数最少的覆盖。 二分图最小覆盖在数值上等于二分图最大匹配。 先求出最大匹配。 然后从右部的每一个未匹配点开始寻找交错路,并标记访问过的节点。 取左部标记的节点、右部未标记的节点,构成一组最小覆盖。 最小覆盖=最大匹配及构造方法的证明 点的4种情况: 右部未匹配点一定被标记了(因为从这些点出发)。 左部未匹配点一定未被标记(因为最大匹配不存在交错路)。 一对对应的左右匹配点,都被标记或者都未被标记(因为右部匹配点只能通过左部到达)。 所以这种构造方法中取的都是匹配点,恰好每个匹配中有一个。所以最小覆盖=最大匹配。 即使只考虑匹配边,最小覆盖也不小于最大匹配,所以最小性得证。 最小覆盖=最大匹配及构造方法的证明 边的4种情况: 匹配边一定被覆盖了(因为一对匹配点同时被标记或者都没被标记)。 不存在连接左右未匹配点的边(否则就不是最大匹配了)。 连接左部匹配点和右部未匹配点,那么左部匹配点一定被标记了,也能被覆盖。 连接左部未匹配点和右部匹配点,那么右部匹配点一定未被标记,否则就有交错路了。 综上所述,该构造方法可以覆盖所有的边。等价性、最小性、合法性均已证明,证毕。 POJ1325 Machine Schedule 有两台机器A,B及N个任务。每台机器有M种不同的模式。M,N = 100。 对每个任务i给定a[i]和b[i],表示如果该任务在A上执行,需要设置模式为a[i],如果在B上执行,需要模式为b[i]。 任务可以以任意顺序被执行。但每台机器转换一次模式就要重启一次。要求合理分配任务并合理安排顺序,使得机器重启次数最少。 左部图是机器A上的模式,右部图是机器B上的模式,对于每个任务在a[i]和b[i]之间连边。 答案就是最小覆盖。 POJ2226 Muddy Fields 在一块N*M的矩形地面上,有一些格子是泥泞的,现在要用一些宽为1的木板把泥地盖住,并且不能盖住好地。木板可以重叠。问最少需要多少木板? N,M=50。 不能盖住好地,那么宽为1的木板只能放在行、列连通块里。 所以行、列连通块对应左、右部中的点,泥地对应边。 求二分图最小覆盖就是答案。 二分图最大独立集 最大独立集=图的点数-最大匹配 二分图最大独立集 任意两点在图中都没有边相连的点集被称为图的独立集。 二分图最大独立集 = 图的点数 – 二分图最大匹配 可以反向理解:在图中去掉最少的点,使剩下的点之间没有边。那么就是用最少的点覆盖所有的边,所以去掉的是最小覆盖。 例题:骑士放置 给定一个N*M的棋盘,有一些格子不能放棋子。问棋盘上最多能放多少个不能互相攻击的骑士(马)。 对棋盘黑白染色,黑、白色的点分别属于左、右部,可以攻击到的两个格子之间连边。 马沿日字形攻击,所以肯定是在左、右部之间连边。 不能互相攻击,就是寻找一个最大独立集。 二分图最小路径覆盖 最小路径覆盖 = 节点数 – 最大匹配 定义和求法 最小路径覆盖就是用尽量少的不相交简单路径覆盖有向无环图的所有顶点。 最小路径覆盖 = 节点数 – 最大匹配。 把原图中的每个点拆成二分图中左、右两个点,对于每条有向边(u,v),从u的左部点向v的右部点连一条有向边。然后求最大匹配,用节点数减去。 分析与证明 拆点把原图最小路径覆盖中的“每个点的入度、出度均不超过1”转化为了二分图中“匹配边没有公共端点”。 最小路径覆盖里,路径上的每条边都对应着最大匹配中的一条匹配边,每条路径的最后一个点没有被匹配。 所以最小路径覆盖的路径数 = 最少未匹配的点数 = 节点数 – 最大匹配。 例题: Hanoi Tower Troubles Again! 有N根柱子,按编号从小到大放球,使每一个不在最底层的球和它下面一个球的编号之和是完全平方数。 先把问题转化一下——放M个球最少需要几根柱子。 球看作节点,如果球A、B满足AB且A+B是完全平方数,那么连有向边A→B。 每根柱子相当于一条路径,每个球放在其中一个柱子上,那么就是最小路径覆盖。 通过二分答案可以转化为原问题。 POJ1422 Air Raid N个城市M条道路形成有向无环图。现在要求派一些伞兵空降在某些城市,然后这些伞兵可以沿着道路访问到其他城市,但是不能有两个或两个以上伞兵访问同一个城市。问最少需要多少个伞兵。N=120。 好吧——这是最小路径覆盖的裸题。 但是如果“可以有两个或两个以上的伞兵访问同一个城市”呢? 可重叠的最小路径覆盖 考虑一个交叉的路径:u-v-w和x-v-y,这里v被两条路径覆盖了。 如果我们添加一条边x-y,那么相当于u-v-w和x-y的不可重叠的最小路径覆盖。 进一步扩展,我们需要在所有能间接到达的点之间加一条

文档评论(0)

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

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

1亿VIP精品文档

相关文档