HS算法

因为LCR算法的通信复杂度过高,为o(n2),所以对他进行改进,但是前提仍然是寻找UID最大的process,区别在于不再采用类似于LCR的单向的环进行顺时针或逆时针的遍历,而是在双向环中同时向两侧进行,把搜索的过程分为很多的phase,每次向左右搜索2的phase次方个process,当到头之后再返回给发送消息的节点。

message包括三元组{uid,{in|out},hop-count}

state包括:
u,uid
send+,msg
send-,msg
state,{unknown|leader}
phase,N+

每一个process的message-generation function产生下面的消息:
send send+ to process i+1
send send- to process i-1

transition function:

send+:=null
send-:=null
if msg from i-1 is(v,out,h) then
case
v>u and h>1:send+:=(v,out,h-1)
v>u and h=1:send-:=(v,out,1)
v=u:status:=leader
endcase
if msg from i+1 is(v,out,h) then
case
v>u and h>1:send+:=(v,out,h-1)
v>u and h=1:send-:=(v,out,1)
v=u:status:=leader
endcase
if msg from i-1 is (v,in,1) and v>u then
send+:=(v,in,1)
if msg from i+1 is (v,in,i) and v>u then
send-:=(v,in,1)
if msg from i-1 and i+1 are both (u,in,1) then
phase:=phase+1
send+:=(u,out,2phase)
send-:=(u,out,2phase)


复杂度:
时间复杂度:O(n)
通信复杂度:O(nlogn)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值