【本文思路】
整理自 CDQ 巨佬的弦图与区间图,具体内容:点击这里
【概述】
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 最大团,记作 w(G)
- 用最少的颜色个数给点染色且任意两点相邻点颜色不同,最少的颜色个数称最小染色数,记作 λ(G)
- 当 G′ 中所有点不相邻,最大点集最大的图 G′ 为图 G 的最大独立集,记作 α(G)
- 当用个数最少的团覆盖图 G 所有的点时,称为最小团覆盖,记作 χ(G)
- 若一个图的每一诱导子图均满足:最大团 w(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} 的诱导子图中为一个单纯点,则称该序列为完美消除序列
弦图既是完美图,又是伴完美图,因此有:
- 在弦图中,有:最大团数 w(G) = 最小染色数 λ(G)
- 在弦图中,有:最大独立集 α(G) = 最小团覆盖 χ(G)
3.区间图
当给定一些区间,用每个顶点表示一个区间,若两个区间的交集非空,则代表两区间的点间存在一条边,若干区间的相交图为一个区间图
区间图一定是弦图,因此,某些区间问题可以利用弦图的算法来解决。
【弦图】
在弦图中,使用最多的是 MCS 算法,其可用于弦图的判定、求弦图的最大团、最小着色、最大独立集、最小团覆盖等,LexBFS 算法一般用于弦图的判定。
1.弦图判定
若一个无向图是弦图,则其仅有一个完美消除序列,因此,弦图是否存在与完美消除序列是否存在是等价的,故而可以从完美消除序列的角度上去进行弦图的判定
在判断弦图时,朴素的算法是:每次找一个单纯点 v,加入完美消除序列,然后将 v 及其相关边从图中删掉,重复以上过程,如果最后所有点都被删除,说明得到了完美消除序列,图是弦图,反之,则不是弦图
最朴素的弦图判定算法时间复杂度高达 O(n^4),因此在求完美序列时,常采用 LexBFS、MCS 两个时间复杂度为 O(n+m) 的算法。
在使用 MCS 算法进行弦图的判定时,其检验思想与 LexBFS 算法相同,均是利用桶排的思想,在更新一个点时,新建一个桶,且任何时候桶的数目不超过 n,通过维护桶中元素来进行判定。
2.最大团&最小着色
简单来说,最大团就是所有团中点数最多的那个,最小染色数就是用最少的染色给图染色使得任意相邻两点颜色不同的颜色数
在弦图中,最大团数 w(G) = 最小染色数 λ(G)
在跑完 MCS 算法后,求取最大的 label[i]+1 即为答案
3.最大独立集&最小团覆盖
简单来说,最大独立集就是选取尽量多的点,使得所有点两两不相邻;最小团覆盖是用最少个数的团覆盖住所有的点
在弦图中,有:最大独立集 α(G) = 最小团覆盖 χ(G)
在跑完 MCS 算法后,在完美消除序列上从前向后贪心取点即可