(重发下这篇原发于 2013-03-07 的网易博客)
话说从前有个弦图……
弦是环上连接两个不相邻的点的边。
任意一个长度大于3的环上一定有一条弦。
弦图的诱导子图都是弦图。
从前有个单纯点……
一个结点v和与v相邻的结点形成的诱导子图为一个团,则v是单纯点。
弦图至少有一个单纯点,不是完全图的弦图至少有两个不相邻的单纯点。
从前有个完美消除序列……
每次删一个单纯点,丢到序列中,就是完美消除序列。
一个图是弦图等价于它有完美消除序列。
从前有个完美消除序列构造算法……
有个label数组
每次选label最大的丢到完美消除序列中,把与它相邻的结点v的label都+1
用桶来维护就是O(n + m)
从前有个完美消除序列判定算法……
从后往前扫,设当前考虑的结点v,相邻且在v之后的结点依次是u1, u2, u3, ... uk
u1是最靠前的那个。
判断u1是否和u2, u3, ... uk是否相邻就行了。
从前有个弦图的极大团……
设p(v)是v在完美消除序列中的位置。
N(v) = {u | u与v相邻 且 p(u) > p(v)}
则团一定是v union N(v)的形式。
从前有个弦图的极大团计数算法……
即对于每个v判断v union N(v)是否是极大团。
设next(v)是与v相邻的,在v之后的,最前面的结点。
next(w) = v 且 |N(v)| + 1 <= |N(w)|,则v不是极大团。
(重发下这篇原发于 2013-03-07 的网易博客)
从前有个弦图的最小染色算法……
对完美消除序列从后往前扫,贪心染色。
从前有个弦图的最大点独立集算法……
对完美消除序列从前往后扫,能选就选。
从前有个弦图的最小团覆盖算法……
就是最大点独立集带上它的N集合。
从前有个弦图什么都是相等的……
最大团 = 最小染色
最大点独立集 = 最小团覆盖
从前有个vfk……
他不会证大部分上面的结论,于是贴出来时常看看。
临表涕零,不知所云。