公园导游图课程设计.doc
《公园导游图课程设计.doc》由会员分享,可在线阅读,更多相关《公园导游图课程设计.doc(13页珍藏版)》请在沃文网上搜索。
1、课程设计(论文)目 录摘要 1 问题描述31.1图、无向图31.1.1图的存储结构31.1.2 图的邻接矩阵表示法31.2算最短路径41.3无向图遍历41.4广度优先搜索42.系统分析52.1系统流程图53 系统设计53.1主要数据结构63.2 主要函数说明63.3主要算法说明63.3.1数组表示法63.3.2Floyd算法64 心得体会7附录一:源程序8附录三:参考文献14摘 要 计算机解决一个具体问题时,大致需要经过下列几个步骤:首先要从具体问题中抽象出一个适当的数学模型,然后设计一个解此数学模型的算法(Algorithm),最后编出程序、进行测试、调整直至得到最终解答。寻求数学模型的实质
2、是分析问题,从中提取操作的对象,并找出这些操作对象之间含有的关系,然后用数学的语言加以描述。计算机算法与数据的结构密切相关,算法无不依附于具体的数据结构,数据结构直接关系到算法的选择和效率。运算是由计算机来完成,这就要设计相应的插入、删除和修改的算法 。也就是说,数据结构还需要给出每种结构类型所定义的各种 运算的算法。1.问题描述.图的存储结构 图的存储方式很多,这里用的是邻接矩阵的方式。为了适合用C语言描述,以下假定顶点序号从0开始,即图G的顶点集的一般形式是V(G)=v 0 ,v i ,V n-1 。1.1.1 图的邻接矩阵表示法()用邻接矩阵表示顶点之间的相邻关系;()用一个顺序表来储存
3、顶点信息1.1.2图的邻接矩阵(Adacency Matrix)设G=(V,E)是具有n个顶点的图,则G的邻接矩阵是具有如下性质的n阶方阵:若是网络,则邻接矩阵可定义为: .求最短路径给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数。另外,还给定 V 中的一个顶点,称为源。现在我们要计算从源到所有其他各顶点的最短路径长度。这里的长度是指路上各边权之和。这个问题通常称为单源最短路径问题。1.2.1单源最短路径问题Dijkstra提出按各顶点与源点v间的路径长度的递增次序,生成到各顶点的最短路径的算法。既先求出长度最短的一条最短路径,再参照它求出长度次短的一条最短路径,依次类推,
4、直到从源点v 到其它各顶点的最短路径全部求出为止。. 求最小生成树对于连通的带权图(连通网)G,其生成树也是带权的。生成树T各边的权值总和称为该树的权,记作:Te,W(u , v)TE表示T的边集w(u,v)表示边(u,v)的权。权最小的生成树称为G的最小生成树(Minimum Spanning Tree)。最小生成树可简记为MST。最小生成树性质:设G=(V,E)是一个连通网络,U是顶点集V的一个真子集。若(u,v)是G中一条“一个端点在U中(例如:uU),另一个端点不在U中的边(例如:vV-U),且(u,v)具有最小权值,则一定存在G的一棵最小生成树包括此边(u,v)。.系统分析. 系统流
5、程本系统主要是实现图的最短路径问题图2-12.2系统相关抽象数据类型2.2.1图的邻接矩阵存储结构形式说明#define MaxVertexNum l00 /最大顶点数,应由用户定义typedef char VertexType; /顶点类型应由用户定义typedef int EdgeType; /边上的权值类型应由用户定义typedef structVextexType vexsMaxVertexNum /顶点表EdeType edgesMaxVertexNumMaxVertexNum;/邻接矩阵,可看作边表int n,e; /图中当前的顶点数和边数MGragh;2.2.2建立无向网络的算法
6、void CreateMGraph(MGraph *G)/建立无向网的邻接矩阵表示int i,j,k,w;scanf(%d%d,&G-n,&G-e); /输入顶点数和边数for(i=0;in;i+) /读人顶点信息,建立顶点表G-vexsi=getchar();for(i=0;in;i+)for(j=0;jn;j+)G-edgesij=0; /邻接矩阵初始化for(k=0;ke;k+)/读入e条边,建立邻接矩阵scanf(%d%d%d,&i,&j,&w);/输入边(v i ,v j )上的权wG-edgesij=w;G-edgesji=w;/CreateMGraph3.系统设计3.1系统功能
7、提供无向图的生成,并保证了该无向图为一个无向网,同时也提供了计算最短距离的迪杰斯特拉算法,以及图的遍历。3.2主要函数说明 本系统用了一个类来实现程序,里面包含了4个对象,即void graph:picture();void graph:creatp(graph &t);void graph:floyd(graph &t,const int n);void graph:bfs(graph t)3.3主要算法说明3.3.1无向网的建立由于图的结构比较复杂,任意两个顶点之间都可能存在联系,因此无法以数据元素在存储 区中的物理位置来表示元素之间的关系,即图没有顺序映像的存储结构,但可以借助数组的数据
8、类型表示元素之间的关系。另一方面,用多重链表表示 图是自然的事,它是一种最简单的这式映像结构,聚聚以一个由一个数据域和多个指针域存储该顶点,其中数据域存储该顶点的信息,指针域存储指向其邻接点的指针.3.3.2数组表示法用两个数组分别存储数据元素的信息和数据元素这间的关系的信息。以二维数组表示有N个顶点的图时,需存放N个顶点信息和N2个弧信息的存储量。3.3.3Floyd算法Floyd算法又称为弗洛伊德算法,插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法。Floyd算法适用于APSP(All Pairs Shortest Paths),是一种动态规划算法,稠密图效果最佳,边权可正可负。
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 公园 导游 课程设计
