假设我们在2D平面上给出了一个图,其中n
个节点和每对节点之间的边缘,其权重等于欧氏距离。最初的问题是找到该图的MST,并且很清楚如何使用Prim或Kruskal算法来解决这个问题。
现在我们假设我们有k
个额外节点,我们可以将它们放在2D平面上的任何整数点上。问题是找到这些节点的位置,以便新图形具有尽可能小的MST,如果不需要使用所有这些额外节点。
显然不可能找到确切的解(在多时间内),但目标是找到最佳近似值(可在1秒内找到)。也许你可以提出一些最有效的方法来提出可能的解决方案,或提供一些文章,其中涉及类似的问题。
答案 0 :(得分:1)
这是你正在研究的非常有趣的问题。您有很多选择来解决此问题。在这种情况下,最着名的启发式方法是 - Genetic Algorithms,Particle Swarm Optimization,Differential Evolution以及此类许多其他启发式方法。
这种启发式的好处在于你可以将执行时间限制在一定的时间内(比方说1秒)。如果这是我的任务,我会首先尝试遗传算法。
答案 1 :(得分:0)
您可以尝试使用贪婪算法,尝试MST中最长的边缘,这可能会带来最大的节省。
选择最长的边,现在从每个顶点获得每个顶点的潜在边缘,这些边缘与所选择的边缘成一定角度。
从这些中选择最好的施泰纳点。修复MST ......
重复直到1秒消失。
挑战是如果其中一个顶点本身就是斯坦纳点,该怎么办。