数据结构课程设计大作业Word文档下载推荐.docx
- 文档编号:19660923
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:9
- 大小:201.09KB
数据结构课程设计大作业Word文档下载推荐.docx
《数据结构课程设计大作业Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计大作业Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。
最短路径问题
【内容摘要】
最短路径问题是图论研究中的一个经典算法问题,旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。
算法具体的形式包括:
●确定起点的最短路径问题
-即已知起始结点,求最短路径的问题。
适合使用迪杰斯特拉算法。
●确定终点的最短路径问题
-与确定起点的问题相反,该问题是已知终结结点,求最短路径的问题。
在无向图中该问题与确定起点的问题完全等同,在有向图中该问题等同于把所有路径方向反转的确定起点的问题。
●确定起点终点的最短路径问题
-即已知起点和终点,求两结点之间的最短路径。
●全局最短路径问题
-求图中所有的最短路径。
适合使用Floyd-Warshall算法。
鉴于本题是求任意两点之间的最短路径,故使用弗洛伊德算法最为适合。
【关键字】最短路径图论弗洛伊德算法
【Abstract】
Theshortestpathprobleminthestudyofgraphtheoryisaclassicalgorithm,whichislookingforfigure(bynodeandpathoftheshortestpathbetweentwonodes.Theformofspecificalgorithmincluding:
●Surethestartpointoftheshortestpathproblem-thatisknownstartnode,fortheshortestpathproblem.SuitableforuseDijkstraalgorithm.
●Todeterminetheshortestpathproblem-anddeterminethestartingpointistheopposite,thisproblemisknowntoendnodes,fortheshortestpathproblem.Intheabsenceofthisproblemandtochartthestartpointofthequestioncompletelyequivalenttodetermine,intheproblemtofigureintheequivalenttothetotalpathdirectionthereversalofthestartingpointtodeterminetheproblem.
●Surestarttheendoftheshortestpathproblem-thatisknownbeginningandend,fortheshortestpathbetweentwonodes.
●Globaltheshortestpathproblem-prayforalltheshortestpathinthegraph.SuitableforuseFloyd-Warshallalgorithm.
Inviewofthesubjectistoaskforanyoftheshortestpathbetweentwopoints,itismostsuitableforuseofFloyd.
【Keywords】Shortestpath,Graphtheory,Floydalgorithm
实验内容概述
这是一幅美国硅谷的简单地图。
对于此图,请写出一个完整的程序,对于输入的起点和终点,输出它们之间的最短路径。
实验目的概述
在实际生活中诸如在运输路线、出外旅游路线、厂址选择等诸多方面都会有最短距离的应用。
本实验中的问题是求任意两点间最短距离的问题,而实验的目的是运用邻接矩阵解决图存储并解决在此结构情况下对矩阵中元素的扫描计算。
其关键是怎样储存和计算。
储存用的是邻接矩阵,而计算用的是弗洛伊德算法。
通过该实验更好地体会并进一步认识邻接矩阵,知道弗洛伊德算法在解决任意两点之间最短距离问题方面上的优势。
解题思路的描述
本题是求美国硅谷中任意两点之间的最短距离,首先考虑到弗洛伊德算法,并且需要用到邻接矩阵来解决存储问题。
源程序清单
#include<
stdio.h>
string>
iostream.h>
#definefi99999
#defineMAXVEX20
structnode
{
intnum;
stringname;
}xuhao[17];
voidFloyed(intcost[][MAXVEX],intn,intm,intx)
intA[MAXVEX][MAXVEX],path[MAXVEX][MAXVEX];
inti,j,k,pre;
for(i=0;
i<
n;
i++)
for(j=0;
j<
j++)
{
A[i][j]=cost[i][j];
path[i][j]=-1;
}
for(k=0;
k<
k++)
{for(i=0;
if(A[i][j]>
(A[i][k]+A[k][j]))
A[i][j]=A[i][k]+A[k][j];
path[i][j]=k;
if(m!
=x)
cout<
<
xuhao[m].name<
"
--->
<
xuhao[x].name<
;
if(A[m][x]==fi)
该路径不存在\n"
endl;
else
最短路径长度是:
"
A[m][x]<
米\n"
具体路径为:
----"
pre=path[m][x];
while(pre!
=-1)
cout<
xuhao[pre].name<
pre=path[pre][x];
xuhao[x].name<
endl;
}
voidmain()
{inti,k,l,x;
美国硅谷地图最短路线查询表:
-----序号-------地点名称------"
0SanRapheal"
1Cross"
2DalyCit"
3SanFrancisco"
4Oakland"
5SanLarenzo"
6CrossB"
7SanMaleo"
8Hayward"
9Dubin"
10RedwoodCity"
11CrossC"
12PaloAlso"
13Freemood"
14MinView"
15Cupertin"
16SanJose"
xuhao[0].num=0;
xuhao[0].name="
SanRapheal"
xuhao[1].num=1;
xuhao[1].name="
Cross"
xuhao[2].num=2;
xuhao[2].name="
DalyCit"
xuhao[3].num=3;
xuhao[3].name="
SanFrancisco"
xuhao[4].num=4;
xuhao[4].name="
Oakland"
xuhao[5].num=5;
xuhao[5].name="
SanLarenzo"
xuhao[6].num=6;
xuhao[6].name="
CrossB"
xuhao[7].num=7;
xuhao[7].name="
SanMaleo"
xuhao[8].num=8;
xuhao[8].name="
Hayward"
xuhao[9].num=9;
xuhao[9].name="
Dubin"
xuhao[10].num=10;
xuhao[10].name="
RedwoodCity"
xuhao[11].num=11;
xuhao[11].name="
CrossC"
xuhao[12].num=12;
xuhao[12].name="
PaloAlso"
xuhao[13].num=13;
xuhao[13].name="
Freemood"
xuhao[14].num=14;
xuhao[14].name="
MinView"
xuhao[15].num=15;
xuhao[15].name="
Cupertin"
xuhao[16].num=16;
xuhao[16].name="
SanJose"
输入你要查询的起始地点的序号:
cin>
>
k;
k<
\t"
xuhao[k].name<
输入你要查询的终止地点的序号:
cin>
x;
x<
以下是从"
出发到"
的最短路径:
endl;
intcost[17][MAXVEX]={
{0,12,fi,fi,18,fi,fi,fi,fi,fi,fi,fi,fi,fi,fi,fi,fi},
{12,0,3,3,fi,fi,fi,fi,fi,fi,fi,fi,fi,fi,fi,fi,fi},
{fi,3,0,4,fi,fi,19,fi,fi,fi,fi,fi,fi,fi,fi,fi,fi},
{fi,3,4,0,7,fi,fi,21,fi,fi,fi,fi,fi,fi,fi,fi,fi},
{18,fi,fi,7,0,fi,fi,fi,fi,31,fi,fi,fi,fi,fi,fi,fi},
{fi,fi,fi,fi,fi,0,fi,fi,fi,12,fi,fi,fi,fi,fi,fi,fi},
{fi,fi,19,fi,fi,fi,0,4,fi,fi,fi,7,fi,fi,fi,fi,fi},
{fi,fi,fi,21,fi,fi,4,0,13,fi,6,fi,fi,fi,fi,fi,fi},
{fi,fi,fi,fi,fi,fi,fi,13,0,fi,fi,fi,fi,9,fi,fi,fi},
{fi,fi,fi,fi,31,12,fi,fi,fi,0,fi,fi,fi,fi,fi,fi,35},
{fi,fi,fi,fi,fi,fi,fi,6,fi,fi,0,5,6,fi,fi,fi,fi},
{fi,fi,fi,fi,fi,fi,7,fi,fi,fi,5,0,fi,fi,fi,14,fi},
{fi,fi,fi,fi,fi,fi,fi,fi,fi,fi,6,fi,0,9,6,fi,fi},
{fi,fi,fi,fi,fi,fi,fi,fi,9,fi,fi,fi,9,0,fi,fi,24},
{fi,fi,fi,fi,fi,fi,fi,fi,fi,fi,fi,fi,6,fi,0,6,8},
{fi,fi,fi,fi,fi,fi,fi,fi,fi,fi,fi,14,fi,fi,6,0,7},
{fi,fi,fi,fi,fi,fi,fi,fi,fi,35,fi,fi,fi,24,8,7,0},};
Floyed(cost,17,k,x);
程序调试及测试结果
图1程序调试过程截图
图2程序调试过程截图
图3程序调试过程截图
图4程序测试结果截图
结论
本题目所涉及的问题主要是算法和存储结构的选择两个方面。
算法采用弗洛伊德算法,运用邻接矩阵解决存储问题并解决在此结构情况下对矩阵中元素的扫描计算。
参考文献
1.《数学实验》傅鹂龚劬刘琼荪何中市科学出版社
2.《数据结构教程C语言版》张绍民李淑华中国电力出版社
3.《数据结构实验教程C语言版》王国钧唐国民清华大学出版社
4.《数据结构与算法》陈文博朱青机械工业出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 作业