特殊图:弦图、子树图、区间图

弦图是一类特殊的图。

【定义】

  1. 弦:类比圆上的弦。在一个 4 阶的简单环中,一条边如果连接了两个不相邻的点,就称作一条弦。

  2. 诱导子图:一张图 G 对于一个点集 SV 的诱导子图,就是取出 S 中所有点和 E 中连接 S 中点的边构成的子图。

  3. 弦图:图中任意 4 的环都有弦。
    等价定义:任意诱导子图非 k4 阶环。

    一个简单的性质:弦图的任意诱导子图都是弦图。

  4. 邻域。一个点 x 的邻域用 N(x) 表示,指所有与 x 相邻的点。

  5. 单纯点:x 是单纯点 GN(x) 的诱导子图为团。

  6. 完美消去序列(缩写 PEO):是一个点的排列 v1vn,满足 vi{vivn} 的诱导子图里是单纯点。

  7. 点割集。这是定义在一张图 G 和两个点 u,v 上的概念。对于一个点集 A,若 Au,v 的点割集,当且仅当 GVA 的诱导子图中 u,v 不连通。显然 u,v 相邻时没有点割集。

【一个重要定理】

G 是弦图 G 有 PEO。

证明:

  1. 先证明如果 G 非弦图就没有 PEO。( 的逆否命题)

    G 非弦图,必然存在一个诱导子图是 4 阶环。假设有 PEO,取环上在 PEO 中排序最靠前的点 xx 在对应诱导子图里不是单纯点,矛盾。所以不存在 PEO。

  2. 再证明若 G 是弦图就有 PEO。考虑一个引理。

    引理:弦图必有单纯点。

    如果引理得证,那么每次取 G 的一个单纯点,不断删除。注意 G 的诱导子图也是弦图。那么定理得证。

    接下来转证引理。我们证明一个加强版本:

    引理*:弦图必有单纯点;若是非完全图的弦图,必有两个不相邻的单纯点。

    然后我们有一个观察。

    观察:弦图 Gu,v极小点割集 A 是团。

    极小就是 A 的子集都不是点割集。

    证明一下。

    VA 的诱导子图里 u,v 分处两个连通分量 V1,V2xAN(x)V1,V2 都有交。否则 A 不极小。

    然后反证法,假设 A 中不两两有边。考虑 A 中不相邻的两点 x,y 的最短路。记在最短路中,xV1x1 相邻,yV1y1 相邻;V2 中也有 x2,y2x,y 分别相邻。(这里 x1,y1 是否相同不重要)

    因为是最短路,所以 xx1(y1)yy2(x2)x 这个环里面肯定没有弦,否则可以更短;然而这就得出一个至少四条边的无弦的环。而 G 是弦图,矛盾。所以 A 必两两有边,即 A 是团。

    引理*:弦图必有单纯点;若是非完全图的弦图,必有两个不相邻的单纯点。

    然后用这个观察证明加强引理。采用归纳法,显然 n=1 的加强引理成立。

    对于 n>1 的弦图 G,若 G 是完全图,显然;若 G 不连通,肯定能在至少两个连通块里归纳下去,必有至少两个不相邻的单纯点。

    G 连通且非完全图,取点 u,v 不相邻和 Au,v 的一个极小点割集。类似记 u,vV1,V2 里。因为 V1,V2 不连通,如果我们能各自找出一个单纯点,可以得证;而由对称性,只需证明 V1 有单纯点即可。

    1. V1A 是团。显然 V1 中任一点的邻域都是团,都是单纯点。

    2. 否则由归纳假设,V1A 里有两个不相邻的单纯点。因为 A 是极小点割集,是一个团,不可能两个单纯点都在 A 且不相邻;所以 V1 中至少有一个单纯点。

    证毕。

于是定理完成证明。

【算法】

【求 PEO:LEX-BFS 算法】

字典序-广搜算法。可以在线性时间里求出一个序列 P。如果 G 是弦图,求出的是一个 PEO。(我们后面讲到线性判定 PEO 的算法,搭配使用)

定义一个点的 pred 为所有已访问的邻居的标号构成的集合。算法开始的时候,任取一个点标号 n,直到标完 1 算法结束。

一句话:每次从所有未访问的点中取 pred 最大的,标下一个号。

怎么比较 pred?先比最大的元素,大的大;相同则比次大,次次大 …… 都相同,则 size 大的大。

每个点的标号就是在答案序列里的位置。


先说怎么实现。

用一个链表维护。给每个结点除了前驱后继,额外记录一个 idid 相同的是同一个 pred;然后越往后继方向走,pred 就越小。

每次取最靠前的点,枚举其邻点。如果这个邻点是这个邻点 id 中第一个被访问到的,开一个新的 id,然后让旧 id 赋值为新 id,再把它提到旧 id 那一段最前面;如果这个邻点的 id 新建过了,让它接到最近结点的后面。


证明这个算法在弦图一定能求出一个 PEO。

反证法。考虑得出的序列 p。如果不正确,必然存在 i<i1<i2(这里的 <p 中靠前),且 i1,i2N(i)i1,i2 无边。

因为 i<i1,则 i1 更早访问;而 ipredi2i1pred 没有,所以 i1 一定有 i3>i2i,i3 无边,才能比 i 更早搜到。

如果 i2,i3 有边,i,i1,i2,i3 构成无弦四元环,非弦图。

否则对比 i1,i2i2 更靠后但是 i1i3。所以 i2 必有 i4i1,i4 无边。若 i4i3 有边,构成无弦五元环了。

循环往复,但是点个数有限,矛盾。

【线性判定 PEO】

朴素算法可以枚举序列每个点,再枚举所有在它后面的邻点判断是否是团。复杂度 O(di2)

但是发现对于点 x,只需要找到在它后面的第一个邻点 nei,然后判断 nei 是否与 nei 之后的 x 的邻点有边即可;因为 nei 之后的 x 的邻点的内部已经在 nei 的时候判断了是不是团了。复杂度 O(di)

【应用】

弦图的最大团、最小染色数(给点染色,相邻不同色)、最大独立集、最小团覆盖都能线性求。

注意在一般图里,最大团 最小染色数,最大独立集 最小团覆盖。而在弦图里,这两个不等式都取到等号。

【子树图、区间图】

先说子树图。有无根树 TTn 个连通分量(CC),然后可以以此构造出子树图 G:有 n 个点,若 (i,j) 有边,则 Ti,j 两个 CC 有交。

区间图:n 个区间,有交就连边。可以发现区间图是子树图的特殊情况。

【与弦图的关系】

任何子树图都是弦图,任何弦图都可以表示为一个子树图。

证明:咕咕

posted @   FLY_lai  阅读(293)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示