动态规划法回溯法分支限界法求解TSP问题实验报告.doc

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

TSP问题算法实验报告指导教师:季晓慧

姓名:辛瑞乾

学号:

提交日期:2015年11月

目录

总述 ......................................................................

动态规划法................................................................

算法问题分析............................................................

算法设计................................................................

实现代码................................................................

输入输出截图............................................................

OJ提交截图 ..............................................................

算法优化分析............................................................

回溯法 ....................................................................

算法问题分析............................................................

算法设计................................................................

实现代码................................................................

输入输出截图............................................................

OJ提交截图 ..............................................................

算法优化分析............................................................

分支限界法................................................................

算法问题分析............................................................

算法设计................................................................

实现代码................................................................

输入输出截图............................................................

OJ提交截图 ..............................................................

算法优化分析............................................................

总结 ......................................................................

总述

TSP问题又称为旅行商问题,是指一个旅行商要历经所有城市一次最后又回到原来的城市,求最短路程或最小花费,解决TSP可以用好多算法,比如蛮力法,动态规划法⋯具体的时间复杂的也各有差异,本次实验报告包含动

态规划法,回溯法以及分支限界法。

动态规划法

算法问题分析

假设 n 个顶点分别用0~n-1 的数字编号,顶点之间的代价存放在数组mp[n][n] 中,下面考虑从顶点0 出发求解 TSP问题的填表形式。首先,按个数为 1、2、⋯、 n-1 的顺序生成1~n-1 个元素的子集存放在数组x[2^n-1] 中,例如当n=4时,x[1]={1},x[2]={2},x[3]={3},x[4]={1,2},x[5]={1,3},x[6]={2,3},x[7]=

{1,2,3} 。设数组dp[n][2^n-1] 存放迭代结果,其中dp[i][j] 表示从顶点i 经过子集x[j] 中的顶点一次且一次,最后回到出发点0 的最短路径长度,动态规划法求解TSP问题的算法如下。

算法设计

输入:图的代价矩阵mp[n][n]

输出:从顶点 0 出发经过所有顶点一次且仅一次再回到顶点0 的最短路径长度

1.初始化第 0 列(动态规划的边界问题)

for(i=1;i

dp[i][0]=mp[i][0]

2.依次处理每个子集数组 x[2^n-1]

for(i=1;i

if (子集 x[j]中不包含i)

对x[j] 中的每个元素 k,计算 d[i][j]=min{mp[i][k]+dp[k][j-1]};

3.输出最短路径长度。

实现代码

#include

#include

#include

#include

#include

#include

#include

#include

相关文档
最新文档