分布式计算中的LCR与Floodmax(领导者选举)

时间:2013-01-20 15:00:10

标签: algorithm networking distributed

我试图了解LCR和Floodmax在同步网络环境中的实际区别。

据我所知,Floodmax的时间复杂度为O(N),实质上如下:

  • 每个进程都保持到目前为止看到的最大UID(最初是它的 自己的)。
  • 在每一轮中,每个进程都会将此最大值发送给每个进程 即将离任的邻居。
  • 在diam轮次之后如果最大值是进程的UID那么它 选举自己为领导者,否则就是非领导者。

另一方面LCR:

  • 每个进程在环上发送其UID。当一个进程收到一个 UID,它将这个与它自己进行比较。
  • 如果传入的UID较大,则将该UID传递给下一个 过程
  • 如果传入的UID较小,则丢弃它。
  • 如果它相等,则该过程声明自己是领导者。

它的时间复杂度也是O(N)。因此,实质上,两种算法都在令牌环网络中传递UID。两者之间是否有任何真正的区别或优势?

1 个答案:

答案 0 :(得分:1)

顾名思义,FloodMax算法通过消息“泛滥”网络。与LCR不同,即使网络拓扑一个环,FloodMax也能正常工作。 FloodMax算法的先决条件是必须知道网络直径(LCR不是这种情况)并且具有直径轮的时间复杂度。另一方面,LCR不需要知道网络直径:因此,它需要额外的通信开销,因为领导者需要在选举后通知所有其他进程终止。