1. TSP问题
旅行商问题(Travelling salesman problem, TSP)是运筹学和理论计算机科学中经典的问题.具体问题如下:给定一系列城市和每对城市之间的距离,求解访问每座城市一次并回到起始城市的最短回路.
2. 动态规划
本节参考旅行商问题(动态规划)
2.1 理论介绍
假设节点数较少的TSP问题,我们完全可以使用穷举的方式得到最优解,但是在穷举过程中一定存在很多重复的计算.这时候我们就可以使用动态规划来避免这些重复计算以提高效率.
熟悉动态规划的同学一定知道,凡是可以使用动态规划求解优化问题,说明问题本身一定含有最优子问题,换言之,求解得到最优解,一定是由子问题的最优解组成.
换成数学的语言表达即,假设当前问题是想知道从节点i出发,访问剩余节点集合V的最短路径,将该问题表达成
d ( i , V ) d(i, V) d(i,V)
假如下一个节点选择了k节点能使该问题有最优解,那么本问题必定包含了子问题
d
(
k
,
V
−
{
k
}
)
d(k, V-\{\mathrm k\})
d(k,V−{k}),即从节点k出发访问剩余节点集合
V
−
{
k
}
V-\{\mathrm k\}
V−{k}.这是显而易见的,不妨反过来想,如果子问题不是最优,那么本问题一定不是最优的.
经过上面的分析,不难得出下面的动态规划方程:
d
(
i
,
V
)
=
{
c
i
s
,
V
=
∅
,
i
≠
s
min
{
c
i
k
+
d
(
k
,
V
−
{
k
}
)
}
,
k
∈
V
,
i
∉
V
,
V
≠
∅
\mathrm d(\mathrm i,\mathrm V)= class="MathJax_Display">
评论记录:
回复评论: