竞赛图小记

参考:link1link2

定义

竞赛图是指一类对于任意两个点之间有且只有一条有向边的有向图,下面记 G=(V,E),n=|V|,m=|E|,我们称一个 |V|=n 的竞赛图为 n 阶竞赛图。

性质

  • 竞赛图缩点后是链状结构

    考虑按照tarjan算法缩点后,对于 colu<colv,必有边 vu,这是因为 tarjan 算法的编号是逆拓扑序。

    那么容易得到对于任意强连通分量 x,y,若 x<y 必有 yx,所以竞赛图缩点后是一个链状结构(而且也是竞赛图)

    image-20241017203006726

  • 推论:colu<colvoutuoutv

哈密顿路

  • 任意竞赛图存在哈密顿路径
  • 任意强连通竞赛图存在哈密顿回路

哈密顿路径(Redei 定理)

考虑递推构造,n=1 时显然成立。

现在我们考虑由 i1i

设当前有一条哈密顿路径 p1pi1,现在我们需要想办法加入。

  • (pi1,i)E,则令 pi=i
  • (i,p1)E,则令新的路是 ip1p2
  • 如果上面的条件都不满足,则必然存在最小的 x>1 满足 (i,px)E(假设不存在则满足条件一),则也存在 (px1,i)E,将 i 插入 px1,px 之间即可。

可以 O(|V|2) 构造。

哈密顿回路(Camion-Moon 定理)

强连通竞赛图具有哈密顿回路

考虑递推构造。

先找到一条哈密顿路径并且重标号节点为 1n,也即现在有一条哈密顿路径 123n,也就是 i[2,n]Z,(i1,i)E

设当前加入了前 i1 个点,已经构造了回路 p1p2pkp1,以及链 k+1k+2i1

满足 p1k[1,k]Z 且两两不同,而且 ik,j>k,(i,j)E,也就是这个环上任意点都对于后面的链的每个点有有向边。

我们考虑逐个加入点消去这个链将其合并为环。

i=2 时显然成立,那么我们现在加入 i2

  1. xk,(x,i)E,(i1,i)E,则加入链

  2. 如果不满足条件 1,则必然有 x[1,k]Z,(i,px)E

    则有 (px1,k+1)E,(i1,i)E,(i,px)E,也就是说存在一个 px1k+1i1ipx 可以加入原本的环里。

    另外,当 k=1 时显然合法,当 k>1 时,由于前面是一个环,具有轮换性质,所以必然 x 可以取到 x1(是环上的前一个位置)

由于原图是强连通的,所以最后一定会成环(否则与强连通矛盾)。

实现精细有 O(n2)

推论

强连通竞赛图是泛圈的。

泛圈:指对于 n 阶有向图 G,若 i[3,n]Z,存在 i 元环,则称图 G 是泛圈的。

考虑 n=3 显然成立,归纳证明。

我们只需要证明 n4 的强连通竞赛图存在大小为 n1 的环即可(当我们知道了这个,则这个 n1 个环这些点的导出子图就是 n1 阶强连通竞赛图了,根据归纳合法)。

考虑只需要证明存在一个点,删掉它后原图仍然强连通。

假设求出哈密顿回路 p,我们证明一定存在一个点可以跳过即可。

假设我们删去 p1,则 p2pn 的哈密顿路径上,一定是由删去后的各个强连通分量的哈密顿路径串起来的。

  • 如果有一个大小不小于 2 的强连通分量,则在这个强连通分量里面删去一个点(还是一个竞赛图,还能够拿出哈密顿路)再加入 p1)就可以拿出一个 n1 大小的环了。

    也可以从 竞赛图强连通缩点后是链状结构 理解

  • 否则说明每个强连通分量大小是 1,而加入 p1 后强连通,说明存在环 pnp1p2pn,此时我们删去 p3 即可,必然有 (p2,p4)E

出度序列

定义一个竞赛图的出度序列是把所有点的出度从小到大排序后得到的序列。

合法出度序列

给出非负整数不严格递增序列 p,满足 i=1npi=(n2)

则存在一个竞赛图使得 p 是该竞赛图的出度序列的充要条件i[1,n]Z,j=1ipj(i2)

必要性:

考虑前 i 个点的导出子图就有 (i2) 条边,显然不能够小于这个数。

充分性:

考虑一个取到下界的出度序列 q,满足 qi=i1,也就是 j=1ipj=(i2)

那么当 pq 时,必然存在最小的 x 满足 qx<px,且存在一个最大的 y 满足 qy>py,因为总和相同。

则有 qx<pxpy<qy,也就是 qxqy2

  • (y,x)E(此处指 q 的边集),则反转 (x,y),这会导致 qxqx+1,qyqy1

  • 否则必然存在 k 满足 (y,k)E,(k,x)E

    假设不存在 k,那么对于所有 k(k,y)E,(x,k)E 至少成立一个

    初始化 qy=qx=n 的话,每次扫描 k 都会使得如果 qx 减小那么 qy 会减小

    所以可以说明最终至少有 qxqy,与 qx<qy 矛盾。

    (y,k),(k,x) 反转,则 k 出度不变,还是有 qxqx+1,qyqy1

    由此我们可以 O(n3) 地去调整。

    一个错误的想法是拿出所有的 k 一次性处理掉。

    但事实上你用完所有的 k 也不一定让 x,y 合法,没有任何意义

强连通分量

先给结论,竞赛图强连通分量个数i=1n[j=1ipj=(i2)]

证明:

  1. 先证强连通分量个数不大于这个值。

    首先,根据强连通分量缩点后形成一条链,则对于 colu=i 而言,[i+1,scc] 的所有强连通分量里的点,u 都直接指向,而对于 colv=i1v 而言,v 直接指向 [i,scc] 强连通分量里面的点,而且编号更小的强连通分量里的点指不到,所以有 outvoutu

    那么对于一个强连通分量一定会有这种形式。所以强连通分量个数不大于这个值。

  2. 再证这个值不大于强连通分量个数。

    因为对于一个 xj=1xpj=(x2),则 [x+1,n] 的点都会向 [1,x] 连边,则 x 一定唯一对应两个相邻强连通分量分界点,所以不大于。

综上可得。

竞赛图最小割

求解 st 割。

最开始我们令一个割为 S={s}(下面我们用与 s 连通的连通块作为一个割(表示割掉这个集合和另一半的所有边))

考虑将一个 u 加入 S 的贡献(加上 u 删除的贡献以及 S 里原本的点对 u 计算的贡献):

wu=iT[(u,i)E]iS[(i,u)E]=iU[(u,i)E]|S|

将除了 s,t 以外的点按照 out 排序,显然从小到大取是最优秀的,也即最终一定是取一个前缀。

枚举决策即可。取前缀 i 的贡献是:j=1iwj=j=1ioutjj

然后有一个初始值 i[(s,i)E]

posted @   spdarkle  阅读(114)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示