带有额外节点

时间:2017-10-15 17:36:22

标签: algorithm optimization approximation

假设我们在2D平面上给出了一个图,其中n个节点和每对节点之间的边缘,其权重等于欧氏距离。最初的问题是找到该图的MST,并且很清楚如何使用Prim或Kruskal算法来解决这个问题。

现在我们假设我们有k个额外节点,我们可以将它们放在2D平面上的任何整数点上。问题是找到这些节点的位置,以便新图形具有尽可能小的MST,如果不需要使用所有这些额外节点。

显然不可能找到确切的解(在多时间内),但目标是找到最佳近似值(可在1秒内找到)。也许你可以提出一些最有效的方法来提出可能的解决方案,或提供一些文章,其中涉及类似的问题。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

选择最长的边,现在从每个顶点获得每个顶点的潜在边缘,这些边缘与所选择的边缘成一定角度。

从这些中选择最好的施泰纳点。

修复MST ......

重复直到1秒消失。

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