弦图
图的基本概念
图G = (V, E)
子图
G′=(V′,E′),V′⊆V,E′⊆EG′=(V′,E′),V′⊆V,E′⊆E为图G的子图。
诱导子图
G′=(V′,E′),V′⊆V,E′={(u,v)|u,v∈V′,(u,v)∈E}G′=(V′,E′),V′⊆V,E′={(u,v)|u,v∈V′,(u,v)∈E}称为图G的诱导子图。
团
图G中的一个子图G‘=(V′,E′)G‘=(V′,E′), G’为关于V’的完全图。
极大团
一个团是极大团当它不是其它团的子集。
最大团 ω(G)ω(G)团数
点数最多的团
最小染色 χ(G)χ(G)色数
用最少的颜色给点染色使相邻点颜色不同。
最大独立集 α(G)α(G)集合个数
最大的一个点的子集使任何两个点不相邻
最小团覆盖 κ(G)κ(G)最少团数
用最少个数的团覆盖所有的点。
ω(G)≤χ(G)ω(G)≤χ(G)
α(G)≤κ(G)α(G)≤κ(G)
弦
连接环中不相邻的两个点的边。
弦图
一个无向图当图中任意长度大于3的环都至少有一个弦的图。
弦图的每一个诱导子图一定是弦图
单纯点
设N(v)表示与点v相邻的点集。一个点称为单纯点当{v} + N(v)的诱导子图为一个团。
任何一个弦图都至少有一个单纯点,不是完全图的弦图至少有两个不相邻的单纯点。
完美消除序列
一个点的序列(每个点出现且恰好出现一次)v1,v2,⋯,vnv1,v2,⋯,vn满足vivi在{vi,vi+1,⋯,vn}{vi,vi+1,⋯,vn}的诱导子图中为一个单纯点。
定理:一个无向图是弦图当且仅当它有一个完美消除序列。
最大势算法(MCS)
从n到1的顺序依次给点标号(标号为i的点出现在完美消除序列的第i个)
label[i]表示第i个点与多少个已标号的点相邻,每次选择labeli]最大的未标号的点进行标号。
判断一个序列是否为完美消除序列
算法过程
设{vi+1,⋯,vn}{vi+1,⋯,vn}中所有与vivi相邻的点依次为{vj1,⋯,vjk}{vj1,⋯,vjk}。
只需判断vj1vj1是否与vj2,⋯,vjkvj2,⋯,vjk相邻即可。
时间复杂度:O(m + n)。
弦图判断问题可以在O(m + n)的时间内解决。
弦图最小染色
算法过程
用MSC算法求出弦图的完美消除序列。
完美消除序列可以从后往前依次给每个点染色,给每个点染上可以染的最小颜色。