动态规划法 - 解决TSP旅行商问题(iOS、python)

本文介绍如何使用动态规划算法解决旅行商问题(TSP),并分别给出了Python和iOS的实现示例。通过位操作优化,减少重复计算,最终找到从起点到所有城市的最短路径,并讨论了记录路径的方法。
摘要由CSDN通过智能技术生成

项目里突然出现了一个类似TSP旅行商的问题,稍微有点儿变动的可能是需要指定终点,而不是回到起点。

因为项目里设计规划的点的比较少(<20)又要求比较准确,所以采用了动态规划法。

动态规划算法的定义就不多做介绍了, 下面直接来到解决思路。

假设有N个城市,dp[N][N]这个二维数组保存了 各个城市之间的距离

那么问题就可以简化为 从0(p)点出发到还未走过的城市集合 S(N-1)的最短距离

定义为 min_distance(S, 0) ,

假设第二个到达城市j,那么剩下的最短距离min_distance(S-j,j)  (S-j 表示S集合去掉j点,先这么表示,后面具体再说)

就有min_distance(S, 0) = min_distance(S-j, j) + dp[j][0],这也就是我们的递归公式

如果我们要取最小值的话 上面的j城市就要遍历从 1 到 (N-1)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值