繁体   English   中英

查找图的最小树型网络,其中每个节点相互连接,并找到每个节点与所有其他节点的总和

[英]Finding a minimal tree-type network of a graph where each node is connected to each other and find the sum of each node to all the other nodes

一家拥有N名雇员的小公司的董事雇用您来建立雇员之间的网络,这些雇员必须每周向其他每个雇员发送报告,因为它们的不同部分或他们的报告对每个雇员都很重要,具体取决于工作的重要性,他们必须每周发送一次报告Ki次数

您已经测量了每2名员工之间传递一条消息所花费的时间。由于预算削减,网络在他们的员工之间将只有N-1个连接,并且由于发送一条消息时所使用的技术的简单性,整个网络都必须等待其发送(一次仅发送一条消息)

您得到的是N-员工人数,您将得到Ki,它是工人i每周要发送报告的时间,Tij表示消息从员工i到员工j传递的时间1 <= N <= 13

0 <= Ki <= 10 ^ 3

0 <= Tij <= 10 ^ 3

Tij = Tji,Tii = 0

最初,我假设最佳网络是一个星形(树),而要做的只是确定哪个节点位于中心,由于我们最多只能有N个节点,所以我决定用蛮力将其尝试一下,然后尝试所有这些,但是尝试失败了,因为这显然不是最佳的网络配置(或者测试案例向我展示了)。然后我想也许可以通过找到最小的生成树或每个员工制作的完整图来解决,但是因为存在多个最小生成树,但并不是所有的最小生成树都对解决这个已经在纸上失败的问题具有同等的价值

我目前没有什么主意,因此暗示我应该朝哪个方向前进是一个很好的提示

在最小生成树中,所有连接都必须形成一个连接树。 在这个问题上,我们没有这种限制。 因此,对于每个顶点i,您都可以将其连接到顶点j,使得T(i,j)最小。 这将确保不存在循环,并且每个顶点将至少具有1个边,因此根据需要,总数将少于N-1个边。

在13个节点上有13 ^ 11〜1.8e12棵生成树,因此蛮力是不可能的。 我相信预期的解决方案是动态编程。 对于由非空节点子集和属于该子集(根)的专有节点组成的每对,计算一个子问题的最佳解,其中根代表子集及其自身之外的所有节点。 单节点集是显而易见的基本情况。 对于较大的子问题,请使用动态子程序对给定集合的所有分区减去根进行优化。 在合并的子解决方案之上,增加的成本是从根到子节点的链接成本,该开销由使用这些链接的通信数量加权。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM