图论-05

05-匹配
注:所写主要参考为许胤龙《图论导引》,因觉得此书所写不合理,故附参考张先迪《图论及其应用》

两个例子

  • 某公司有员工 x 1 , x 2 , ⋯   , x m x_1,x_2,\cdots,x_m x1,x2,,xm,有一些工作 y 1 , y 2 , ⋯   , y n y_1,y_2,\cdots,y_n y1,y2,,yn需要分配给这些员工。每个人只做一份工作,每一份工作也只能一个人来做。给出一个合理的工作分配方案
  • 设有一个残缺的 m ∗ n m*n mn键盘,我们用 1 ∗ 2 1*2 12的多米诺骨牌来覆盖,要求:骨牌不能覆盖残缺位置;骨牌间不能有重叠。问:能否将所有非残缺的位置都覆盖到?若不能,最多能覆盖多少张牌?
  • 它们都基于相同的图论模型————匹配

匹配的定义

  • 匹配:设 M M M是图 G G G的边子集,且 M M M的任意两条边在 G G G中都不相邻,则称 M M M G G G的一个匹配
  • 相配/许配 M M M中同一条边的两个端点称为在 M M M相配 M M M中的端点称为被 M M M许配
  • 完备匹配:若 G G G中所有的顶点都被 M M M许配,则称 M M M G G G完备匹配
  • 最大匹配 G G G中边数最多的匹配称为 G G G最大匹配
  • 匹配数:若 M M M G G G的最大匹配,则称 M M M中的边数 ∣ M ∣ |M| M G G G匹配数,记为 α ( G ) \alpha(G) α(G)
  • 交错轨道:设 M M M G G G的匹配, P = v 0 e 1 v 1 e 2 ⋯ e k v k P=v_0e_1v_1e_2\cdots e_kv_k P=v0e1v1e2ekvk G G G中的一条轨道,若 e 1 , e 2 , ⋯   , e k e_1,e_2,\cdots,e_k e1,e2,,ek M M M E ( G ) − M E(G)-M E(G)M中交替出现,则称 P P P G G G中关于 M M M交错轨道
  • 可增广轨道:设 P = v 0 e 1 v 1 e 2 ⋯ e 2 k + 1 v 2 k + 1 P=v_0e_1v_1e_2\cdots e_{2k+1}v_{2k+1} P=v0e1v1e2e2k+1v2k+1 G G G中关于 M M M的交错轨道,若 e 1 , e 3 , ⋯   , e 2 k + 1 ∉ M , e 2 , ⋯   , e 2 k ∈ M e_1,e_3,\cdots,e_{2k+1}\notin M,e_2,\cdots,e_{2k}\in M e1,e3,,e2k+1/M,e2,,e2kM,且 v 0 v_0 v0 v 2 k + 1 没 有 被 v_{2k+1}没有被 v2k+1M 许 配 , 则 称 许配,则称 P 是 是 G 中 关 于 中关于 M$的可增广轨道
  • 引理 M M M G G G的最大匹配,当且仅当 G G G中没有关于 M M M的可增广轨道

二分图中的匹配

  • Hall定理:设 G G G是二分图,其定点集合划分为 V ( G ) = X ∪ Y , X ∩ Y = ∅ V(G)=X\cup Y,X\cap Y =\varnothing V(G)=XY,XY=,则 G G G中存在将 X X X中顶点都许配的匹配,当且仅当任给 S ⊆ X S\subseteq X SX,都有 ∣ N ( S ) ∣ ≥ ∣ S ∣ |N(S)|\geq|S| N(S)S,其中, N ( S ) N(S) N(S)是与 S S S中顶点相邻的顶点构成的集合
    • 推论:对于正整数 k > 0 k>0 k>0 k k k次正则二分图 G G G有完备匹配
  • 覆盖:设 G G G是一个图, C C C是其顶点集合的子集,即 C ⊆ V ( G ) C\subseteq V(G) CV(G),若 G G G中任意一条边都有一个端点属于 C C C,则称 C C C G G G的一个覆盖
  • 极小覆盖:若 C C C G G G的覆盖,但 C C C的任何真子集都不是 G G G的覆盖,则称 C C C G G G极小覆盖
  • 最小覆盖:若 C ∗ C^* C G G G的覆盖,且不存在 G G G的覆盖 C C C,使得 ∣ C ∣ < ∣ C ∗ ∣ |C|< |C^*| C<C,则称 C ∗ C^* C G G G最小覆盖,且称 ∣ C ∗ ∣ |C^*| C G G G覆盖数,记作 β ( G ) \beta(G) β(G)
  • 引理:假设 C C C是图 G G G的覆盖, M M M是图 G G G的匹配,则 ∣ C ∣ ≥ ∣ M ∣ |C|\geq|M| CM
  • 引理:若图 G G G存在覆盖 C C C和匹配 M M M,使得 ∣ C ∣ = ∣ M ∣ |C|=|M| C=M,则 C C C是最小覆盖, M M M是最大匹配
  • Konig-Egervary定理:设 G G G是二分图,则 G G G的匹配数等于其覆盖数,即 α ( G ) = β ( G ) \alpha(G)=\beta(G) α(G)=β(G)
  • 本节证明二分图相关内容常用:设 U U U X X X中没有被 M M M许配的顶点集合,令 Z = { v ∣ v ∈ V ( G ) , 且 v 与 U 中 某 个 顶 点 之 间 存 在 交 错 轨 道 } , S = X ∩ Z , T = Y ∩ Z Z=\{v|v\in V(G),且v与U中某个顶点之间存在交错轨道\},S=X\cap Z,T=Y\cap Z Z={vvV(G)vU},S=XZ,T=YZ

任意图的完备匹配

  • 奇片/偶片:设 G ′ G' G G G G的连通片,若 v ( G ′ ) v(G') v(G)是奇数,则称 G ′ G' G G G G奇片,否则称之为偶片。用 o ( G ) o(G) o(G)表示 G G G中奇片的个数
  • Tutte定理 G G G有完备匹配,当且仅当任给 S ⊆ V ( G ) S\subseteq V(G) SV(G),都有 o ( G − S ) ≤ ∣ S ∣ o(G-S)\leq|S| o(GS)S
  • Petersen定理:无桥的三次正则图有完备匹配

最大匹配算法

  • u-交错树:假设 G G G是一个图, M M M G G G的一个匹配, u u u G G G的一个没有被 M M M许配的顶点。对于 G G G的子图 T T T,如果 T T T是树, u ∈ V ( T ) u\in V(T) uV(T),且满足任给 v ∈ V ( T ) v\in V(T) vV(T) T T T中从 u u u v v v的轨道是交错轨道,则称 T T T G G G中关于 M M Mu-交错树。若除了 u u u之外,其余顶点被M许配,则称 T T T被M许配的u-交错树
  • 交错树算法
    • 输入:二分图 G = ( X , E , Y ) G=(X,E,Y) G=(X,E,Y) G G G的匹配 M M M G G G中没有被 M M M许配的顶点 u u u,不妨假设 u ∈ X u\in X uX
    • 输出: G G G中关于 M M M的u-交错树 T u = ( U , E ′ , V ) T_u=(U,E',V) Tu=(U,E,V)
    • 初始化: U = { u } , E ′ = ∅ , V = ∅ , l p r e ( u ) = ∗ , v ≠ u , l p r e ( v ) = n u l l , l v i s i t e d ( v ) = 0 U=\{u\},E'=\varnothing,V=\varnothing,l_{pre}(u)=*,v\neq u,l_{pre}(v)=null,l_{visited}(v)=0 U={u},E=,V=,lpre(u)=,v=u,lpre(v)=null,lvisited(v)=0
    • 找可增长轨道:若存在 x ∈ X , l p r e ( x ) ≠ n u l l , l v i s i t e d ( x ) = 0 x\in X,l_{pre}(x)\neq null,l_{visited}(x)=0 xX,lpre(x)=null,lvisited(x)=0,则对 Y Y Y中所有满足 x y ∈ E − M xy\in E-M xyEM l p r e ( y ) = n u l l l_{pre}(y)=null lpre(y)=null的顶点 y y y,令 l p r e ( y ) = x ; E ′ ← E ′ ∪ x y ; V ← V ∪ { y } l_{pre}(y)=x;E'\leftarrow E'\cup{xy};V\leftarrow V\cup\{y\} lpre(y)=x;EExy;VV{y},最后令 l v i s i t e d ( x ) = 1 l_{visited}(x)=1 lvisited(x)=1
    • 构造交错树:若存在 y ∈ Y , l p r e ( y ) ≠ n u l l , l v i s i t e d ( y ) = 0 y\in Y,l_{pre}(y)\neq null,l_{visited}(y)=0 yY,lpre(y)=null,lvisited(y)=0,则对 X X X中所有满足 x y ∈ M xy\in M xyM l p r e ( x ) = n u l l l_{pre}(x)=null lpre(x)=null的顶点 x x x,令 l p r e ( x ) = y ; E ′ ← E ′ ∪ x y ; U ← V ∪ { x } l_{pre}(x)=y;E'\leftarrow E'\cup{xy};U\leftarrow V\cup\{x\} lpre(x)=y;EExy;UV{x},最后令 l v i s i t e d ( y ) = 1 l_{visited}(y)=1 lvisited(y)=1
    • 算法结束:找到可增长轨道立马结束,或没有新顶点加入U
  • 引理:设 M M M是二分图 G G G的一个匹配, u u u G G G中的一个匹配, u u u G G G中一个未被 M M M许配的顶点,按照交错树算法得到的一个u-交错树 T u = ( u , E ′ , Y ) T_u=(u,E',Y) Tu=(u,E,Y)。若 T T T中仅有一个顶点 u u u未被 M M M许配,在 G G G中不存在含 T T T中任何顶点的可增长轨道。
  • 匈牙利算法
    • 输入:二分图 G = ( X , E , Y ) G=(X,E,Y) G=(X,E,Y)
    • 输出: G G G的最大匹配 M M M
    • 初始化: G G G的一个初始匹配 M M M,如 M = ∅ , G ′ ← G M=\varnothing,G'\leftarrow G M=,GG
    • 找交错树: G G G中没有被 M M M许配的顶点 u u u,搜索u-交错树 T u T_u Tu,若找到可增长轨道,设为 P P P,令 M ← M ⊕ E ( P ) M\leftarrow M\oplus E(P) MME(P),否则 G ′ ← G ′ − V ( T u ) G'\leftarrow G'-V(T_u) GGV(Tu)
    • 算法结束 G ′ G' G为空,或 G ′ G' G中顶点都被 M M M许配,否则循环上一步
  • 定理:匈牙利算法得到的 M M M G G G的最大匹配

最佳匹配算法

  • 最佳匹配 M M M G G G的一个匹配, M M M的权定义为 w ( M ) = ∑ x , y ∈ M w ( x i y j ) w(M)=\sum_{x,y\in M}w(x_iy_j) w(M)=x,yMw(xiyj) G G G中权值最大的匹配,称之为最佳匹配
  • 可行顶标:给定边权二分图 G = ( X , Δ , Y ) G=(X,\Delta,Y) G=(X,Δ,Y),带有权值 w : Δ → R w:\Delta\rightarrow R w:ΔR,定义 V ( G ) = X ∪ Y V(G)=X\cup Y V(G)=XY上的函数 l : X ∪ Y → R l:X\cup Y\rightarrow R l:XYR。若 l l l满足:任给 x ∈ X , y ∈ Y x\in X,y\in Y xX,yY,都有 l ( x ) + l ( y ) ≥ w ( x y ) l(x)+l(y)\geq w(xy) l(x)+l(y)w(xy),则称 l l l为一个可行顶标
  • 相等子图:给定边权二分图 G = ( X , Δ , Y ) G=(X,\Delta,Y) G=(X,Δ,Y),带有权值 w : Δ → R w:\Delta\rightarrow R w:ΔR,以及可行顶标 l : X ∪ Y → R l:X\cup Y\rightarrow R l:XYR。定义 G G G关于 l l l相等子图 G l G_l Gl
    • V ( G l ) = V ( G ) V(G_l)=V(G) V(Gl)=V(G)
    • E ( G l ) = { x i y j ∣ l ( x i ) + l ( y j ) = w ( x i y j ) } E(G_l)=\{x_iy_j|l(x_i)+l(y_j)=w(x_iy_j)\} E(Gl)={xiyjl(xi)+l(yj)=w(xiyj)}
  • 定理:给定边权二分图 G = ( X , Δ , Y ) G=(X,\Delta,Y) G=(X,Δ,Y),带有权值 w : Δ → R w:\Delta\rightarrow R w:ΔR,以及可行顶标 l l l。若相等子图 G l G_l Gl有完备匹配,设为 M M M,则 M M M G G G的最佳匹配。
  • Kuhn-Munkreas算法
    • 输入:二分图 G = ( X , Δ , Y ) , ∣ X ∣ = ∣ Y ∣ G=(X,\Delta,Y),|X|=|Y| G=(X,Δ,Y),X=Y,边权函数 w : Δ → R w:\Delta\rightarrow R w:ΔR
    • 输出: G G G的最佳匹配 M M M
    • 初始化:任选 G G G的一个可行顶标 l l l,构造相等子图 G l G_l Gl
    • 找最大匹配:用匈牙利算法求 G l G_l Gl的最大匹配,设为 M M M,若 M M M G l G_l Gl的完备匹配, M M M G G G的最佳匹配,退出。否则,下一步
    • 构造新的可行顶标: u u u G l G_l Gl中未被 M M M许配的顶点,不妨设 u ∈ X u\in X uX。令 Z = { v ∣ v ∈ V ( G l ) , 且 u , v 之 间 存 在 交 错 轨 道 } , S = X ∩ Z , T = Y ∩ Z Z=\{v|v\in V(G_l),且u,v之间存在交错轨道\},S=X\cap Z,T=Y\cap Z Z={vvV(Gl),u,v}S=XZ,T=YZ,计算 α ( l ) = min ⁡ x i ∈ S , y j ∉ T { l ( x i ) + l ( y j ) − w ( x i y j ) } \alpha(l)=\min_{x_i\in S,y_j\notin T}\{l(x_i)+l(y_j)-w(x_iy_j)\} α(l)=minxiS,yj/T{l(xi)+l(yj)w(xiyj)} l ‾ = { l ( v ) − α l , v ∈ S l ( v ) + α l , v ∈ T l ( v ) 其他 \overline{l}=\begin{cases} l(v)-\alpha_{l},& \text v\in S \\ l(v)+\alpha_{l},& \text v\in T \\ l(v) & \text{其他} \end{cases} l=l(v)αl,l(v)+αl,l(v)vSvT其他
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值