给定n个节点在坐标平面上互连的图表,找到包含m个节点的最小距离子树的最佳方法是什么?
我发现这个问题的唯一解决方案是生成节点的所有组合以连接并尝试通过Kruskal或Prim的算法连接这些节点而忽略其余的,然后比较所有创建的树并找到最小的树,但对于较大的树木,这并不是完全有效的。
是否有更快,更有效的算法/方法?
答案 0 :(得分:5)
您正在询问K-minimum spanning tree (k-MST)问题,该问题已知为NP完全问题。因此,您不会比当前的算法做得更好。
但是,在评论中,你说你的图是从坐标平面生成的,所以我只能假设你有一些关于图中节点的几何信息。 WWW compendium entry提到您可以使用Euclidean k-MST的多项式时间近似方案。本文介绍了一个:
Arora,Sanjeev。 (1996),Polynomial time approximation scheme for Euclidean TSP and other geometric problems,In 第37届会议录。 IEEE Symp。关于计算机基础 科学,第2-11页。
他们直接在那里提到了k-MST,所以如果你真的想要更快的话,我想你可以试试这个算法。