CDQ的论文
以下纯属复制论文,避免以后再看一次
一些概念
子图
点集和边集都是原图的子集的图
诱导子图
是子图,不含其它边
团
子图,并且是完全图
极大团
不是任何一个团的子图
最大团
点数最多的团
最小染色
用最少的颜色染给每个点,使相邻点不同色
最大独立集
不相邻的最大点集
最小团覆盖
最少的团覆盖所有点
显然的结论
团数
≤
≤
色数
最大独立集
≤
≤
最小团覆盖
弦
连接环内两个不相邻的点的边
弦图
任意大于三的环都至少有一条弦
结论1
弦图的诱导子图是弦图
单纯点
设
N(v)
N
(
v
)
为
v
v
相邻的点集
为单纯点当且仅当
v+N(v)
v
+
N
(
v
)
的诱导子图为团
结论2
任何一个弦图至少一个单纯点
不是完全图的弦图至少两个
完美消除序列
每个点正好出现一次的序列
v1,v2,...,vn
v
1
,
v
2
,
.
.
.
,
v
n
满足
vi
v
i
在
vi,vi+1,...,vn
v
i
,
v
i
+
1
,
.
.
.
,
v
n
的诱导子图中为单纯点
结论3
一个无向图为弦图当且仅当它有一个完美消除序列
证明
略看论文
结论5
团数
=
=
色数
最大独立集最小团覆盖
证明
略看论文
求解
求完美消除序列
不想学什么 LexBFS L e x B F S 的方法,自己看论文
还是
MCS
M
C
S
最大势算法好:
按
n...1
n
.
.
.1
的顺序给点标号
标号为
i
i
的点为完美消除序列的第个
设
label[i]
l
a
b
e
l
[
i
]
表示与多少个已经标号的点相邻
每次找
label
l
a
b
e
l
最大的点标号
复杂度
O(n+m)
O
(
n
+
m
)
判断一个序列是否为完美消除序列
设在
vi,vi+1..vn
v
i
,
v
i
+
1
.
.
v
n
中,与
vi
v
i
相邻的点依次为
vj1...vjk
v
j
1
.
.
.
v
j
k
只需要判断
vj1
v
j
1
是否与
vj2..vjk
v
j
2
.
.
v
j
k
相邻即可
复杂度
O(n+m)
O
(
n
+
m
)
最少的颜色给所有点染色&团数
完美消除序列逆序,贪心
每次给一个点染色可以染的最小的颜色
最大独立集&最小团覆盖
完美消除序列中,贪心,能选就选