可运行的c语言程序:旅行商求最短路径问题

旅行商问题(Traveling Salesman Problems,简写为TSP)是指一销售商从n个城市中的某一城市出发,不重复地走完其余n-1个城市并回到原出发点,在所有可能的路径中求出路径长度最短的一条。
编程提示:
1 分模块化编程,逐一解决问题。本实验需要多次循环求解,所以要保证求解每一步的正确性。
2 三个遗传算子中,选择算子是必需的,交叉和变异操作独立并行,可分别实现,编程困难者可选作其一。
3 程序中需要产生大量随机数,要注意如何正确使用产生随机数的函数rand( )。
#include "time.h"
unsigned seed=(unsigned)time(NULL);
srand(seed);
r=rand()%(CITY_NUM-1)+1;//产生1~CITY_NUM-1之间的随机数
r=(rand()%10000+0.1)*0.0001;//产生0~1之间的伪随机数,四位,如果把0.1改为1,有时会出r=1

在无向完全图中,对于任意两个顶点vi和vj,我们可以在多项式时间内找到vi和vj这两个顶点之间的所有路径,选择其中路程最短的一条,令S[i,j]表示vi和vj这两个顶点之间最短距离的那条路径。搜索路径S[i,j],找到vi到达的在S[i,j]上的第一个顶点,记该顶点为vk,将其记录在数组中R[][],递归查找vi到vk和vk到vj的最短路径及其相应权值,最后将数组D[]中的顶点和权值之和打印出来即为所求,并用画图函数将行经过程画出。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-12
旅行商问题(Traveling Salesman Problems,简写为TSP)是指一销售商从n个城市中的某一城市出发,不重复地走完其余n-1个城市并回到原出发点,在所有可能的路径中求出路径长度最短的一条。
编程提示:
1 分模块化编程,逐一解决问题。本实验需要多次循环求解,所以要保证求解每一步的正确性。
2 三个遗传算子中,选择算子是必需的,交叉和变异操作独立并行,可分别实现,编程困难者可选作其一。
3 程序中需要产生大量随机数,要注意如何正确使用产生随机数的函数rand( )。
#include "time.h"
unsigned seed=(unsigned)time(NULL);
srand(seed);
r=rand()%(CITY_NUM-1)+1;//产生1~CITY_NUM-1之间的随机数
r=(rand()%10000+0.1)*0.0001;//产生0~1之间的伪随机数,四位,如果把0.1改为1,有时会出r=1