资源简介
本压缩文档包含三个文件:用回溯法解决TSP问题可执行源代码,word文档报告,实验测试数据
代码片段和文件信息
#include “stdio.h“
#include “math.h“
#include “stdlib.h“
#define N 10
//#define M 1*2*3*4
#define num 100
int noEdge=-1; //无边标记
struct object
{
int n; //城市编号
int x; //x坐标
int y; //y坐标
}wup;
struct object wp[N+1]; //共N个城市
double A[num][num];//存放各个城市之间的代价
int count;//记录走过的节点数
int bestA[num];//当前最优解
int x[num];//当前解
double currentP;//当前路径值
double bestPath;//当前最短路径值
int distant(int x1int y1int x2int y2)
{
double x=0;
x=sqrt(pow(abs(x1-x2)2)+pow(abs(y1-y2)2));
return (int)x;
}
void Backtrack(int i)
{
count++;
if(i==N)
{
if(A[x[N-1]][x[N]]!=noEdge && A[x[N]][x[1]]!=noEdge)
{
if( bestPath == noEdge ||bestPath > currentP+A[x[N-1]][x[N]]+A[x[N]][x[1]])
{
for(int j=1;j<=N;j++)
{
bestA[j]=x[j];
}
bestPath=currentP+A[x[N-1]][x[N]]+A[x[N]][x[1]];
}
}
}
else
{
int j;
for(j=i;j<=N;j++)
{
if(A[x[i-1]][x[j]] !=noEdge)
{
if(bestPath ==noEdge || bestPath > currentP+A[x[i-1]][x[j]]+A[x[j]][x[1]] )
{
int temp;
currentP +=A[x[i-1]][x[j]];
temp=x[i];
x[i]=x[j];
x[j]=temp;
Backtrack(i+1);
temp=x[i];
x[i]=x[j];
x[j]=temp;
currentP -=A[x[i-1]][x[j]];
}
}
}
}
}
double tsp()
{
//初始化
bestPath=noEdge;
currentP=0.0;
int i;
for(i=1;i<=N;i++)
{
x[i]=i;
}
Backtrack(2);
return bestPath;
}
void output()
{
int i;
for(i=1;i<=N;i++)
{
printf(“%4d“bestA[i]);
}
printf(“ 1“);
printf(“\n“);
}
int main()
{
int ij;
//获取数据
FILE *fp; /*文件指针*/
if((fp=fopen(“data.txt““r+“))==NULL)
{
printf(“cannot open the file!“);
exit(0);
}
//读取文件
for(i=1;i<=N;i++)
{
fscanf(fp“%d%d%d“&wp[i].n&wp[i].x&wp[i].y);
}
printf(“ 城市编号 x坐标 y坐标\n“);
for(i=1;i<=N;i++)
{
printf(“ %d %d %d\n“wp[i].nwp[i].xwp[i].y);
}
printf(“--------------------------------------\n\n“);
for( i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
{
if(i==j)
{
A[i][j]=-1;
}
else
{
A[i][j]=distant(wp[i].xwp[i].ywp[j].xwp[j].y);
}
}
}
for(i=1;i<=N;i++)
{
printf(“第%d行: “i);
for(j=1;j<=N;j++)
{
printf(“%2.0f “A[i][j]);
}
printf(“\n“);
}
printf(“\n“);
printf(“--------------------------------------\n“);
printf(“走%d个城市最短路径为:%lf\n“Ntsp());
printf(“走法为:“);
output();
printf(“循环次数:%d\n“count);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 221877 2018-07-01 18:59 15计2-2015551239-王维-用回溯法解TSP问题\15计2-2015551239-王维-用回溯法解TSP问题.docx
文件 2136 2015-05-07 14:17 15计2-2015551239-王维-用回溯法解TSP问题\data.txt
文件 2620 2018-07-01 15:47 15计2-2015551239-王维-用回溯法解TSP问题\tsp.cpp
文件 163437 2018-07-01 15:37 15计2-2015551239-王维-用回溯法解TSP问题\tsp.exe
目录 0 2018-07-01 18:59 15计2-2015551239-王维-用回溯法解TSP问题
----------- --------- ---------- ----- ----
390070 5
相关资源
- 回溯法背包问题非递归实现
- 利用神经网络中Hopfield求解TSP问题,适
- 试设计一个用回溯法搜索排列空间树
- 有向图的全部拓扑序列(回溯法)
- 回溯法专题
- 回溯法求解骑士巡游问题
- 分别用回溯法和分支限界法求解0-1背
- \\基于TSP问题的蚁群算法优化及并行策
- acm培训资料,题目分类,递归分治策
- 遗传算法求解CHN144城市的TSP问题
- 最小生成树解决tsp问题
- 用遗传算法解决TSP问题
- 用贪心法解决TSP问题
- MPI并行解决TSP问题
- 旅行商TSP问题的Lingo程序
- 旅行商问题的数学规划模型
- Hopfield人工神经网络求解TSP问题附论文
- TSP问题的benchmark库
- 求两点之间的所有路径(广度优先与
- 利用遗传算法解决TSP并实现可视化程
- 子集树问题 试设计一个用回溯法搜
- 蚁群算法与遗传算法解决TSP问题
- 蚁群算法解决TSP问题的C实现代码直接
- 遗传算法解决TSP问题
- 回溯法求解TSP问题
- 关于MTSP问题的几篇论文
- 一种求解TSP问题的改进遗传算法源代
- ACS蚁群算法求解TSP问题
- 回溯法解决旅行商问题
- TSP问题的遗传算法实验报告
评论
共有 条评论