码迷,mamicode.com
首页 > 其他好文 > 详细

双调旅行商问题 (Bitonic TSP)

时间:2015-07-06 12:17:05      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:算法导论   leetcode   动态规划   旅行商问题   

问题描述:技术分享

上述问题可以使用动态规划的方法来解决。

下面是解决思路的具体介绍:

1. 最优子结构:

假设d[i][j]表示从起点1出发到达i及j两个顶点的最短路程之和。为此可以假设K为此段路程上与j相加的节点,则d[i][j] = d[i][k] + len[k][j]。
证明:若存在一个更短的路径d[i][k],则就应该存在更短的路径d[i][j],这与假设矛盾,因此得证。
下面来寻找j相邻的节点,其中若i<j-1,则显然k=j-1,若i=j-1,则显然k属于(1,j-2)之间,为此得到如下的递推关系:
d[i][j] = d[i][j-1]+len(j,j-1) i<j-1;
d[i][j] = min(d[i][k] + len(k,j)),k属于(1,j-2)。
最终输出的d[n-1][n]即可。
对于路径的输出,只需要记录每次与j相邻的节点即可,也即记录k的值。
具体实现稍后补充!!


版权声明:本文为博主原创文章,未经博主允许不得转载。

双调旅行商问题 (Bitonic TSP)

标签:算法导论   leetcode   动态规划   旅行商问题   

原文地址:http://blog.csdn.net/shaya118/article/details/46772019

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!