特殊图:弦图、子树图、区间图
弦图是一类特殊的图。
【定义】
-
弦:类比圆上的弦。在一个
阶的简单环中,一条边如果连接了两个不相邻的点,就称作一条弦。 -
诱导子图:一张图
对于一个点集 的诱导子图,就是取出 中所有点和 中连接 中点的边构成的子图。 -
弦图:图中任意
的环都有弦。
等价定义:任意诱导子图非 阶环。一个简单的性质:弦图的任意诱导子图都是弦图。
-
邻域。一个点
的邻域用 表示,指所有与 相邻的点。 -
单纯点:
是单纯点 对 的诱导子图为团。 -
完美消去序列(缩写 PEO):是一个点的排列
,满足 在 的诱导子图里是单纯点。 -
点割集。这是定义在一张图
和两个点 上的概念。对于一个点集 ,若 为 的点割集,当且仅当 对 的诱导子图中 不连通。显然 相邻时没有点割集。
【一个重要定理】
是弦图 有 PEO。
证明:
-
先证明如果
非弦图就没有 PEO。( 的逆否命题)若
非弦图,必然存在一个诱导子图是 阶环。假设有 PEO,取环上在 PEO 中排序最靠前的点 , 在对应诱导子图里不是单纯点,矛盾。所以不存在 PEO。 -
再证明若
是弦图就有 PEO。考虑一个引理。引理:弦图必有单纯点。
如果引理得证,那么每次取
的一个单纯点,不断删除。注意 的诱导子图也是弦图。那么定理得证。接下来转证引理。我们证明一个加强版本:
引理*:弦图必有单纯点;若是非完全图的弦图,必有两个不相邻的单纯点。
然后我们有一个观察。
观察:弦图
对 的极小点割集 是团。极小就是
的子集都不是点割集。证明一下。
设
的诱导子图里 分处两个连通分量 。 , 与 都有交。否则 不极小。然后反证法,假设
中不两两有边。考虑 中不相邻的两点 的最短路。记在最短路中, 与 中 相邻, 与 中 相邻; 中也有 与 分别相邻。(这里 是否相同不重要)因为是最短路,所以
这个环里面肯定没有弦,否则可以更短;然而这就得出一个至少四条边的无弦的环。而 是弦图,矛盾。所以 必两两有边,即 是团。引理*:弦图必有单纯点;若是非完全图的弦图,必有两个不相邻的单纯点。
然后用这个观察证明加强引理。采用归纳法,显然
的加强引理成立。对于
的弦图 ,若 是完全图,显然;若 不连通,肯定能在至少两个连通块里归纳下去,必有至少两个不相邻的单纯点。当
连通且非完全图,取点 不相邻和 为 的一个极小点割集。类似记 在 里。因为 不连通,如果我们能各自找出一个单纯点,可以得证;而由对称性,只需证明 有单纯点即可。-
若
是团。显然 中任一点的邻域都是团,都是单纯点。 -
否则由归纳假设,
里有两个不相邻的单纯点。因为 是极小点割集,是一个团,不可能两个单纯点都在 且不相邻;所以 中至少有一个单纯点。
证毕。
-
于是定理完成证明。
【算法】
【求 PEO:LEX-BFS 算法】
字典序-广搜算法。可以在线性时间里求出一个序列
定义一个点的
一句话:每次从所有未访问的点中取
怎么比较
每个点的标号就是在答案序列里的位置。
先说怎么实现。
用一个链表维护。给每个结点除了前驱后继,额外记录一个
每次取最靠前的点,枚举其邻点。如果这个邻点是这个邻点
证明这个算法在弦图一定能求出一个 PEO。
反证法。考虑得出的序列
因为
如果
否则对比
循环往复,但是点个数有限,矛盾。
【线性判定 PEO】
朴素算法可以枚举序列每个点,再枚举所有在它后面的邻点判断是否是团。复杂度
但是发现对于点
【应用】
弦图的最大团、最小染色数(给点染色,相邻不同色)、最大独立集、最小团覆盖都能线性求。
注意在一般图里,最大团
【子树图、区间图】
先说子树图。有无根树
区间图:
【与弦图的关系】
任何子树图都是弦图,任何弦图都可以表示为一个子树图。
证明:咕咕
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战