分布式系统下的最小生成树算法(Distributed Minimum Spanning Tree)

1. 最小生成树(Minimum Spanning Tree, MST)经典的算法如Prim算法和Kruskal算法

2. 分布式系统下的MST算法,经典的是 R. G. Gallager, P. A. Humblet 和P. M. Spira提出的GHS算法    

3. GHS算法解释  

  • If F is a fragment of an MST M, then joining the node of the other end of the minimum weight "outgoing" edge will yield yet another fragment of M. Here, "outgoing" is defined as an edge which connects (any node in) the fragment to a node that is not part of the fragment.
  • 假设F是最小生成树M的一个片断,连接最小权重“出边”的另一端结点,得到一个新的片断。这里的出边指的是连接非片断中的结点到非片断结点的边。
GHS算法初始化每个片断仅包含自身,通过一系列处理合并这些片断,直到仅剩下一个片断,简单步骤如下:

1)保持片断集合,满足所有片断的并集包括所有节点;

2)初始时,集合中包含的每个节点是由一个节点组成的片断;

3)通过片断中节点找出片断的最小带权出边;

4)当已知片断的最小带权出边时,通过增加出边,将片断之间连接过来;

5)当只剩一个片断时,算法终止。

GHS算法详细步骤如下:

1)初始化所有的片断的level=0,仅包含1个结点,所有结点状态Sleeping;

2)结点在做任何事之前需要wake up,GHS算法对于每个wakeup的进程没有任务限制,如果需要,可以一次唤醒所有结点或者一次唤醒一个结点,算法最终所有的结点最终均被唤醒;

3)每个片断查找最小权重的出边并发送一个连接请求给同一level下的片断;

4)每次片断给片断发送连接请求时,片断进入“waiting”状态,等待至到片断absorbed(吸收)或跟其他的片断merge(融合);

5)当一个片断接收到连接请求时,决定其与请求的片断是absorbed还是merge的条件如下:

  • 如果接收到连接请求的片断level低于它,则立即absorbed
  • 如果接收到连接请求的片断level等于或高于它,则有两种选择:
    • 如果接收连接的片断同样给发送了连接请求给其他片断,则merge
    • 如果是其他情况,片断没有回复,等待状态改变。一旦算法工作,立即进行merge或absorb
6)如果片断找不到更小权重的出边,算法则终止,也就是说仅剩下一个片断,完成MST

7)最后,需要注意两件事情:

  • level-1及以上的片断被一对结点控制,称作core node,这些结点是在level-0交换连接请求时形成的
  • core node之间边的权重可以用来标识片断,因为GHS算法中所有边是惟一的,边的权重可以用来惟一标识片断。
用一张图来解释片断的absorption和merge操作(Guy Flysher and Amir Rubinshtein's version of the GHS paper):

Diagram showing fragment mergers and absorptions


本文参考:

布式计算-GHS算法选举算法  

Distributed-Graph-Algorithms Minimum-Spanning-Tree


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值