我遇到了一些问题,我必须为面向超立方体设计领导者选举算法。这应该通过使用具有等于超立方体的尺寸D的轮数的锦标赛来完成。在每个阶段d中,1 <= d <1。相邻d维超立方体的两个候选领导者应该竞争成为(d + 1)维超立方体的单一候选领导者,它是各自超立方体的联合。
答案 0 :(得分:4)
我研究分布式系统已经很长时间了,但我希望这有点帮助:)
问题: Leader election在hypercube语言的网络中。在此拓扑中,每个节点都具有恰好D个邻居(其中D是超立方体的维度)。由于超立方体是面向的,节点知道它们的哪个链接对应于每个维度。此外,我假设所有节点都标有一些唯一的id,这是典型的问题。
如果我理解您的解决方案指南,算法似乎很简单:节点具有正好的D状态。在每个状态1&lt; = d&lt; = D中,它沿着d轴与其邻居通信。这种通信包括向它发送它所知道的最佳候选者的id(当d = 1时,这只是它自己的id),并将其与对等体接收的id进行比较。现在,节点知道它所属的阶d(由轴1,2 ......,d定义)的子立方体的最佳id。这样,在步骤D,所有节点都知道全局最佳,并且算法以一致的方式完成。
例如,假设以下拓扑(D = 2)和id值:
(1) (2)
1-----2
| |
| |
4-----3
(4) (3)
括号中的ID表示到目前为止每个节点已知的最佳ID。
第一次迭代(d = 1)沿水平轴工作,终止如下:
(2) (2)
1-----2
| |
| |
4-----3
(4) (4)
第二次(也是最后一次)迭代(d = 2)沿垂直轴工作,终止如下:
(4) (4)
1-----2
| |
| |
4-----3
(4) (4)
已根据需要选择节点编号4(最高ID)。
邮件计数复杂性
对于超立方体中的每个边缘,我们都有2条消息(每个方向一条消息)。由于维D的超立方体中边的数量的公式是E = D * 2 ^(D-1),因此我们确切地具有M = D * 2 ^ D个消息。为了将复杂度计算为N(节点数)的函数,回想一下N = 2 ^ D,所以M = N * log N.