弦图

弦图

考试正好有一道题目可以用弦图的方法来做
所以就正好看一下\(CDQ\)的论文
论文戳我看
把中间的一些定义啥的直接蒯(手打)下来了


子图:

从一个图中随意选一些点,一些边组成的图

诱导子图:

从一个图的点集中选择一个子集,以及链接了子集中点的所有的边,
组成的子图

团:

一个子图,且是完全图

极大团:

不是别的团的子图的团

最大团:

点数最多的团


最小染色:

用最少的颜色给图染色,相邻的点颜色不同

最大独立集:

选出最多的点,使得相邻点不同时被选

最小团覆盖:

用最少的团覆盖整个图

其中:

\(团数<=色数\)
\(最大独立集数<=最小团覆盖数\)


弦:

连接环中两个不相邻的点的边

弦图:

一个无向图中,任意一个大小超过\(3\)的环都至少有一个弦
弦图的诱导子图一定是弦图

单纯点:

\(N(v)\)表示与\(v\)相邻的点集。一个点是单纯点,当且仅当\(\{v\}+N(v)\)的诱导子图是一个团

引理:

任何一个弦图都至少有一个单纯点,不是完全图的弦图至少有两个不相邻的单纯点


完美消除序列:

一个点的序列\(v_1,v_2,...v_n\)中(每个点恰好出现一次)
满足\(v_i\)\(\{v_i,v_{i+1},...,v_n\}\)的诱导子图中是单纯点

定理:

一个图是弦图,当且仅当它有一个完美消除序列


求完美消除序列

朴素算法:

每次找一个单纯点\(v\),加入到完美消除序列中
\(v\)与其相连的边都删去
重复上面过程,如果所有点都被删除则是弦图
时间复杂度\(O(n^4)\)

字典序广度优先搜索(Lex BFS )

直接去论文上看吧。。

最大势算法

\(n...1\)的顺序给点标号(标号为\(i\)的点出现在完美消除序列的第\(i\)个)
\(label[i]\)表示与多少个已经标号的点相邻
每次找\(label\)最大的点标号


判断一个序列是否为完美消除序列

朴素算法

依次判断即可
复杂度\(O(nm)\)

优化算法

设在\(v_i,v_{i+1}..v_n\)中,与\(v_i\)相邻的点依次为\(v_{j1}...v_{jk}\)
只需要判断\(v_{j1}\)是否与其他点相邻即可
复杂度\(O(n+m)\)


综上:
弦图判定问题可以在\(O(n+m)\)时间里面解决


以下的问题都在弦图中

用最少的颜色给所有点染色,使得相邻点不同色

从完美消除序列逆序来
每次给一个点染色可以染的最小的颜色
从中得出结论:团数=颜色数

求最小独立集

完美消除序列中,能选就选
结论:最大独立集=最小团覆盖

posted @ 2018-01-24 22:28  小蒟蒻yyb  阅读(923)  评论(2编辑  收藏  举报