旅行商问题—动态规划
问题描述
-
最经典的旅行商问题描述为:一个商品推销员要去若干个城市推销商品,从一个城市出发,经过所有城市一次后回到出发地,怎样选择路线使得总的行程最短。
之前在做华为面试题的时候碰到了旅行商问题,虽然描述不太一样,但本质都是一样的:蜜蜂要去几个点采蜜,且每个点相对于蜂巢的坐标位置已经给出,求蜜蜂从蜂巢出发,经过每个点采蜜后,再回到蜂巢飞行的最短距离
相关知识(引用了一篇博客)
-
个人思路:
我是在做华为的机考题的时候碰到旅行商问题的,当时我的第一反应是数据结构里学的最短路径算法(Dijkstra,Floyd)。但是后来我仔细想了想,Dijkstra算法求解的是从一个点出发到其他各点的最短路径,并且如果是从A到B点,其中的路径不一定会经过其他所有点,所以用该算法来解决旅行商问题好像是行不通的。
(如果后续有想到如何利用该算法来解决,会进行更新)
。后来,我开始思考贪心算法是否能解决这个问题,即从原点出发,寻找离该点最近的点,并加入到路径中,随后再找下一个距离这个加入的点最近的点,由此来找出最短的回路,但是我并不能利用数学知识来验证这样的解法是否有效,所以,今天在网上找了一系列关于旅行商问题的解题思路。 -
百度百科里的题解:
百度百科里针对旅行商问题,提供了许多种解题方法,但这些方法都只能是趋近于最优解,他们或多或少都受到一些因素的影响,从而无法求得最优解。于是,我想到了动态规划的方法,虽然动态规划在时间复杂度上比这些算法要大,但是能够求得最优解。但是,由于我对动态规划的应用并不算了解,所以趁这个机会来学习一下动态规划。
这篇博客就是用动态规划来求解旅行商问题,写的非常详细,链接如下:
https://blog.csdn.net/hytfly/article/details/95739609
过程确实很复杂,看了好久,理解的模棱两可,决定明天再看一遍,看完以后再把自己的理解写在下面。
版权声明:本文为evan_qhy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。