Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 分布式计算中的LCR与Floodmax(领导者选举)_Algorithm_Networking_Distributed - Fatal编程技术网

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

Algorithm 分布式计算中的LCR与Floodmax(领导者选举),algorithm,networking,distributed,Algorithm,Networking,Distributed,我试图在同步网络的背景下理解LCR和Floodmax之间的实际区别 我了解Floodmax的时间复杂度为O(N),其工作原理如下: 每个进程都保持迄今为止看到的最大UID(最初是它的 自己的) 在每一轮中,每个进程都将此最大值发送给每个进程 外向的邻居 直径轮数后,如果最大值是进程的UID,则 选举自己为领导者,否则它是非领导者 另一方面,LCR: 每个进程都会在环中发送其UID。当进程收到 UID,它会将这个与它自己的进行比较 如果传入的UID更大,则会将此UID传递给下一个UID 过程

我试图在同步网络的背景下理解LCR和Floodmax之间的实际区别

我了解Floodmax的时间复杂度为O(N),其工作原理如下:

  • 每个进程都保持迄今为止看到的最大UID(最初是它的 自己的)
  • 在每一轮中,每个进程都将此最大值发送给每个进程 外向的邻居
  • 直径轮数后,如果最大值是进程的UID,则 选举自己为领导者,否则它是非领导者
另一方面,LCR:

  • 每个进程都会在环中发送其UID。当进程收到 UID,它会将这个与它自己的进行比较
  • 如果传入的UID更大,则会将此UID传递给下一个UID 过程
  • 如果传入的UID较小,则会丢弃它
  • 如果它是相等的,那么流程将宣布自己为领导者

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

顾名思义,FloodMax算法用消息“淹没”网络。与LCR不同,FloodMax将在网络拓扑为而非环的情况下工作。FloodMax算法的一个先决条件是网络直径必须已知(对于LCR,情况并非如此),并且具有直径轮的时间复杂性。另一方面,LCR不要求知道网络直径:因此,它需要额外的通信开销,因为领导者需要通知所有其他进程在选择自己后终止