HS算法

针对LCR算法通信复杂度过高的问题,提出一种改进算法。该算法通过双向环并分阶段搜索来降低复杂度,每次搜索范围扩大2的phase次方个进程,实现O(nlogn)的通信复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值