节点通讯共享信息的问题

(阿里笔试题)现有一完全的P2P共享协议,每次两个节点通讯后都能获取对方已经获取的全部信息,现在使得系统中每个节点都知道所有节点的文件信息,共17个节点,假设只能通过多次两个对等节点之间通讯的方式,则最少需要()次通讯 

      A、32            B、31            C、30              D、29

这是第二次碰到类似的题目了,所以在这里分析一下。

假设有n个节点,直观的按照1-2-···-(n-1)-n传播顺序,最后n-1和n获得了所有节点的信息,然后取其中任一节点与1、2、···、n-2这些节点交换信息,即可让所有节点获得所有信息,这样通讯次数=n-1+n-2=2n-3;

如果分成两个组呢,假设两个组的节点个数分别为n1和n2,则每个组首先需要按序传播信息N1=n1-1+n2-1,然后第一组最后两个节点和第二组的最后两个节点就获得了各自组的所有信息,这四个节点两两交换信息,需要N2=2次,则这四个节点获得了两个组所有节点信息,然后取任一节点与每个组剩下的节点(分别是n1-2,n2-2)交换信息N3=n1-2+n2-2,则通讯任务完成,总共通讯次数N=N1+N2+N3=2n1-3+2n2-3+2=2(n1+n2)-4=2n-4;

如果分成三个组,同样的分析N=2n1-3+2n2-3+2n3-3+6=2n-3,其中6表示三个组的最后两个节点交换信息需要6次;

那如果分的组数更多呢,假设分为g组(g>=4),同上分析N=2n-3g+M,其中M表示g个组的最后两个节点交换信息所需要的最少次数。假设把这些点的通讯按照两个组的模式来处理,则M=2*(2g-4),N=2n+g-8>=2n-4。假设按三个组的模式来处理,则M=2*(2g-3),N=2n+g-6>=2n-2,可见它们都是大于等于2n-4,而且随着g的变大通讯次数也会增多。

所以最优的情况就是在分成两个组或者四个组的时候取到,最优情况下通讯次数为2n-4.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值