#845. 旅行商问题
旅行商问题
当前没有测试数据。
著名的旅行商问题(Traveling Salesman Problem,TSP)指一个 旅行商从一个城市出发,经过每个城市一次且只有一次回到原来的地 方,要求经过的距离最短。TSP问题是一个NP难题,目前没有多项式时 间的高效算法。若采用搜索+剪枝,则该算法的时间复杂度为, 数据量大时,这种方法无法解决,可以尝试采用动态规划解决。
假设已访问的节点集合为(将源点当作未被访问的节点,因为 从出发,所以要回到),当前所在的节点为 。
状态表示:表示已经访问的节点集合为,从 出发 走完所有剩余节点回到源点的最短距离。
状态转移方程: 若当前 的邻接点 未访问,则由两 部分组成,第部分是到 的边值,第部分是从 出发走完所有剩余 节点再回到源点的最短距离。访问完v 之后,已访问的节点集合变为 ,若 有多个未被访问的邻接点 ,则取最小值。={ } },如下图所示。
临界条件: ,表示若所有节点都已被访问, 则此时已经没有剩余节点,从节点出发走完所有剩余节点回到源点的 最短距离为。
旅行商问题可以采用递推和记忆化递归两种方法求解。
来源
Traveling Salesman Problem,TSP