二分图的匹配.docVIP

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

第九章 二分图中的匹配 三个典型问题: 在一个有禁止位置的m×n棋盘上,能放置非攻击型车的最多个数是多少? 在一个有禁止位置的m×n棋盘上,能放置多米诺牌覆盖的最多个数是多少? 一个公司有n个工作空缺,需要有一定技能的人填补,同时有m个人申请这些项工作,每人能胜任n项工作中的若干项,问最多有多少项工作能找到合适的人选? 9.1 一般的问题描述 定义1: 令X={x1, x2, …,xm}, Y={y1,y2, …,yn},且X∩Y=Ф,而△是序偶e=(x,y)的集合,其中x∈X,y∈Y,那么三元组G=(X,△,Y)称作二分图。 定义2: 令G=(X,△,Y)是一个二分图,边集△的子集M,若M中没有两条边存在公共点,称M是二分图G的一个匹配。 定义3: 设G是一个二分图,定义(G)={∣M∣:M是G的一个匹配}为二分图G的最大匹配边数。 9.2 匹配 定义1: G=(X,△,Y),X={x1, x2, …,xm}, Y={y1,y2, …,yn},满足∣M*∣=(G)的匹配M*称为二分图G的最大匹配。一般M*不唯一,且∣M*∣=(G)≤min{m,n}。 寻找M*的困难点: 若已知(G),那么遍历所有可能的匹配会找到M*,但搜索量巨大; 一般(G)并不事先知道,要找到M*,并求出(G)=∣M*∣难度更大。 定义2: 令u和v是二分图G=(X,△,Y)的任意两个顶点,连接u和v的互异顶点序列: :u=u0, u1, u2, …, up-1, up=v 使得任意两个相邻顶点有一条边连接,即:{ u0, u1},{ u1, u2},…, { up-1, up}∈△,那么称序列为二分图G的一个链。链长等于序列的边数p,若u=v, 链也叫圈。 定义3: 令M为二分图G=(X,△,Y)中的一个匹配,令是M的补集,即G的不属于M的边集合,M∪=△。令u和v是顶点,且u和v一个是左顶点(即属于X),一个是右顶点(即属于Y),若连接u和v的链满足下列性质: (1)的第一、三、五、、、边属于; (2)的第二、四、六、、、边属于M; (3)u和v都不与M的边相连。 那么称为关于匹配M的交错链,简称M-交错链。 M-交错链的性质: (1)M-交错链的长是奇数2k+1, k≧0; (2)设M表示的属于M的边集合,表示的属于的边集合,那么有:∣∣=∣M∣+1 例: 定理9.2.1: 令M为二分图G=(X,△,Y)中的一个匹配,则M是最大匹配当且仅当不存在M-交错链。 推论9.2.1: 若M不是二分图G的最大匹配,那么必存在M-交错链。 进展: 得到了最大匹配的特征,即只需找M-交错链,找不到,则M就是最大匹配。 困难: 搜索M-交错链类似于穷举,算法上不可行,即在构造最大匹配的时候不知算法何时结束。 怎么办? 当找到一个匹配M时,希望能有一种方法直接直接验证其是否为最大匹配,若不是,则继续找(肯定能找到);若是,则算法结束。 定义4: 令G=(X,△,Y)是一个二分图,S是G的顶点X∪Y的子集,若G中任一条边的两个顶点至少有一个属于S,即: {x,y}∩S≠Ф,对{x,y}∈△ 则称S是G的一个覆盖。 例: 定义5: 令c(G)=min{∣S∣:S是G的覆盖},即c(G)是G的覆盖的最小顶点个数,称c(G)为G的覆盖数。显然,G的任一个覆盖S满足∣S∣≧c(G),把满足∣S∣=c(G)的覆盖S称为G的最小覆盖。 ****图的最小顶点覆盖问题是典型的NP难题。 引理9.2.2: 如果G是一个二分图,那么(G)≦c(G),即二分图G的最大匹配边数不会超过G的覆盖数。 例: 求二分图G的最大匹配和最小覆盖的算法: 令G=(X,△,Y)是一个二分图,其中X={x1, x2, …,xm}, Y={y1,y2, …,yn},令M为得到的G的任一匹配。 将X的所有不与M的边相关联的顶点标上(*),并称所有的顶点为未被扫描的,转(2); 如果在上一步没有新的标记(例如(*),(yj))加到X的顶点上,则停止。否则,转(3); 当存在X的被标记但未被扫描的顶点时,选择一个被标记但未被扫描的顶点,比如xi, 用(xi)标记Y的所有顶点,这些顶点被不属于M且尚未标记的边连到xi。现在顶点xi是被扫描的,若X中不存在被标记但未被扫描的顶点时,转(4); 若在步骤(3)中没有新的标记加到Y中顶点上,则停止;否则,转(5); 当存在Y中被标记但未被扫描的顶点时,选择Y中一个被标记但未被扫描的顶点,比如yj, 用(yj)标记X 的所有顶点,这些顶点被属于M且尚未标记的边连到yj。现在顶点yj是被扫描的,若Y中不存在被标记但未被扫描的顶点时,转(2); 例1: 如图,确定二分图G的最大匹配和最小覆盖。 算法的收敛性证明: 定义6: 突破点: 存在Y中的

文档评论(0)

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

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

1亿VIP精品文档

相关文档