最佳点对

时间:2013-07-23 15:32:36

标签: graph-algorithm linear-programming hungarian-algorithm

我在2D中有一组偶数点。我需要一种能够使这些点成对的算法,使得对之间的距离总和最大。

我认为,动态编程,贪婪的方法是行不通的。 我可以使用线性编程或匈牙利语算法吗?还是其他什么?

1 个答案:

答案 0 :(得分:1)

你当然可以使用整数线性编程。以下是一个示例公式:

为每个无序点x[ij]i(例如j)引入二元变量i<j,其中x[ij]=1 iff为点ij组合在一起。

计算所有距离d[ij]i<j)。

目标是最大化sum_[i<j] d[ij]*x[ij],但要受限于每个点只有一对,即forall j, sum_[i<j] x[ij] = 1

请注意,此工作也适用于3d点:您只需要两对点之间的距离。