我有一个算法,目前从我的数据库中提取一些2Dsphere点(不超过6个),这些点彼此之间都在一定的半径内。一旦我拉出了这些点,我想以一条有效的路径对它们进行排序,并以这种顺序返回它们(目前,当我返回它们时,用户可以从一个点被发送到离它最远的点,即使在途中有点在中间)。有没有一种有效的方法来使用MongoDB 2Dsphere点来做到这一点?我实验过的暴力方法效率不是很高:我找到离起点A最近的点B,然后找到离点B最近的点C,以此类推。
发布于 2017-02-08 23:59:02
这就是旅行推销员问题。虽然有一些算法在近似有效路径方面做得很好,但暴力暴力的计算成本非常高。
https://en.wikipedia.org/wiki/Travelling_salesman_problem
这篇维基文章有一些很好的近似算法,可以让你开始谷歌搜索
https://en.wikipedia.org/wiki/Travelling_salesman_problem#Christofides.27_algorithm_for_the_TSP
https://stackoverflow.com/questions/42117758
复制相似问题