旅行商(TSP)问题的动态规划(DP)解法

变量定义

  • V V V:全部的点集合
  • S S S:访问过的顶点的集合,初始 S = { s } S=\{s\} S={s}
  • d i s ( i , j ) dis(i, j) dis(i,j):点 i i i j j j的距离,使用邻接矩阵存储图的边长
  • d ( S , i ) d(S,i) d(S,i):从出发点开始,访问了 S S S中全部的点,且当前在 i i i点,所需的最短路径

递推方程

  • 设出发点是s,则 d ( { s } , s ) = 0 d(\{s\},s)=0 d({s},s)=0
  • 对于 V − S V-S VS中全部的点 i i i,有 d ( S ⋃ { i } , i ) = min ⁡ j ∈ S ( d ( S , j ) + d i s ( j , i ) ) d(S\bigcup \{i\},i)=\min\limits_{j\in S}(d(S,j)+dis(j,i)) d(S{i},i)=jSmin(d(S,j)+dis(j,i))也就是已经到达了 S S S集合,接下来到 i i i,是从 j j j点到达 i i i点的。
  • 最终求出了 ∣ V ∣ |V| V d ( V , i ) d(V,i) d(V,i)值, T S P TSP TSP问题的答案就是 a n s = min ⁡ i ∈ V ( d ( V , i ) + d i s ( i , s ) ) ans=\min\limits_{i\in{V}}(d(V,i)+dis(i,s)) ans=iVmin(d(V,i)+dis(i,s))也就是加上回到原点的距离。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值