当前位置:文档之家› GIS环境下的最短路径规划算法

GIS环境下的最短路径规划算法

GIS 环境下的最短路径规划算法
―――此处最短路理解为路径长度最小的路径
02计算机1班刘继忠
学号:2002374117
1.整体算法说明:
将图的信息用一个邻接矩阵来表达,通过对邻接矩阵的操作来查找最短路进,最短路径的查找采用迪杰斯特拉算法,根据用户给出的必经结点序列、起点、终点进行分段查找。

2.各函数功能及函数调用说明。

1).void Welcome() 程序初始化界面,介绍程序的功能、特点及相关提示
2) void CreatGraph(MGraph *G,char buf[]) 把图用邻接矩阵的形式表示,并进行
初始化。

3).int ShortestPath(MGraph *G,int jump,int end,int avoid[],int P[MAXSIZE][MAXSIZE],int
Dist[],int ShPath[])根据用户给出的起点、终点、必经结点、避开结点进行最短路径的分段查找。

4).void Print(int jump,int end,int Dist[],int ShPath[]) 输出找到的最短路径所经的
结点和路径长度。

函数调用图:
3.各函数传入参数及返回值说明:
1).void Welcome() 无传入和返回值
2) void CreatGraph(MGraph *G,char buf[ ])
MGraph *G为主函数中定义的指向存放图的信息的指针变量。

char buf[ ]为主函数中定义的用来存放在图的相关信息录入时的界面信息的数组,以便以后调用查看各结点的信息。

无返回值。

3).int ShortestPath(MGraph *G,int jump,int end,int avoid[],int P[MAXSIZE][MAXSIZE],int
Dist[ ],int ShPath[ ])
MGraph *G指向存放图的信息的指针变量。

int jump起点,int end终点,int avoid[ ] 避开结点序列。

int P[MAXSIZE][MAXSIZE]用来记录各点当前找到的最短路径所经过
的结点。

int Dist[ ] 记录各结点的当前找到的最短路径的长度。

int ShPath[ ]用来存放用户需要的最短路径所经的各结点。

返回最短路径查找是否成功的信息。

(return SUCCEED;return ERROR)4).void Print(int jump,int end,int Dist[],int ShPath[])
int jump起点,int end终点。

int Dist[ ] 记录各结点的当前找到的最短路径的长度。

int ShPath[ ]用来存放用户需要的最短路径所经的各结点。

无返回值。

4.用户说明:
①源程序经编译连接后运行,出现程序的初始化界面,其内容为介绍程序的
功能、特点及相关提示。

如下:
Welcome to shortest path searching system.
Instructions
Function:
1. Personal travelling route choosing.
2. Assistan helper in city's traffic design.
3. Shortes path choose in the comlicated traffic net of the city. Characteristic:
It is convient,you could set vital point you must travel,and the
point you must avoid.
Prompt:
If the condition is too secret ,maybe there will have no path available. Designer: Liu jizhong.
Complate-data: 2004. 3. 21
CopyRight: Shared program,welcome to improve it.
Press anykey to enter the program...
②按任意键进入图的信息录入界面根据提示即可完成图的信息的录入。

③当图的相关信息录入完成后进入最短路径搜索界面如图,输入起始结点、
④当录入完成后,程序便转入最短路径的分段查找过程,当查找成功程序将
输出满足用户要求的最短路径和最短路径的长度(权值),若失败将给出
⑤当用户信息读取完后按任意键将询问询问用户是否重新定义起点、终点、
必经结点、避开结点并进行再次查找。

按y或Y继续新一轮的查找,程序返回步骤①,若按n或N退出程序。

5.程序测试:
1) 测试用例一(重在对有关出错的处理):
①当用户输入了自定义的结点只有为:-1
当用户输入了自定义的结点为:1 2 3 5 1 -1
重新录入结点数据:
Customize codes for the vexs(end up by -1):1 2 3 4 5 -1
按任意键将清楚出错的该行,重新输入数据即可。

③当要处理的图的相关信息正确录入后,输入起始结点、终点、必经结点和要避开的结点后,开始最短路径的搜索。

当输入如下的起始和终点时:1 9
将出现如下的提示信息:
④要求再次输入起始结点和终点:(当起始结点错误时将出项类似的错误提示)
1 5 ,但但输入的必经结点,要避开的结点非法时出现一下的提示(以出现非法的必经结点为例,当然程序中也由对要避开的结点非法的处理)。

但输入以下的必经结点时:4 7 8 9 4
2 3
程序错误处理如下:
按任意键查看结果:
2) 测试用例二:(重在处理结果正确性的判断):
①输入图的对应信息,起始及终点为:1 4
必经结点:5
避开结点:无
运行结果与预测结果一致:
②输入图的对应信息,起始及终点为:2 4
必经结点:无
避开结点:无
预测结果:
运行结果与预测结果一致:
3) 测试用例三:(重在处理结果正确性的判断):
①输入图的对应信息,起始及终点为:1 11
必经结点:无
避开结点:无
预测结果:
运行结果与预测结果一致:
②输入图的对应信息,起始及终点为:1 11
必经结点:5 9
避开结点:2
运行结果与预测结果一致
4) 测试用例四:(重在处理按用户的条件无法找到路径的情况):
①输入图的对应信息,起始及终点为:7 11
必经结点:5 6
避开结点:3
预测结果:
运行结果与预测结果一致
②输入图的对应信息,起始及终点为:7 3必经结点:2 5 6 9 1
避开结点:11
运行结果与预测结果一致
华南农业大学信息学院设计性、综合性实验。

相关主题