我需要一种算法来对2D平面中的多个点列表进行排序,以便每个列表的对应点具有最小化它们之间的距离。
即。对于两个长度相等的列表,第一个列表的第一个点与第二个列表的第一个点的距离最小,第一个点的第二个点与第二个列表的第二个点的距离最小,等等。
我的第一个想法是简单地按x和y坐标的平均值排序,但我觉得这并不完全准确。
答案 0 :(得分:1)
如果您尝试最小化相邻点之间的总距离,则根本不是排序任务。
相反,您似乎正在尝试解决二维空间中的Hamiltonian Path问题。对于点之间的任意距离,这是NP完全的。即使是欧几里德距离的限制,在你的情况下,is still NP-complete,但有近似算法;见https://www.ads.tuwien.ac.at/teaching/ws10/AlgGraphen/ag3-2x2.pdf。一般来说,由于Sanjeev Arora的工作,Euclidean TSP可以在多项式时间内逼近,为此他赢得了Gödel Prize:
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.23.6765
搜索欧几里德旅行推销员问题,您还将获得其他科学论文的链接,讨论如何找到解决方案。