Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 分而治之(通过最小调用进行秘密共享)_Java_Algorithm_Divide And Conquer - Fatal编程技术网

Java 分而治之(通过最小调用进行秘密共享)

Java 分而治之(通过最小调用进行秘密共享),java,algorithm,divide-and-conquer,Java,Algorithm,Divide And Conquer,一个班有多少学生。老师告诉我一个秘密 每个学生。分享秘密的唯一方法是通过电话 呼叫利用分治法,设计了一种求最小值的算法 要求的电话数量,以便每个学生获得所有 秘密 我的一个朋友问我这个问题。我花了一些时间来画一个草图,也就是说,我会有一个学生数组,我会递归地打破它,直到我有一个学生,当他们回来后,我会计算这两个学生之间的通话次数 在组合两对时,我会数两次呼叫,以此类推。这是一个困扰我的问题,或者可能是我遗漏了什么 X1 X2 (1 call) X3 X4 (1 c

一个班有多少学生。老师告诉我一个秘密 每个学生。分享秘密的唯一方法是通过电话 呼叫利用分治法,设计了一种求最小值的算法 要求的电话数量,以便每个学生获得所有 秘密

我的一个朋友问我这个问题。我花了一些时间来画一个草图,也就是说,我会有一个学生数组,我会递归地打破它,直到我有一个学生,当他们回来后,我会计算这两个学生之间的通话次数

在组合两对时,我会数两次呼叫,以此类推。这是一个困扰我的问题,或者可能是我遗漏了什么

X1 X2  (1 call)               
X3 X4 (1 call)

X1 -----> X3
X2 -----> X4 (2 more calls) 

感谢您的帮助。

n>=4人共享所有n条信息的最佳方案为2n-4,如图所示

此问题的分而治之方法如下所示:

四人 A、 B,C和D,比如说,进行对话AB和CD,然后进行对话 AC和BD。每增加一个人P,安排一次对话 AP,在A、B、C和D交换知识之前, 然后又是一次谈话


每个电话是从一个学生打给另一个学生的吗?然后需要n-1个呼叫,因为除了最初被告知秘密的学生外,每个学生都需要接收他/她自己的呼叫。n-1是最大值,如我在示例X1和X2中所示,1次呼叫后可以有2个秘密,现在如果X1呼叫X3,而X3已经呼叫X4,那么X1获得了所有4个scretsWhoops,我误读了——我以为只有一个秘密。在这种情况下,n-1绝对是一个下界,而不是上界!这个方案是如何推广到n个人的?添加n个人,让n个人和1个人交谈,然后为n-1个人解决问题,然后让n个人和1个人再次交谈。我不明白。所以说,第5、6、7和8个人,比如说,都应该给第1个人打电话,然后4个人的方案运行,然后第5、6、7和8个人应该再和第1个人通话?@Peterderivez我不知道为什么,但我感到困惑的是,偶数和奇数的人有什么影响吗…请引导我…就像增加1个人,我们还需要4个电话,而如果我们有另一对电话号码是less@SSH要增加一个人,我们只需要再打两个电话,一个在开头,一个在结尾。总数是偶数还是奇数无关紧要。