面试时遇到的问题,写下来记一下思路。
前提:有N台机器,任意两台机器间拥有独立的双向传输连接。
问题:现在N台机器中的1台想要把一个M大小的文件分发给其他机器,设计一个方案让N台机器可以最快的获得文件。
假设:把文件发送给其中1台机器的时间为T。拥有文件的机器为1号,其他机器从2号开始到N号。最终耗时t。
方案1:
1号机器向2号机器发送文件,耗时T。
由1,2号机器同时向3,4号机器发送文件,耗时T。
由1,2,3,4号机器同时向5,6,7,8号机器发送文件,耗时T。
......
直至所有机器都获得了文件。
每一次发送完成,拥有文件的机器数量为(2^发送次数)
假设n为发送次数,则
上述方案可以保证每台机器都能一次性获得全部的文件,但2号机获得文件时间要比N号机早很多,使N号机在获得文件之前一直处于等待状态。
<