Google Maps的“optimizeWaypoints”如何解决旅行推销员?

时间:2013-08-21 04:39:18

标签: java google-maps google-maps-api-3 heuristics traveling-salesman

我想解决一个旅行推销员问题,例如谷歌地图在其DirectionsRequest request.setOptimizeWaypoints(true);中所做的问题。它在一条路线中命令一些航路点,以便减少旅行费用。

我的问题:有人知道它背后的算法是什么吗?任何启发式?到目前为止,谷歌找不到任何信息。

我告诉自己并发现了很多插入 - 启发式,最近邻居等等......或者它是一个精确的解决方案?

1 个答案:

答案 0 :(得分:7)

Travelling Salesman Problem上的维基百科页面引用了许多用于查找解决方案的算法。 (但除非N很小,否则请避免使用"确切的"算法!)

根据Google员工的this post,Google官方路线计算算法的源代码可在此处找到:

......但这并不完全清楚这是否是"生产" Google地图的代码。

来自源代码中的评论:

// Solving the vehicle routing problems is mainly done using approximate methods
// (namely local search,
// cf. http://en.wikipedia.org/wiki/Local_search_(optimization)), potentially
// combined with exact techniques based on dynamic programming and exhaustive
// tree search.

这个一般性问题(Google Maps vs TSP)也在其他各种SO问题中进行了讨论。

参考文献: