图论学习--5匹配与因子分解(思维导图)

在这里插入图片描述

匹配与因子分解

二部图的匹配问题

图的匹配与Bergen定理

  • 匹配

    • M是图G的边子集,且M中的任意两条边没有公共顶点,则称M是G的一个匹配(边独立集更好理解一些)
    • 匹配M中的端点为M饱和点

      • 不在M中的端点是M非饱和点
      • 这里饱和可以音解为包含
    • 最大匹配

      • 包含边数最大的M
    • 完美匹配

      • 包含了所有顶点的匹配

        • 图不一定存在完美匹配
        • 完美匹配一定是最大匹配,最大匹配不一定是完美匹配
    • M交错路

      • M中的边和非M中的边交错形成的路为M交错路。
      • 如果M交错路的起点与终点是M非饱和点,则称为M增广路

        • 注意是G的M增广路,里面两个参数,G与M
  • Berge定理

    • Berge定理:G的匹配M是最大匹配,当且仅当G不包含M增广路

      • 很好理解,因为出现增广路的话,在这条路里,非M边数大于M边数,则增广路的边集-M边集能得到更大的边集,so

二部图的匹配

  • ppt上用了研究生找工作的例子来介绍,也就是X、Y两个类别相互匹配,每个研究生一份工作,相互之间不冲突,每份工作一个研究生来做,相互之间不冲突。工作与研究生之间相互匹配,所以匹配的实际应用很符合“匹配”这个词的意思。同时二部图又很完美的契合了匹配中两条边相互独立的机制
  • 二部图匹配存在性判定-Hall定理

    • Hall定理:G=(X,Y)为二部图,则G存在饱和X每个顶点的匹配的充要条件是:对于任意S包含于X,有|N(S)|≥|S|

      • 这里S是一个子集合,而不一定是单纯的一个点,当然,如果有点不符,那肯定是直接不行的,因为这里是充要条件哦
      • 对于这一定里的理解,其实也很简单,就是你想要X饱和,那么X中每个点都至少有一个边和Y中的点相连呗,那么邻居数大于点数就太正常不过了,然后这里为什么是大于不是等于呢,这个···你傻呀,这里是存在匹配,而不是该图就是匹配···
      • 使用时,从单点集到二元点集到三元点集一个一个来试
      • 证明:必要性:要实现X饱和,则X的每个顶点在Y中至少有一个邻接点,so,|N(S)|≥|S|成立
      • 证明:充分性:反正,若满足条件,但不存在饱和X的匹配,令M‘是G的一个最大匹配,但不饱和X的顶点u,又令Z是通过M’与点u相连形成的所有M‘交错路上的点集,M’是最大匹配,根据Berge定理,u是唯一一个非饱和点。令S=X∩Z,T=Y∩Z,显然,S-{u}中点与T中点在M‘下配对,即|T|=|S|-1<|S|,即|N(S)|=|T|=|S|-1<|S|,这与条件矛盾,所以得证
      • Hall定理是在偶图中求最大匹配算法的理论基础
      • 推论:若G是k正则二部图,则G存在完美匹配

        • 因为K正则,所以|X|=|Y|,然后Hall定理···显然

二部图的覆盖

  • 图的点覆盖

    • G的一个顶点子集K,使得G的每条边都至少有一个端点在K中,称K为覆盖
    • 最小点覆盖,点数最少,点数记为β(G)
    • 定理:设M是G的匹配,K是G的点覆盖,若|M|=|K|,则M是最大匹配,而G是最小点覆盖

      • 证明:设M'与K’分别是G的最大匹配和最小点覆盖,由匹配和电覆盖定义有|M'|≤|K'|,所以有|M|≤|M'|≤|K'|≤|K|,所以,当|M|=|K|时,有|M|=|M'|,|K'|=|K|,即M是最大匹配,G是最小覆盖
    • Konig定理:在二部图中,最大匹配的边数等于最小点覆盖的顶点数

      • 这个证明暂时不看了,之后需要的话再补

Tutte定理

  • 图G有完美匹配当且仅当堆V的任意子集S包含于V(G),有o(G-S)≤|S|

    • o(G-S)表示奇分支数目
    • S是V(G)任意子集
  • 这里也是先不慌看

    • 着重把后面的先看完,这里可以补

因子分解

1因子分解

  • 将一个图分解成若干边不重的子图之并
  • 因子Gi,是只至少包含G的至少一条边的生成子图。图G的k因子,是值图G的k正则生成子图

    • 基本是懂了1因子是什么了,所谓1因子,它是1正则的图G的生成子图,这里注意是生成子图,它是个子图,不是边集,当然,它看起来似乎很像是边集那样
  • 因子分解是指将图G分解为若干个边不重的因子之并

  • 有完美匹配一定有1因子,但是不一定有1因子分解

    • 即存在1因子,但是不一定能够分解成1因子的并
  • 定理1:K2n可1因子分解

    • 2n不变,其他点像履带一样转
  • 每个k正则二部图G是可1因子分解

  • 1因子分解的个数与完美匹配的数目是两个不同的概念

    • 这里的个数是指的是分解的方式,而不是分解的完美匹配结构的个数
  • 定理2:具有H圈的三正则图可1因子分解

    • 找出H圈,则剩下的每个点度为1,就是一个1因子,然后因为三正则图,所以点数为偶数,则H圈是偶圈,则是两个1因子
  • 定理3:若三正则图有割边,则它不能1因子分解

    • 假设三个1因子为G1,G2,G3,割边e在G1里,G-G2显然每个分支都是圈,所以e在圈中,e是割边,矛盾,故得证
    • 没有割边的三正则图一定存在完美匹配

2因子分解

  • 分解成n个2因子的并
  • G的一个H圈一定是G的一个2因子,但是一个2因子不一定是G的H圈,2因子可以不连通,例如两个圈是一个2因子
  • G能进行2因子分解,其顶点度数必为偶数,但其不一定连通,所以可能不是欧拉图
  • 定理4:Walecki K2n+1可2因子分解

    • 对于K2n+1,Pi=vivi-1vi+1vi-2vi+2...i-()
    • 下标取为mod2n的运算

      • 注意是2n哦,不是2n+1
    • 生成圈Hi为v2n+1与Pi的两个端点连线

森林因子分解

  • 来衡量边的稠密程度
  • 荫度,边不重的森林因子的最少数目
  • 了解

最大、最优匹配算法

匈牙利算法

  • |X|=|Y|的二部图中寻找完美匹配
  • 思想

    • 从任一初始匹配M0出发,通过寻求一条M0增广路P,令M1=M0△E(P),得到比M0更大的匹配M1

      • 即在增广路上,非M0的的边是一个更大的匹配
      • 严重依赖于Berge定理
  • 如何寻找M可扩路

    • M交错树

      • 找一颗以非饱和点u的M交错树H
      • 对于v∈V(H),(u,v)路是M交错路
      • 树上的点不能重复哦
      • 情形1:H包含除u外的M非饱和点(存在增广路)

        • 更新匹配
      • 情形2:除点u外,H中所有点为M饱和点,且在M上配对

        • 令S=V(H)∩X,T=V(H)∩Y,显然T包含于N(S)
        • 若N(S)=T,则没有完美匹配

          • 因为S-{u}中点与T中点配对,则|N(S)|=|S|-1<|S|,由Hall定理,G中不存在完美匹配
        • 若T包含于N(S)

          • 则一定存在一点y,然后y一定连接到点x(这里x是个代指,因为y不孤立),然后x一定饱和(因为H中除了u,其他都饱和),xy一定不在M中,(假设xy在M中,那么y就一定是在T中的,所以xy不在M中)。

            • 此时y要么是饱和点,则得到情形2

              • 继续判断T和N(S)
            • 此时y要么是非饱和点,则得到情形1

              • 更新匹配
      • 算法流程(重点在这)

        • 设M是初始匹配. H是扎根于M非饱和点u的交错树.令:S=V(H)∩X, T=V(H)∩Y. (a) 、若M饱和X所有顶点, 停止. 否则, 设u为X中M非饱和顶点, 置S={u}, T=Φ; (b) 、若N(S)=T, 则G中不存在完美匹配. 否则设 y∈N(S) – T. (c) 、若y为M饱和点, 且yz∈M, 置S=S∪{z}, T=T∪{y}, 转(b). 否则, 设P为M可扩路, 置M1=MΔE(P), 转(a).

          • 然后,每换一个u点,S和T都要置零
          • 然后S中每加进一个点后,都要更新N(S)
          • 然后H每扩展一下,都要更新S和T
      • 总结一哈:直接看算法步骤就行了,看推导过程,推导的十分繁琐,且麻烦,而且不考,真的白看

        • 最多|X|词可以找到完美匹配

最大匹配

  • 问题:在一般二部图上求最大匹配M
  • 算法流程

    • 设M是G=(X, Y)的初始匹配. (1) 置S=Φ,T=Φ; (2) 若X−S已经M饱和, 停止;否则, 设u是X−S中的一非饱和顶点, 置S=S∪{u}. (3) 若N(S)=T, 转(5); 否则, 设y ∈N(S)−T. (4) 若y是M饱和的, 设yz ∈ M, 置S=S∪{z}, T=T∪{y}, 转(3); 否则, 存在(u, y)交错路是M可扩路P, 置M=MΔE(P), 转(1). (5) 若X−S=Φ, 停止;否则转(2).
  • 和匈牙利算法的区别

    • 主要在于,匈牙利算法一旦确认没有完美匹配,即N(S)=T时,就会终止,而最优匹配算法是选择再加进一个X的非饱和点,硬着头皮继续算

最优匹配算法

  • 针对边赋权完全二部图,求出具有最大权值的完美匹配
  • Kn,n有n!个完美匹配
  • 可行顶点标号

    • 边有权,顶点也弄个叫标号,和权区分
    • 每个边都要满足l(x)+l(y)≥w(xy)
    • 一种可行顶点标号的方式:(当然,你可以把每个顶点标号超大,可行,但没实际意义)

      • l(x)=max w(xy) 若x∈X
      • l(y)=0,若y∈Y
  • 相等子图

    • l是赋权完全二部图G=(X,Y)的可行顶点标号,令:El={xy∈E(G)|l(x)+l(y)=w(xy)},称Gl=G[El]为G的对应于l的相等子图

      • 即,可行顶点标号条件满足相等的边构建的子图为相等子图
    • l为赋权完全二部图G的可行顶点标号,若相等子图Gl有完美匹配M‘,则M’是G的最优匹配

      • 这就用到了匈牙利算法
  • 问题出现在

    • 对于不同的l,Gl不一定都有完美匹配,所以如何找到含有完美匹配的Gl才是重点
    • kuhn

      • 如果X是M饱和的,则M是最优匹配
      • 否则,令u是一个M非饱和点,当NGi(S)=T时,加进来新的边使得u能够饱和
      • 计算:al=min{l(x)+l(y)-w(xy)}

        • 这里的x∈S,y不∈T
        • al>0
        • 把和S有关的非T有关的边放进来
      • 然后针对S和T的l,S的-al,T的加上al,其他不变

        • 加的时候是v∈S和T
        • 这样对于不属于T的,因为S已经-al,所以总体-了al,对于属于T的,一个加al,一个减al,相当于没变
      • 之后在新的标号下重新寻找完美匹配

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值