动态规划方法解旅行商问题(TSP Traveling Salesperson Problem)

网上很多相关文章介绍的时候都缺乏例子,以至于太抽象不够直观。本文用具体例子来介绍动态规划法界tsp,力求让初学者可以轻松理解。伪代码来自《Foundations of Algorithms(written by Neapolitan, Richard)》

TSP

tsp是为了在一个图中求得一个最短的路径,可以实现从一个起点出发,经过所有节点,最终回到起点。

首先理清一些概念

a.对于下图,我们用v1,v2,v3,……v6表示每个节点。n表示节点个数,n = 6。 因为求的是一个回路,所以从任意一点出发都没有区别。所以我们以v1做起点。

b.用二维邻接矩阵W表示各个节点之间的距离。即W[i][j] = vi到vj的距离


c.比较难理解也是比较重点的是用于存储动态规划状态的矩阵D。D的每一行表示一个节点,每一列表示一个子集。这个子集是指包含除起点v1外的所有节点集合V ={v2, v3, v4, v5, v6}(注意,这里的V不是所有点的集合,是除v1外所有点的集合)的任一子集

-------------------------------------------------------------------------------------------------------

{}{v2}{v2,v3}..(一共有2^5个子集,这里不全写了).{v2,v3,v4,v5,v6}

v1

v2

v3

...

v6

--------------------------------------------------------------------------------------------------------

  { Ø} {v2} {v2, v3} 省略,一共是2^5个子集
  • 12
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值