![离散数学复习:二部图与匹配](/assets/imgs/bgs/25.png)
离散数学复习:二部图与匹配
离散数学复习:二部图与匹配
寄寄寄寄摆摆摆摆
二部图
二部图:定义
可以将顶点集划分为两个不相交的类别、每一条边的两个端点都在不同类别中的图。
完全二部图
来自不同类别的任意两个顶点之间均有边相连。
图中的匹配
- 匹配:一张图中互不相邻的边的集合,记为
M
。 - M-饱和点:
M
中各点的端点。
二部图中的完备匹配
定义:设G
为二部图且可被二部划分为<V1, V2>
, 若G
中的匹配M
能够饱和V1
中所有的顶点,则称M
是 V1
到V2
的 完备匹配`(不是完美匹配!)
注:完备匹配一定是最大匹配,但当且仅当|V1| = |V2|
时该匹配才能被称为完美匹配。
注2: 完备匹配不一定是稳定匹配,稳定匹配不一定是完备匹配!
Hall定理
设二部图G = <V1, V2, E>
, 则G
有从V1到V2的完备匹配当且仅当对于任意A ⊆ V1
, 有|N(A)|(A的相邻顶点数) ≥ |A|
.
证明:
必要性显然。
充分性:
- 当
|V1| == 1
时充分性显然成立。 - 假设当
|V1| ≤ k (k ≥ 1)
时充分性成立,现证明当|V1| == k + 1
时命题也成立。
分成两种情况证明。
(1). 对于
V1
的任意真子集A
,|N(A)| > |A|
:从
V1
中任取一个顶点v
, 从M(v)
中任取一个顶点w
;则有
v ∈ V1, w ∈ V2
.由归纳假设得,此时
V1 - {v} 到 V2 - {w}
构成一个完备匹配。可得上述完备匹配加上边
(v, w)
可以构成从V1
到V2
的完备匹配。
(2). 存在`V1`的一个**真**子集`A'`,`|N(A')| = |A'|`.记
B' = N(A')
。根据归纳假设,存在从
A'
到B'
的完备匹配。又因为假设,有|V2 - B'| ≥ |V1 - A'|
。即存在从
V1 - A'
到V2 - B'
的一个完备匹配。将以上两个匹配相合并,即可得到一个
V1
到V2
的完备匹配。
Hall定理:推论
正则图
正则图(regular graph)是指每个顶点都有相同数目的相邻顶点的图(亦即对于任意v∈G, N(v) ≡ k
), 称为k-正则图
.
特别的,阶(图中的点数)为K
的K-1 - 正则图
即为K-完全图
。
推论内容
设二部图G
是K-正则
的(k ≥ 1)
, 则G
有完美匹配。
证明
设
G = <A, B, E>
, 则有K|A| = K|B|
(每个点所连接的边数相同,但所有边均存在于两组点之间),因此|A|=|B|
.对于任意一集合
S ∈ A
,S
与N(S)
之间共有K|S|
条边;但与N(S)
相关的边共有K|N(S)|
条。因此有
K|N(S)| ≥ K|S|
(从S
连接到N(S)
的边包含在与N(S)
有关的边之中)。
因此,|N(S)| ≥ |S|
.由霍尔定理得,在
G
中存在从A
到B
的完备匹配。又因为|A| = |B|
,所以该匹配是完美匹配。
另一个推论(更一般的情况)
二部图G = <V1, V2, E>
, 若V1
中每个顶点至少关联t
条边,而若V2
中每个顶点至多关联t
条边,则G
中存在V1
到V2
的完备匹配。
交错路径与可增广路径
设M
是G
中的一个匹配。若G
的一条路径P
中,属于M
的边和不属于M
的边交替出现,则称P
为M-交错路径
;
若P
的起点和终点都是M-非饱和点
,则称P
是可增广交错路径
。
Berge定理
M
是G
的最大匹配,当且仅当G
中不存在M-可增广交错路径
。
证明参见: Proof of Berge's Theorem
稳定匹配问题
偏好集
G
上的一个偏好集是一族线性序(≤v), v∈V
;其中, ≤v
是E(v)
上的线性序(对v
相连的边进行排序)。
稳定匹配
G
上的匹配M
是稳定的,当且仅当对于M
中任意一条边e
, 存在边f ∈ E - M
, 满足:
e
和f
有公共端点e ≤v f
.
稳定匹配定理
对于任意给定的一个偏好集,图G
有一个稳定的匹配(并不一定是完备匹配)。
Gale-Sharpley算法
Wikipedia - Gale-Sharpley Algorithm
以下的讨论均假设有一二部图G = <V1, V2, E>
, 已经形成的匹配名为M
。
定义:V1
中某点u
对匹配的 “满意性”:若存在V2
中匹配之外的一点w
, 有(u, w) ≤u (u, N(u))
.
定义2:V2
中某点v
是否可以接受与V1
中的u
匹配: 若满足(u, v) ∈ E - M
, 且若存在(u', v) ∈ M
, 则有(u', v) <v (u, v)
.
算法过程
- 选择
V1
中的一个尚未配对的顶点u
, 在边集{(u, v) | u 可以被 v 接受}
中按照线性序≤u
找出符合条件的最大元,并将其添加至M
中。同时,删除M
中以v
为端点的边。 - 循环(1), 直至对于
V1
中的任意未配对顶点u
,边集{(u, v) | u 可以被 v 接受}
为空则结束算法。
正确性分析:当算法结束时,
V1
中所有的未配对顶点均没有可以被接受的对象;V1
中所有的顶点都对该匹配满意。- 算法停止时
V2
的匹配情况比其他匹配情况更优:算法进行过程中,V2
中的点只会接受比当前匹配好的匹配(“可被接受”的定义)。 M
是稳定的:
对于任意的
e ∈ E - M
, 均存在f ∈ M
满足:
e
和f
有公共端点;e
<vf
.