BEB算法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机里有一个算法,叫二进制指数退避算法(Binary exponential backoff,BEB)

该算法用于以下的条件:简而言之,可以说成是一根管道里,两头有两个信号源,他们都想传东西出去。但是,同一个时间点,管道只能被一端占用,否则会造成信号碰撞,碰撞后信号失真不可用,只能丢弃重传。

该算法是,首先监听管道里是否有碰撞,没有则发送,然后等待,如果发现出现了碰撞,那么双方都等待2^n−1 其中任意一个整数的时间,然后再重新发送。如果又出现碰撞,则n=n+1,重新发送。否则,发送成功,n=0

问题:

现在要把这个算法用到另一个种情况。假设网络情况复杂,网络发送阻塞,网络阻塞时,信号源向外发送的数据全部丢失。每当发现丢失,该信号源等待2^n−1 其中一个随机整数的时间,然后进行重传。网络阻塞时间从0 - ∞,我需要估算这个算法在不同网络阻塞时间下,发生重传的次数:

大概得出一个这样的一张图:

其中,横轴是网络阻塞时间,表示这段时间网络都阻塞了,一个数据都传不出去。纵轴表示我的重传次数,区间表示误差线。

问题:如何找出他们之间的函数关系绘制上图?

☆横轴为t-时间,纵轴为n,重传次数

思路1:

n ),因此

由于随机数的产生服从均匀分布(0,21

有2.5%的概率产生的随机数是2.5%*(2^n-1)

所以,如果(2^n-1)*2.5%>t,那么有97.5% 的概率,我将在n次重复内成功所以,置信区间的

上限为:n=log2{ (t/2.5%)+1}

下限为:n= log2{t/97.5%+1}

中点为:n= log2{t/50%+1}

得出图如下:

因为n为整数,其实应该是阶梯函数,描点后:

每一个1的值都与n n t t + 密切相关,因此:

当n 从 n 变为n+1的时候,增加了 2^n-1 内随机数的 t 值, 取平均数,得:(2^n-1)/2。即:当n 增加到n+1,t 增加了

做累加,得到:

置信区间为

得出图如下:

n

-12212-1-=22-1而-=

2

n n t t t t n 21n

2+...+2-(n-1)

1-=

当1时,t=

22

于是得到:=21

2

n n t t n n

t =--n

n (0.975/0.5)=21

2

和(0.025/0.5)=21

2

n n n

t n

t -

--

-

计算机模拟实验,发现:

这是200次实验取平均的结果:

这是500次实验取平均的结果:

这是t用对数表示的结果:拟合程度还是很好的

发现,在n大的时候,拟合程度越好:

问题:

发现这三个思路,虽然曲线趋势一直,但是得出来的曲线都不一样!哪个思路是对的呢,错误在哪里??

拜托啦,我昨天在这边接近跑了一个通宵。。。

相关文档
最新文档