文档详情

软件基础课程设计--从某个源点到其余各顶点的最短路径.doc

发布:2016-10-23约7.73千字共23页下载文档
文本预览下载声明
北京信息科技大学 软件设计基础课程设计 题 目: 从某个源点到其余各顶点的最短路径 学 院: 信息与通信工程学院 专 业: 通信工程专业 学生姓名: 班级/学号: 指导老师: 曹林 徐湛 杨玮 李振松 起止时间: 2013-9-22 至 2013-11-6 题目 从某个源点到其余各顶点的最短路径(难度系数9) 主要 内容 设计 要求 主要 仪器 设备 Windows XP 操作系统、Microsoft Visual C++ 6.0、MSDN Library。 主要 参考 文献 侯俊杰. 深入浅出MFC(第二版)[M]. 武汉:华中科技大学出版社, 2001. 北京出版社, .. [3] 孟彩霞. 计算机软件基础[M]. 陕西:西安电子科技大学出版社, 2003. [4] 严蔚敏, 吴伟民. 数据结构[M]. 北京:清华大学出版社, 2005. 课程设计进度计划(起止时间、工作内容) 课程设计开始日期 2013-9-22 课程设计完成日期 2013-11-6 课程设计实验室名称 地 点 摘要 本次课程设计的问题:假设西安、北京、沈阳、武汉4个城市构成小型交通网,4个城市表示图的4个顶点,它们构成了无向连通图。以北京为源点,求北京到西安的最短路径;求北京到沈阳的最短路径;北京到武汉的最短路径。 本次课程设计中应用Dijkstra算法求最短路径。通过一个图的权值矩阵求出它的每两点间的最短路径矩阵,从图的带权邻接矩阵arcs(n×n)开始,递归地进行n次更新,按一个公式,构造出矩阵S(1),又用同样的公式由S(1)构造出S(2)…最后又用同样的公式由S(n-1)构造出矩阵S(n)。矩阵S(n)的i行j列元素便是i号顶点到j号顶点的最短路径长度,称S(n)为图的距离矩阵,同时还可引入一个后继节点矩阵p[j][k]来记录两点间的最短路径。 本次试验进行的是无向的计算,不同城市之间的距离由开始进行输入,最后显示两个城市之间的最短路径。 目录 任务书 1 摘要 2 目录 3 正文 4 一、应用迪科斯彻(Dijkstra)算法计算最短路径 4 二、Dijkstra 求最短路径的基本思想 4 三、Dijkstra 求最短路径的步骤 4 四、程序说明 5 五、功能实现 5 六、程序设计(二) 12 七、课程设计总结 16 参考文献 17 源代码 18 应用迪科斯彻(Dijkstra)算法计算最短路径 假设西安、北京、沈阳、武汉4个城市构成小型交通网,4个城市表示图的4个顶点,他们构成了无向连通图。以北京为源点,求北京到西安的最短路径;求北京到沈阳的最短路径;求北京到武汉的最短路径。 这里路径指两顶点间的通路,路径的长度指所有经过的边的总长。“最短路径”的问题指当两个顶点间通路多于一条时,如何找出边长总和为最短的那条。Dijkstra提出按路径长度递增的次序求最短路径的方法。 Dijkstra 求最短路径的基本思想 把顶点分成两组,第一组是已确定最短路径的结点的集合,第二组是尚未确定最短路径的结点的集合。按路径长度递增的次序逐个把第二组的顶点放到第一组中。设求从v0到其它各顶点间的最短路径,则在任意时刻,从v0到第一组各顶点间的最短路径都不大于从v0到第二组各顶点间的最短路径。 Dijkstra 求最短路径的步骤 设图以邻接矩阵arcs存储,矩阵中各元素的值为各边的权值。顶点到自身的权值用0表示,顶点间无边时其对应权值用-1表示。从顶点v0到其它各顶点间的最短路径的具体步骤如下: (1)初始化:第一组(集合s)只含顶点v0,第二组(集合v-s)含有图中其余顶点。设一D向量,其下标是各顶点,元素值是顶点v0到各顶点的边的权值。若v0到某顶点无边,D向量中的对应值为-1。 (2)选D中最小的权值,将其顶点(j)加入s集合。 s=s {j}
显示全部
相似文档