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

本文通过具体例子详细介绍了如何使用动态规划解决旅行商问题(TSP)。从邻接矩阵和状态矩阵D的概念出发,阐述了动态规划的状态转移规律,并提供了求解最优路径的公式。最后,给出了Java代码实现的概述。
摘要由CSDN通过智能技术生成

网上很多相关文章介绍的时候都缺乏例子,以至于太抽象不够直观。本文用具体例子来介绍动态规划法界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个子集
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值