【问题标题】:Minimal spanning tree with K extra node具有 K 个额外节点的最小生成树
【发布时间】:2017-10-15 17:36:22
【问题描述】:

假设我们得到一个二维平面图,其中有n 节点和每对节点之间的边,权重等于欧几里得距离。最初的问题是找到这个图的 MST,很清楚如何使用 Prim 或 Kruskal 算法解决这个问题。

现在假设我们有k 额外节点,我们可以将其放置在二维平面上的任何整数点中。问题是找到这些节点的位置,以便新图具有尽可能小的 MST,如果没有必要使用所有这些额外的节点。

显然不可能找到精确的解决方案(在多时间内),但目标是找到最好的近似解决方案(可以在 1 秒内找到)。也许您可以提出一些最有效的方法来抛出可能的解决方案,或者提供一些涵盖类似问题的文章。

【问题讨论】:

  • 这听起来让人联想到 Steiner 树问题,这是众所周知的 NP 难题。

标签: algorithm optimization approximation


【解决方案1】:

这是您正在研究的非常有趣的问题。你有很多选择来解决这个问题。在这种情况下,最著名的启发式算法是 - Genetic AlgorithmsParticle Swarm OptimizationDifferential Evolution 和许多其他此类。

这种启发式方法的好处是您可以将它们的执行限制在一定的时间(比如说 1 秒)。如果这是我的任务,我会先尝试遗传算法。

【讨论】:

    【解决方案2】:

    您可以尝试使用贪心算法,尝试 MST 中最长的边,这可能会带来最大的节省。

    选择最长的边,现在从每一边获取与所选边成角度的每个顶点的潜在边。

    从中选择最佳施泰纳点。

    修复 MST ...

    重复直到 1 秒结束。

    如果其中一个顶点本身就是一个施泰纳点,挑战是怎么办。

    【讨论】:

      猜你喜欢
      • 2020-08-21
      • 2021-12-14
      • 2013-12-06
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 2019-05-13
      相关资源
      最近更新 更多