(阿里笔试题)现有一完全的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.

节点通讯共享信息的问题相关推荐

  1. SSO单点登录 1实现机制 ▪ 系统共享 ▪ 信息识别 2WEB-SSO 3其他含义 4技术应用 ▪ 技术实现[百度百科]

    SSO 编辑 SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同一个用 ...

  2. 【Groovy】自定义 Xml 生成器 BuilderSupport ( 创建 XmlNode 节点 | 管理 XmlNode 节点并将根节点转为 Xml 信息 | 完整代码示例 )

    文章目录 一.创建 XmlNode 节点 二.管理 XmlNode 节点并将根节点转为 Xml 信息 三.完整代码示例 1.自定义 Xml 生成器 MyBuilderSupport 2.Xml 节点封 ...

  3. wxWidgets:在对话框之间共享信息

    wxWidgets:在对话框之间共享信息 wxWidgets:在对话框之间共享信息 wxWidgets:在对话框之间共享信息 这更像是一个 C++ 问题而不是 wx 问题,但在论坛上经常出现,所以至少 ...

  4. 解读:通过挖掘概念间共享信息,实现股票趋势预测的图模型框架

    写在前面 下面这篇文章的内容主要是来自发表于微软亚洲研究院同中山大学合作的一篇文章<HIST: A Graph-based Framework for Stock Trend Forecasti ...

  5. HIST:微软最新发布的基于图的可以挖掘面向概念分类的共享信息的股票趋势预测框架...

    来源:DeepHub IMBA 本文共700字,建议阅读5分钟微软研究院提出了一种新颖的股票趋势预测框架,可以充分挖掘该概念面向来自预定义概念和隐藏概念的共享信息. 股票走势预测是对股票价格未来走势的 ...

  6. Erlang与C构建的节点通讯

    Erlang节点之间的通讯,主要用于两个Erlang节点之间的通讯,但Erlang还支持与java构建的节点通讯,甚至与c构建的节点通讯,前面两种方式在我以前的文章都有讲到,所以这里讲Erlang与c ...

  7. erlang与java构建的节点通讯

    我们知道,erlang在开源社区的活跃度远远不及java社区,在java社区中有很多优秀的开源框架,比如mybatis.hibernate. springboot.hadoop.hbase等,为了让e ...

  8. Webots 机器人仿真平台(十二) 与ROS节点通讯

    与ROS节点通讯 1 设置webots控制器 2 创建ROS节点 3 代码分析 3.1 设置电机位置 3.2 设置电机速度 3.3 读取时间节拍 参考资料 在前面的教程中我们描述了如何在webots中 ...

  9. 【漏洞验证】NFS 共享信息泄露漏洞

    文章目录 描述 验证 描述 漏洞名称:NFS Exported Share Information Disclosure 中文名称:NFS 共享信息泄露漏洞 漏洞等级:高危 CVE:CVE-1999- ...

  10. WIN32 进程间通讯-共享内存

    一.引言     在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.WIN32 API提供了许多函数使我们能够方便高效的进行进程间的通讯,通过这些函数我们可以控制不同进程间的数据交换 ...

最新文章

  1. C++:随笔5---this指针和类的继承
  2. PHP函数printf()、sprintf()的用法
  3. 基于ssm框架的大学生社团管理系统
  4. TestInside640-801 v11(神州testv11)题库视频讲解(全部上传完毕)
  5. python求列表最大值下标_切片,丝滑的字符串 | Python基础连载(三)
  6. Nginx-常见服务器的对比
  7. loadrunner-3-3场景计划方式与运行模式
  8. Spark streaming java代码
  9. android二分查找法简书,【PYTHON】二分查找算法
  10. android监听方法的耗时时间,Android从网络获取北京时间以及动态的监听时间
  11. MYSQL 数学运算符问题
  12. [USACO06NOV]玉米田Corn Fields (状压$dp$)
  13. matlab信息量估计法估计嵌入率,LSB密写分析-信息量估计法
  14. html怎么设置表单的样式,html表单样式 如何用js给html表单设置style
  15. [机器学习、Spark]Spark机器学习库MLlib的概述与数据类型
  16. BlackBerry黑莓7230/7290等常用的功能简介以及技巧分类【转载】
  17. Qt5 与OpenCV4教程一:Qt5.12安装与OpenCV4.5.0配置
  18. 洛谷【入门4】数组 P2615 [NOIP2015 提高组] 神奇的幻方
  19. IOS中使用getUserMedia获取视频流展示到video中,进行人脸识别
  20. 报错:Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.

热门文章

  1. Delphi 2010
  2. 算法的定义、特征及其算法设计的要求
  3. C语言课程设计-工资管理系统
  4. c语言题库及详解答案 免费下载,C语言最新完整版本题库(带详解答案).pdf
  5. 东方甄选推独立App自立门户;西湖大学『强化学习数学基础』教材书稿;经典书籍『深入浅出设计模式』Python版代码;前沿论文 | ShowMeAI资讯日报
  6. ExtJS视频教程 ExtJS入门到精通教程下载
  7. 2008 r2 server sql 中文版补丁_sql server 2008 r2 sp4
  8. 最全中文停用词表(可直接复制)
  9. office visio 替代_5款替代微软Visio的开源免费软件(转)
  10. 04-新拟物单选按钮样式