简单随机 k-局部选举算法:解决局部计算问题
算法概述
在图计算领域,我们提出的算法以轮次的方式工作。所有顶点都清楚自己参与的计算轮次,并且有一个状态来表明自身是锁定还是解锁。在第 i 轮结束时,所有满足 $ v \in { w \in V | d(w, U) \leq i } $ 的顶点都会被标记并锁定。初始时,根顶点 U 是解锁的,标记为 0。在第 1 轮,U 的所有未标记邻居会被标记为 1 并锁定。
为了进一步计算,算法需要满足以下要求:
- r1 :每次标记一个未标记的顶点时,将其设置为锁定状态。
- r2 :一个已标记但解锁的顶点 $ v \neq U $ 会在以下条件满足时被锁定:
- v 与其所有标记邻居处于同一轮次。
- v 的邻域中没有未标记的顶点。
- v 的所有满足 $ d(U, w) = d(U, v) + 1 $ 的标记邻居 w 都已锁定。
- r3 :如果在第 p 轮中一个锁定的顶点 v 有一个在第 p + 1 轮解锁的标记邻居 w,那么 v 会解锁并进入下一轮。
我们通过图重标记系统对这个过程进行编码,其中锁定和解锁状态分别用标签 F 和 A 表示,根顶点用 R 标记,标记的边用 1 标记。标签集合为 $ L = { 0, 1, (x, d, r) } $,其中 $ x \in { N, A, F, R } $,$ d, r \in N $,d 和 r 分别表示顶点到根顶点的距离(模 3)和计算轮次。根顶点 U 的初始标签是 $ (R, 0, 1) $,其他所有顶点的标签是 $
超级会员免费看
订阅专栏 解锁全文
2192

被折叠的 条评论
为什么被折叠?



