Skip to content

算法Algorithm

Cole–Vishkin 颜色缩减

Cole–Vishkin color reduction · 确定性环三染色

在给定一致方向的同步环上,用首次差异位反复压缩合法颜色,再以三轮消色得到三染色。

形式陈述 ​

Cole–Vishkin 颜色缩减把一个颜色很多的合法染色,变成颜色很少的合法染色。本页给出已定向环上的完整版本:先反复用二进制的首次差异位缩减到六色以内,再用三轮得到三色。目标是让每个顶点自己算出颜色,并在所有轮次中保持相邻顶点异色;无需任何顶点收集整张图。[1]

输入与执行模型 ​

网络是一个静态、无故障、含 n≥3 个顶点的简单环,每条物理边支持双向可靠通信。环的一致方向已作为输入给定:每个顶点 v 知道自己的前驱 p(v) 和后继 s(v),所有边的方向沿同一个环路。这用到有向图的前驱与后继关系,但不把通信限制成单向。

初始颜色满足

c(v)∈{0,…,K−1},c(v)≠c(p(v)),

其中调色板上界 K 是所有节点共同知道的整数。全球唯一的整数标识可以充当初始颜色,但算法只要求邻点不同;相隔较远的顶点允许同色。方向、标识和共同上界如何取得,不属于下面的算法。

执行遵循同步轮模型:一轮内先根据旧状态发送,再接收,最后统一更新。LOCAL 模型允许每条边每轮传任意有限长消息,有限本地计算不计通信轮数。CONGEST 模型另要求每条边每个方向每轮至多 O(log⁡n) 位。若 K≤na,其中 a 为固定常数,本页算法也满足这个消息长度限制;没有这一范围条件时,不能把任意长初始颜色直接塞入一轮 CONGEST 消息。[2,3]

一轮位缩减 ​

只要共同上界 K>6,所有节点执行同一轮变换。令 L=⌈log2⁡K⌉,把旧颜色写成补足 L 位的二进制串,最低位编号为 0。顶点 v 向后继发送自己的旧颜色,收到前驱的旧颜色,然后计算

i(v)=min{j∈{0,…,L−1}:c(v)j≠c(p(v))j},b(v)=c(v)i(v).

旧染色合法,因此差异位一定存在。新颜色与下一轮共同上界分别为

c′(v)=2i(v)+b(v),K′=2⌈log2⁡K⌉.

这里 i(v) 指出一项足以区分当前节点与前驱的证据,b(v) 记录自己在该位置是哪一方。所有节点完成更新后才进入下一轮;共同上界的递推不依赖实际使用了多少种颜色。

从六色到三色 ​

当 K≤6 时停止位缩减。接下来固定执行三轮,依次处理颜色 q=5,4,3。每轮所有顶点向两个邻居发送旧颜色;仅旧颜色等于 q 的顶点,把自己改成 {0,1,2} 中没有被两个旧邻色占用的最小颜色,其余顶点不变。即使某个待消颜色没有出现,这一轮仍按约定经过。三轮后,每个节点输出自己的颜色。

直觉

大颜色携带的绝大多数位,并不参与当前这条边的异色证明。例如颜色 0=00002 与 8=10002 只需用第 3 位即可区分。节点把整串压成“第几位、自己的位值”,标签范围便从 K 缩成约 2log2⁡K。难点在于各节点选择的差异位未必相同:我们必须证明这些各自取得的证据仍能形成一个合法染色。

为什么同时更新仍不冲突 ​

固定任意一条定向边 p(v)→v。若两端选择不同的位置,即 i(p(v))≠i(v),则它们的新颜色分别落在两个不相交的二元集合 {2i,2i+1} 中,必然不同。

若两端恰好选择同一位置 j,则 v 选择 j 的定义给出

c(v)j≠c(p(v))j.

此时两端记录的位值正是这两个不同的比特,所以

c′(v)=2j+c(v)j≠2j+c(p(v))j=c′(p(v)).

这已经覆盖全部情况。论证只看边的两个端点,不需要环的起点,也不例外处理首尾闭合边;因此每轮变换都保持合法染色。反复应用这一不变量,六色阶段的输入仍然合法。

收尾阶段利用的则是另一种局部结构:一个合法颜色类内没有相邻节点。因此同一轮所有颜色为 q 的活动顶点构成独立集,任一活动顶点的两个邻居都保持旧色。两个邻居至多禁用 {0,1,2} 中两种颜色,至少剩下一种。活动点的新颜色与两个不变的邻居不同,非活动点之间原有的合法性也未改变。消去 5 后不再产生 5,随后同样消去 4 和 3,最终只剩 0,1,2。

为什么轮数是迭代对数 ​

记 f(K)=2⌈log2⁡K⌉。对整数 K>6,有 f(K)<K,而 f(6)=6,所以位缩减会到达六色界,却不能靠继续迭代得到三色。若把 K 所在区间写成 2m−1<K≤2m,则 f(K)=2m;从 m≥4 起 2m<2m−1+1≤K,剩余 K=7,8 可直接检查。

令 x=log2⁡K。当 x≥16 时,取整只造成常数项:

f(f(K))≤2log2⁡x+6≤x=log2⁡K.

第一步可由 ⌈x⌉≤x+1 和外层取整误差至多 1 得到;第二步在 x=16 成立,且右边随 x 增长更快。因此每两轮至少取得一次取对数的缩减。降到 K<216 后,因为整数上界严格下降,只需与输入规模无关的常数轮便到六色以内。

若 log∗⁡K 表示反复取以 2 为底的对数直到数值不超过 1 所需的次数,位缩减轮数 T 就满足 T=O(log∗⁡K),完整算法需 T+3 轮。当初始 K=nO(1) 时,这可写成 O(log∗⁡n)。这里证明的是本算法的上界,尚未给出任何最优性下界。

例子与边界

七点环的五轮完整执行 ​

按给定方向把七点环写成 v0→v1→⋯→v6→v0,初始共同上界为 16,颜色依次为 [0,8,10,11,3,7,15]。包括闭合边在内,每条边的端点都异色。第一轮的逐点计算如下;二进制从低位开始找差异,表中的前驱色均取本轮更新前的值。

顶点 旧颜色 前驱旧色 首次差异位 i 自己的位 b 新颜色 2i+b
v0 0 15 0 0 0
v1 8 0 3 1 7
v2 10 8 1 1 3
v3 11 10 0 1 1
v4 3 11 3 0 6
v5 7 3 2 1 5
v6 15 7 3 1 7

第一轮后 K=8。第二轮也必须从这一整行旧色重新计算,得到

i=[0,0,2,1,0,0,1],b=[0,1,0,0,0,1,1],c=[0,1,4,2,0,1,3],K=6.

接下来三轮的轨迹为:

轮次 操作 按 v0,…,v6 排列的轮末颜色
第 3 轮 消去 5;本例无活动点 [0,1,4,2,0,1,3]
第 4 轮 v2 的邻色为 1,2,故 4↦0 [0,1,0,2,0,1,3]
第 5 轮 v6 的邻色为 1,0,故 3↦2 [0,1,0,2,0,1,2]

最终闭合边 v6v0 的颜色为 2,0,其余边也均异色。这五轮给出了一份具体三染色;七点奇环本来不能二染,但算法并不需要先判断环的奇偶性。

同一轮必须读取同一份旧状态 ​

如果在数组上从左到右立即覆盖颜色,让后面的点读取前面刚更新的值,执行的就不是上述同步算法。证明中的 c(p(v)) 与 c(v) 必须来自同一轮快照,程序可用两个颜色数组或等价的轮次状态来实现。分布式实现中,本轮发送消息也必须在吸收本轮新信息之前由旧状态确定。

只有一致的方向而没有初始合法颜色也不够。若所有节点初始状态完全相同,运行相同确定性程序,各自又看到相同的前驱、后继角色,那么逐轮状态仍然相同,无法得到相邻异色。给定初始合法染色承担了打破这种对称的作用。另一方面,一般有向图可能有多个前驱或更多邻居;任选一个前驱只保护所比较的边,不能把环的证明直接推广到任意度数网络。

推论与应用

这个算法展示了分布式求解与集中式扫描的不同成本:每个节点只看邻居,整个环却同时缩减颜色。最终三色还把节点划成三个互不相邻的集合,可供后续算法分组安排局部操作。这样的安排只保证同组节点不相邻;更远距离的资源冲突仍需另行建模。

设位缩减共有 T 轮,第 t 轮前的上界为 Kt,其中 t=0,…,T−1。每个节点每轮只向后继发送一个颜色,所以这一阶段恰有 nT 次有向发送;三轮收尾每点每轮向两个邻居发送,共 6n 次。采用固定长度颜色编码时,消息有效载荷总量至多为

n∑t=0T−1⌈log2⁡Kt⌉+18n位.

最后一项来自收尾的 6n 条、每条至多三位的颜色消息。这不计网络帧、地址和其他实现开销;共同上界及固定调度无需逐条附带发送。轮数、发送次数与位数回答不同问题,不能用 O(log∗⁡n) 轮代替它们全部。

本地处理也并非免费获得常数 CPU 时间。最直接的实现扫描两个长度为 L 的颜色串,需要 O(L) 次位检查;某些机器指令可以加速,但应另报机器字长与运算模型。LOCAL 的一轮只是在通信复杂度上不计这些有限本地工作。对没有已知通信时间界的异步系统,还需要实现合适的模拟或重新证明进展;不能直接把本页轮界解释成其实际运行时间。

参考资料
  • [1] Juho Hirvonen and Jukka Suomela, Distributed Algorithms 2020, Chapter 1,2025-09-08 版本,§1.4.2–1.4.5、Exercises 1.5–1.6 与 §1.9:位标签颜色缩减、三色化与 Cole–Vishkin 归属。本页反转传色方向,并为闭环和按指定颜色消除的收尾调度给出独立论证;未核读 1986 年原论文。
  • [2] Juho Hirvonen and Jukka Suomela, Distributed Algorithms 2020, Chapter 4,2025-09-08 版本,§4.1–4.3:LOCAL 模型、标识范围及本地计算与通信轮的区别。
  • [3] Juho Hirvonen and Jukka Suomela, Distributed Algorithms 2020, Chapter 5,2025-09-28 版本,§5.1:每边每轮的消息长度限制。
关系图谱9 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系

使用的工具