课程设计_最短路径算法.docVIP

  • 31
  • 0
  • 约4.53千字
  • 约 17页
  • 2015-09-02 发布于安徽
  • 举报
沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:数据结构课程设计 课程设计题目:最短路径算法 院(系):计算机学院 专 业:计算机科学与技术 班 级学 号:2009040101133 姓 名: 指导教师: 目 录 1 课程设计介绍 1 1.1 课程设计内容 1 1.2 课程设计要求 1 2 课程设计原理 2 2.1 课设题目粗略分析 2 2.2 原理图介绍 3 2.2.1 功能模块图 3 2.2.2 流程图分析 3 3 数据结构分析 8 3.1 存储结构 8 3.2 算法描述 8 4 调试与分析 9 4.1 调试过程 9 4.2程序执行过程 9 参考文献 11 附 录(关键部分程序清单) 12 1 课程设计介绍 1.1 课程设计内容 设计程序,实现最短路径的求法,系统主要功能如下: 编写算法能够建立带权图,并能够用Dijkstra算法求该图的最短路径。 能够选择图上的任意一顶点做为开始节点。最短路径输出不必采用图形方式,可顶点序列方式输出。 1.2 课程设计要求 带权图的顶点信息用字符串,数据可自定。 参考相应的资料,独立完成课程设计任务。 较规范课程设计报告和软件代码。 2 课程设计原理 2.1 课设题目粗略分析 根据课设题目要求,拟将整体程序分为三大模块。两个子模块相互独立,没有嵌套调用的情况,在主模块中调用上面两个子模块以下是三个模块的大体分析: 建立有向图的存储结构. 应用Dijkstra算法求出该有向图的最短路径。 在主函数中调用上面两个子函数,完成求最短路径的程序设计。 2.2 原理图介绍 2.2.1 功能模块图 图2.1 功能模块图 2.2.2 流程图分析 主函数 2.2主函数流程图 Create函数 Dijkstra函数 2.4Dijkstra函数流程图 3 数据结构分析 3.1 存储结构 一个图的邻接矩阵表示是唯一的。图的邻接矩阵表示,除了需要用一个二维数组存储顶点之间相邻关系的邻接矩阵外,通常还需要使用一个具有n个元素的一维数组存储顶点信息,其中下标为i的元素存储顶点vi的信息。因此,图的邻接矩阵的存储结构定义如下: #define MVNum 50 typedef struct { VertexType vexs[MVNum]; Adjmatrix arcs[MVNum][MVNum]; }Mgraph; 3.2 算法描述 1. Dijkstra算法核心是贪心,实质是按路径长度递增产生诸顶点的最短路径算法。 迪杰斯特拉算法可用自然语言描述如下: 初始化S和D,置空最短路径终点集,置初始的最短路径值; S[v1]=TRUE;D[v1]=0; While(S集中的顶点数n) { 开始循环,每次求的v1到某个v顶点的最短路径,并将v加到S集中; S[v]=TRUE; 更新当前最短路径及距离。 } 2Dijkstra算法结束后,通过设置一个数组记录下一个节点的前趋节点,然后通过倒叙的方式输出该最短路径。 4 调试与分析 4.1 调试过程 在调试程序是主要遇到一下几类问题: 程序完成后,调试时没有发现问题,但是当输入开始节点后,运行框却不停的出现”-a”,后来重新检查程序时发现for循环的括号后面多了一个”;”,去掉该分号之后,程序可以运行。 程序可以运行,但是输出结果不是有序的,解决方法,设立一个前驱数组,用以记录节点的双亲节点,然后按照倒叙的方式读出该条最短路径的有向序列。 4.2程序执行过程 4.1程序执行过程 4.2程序执行过程 参考文献 [1] 《数据结构》(用面向对象方法与C++描述),殷人昆等,清华大学出版社, 2010年3月。 [2] 《算法与数据结构习题精解和实验指导》,宁正元等,清华大学出版社, 2009年6月。 [3] 《数据结构课程设计》,苏仕华等,机械工业出版社,2010年3月。 [4]《C程序设计》,谭浩强编,清华大学出版社,2006年6月。 附 录(关键部分程序清单) 程序代码 #includestdio.h #includestdlib.h #define MVNum 100 #define Maxint 32767 typedef char VertexType; typedef int Adjmatrix; typedef enum {FALSE,TRUE}boolean; typedef struct { VertexType vexs[MVNum]; Adjmatrix arcs[MVNum

文档评论(0)

1亿VIP精品文档

相关文档