给定3D笛卡尔空间中的一组点,我正在寻找一种能够对这些点进行排序的算法,这样两个连续点之间的最小欧几里德距离将最大化。
如果算法倾向于最大化连续点之间的平均欧几里德距离,那也是有益的。
修改
我已在https://cstheory.stackexchange.com/上转发并得到了一个很好的答案。请参阅https://cstheory.stackexchange.com/questions/8609/sorting-points-such-that-the-minimal-euclidean-distance-between-consecutive-poin。
答案 0 :(得分:3)
以下是解决方案成本的下限,它可以作为分支和绑定的构建块或更不可靠的不完整搜索算法:
对点之间的距离进行排序,并以非递增顺序考虑它们。使用http://en.wikipedia.org/wiki/Disjoint-set_data_structure跟踪点集,当通过两点之间的链接连接时合并两组。在将所有点合并为一组时,您遇到的最短距离的长度是完美解决方案中最小距离的上限,因为完美的解决方案还将所有点合并为一个。但是,您的上限可能比完美解决方案的最小距离长,因为您加入的链接可能会形成树,而不是路径。
答案 1 :(得分:1)
您可以通过图表对问题进行建模,在点之间绘制线条,现在您有一个完整的图形,现在您的问题是在此图形中找到NP-Hard的最长路径,请参阅longest path的wiki。
事实上我回答了问题的第二部分,最大化平均值,这意味着从图的每个节点最大化路径,如果你将它们加权为1 /距离,那将是旅行商问题(最小化路径长度)和是NP-Hard。对于这种情况,查看Metric TSP approximation可能很有用。