我在2D中有一组偶数点。我需要一种能够使这些点成对的算法,使得对之间的距离总和最大。
我认为,动态编程,贪婪的方法是行不通的。 我可以使用线性编程或匈牙利语算法吗?还是其他什么?答案 0 :(得分:1)
你当然可以使用整数线性编程。以下是一个示例公式:
为每个无序点x[ij]
和i
(例如j
)引入二元变量i<j
,其中x[ij]=1
iff为点i
和j
组合在一起。
计算所有距离d[ij]
(i<j
)。
目标是最大化sum_[i<j] d[ij]*x[ij]
,但要受限于每个点只有一对,即forall j, sum_[i<j] x[ij] = 1
。
请注意,此工作也适用于3d点:您只需要两对点之间的距离。