【问题标题】: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找到一个图的最小树型网络,其中每个节点相互连接,并找到每个节点与所有其他节点的总和
【发布时间】:2014-04-28 11:24:33
【问题描述】:

您受雇于一家拥有 N 名员工的小公司的董事,负责在员工之间建立网络,这些员工必须将每周报告作为不同的部分发送给其他每个员工,或者他们的报告对每个员工都很重要,根据他们工作的重要性,他们必须每周发送报告 Ki 次数

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

你得到的是 N - 雇员的数量,你得到 Ki 是工人 i 每周发送报告的次数,Tij 表示消息从雇员 i 传送到雇员 j 的时间 1

0

0

Tij = Tji, Tii = 0

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

我目前有点没有想法,所以关于我应该往哪个方向寻找的提示会很棒

【问题讨论】:

  • 你可以在节点的子集上使用 DP,如果没有别的。设 f(S) 是连接集合 S 中节点的最优方式。它是通过将一个节点添加到一个较小的最优集合来构造的,因此我们有最优子结构

标签: algorithm tree graph-theory graph-algorithm


【解决方案1】:

13 个节点上有 13^11 ~ 1.8e12 个生成树,所以暴力破解是不可能的。我相信预期的解决方案是动态编程。对于由非空节点子集和属于子集(根)的可区分节点组成的每一对,计算子问题的最优解,其中根代表子集之外的所有节点以及它自身。单节点集是一个明显的基本情况。对于更大的子问题,使用动态子程序对给定集合的所有分区减去根进行优化。在组合子解决方案之上的附加成本是从根到其子级的链接的成本,由使用这些链接的通信数量加权。

【讨论】:

    【解决方案2】:

    在最小生成树中,所有连接都必须形成连接树。在这个问题上,我们没有这样的限制。因此,对于每个顶点 i,您可以将其连接到顶点 j,使得 T(i,j) 最小。这将保证没有循环,并且每个顶点将至少有 1 条边,因此总共将有少于 N-1 条边,这是所需的。

    【讨论】:

      猜你喜欢
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      相关资源
      最近更新 更多