欢迎来到天天文库
浏览记录
ID:47073407
大小:116.71 KB
页数:21页
时间:2019-07-16
《动态规划法,回溯法,分支限界法求解TSP问题实验报告材料》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用文档TSP问题算法实验报告指导教师:季晓慧姓名:辛瑞乾学号:1004131114提交日期:2015年11月文案大全实用文档目录总述2动态规划法2算法问题分析2算法设计2实现代码2输入输出截图5OJ提交截图5算法优化分析5回溯法5算法问题分析5算法设计6实现代码6输入输出截图8OJ提交截图8算法优化分析9分支限界法9算法问题分析9算法设计9实现代码9输入输出截图14OJ提交截图14算法优化分析14总结15文案大全实用文档总述TSP问题又称为旅行商问题,是指一个旅行商要历经所有城市一次最后又回到原来的城市,求最短路程或最小花费,
2、解决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}
3、。设数组dp[n][2^n-1]存放迭代结果,其中dp[i][j]表示从顶点i经过子集x[j]中的顶点一次且一次,最后回到出发点0的最短路径长度,动态规划法求解TSP问题的算法如下。算法设计输入:图的代价矩阵mp[n][n]输出:从顶点0出发经过所有顶点一次且仅一次再回到顶点0的最短路径长度1.初始化第0列(动态规划的边界问题)for(i=1;i4、][j]=min{mp[i][k]+dp[k][j-1]};文案大全实用文档1.输出最短路径长度。实现代码#include#include#include#include#include#include#include#include#include#include#include#include#include#include5、tack>#include#include#include#include#include#include#include#definedebug"outputfordebug"#definepi(acos(-1.0))#defineeps(1e-8)#defineinf0x3f3f3f3f文案大全实用文档#definelllonglongint#definelsonl,m,rt<<1#definersonm6、+1,r,rt<<17、1usingnamespacestd;constintmod=1000000007;constintMax=100005;intn,mp[20][20],dp[20][40000];intmain(){while(~scanf("%d",&n)){intans=inf;memset(mp,0,sizeofmp);for(inti=0;i8、i][j]=tmp;}}intmx=(1<<(n-1));文案大全实用文档dp[0][0]=0;for(inti=1;i0){x=dp[k][(j-(1<<(k-1)))]+mp[i][k];y=min(y,x);}9、}dp[i][j]=y;}}}dp[0][mx-1]=inf;for(inti=1;i
4、][j]=min{mp[i][k]+dp[k][j-1]};文案大全实用文档1.输出最短路径长度。实现代码#include#include#include#include#include#include#include#include#include#include#include#include#include#include5、tack>#include#include#include#include#include#include#include#definedebug"outputfordebug"#definepi(acos(-1.0))#defineeps(1e-8)#defineinf0x3f3f3f3f文案大全实用文档#definelllonglongint#definelsonl,m,rt<<1#definersonm6、+1,r,rt<<17、1usingnamespacestd;constintmod=1000000007;constintMax=100005;intn,mp[20][20],dp[20][40000];intmain(){while(~scanf("%d",&n)){intans=inf;memset(mp,0,sizeofmp);for(inti=0;i8、i][j]=tmp;}}intmx=(1<<(n-1));文案大全实用文档dp[0][0]=0;for(inti=1;i0){x=dp[k][(j-(1<<(k-1)))]+mp[i][k];y=min(y,x);}9、}dp[i][j]=y;}}}dp[0][mx-1]=inf;for(inti=1;i
5、tack>#include#include#include#include#include#include#include#definedebug"outputfordebug"#definepi(acos(-1.0))#defineeps(1e-8)#defineinf0x3f3f3f3f文案大全实用文档#definelllonglongint#definelsonl,m,rt<<1#definersonm
6、+1,r,rt<<1
7、1usingnamespacestd;constintmod=1000000007;constintMax=100005;intn,mp[20][20],dp[20][40000];intmain(){while(~scanf("%d",&n)){intans=inf;memset(mp,0,sizeofmp);for(inti=0;i8、i][j]=tmp;}}intmx=(1<<(n-1));文案大全实用文档dp[0][0]=0;for(inti=1;i0){x=dp[k][(j-(1<<(k-1)))]+mp[i][k];y=min(y,x);}9、}dp[i][j]=y;}}}dp[0][mx-1]=inf;for(inti=1;i
8、i][j]=tmp;}}intmx=(1<<(n-1));文案大全实用文档dp[0][0]=0;for(inti=1;i0){x=dp[k][(j-(1<<(k-1)))]+mp[i][k];y=min(y,x);}
9、}dp[i][j]=y;}}}dp[0][mx-1]=inf;for(inti=1;i
此文档下载收益归作者所有