旅行商TSP问题描述
旅行推销员问题(Travelling salesman problem, TSP)是这样一个问题:给定一组城市和每对城市之间的距离,问题是找到最短的可能路线,访问每个城市一次,然后返回起点。它是组合优化中的一个NP困难问题,在运筹学和理论计算机科学中非常重要。
注意哈密顿回路和TSP之间的区别。哈密顿回路问题是要找出是否存在一个旅游线路,每个城市访问一次。这里我们知道哈密顿回路存在(因为图是完整的),事实上存在许多这样的回路,问题是找到一个最小权重的哈密顿回路。
例如,考虑上面图中所示的内容。图中的TSP路线为:是-0>1->3->2->0。旅游费用为10+25+30+15,共80元。
哈密顿回路
哈密顿图(哈密尔顿图)(Hamiltonian graph,或Traceable graph)是一个无向图,由天文学家哈密顿提出,由指定的起点前往指定的终点,途中经过所有其他节点且只经过一次。在图论中是指含有哈密顿回路的图,闭合的哈密顿路径称作哈密顿回路(Hamiltonian cycle),含有图中所有顶点的路径称作哈密顿路径(Hamiltonian path)。
算法分析
这里给出一种简单的算法实现。
将城市0(假设为第0个节点)作为起点和终点。由于路线是循环的,所以我们可以把任何一点作为起点。
以DFS方式开始从源到相邻节点的遍历。
计算每次遍历的成本,跟踪最小成本,并不断更新最小成本存储值。
以最低成本返回结果。