拼图 |双边对话
一个班有n个学生,每个学生都有不同的个性属性。因为他们是新来的,所以他们想了解彼此。为了帮助学生,老师决定开展一项活动。活动的规则是学生将通过一系列双边对话(例如,通过电话)分享彼此的个性属性。假设在每次对话中,双方都交换了他们当时知道的所有个性属性。他们需要最少多少次对话才能保证每个人都获得所有的个性属性?
解决方案 :
让我们将 n 个学生表示为 S1、S2、S3、…………、Sn。
当学生人数 (n) = 1 时,由于不可能进行双边对话,因此所需的对话次数为 0。
对于 n = 2,所需的对话次数为 1,即在 S1 和 S2 之间。
对于 n = 3,需要三个对话,分别为(S1 与 S2)、(S2 与 S3)、(S1 与 S3))。
对于 n = 4,需要四次对话。
对于 n = 5,需要六次对话。
对于 n = 6,需要八次对话。
上图显示了通过双边对话的最佳个性属性共享。对话的顺序由连接顶点的边上的标签表示,代表对话方。对话的顺序可能会有所不同。
该逻辑可以进一步扩展到 n = 7、8 等。如果观察,则可以看出该算法中的对话总数等于 2(n – 4) + 4 = 2n – 4,其中 n >= 4。
进行对话以确保最小化的最佳方法是什么:
对于 n > 4,n = 4 的解可以通过让每个学生 S5, S6, ... 来扩展。 . ., Sn 与人 S1 交谈,然后 S1 与 S2、S3 与 S4、S1 与 S4 和 S2 与 S3 交谈,然后使 S1 与每个学生 S5、S6、...交谈。 . ., Sn 第二次。
注意:对话的顺序可能会有所不同,但最小对话的总数将保持不变,这在 n = 6 的图像中可以清楚地看到。
参考 : 算法谜题 – Anany Levitin, Maria Levitin