【概述】
1.基本概念
设有图 G=(V,E),则:
- 当 V'∈V,E'∈E 时,图 G'=(V',E') 是图 G 的子图
- 当 V'∈V,E'={∀x∈V',∀y∈V',(x,y)∈E'} 时,G'(V',E') 是图 G 的诱导子图
- 当 G′ 是图 G 的子图,且 G′ 是关于 V′ 的完全图时,子图 G' 为图 G 的团
- 当 G' 是团,且不是其他团的子集时,G' 为图 G 的极大团
- 当 G' 是极大团时,且点数最多,G' 为图 G 最大团,记图 G 的最大团的点数为 w(G)
- 用最少的颜色个数给点染色且相邻点颜色不同,最少的颜色个数称最小染色,记色数为 λ(G)
- 当 G′ 中所有点不相邻,最大点集最大的图 G′ 为图 G 的最大独立集,记作 α(G)
- 当用个数最少的团覆盖图 G 所有的点时,称为最小团覆盖,记作 χ(G)
最大团中颜色必须不同,则有:最大团点数 w(G)<=最小染色数 λ(G)
每个团中最多取一个点,则有:最大独立集 α(G)<=最小团覆盖 χ(G)
2.弦图
- 将一个环中,不相邻的两个结点相连的边称为弦
- 当一张无向图中,任意一个大小超过 3 的环,都存在至少一条弦,那么这张无向图称为弦图,弦图的每一诱导子图一定是弦图,且弦图的任一诱导子图不同构于环图 Cn(n>3)
【弦图的判定】
设 N(v) 为点 v 相邻的点集,当 {v}+N(v) 的诱导子图为一个团时,称点 v 为单纯点,任何一个弦图都至少有一个单纯点,而不完全的弦图至少有两个不相邻的单纯点
一个点的序列 v1,v2,...,vn 满足 vi 在 {vi,vi+1,..,vn} 的诱导子图中为一个单纯点,则称该序列为完美消除序列
若一个无向图是弦图,则其仅有一个完美消除序列,因此,可以从完美消除序列的角度上去进行弦图的判定
在判断弦图时,朴素的算法是:每次找一个单纯点 v,加入完美消除序列,然后将 v 及其相关边从图中删掉,重复以上过程,如果最后所有点都被删除,说明得到了完美消除序列,图是弦图,反之,则不是弦图
最朴素的弦图判定算法时间复杂度高达 O(n^4),因此在求完美序列时,常采用以下两个时间复杂度为 O(n+m) 的算法:
- LexBFS 算法:点击这里
- MCS 算法:点击这里
【例题】
来源:https://blog.csdn.net/u011815404/article/details/99188055