弦图 学习笔记

弦图 学习笔记

定义

弦图中任意 k4 阶环都有弦,等价于对于任意导出子图都不是 k4 阶环。

单纯点

单纯点的邻域是团。

完美消除序列(aka peo)

点的排列,使得 i,vi{vi,vi+1,...,vn} 的诱导子图中是单纯点。

点割集

(u,v) 的点割集是点集,使得删除点割集之后的诱导子图中 u,v 不连通。

性质

  1. 弦图的诱导子图是弦图(Lemma 1)。
  2. 弦图中 (u,v) 的极小点割集 A 是团(Lemma 2)。

证明:

设删去点割集之后 u,v 所在连通块是 V1,V2

观察:点割集中任意点与 V1,V2 有连边(否则可以删去此点)。

对于点割集中任意两点 x,y,存在 x1,y1V1 且与 x,y 相邻,同理 x2,y2

则找到 x1y1,y2x2 的最短路,此时形成环,若 x,y 无边则不是弦图,得证。

  1. 弦图有至少一个单纯点,且非完全图有至少 2 个不相邻单纯点(Lemma 3)。

证明:

归纳。

任取不相邻 u,v,由于对称,证明 V1 有一个单纯点即可。

如果 V1 是团,显然成立,否则根据归纳假设,V1A 中有二不相邻单纯点,其中必有一个在 V1 中,证毕。

  1. G 是弦图当且仅当 G 拥有完美消除序列。

证明:必要性显然。

充分性:根据 Lemma 1,3,不断选取弦图中的单纯点即可。

求完美消除序列

  1. LEX-BFS 算法

从后往前确定 peo,先随便选一个点作为 BFS 起点,然后每次选取一个点,使得它邻域中已确定 peo 的点的 peo 字典序最大。

需要用点集分裂的思想,维护链表套链表,可以做到 O(n+m)

正确性证明:

如果对于 i 的邻点 i1,i2 他们的 peo 在 i 后面,假设 i1,i2 无边。

则一定存在 i3 使得与 i1 相邻而不与 i 相邻,此时 i2,i3 无边否则非弦图,则可以如此构造下去,peo是无限序列,假设不成立,得证。

  1. MCS 算法

每次选取邻域被确定点最多的点。

可以简单地用优先队列带个 log 或用桶做到线性。

判定弦图

定义 u 邻域为 peo 在 u 后面且与 u 相邻的点集。

求出完美消除序列,从后往前类似归纳地每次对于一个点 u,选择它最近的邻域点,判断此点邻域是否被 N(u) 包含。

NP-Hard 问题在弦图上的解决

  1. 最大团,ω(G)
  2. 色数,ω(G)X(G)
  3. 最大独立集,α(G)
  4. 最小团覆盖,α(G)K(G)

在弦图中这些不等式都取等号。

  1. 色数

从后往前对peo贪心,每点颜色取邻域色 mex

  1. 最大独立集

从前往后对peo贪心,每次给邻域打标记。

  1. 求所有极大团

观察:极大团是 vN(v) 形式的。

则考虑标记非极大团。

对于 u,定义 C(u)=uN(u),若 v,v<u,C(v)C(u),则 u 非极大团。

等价于 w,w<u,u=arcminN(w),C(w)C(u),则 u 非极大团。

等价于 w,w<u,u=arcminN(w),|N(w)|=|N(u)|+1,则 u 非极大团。

根据以上引理可以得到求出所有极大团的线性算法,即从前往后扫,打标记。

posted @   MoyouSayuki  阅读(76)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2022-07-24 高斯消元解线性方程组
2022-07-24 线性同余方程
2022-07-24 扩展欧几里得算法exgcd基本运用 与 exgcd求逆元
2022-07-24 快速幂求逆元
2022-07-24 快速幂
2022-07-24 筛法求欧拉函数之和
2022-07-24 欧拉函数
:name :name
点击右上角即可分享
微信分享提示