班级中有 n 的学生人数。老师告诉一个秘密 每个学生。分享秘密的唯一方法是通过电话 呼叫。使用分而治之,设计一种算法来找到最小值 所需的电话数量,以便每个学生获得所有 秘密。
我的一位朋友问我这个问题。我花了一些时间做一个草图,即我将有一系列的学生,我将递归地打破它,直到我有一个学生,并加入他们后,我将计算这两个之间的呼叫。 / p>
在组合两对时,我会计算两个呼叫,依此类推。这是令我感到不安的一点,或者可能在这里我错过了一些东西。
X1 X2 (1 call)
X3 X4 (1 call)
X1 -----> X3
X2 -----> X4 (2 more calls)
感谢任何帮助。
答案 0 :(得分:2)
n> = 4个人共享所有n条信息的最佳方案是2n-4,如paper所示。
这个问题的分而治之的方法说明如下:
四人 比方说,A,B,C和D采用对话AB和CD,然后是 AC和BD。对于每个额外的人P,安排一个对话 AP,在A,B,C和D交换他们的知识之前, 然后是另一个对话AP。