Skip to content

模型Model

同步分布式图模型与 BFS 波前

Distributed graph models · LOCAL · CONGEST · 分布式 BFS

从节点局部输入出发构造指定根的 BFS 树,证明逐轮距离、通信开销与全局最小标识的局部性下界。

形式陈述 ​

分布式图算法把一张图同时看成问题输入和通信网络:每个顶点运行自己的程序,只能沿边交换消息,最终也只输出自己的答案。本页在同步轮模型下,从一个预先指定的根构造 BFS 树,并证明即使消息长度不限,某些全局任务仍必须等待远端信息逐跳到达。

网络、初始知识与局部输出 ​

设 G=(V,E) 是有限、连通、简单的无向图,n=|V|≥1、m=|E|。每条边支持双向可靠通信,执行期间没有故障,也不改变拓扑。节点 v 初始知道自己的唯一整数标识 ID(v)、各条关联边的本地端口、自己是否为指定根,以及所有节点共同知道的 n。根标志恰在一个节点 s 上为真。标识的编码长度为 O(log⁡n),但邻居标识和全图拓扑不属于初始知识;本地端口只让节点区分从哪条边收发消息,两端的端口编号无需相同。[1]

每轮先依据旧状态发送,再接收本轮消息,最后更新状态。本轮刚得到的信息只能在下一轮转发。LOCAL 允许每条边每个方向每轮发送任意有限长消息;CONGEST 将该长度限制为 O(log⁡n) 位。限制按边计,各条关联边可以同时通信;节点度数大不意味着必须依次使用这些边。两种模型都单独计算通信轮数,不把有限本地计算直接折算成额外轮次。[1,2]

节点最终输出 (d(v),p(v)),其中 d(v)=δ(s,v) 为到根的最少边数,p(v) 为通向父节点的本地端口;根输出 (0,⊥)。这些分散保存的父边应构成一棵BFS 树。算法不要求某个节点掌握整棵树,也不把找到根的任务包含进来。

一次转发的节点程序 ​

每个节点保存距离 d、父端口 p 和布尔量 new。初始化时,根令 (d,p,new)=(0,⊥,true);其他节点令其为 (∞,⊥,false)。对第 r=1,…,n−1 轮,各节点执行:

  1. 发送。 若旧状态中 new=true,沿每条关联边发送一次 (d,ID);否则保持沉默。
  2. 接收。 收集本轮消息,保留每条消息的接收端口。
  3. 更新。 先令 new=false。若旧距离为 ∞ 且收到了消息,从中选发送者标识最小的一条 (k,I),令 d=k+1、p 为其接收端口,并令 new=true。已经发现的节点忽略后来提案。

所有节点在第 n−1 轮更新后停止;当 n=1 时,唯一节点就是根,直接在初始时刻停止。最后一轮新发现的节点无需再发一次消息。选择父节点时比较的是消息中的发送者标识,因此无需先交换邻居标识。下面会证明,同轮首次到达的所有候选具有相同的距离值,按标识破平局不会损害最短性。

直觉

集中式 BFS 用一个 FIFO 队列安排展开顺序;这里各节点没有共享队列,轮次本身把波前同步起来。根在第 1 轮发送,距离为 1 的节点在轮末第一次得知根,并在第 2 轮发送。于是每个新波前刚好比上一个远一条边。“首次收到”能够锁定最短距离,依赖的正是这套旧状态收发规则。

逐轮不变量如何给出正确距离 ​

记完成第 r 轮后已发现的集合为 Sr。对 0≤r≤n−1,证明

Sr={v:δ(s,v)≤r},d(v)=δ(s,v)(v∈Sr).

还要同时保持:第 0 轮末只有根的 new 为真;第 r≥1 轮末,new 恰在距离为 r 的节点上为真。这个辅助条件明确了下一轮究竟由谁发送。

初始时只有根被发现,命题成立。设第 r−1 轮末命题成立。第 r 轮的发送者恰是距离为 r−1 的节点,其消息都携带 r−1。若尚未发现的 v 收到其中一条,就得到一条长度为 r 的根到 v 的路径,所以 δ(s,v)≤r;而 v∉Sr−1 又推出 δ(s,v)>r−1,故其距离恰为 r。

反过来,任何距离为 r 的节点 v,在一条最短路上都有距离为 r−1 的前驱。该前驱本轮必发送,因而 v 本轮一定被发现。两边合起来,新发现集合恰是第 r 层;所有候选都携带 r−1,更新得到正确距离 r,并为下一轮设置正确的 new 集合。这完成归纳。

父端口为什么组成一棵树 ​

每个非根节点恰在首次发现时选一个父节点,且

d(p(v))=d(v)−1,

这里为简洁把 p(v) 也用来指该端口另一端的节点。沿父指针行走,非负整数距离每次严格减少 1,因此不可能形成环,且恰走 d(v) 步到达唯一距离为 0 的根。图连通,所以全部节点最终被发现;每个非根贡献一条父边,合成一棵覆盖全图的树。树上根路径的长度就是图距离,故它是 BFS 树。

标识规则只决定同层候选中的哪一个作为父节点。它使相同输入得到确定的父指针,但没有承诺整条根路径的标识序列在所有最短路中按字典序最小;那是另一种需要额外比较信息的输出要求。

例子与边界

菱形接尾链的完整执行 ​

取边集 {sa,sb,ac,bc,cd},令

(ID(s),ID(a),ID(b),ID(c),ID(d))=(9,4,7,2,6).

这里 n=5,m=5。下表每格记录轮末的“距离、父节点”,用 ∞ 表示未发现,父节点名只是阅读便利,实际程序保存端口。

时刻 本轮发送者 s a b c d
初始 — (0,⊥) ∞ ∞ ∞ ∞
第 1 轮末 s (0,⊥) (1,s) (1,s) ∞ ∞
第 2 轮末 a,b (0,⊥) (1,s) (1,s) (2,a) ∞
第 3 轮末 c (0,⊥) (1,s) (1,s) (2,a) (3,c)
第 4 轮末 d (0,⊥) (1,s) (1,s) (2,a) (3,c)

第 2 轮,c 同时收到 a 的 (1,4) 与 b 的 (1,7);它比较发送者标识,选择 a。c 自己的标识为 2,并不参与这次破平局。最终父边为 sa,sb,ac,cd,边 bc 保留为网络边,却不进入这棵树。

各轮消息数依次为 2,4,3,1,总共 10 条。第 3 轮末所有输出已稳定,第 4 轮 d 仍按一次转发规则发送,随后全体按共同约定停止。这也展示了“答案已经不变”和“执行到规定停止时刻”的区别。

一条路径上的全局最小标识下界 ​

现在换一个输出任务:要求每个节点输出全图实际出现的最小标识。即使允许 LOCAL 的任意长消息,远端的新信息也不能跳过通信距离。先证明一个局部性事实:固定拓扑和端口编号,若两次确定性执行在 v 的半径 r 邻域内具有完全相同的初始状态,则 v 完成 r 轮后的状态相同。这里初始状态包括自己的标识、度数、端口、共同规模及其他本地输入。[3]

证明对 r 归纳。r=0 就是初始状态相同。若半径 r+1 内的初始状态相同,则 v 及其每个邻居的半径 r 所需信息相同;由归纳假设,它们第 r 轮后的状态相同。因此第 r+1 轮邻居向 v 发送的消息、v 的旧状态和收件箱都相同,确定性更新给出相同的新状态。消息再长也不会改变这个因果依赖。

具体取 n≥3 的路径 v0,…,vn−1,直径 D=n−1,标识允许来自 [2n]={1,…,2n}。两次执行都令

ID(vi)=i+3(0≤i≤n−2),

仅改变最远端点:执行 A 中 ID(vn−1)=1,执行 B 中为 2。每次执行的标识均唯一、均在允许范围内,且只需 O(log⁡n) 位。拓扑、端口、共同 n 及其他初始输入完全相同。

对任意 r<n−1,v0 的半径 r 邻域都不包含被改变的端点,故其第 r 轮状态相同;然而 A 的正确答案是 1,B 的正确答案是 2。如果算法在这之前给出最终输出,两次输出必相同,至少一次错误。因此任何正确的确定性算法,在这对合法输入上都不能保证少于 n−1=D 轮完成。LOCAL 已有此下界,消息能力更弱的 CONGEST 也一样。

标识范围在这里承担实质作用。若事先承诺标识恰为 [n] 的一个排列,所有节点一开始就能输出数值 1;识别谁拥有这个标识则是另一种任务。若节点初始就知道邻居标识,端点变化会提前泄露一跳,上述输入对只直接给出 D−1 轮界。本页的 D 轮论证因此明确采用“只知自己的标识”的输入契约。

哪些改变需要新的证明 ​

异步网络中,先到达的消息可能沿更多条快速边绕行,首次收到不再保证最少跳数;加权边也让“层数”与权重最短距离分离。故障、动态拓扑、共享无线信道和匿名网络则分别改变交付、邻接、带宽或破平局条件。这些模型仍可研究分布式图算法,但需要重新说明程序与不变量,不能仅更换模型名称便沿用本页结论。

推论与应用

设根的离心率为 e(s)=maxvδ(s,v)。逐轮不变量表明,全部距离与父节点在 e(s)≤D≤n−1 轮后稳定;本页明确采用的共同停止时刻则为 n−1 轮。因而这是一个具有 O(D) 输出稳定时间、n−1 规定运行轮数的协议。要让程序在 O(D) 轮内检测完成并停止,还需要另行设计确认与回声汇聚机制;单有父指针不会自动告诉节点谁已选择自己为父节点。[2]

每个节点至多沿每个端口发送一次,所以有向数据包总数满足

#packets≤∑v∈Vdeg⁡(v)=2m.

每包只含有限距离与发送者标识,共 O(log⁡n) 位,因而协议满足 CONGEST,总有效载荷为 O(mlog⁡n) 位。停止计数器、距离、父端口和布尔量只需 O(log⁡n) 位本地持久状态;逐条处理收件箱即可保留当前最小发送者,无需永久保存全部邻居标识。这里未计底层网络帧和实现缓冲,也不把逐轮等待直接称为常数本地 CPU 工作。

BFS 父树提供到指定根的最少跳路由:每个节点只须沿父端口转发,距离便严格下降。若要反向广播或汇聚,还可在建树后让节点向父节点报告身份,使父节点得到孩子集合,再设计后续协议。每个节点保存一条到根的方向,并不等于已经掌握任意两点之间的最短路。

局部性下界也帮助区分任务的需求。全局最小标识必须获取可能改变答案的远端信息;Cole–Vishkin 颜色缩减则在给定方向的环上不断交换局部颜色,以局部不变量取得合法染色。本页下界没有宣称一切图任务都需要直径轮数,也没有给出 CONGEST 特有的带宽瓶颈;它准确刻画的是指定全局输出的因果传播成本。

CONGEST割模拟与四色四环进一步给出只来自带宽的下界:即使直径至多3,指定节点的检测任务仍需Ω(N/log⁡N)轮。证明通过两方独立模拟两侧,将每边每方向的消息位数逐项记账,与本页的因果传播界互补。

参考资料
  • [1] Juho Hirvonen and Jukka Suomela, Distributed Algorithms 2020, Chapter 4,2025-09-08 版本,§§4.1–4.2:唯一标识、LOCAL 模型与先交换邻居标识的算法步骤。
  • [2] Juho Hirvonen and Jukka Suomela, Distributed Algorithms 2020, Chapter 5,2025-09-28 版本,§5.1、§§5.4–5.5:消息长度限制、指定根的 Wave/BFS 与确认协议。本页采用旧状态发送、统一更新及已知 n 的固定停止规则。
  • [3] Juho Hirvonen and Jukka Suomela, Distributed Algorithms 2020, Chapter 8,2025-09-08 版本,§8.2、Theorem 8.1:带端口及输入标签的局部邻域决定确定性算法的状态。
  • [4] ETH Zürich, Principles of Distributed Computing, FS2025, Chapter 2,§2.1 Algorithm 2.9、§2.3:首次接收洪泛、父节点及同步 BFS;Chapter 5,§5.1:LOCAL 的邻域视图。
关系图谱11 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

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