我在R ^ d的点x_1,x_2,... x_n \给出。我希望找到k个点的子集,使得这些k点之间的距离之和最小。天真这是一个O(n选择k)问题,但我正在寻找一种更快的算法。
我可以想到两种可供选择的等效配方:
最小边缘权重集团问题:将点视为图形,边缘权重是距离,并找到最小权重集团。 This is equivalent to maximal edge weight problem,已知是NP完全的。但是,我知道我的图形嵌入在R ^ d中,并且所有权重都是正数,所以也许这可能有帮助吗?
最小的无约束子矩阵问题:我给出了对称距离矩阵,我希望找到一个kXk次要的最小和。
我很感激你的帮助。
答案 0 :(得分:1)
最明显的优化并不需要任何不同的公式。
首先贪婪地找到一个近乎理想的候选人。尝试通过交换成员来在线性时间内完善它。然后进行详尽的搜索,但每当新候选人比贪婪候选人更糟糕的时候停止搜索搜索空间。
E.g。
现在你应该有一个相当不错的修剪候选人。
然后进行详尽的搜索,并在比这个候选人更糟糕时停止。
注意:步骤1-3是从快速凸包算法中获得的灵感。