图论及其应用课程论文——_解决城市道路最短路问题.docx

图论及其应用课程论文——_解决城市道路最短路问题.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图论及其应用课程论文——_解决城市道路最短路问题

图论及其应用专 业: 计算机科学与技术 班 级: 图论及其应用5 学 号: 姓 名: 任课教师: 图论及其应用—— 解决城市道路最短路问题(重庆邮电大学 计算机科学与技术学院,重庆 重庆市 400065)E-mail: 1356310671@【摘要】本文通过Dijkstra算法编程计算出重庆市主城九区任意两区间的最短路径,并在VC下实现一个顶点到其余各个顶点的所有最短路径的查找。【关键字】最短路径 Dijkstra算法中图分类号 O1571 引言当前城市的规模越来越大,交通道路状况也越来越复杂,从城市的一个地方到另一个地方可能有很多种路径,如何从众多的路径中选择距离最短或者所需时间最短的路径便成了人们关注的热点。能够选择出一条最符合条件的路径会给我们的日常生活带来极大地方便。本文就通过找城市各地之间的最短距离路径为例,详细的介绍经典的最短路径算法Dijkstra算法及其算法的实现。2 相关知识定义2.1.1 图G是一个有序二元组V,E,记作G=V,E,其中V是一个非空集合,V中的元素成为结点;E是无序积VV的多重子集,称E为G的边集。每一条边都是无向边的图称为无向图,每一条边都是有向边的图称为有向图。定义2.1.2 如果有两条边的端点是同一对顶点,则称这两条边为重复边。给定图G=(V,E),设v0,v1,……,vnV,e1,e2,……,enE,其中ei是关联于结点vi-1,vi的边,交替序列称为联结v0到vn的路。当v0=vn时,这条路称作回路。定义2.1.3 若图G只有一个连通分支,则称G是连通图。设无向图G=(V,E)为连通图,若有边集EiE,使图G中删除了Ei的任一真子集后得到的子图是连通图,则称Ei是G的一个边割集。若是Ei单元集{e},则称e为割边或桥。定义2.1.4 设图G=V,E,若G为一个无向图,vV,与v关联边的次数为v的度数。若G为一个有向图,vV,v作为边的始点的次数为v的出数;v作为边的终点的次数为v的入数。一个结点的度数为奇数,则该点称为奇点,否则称为偶点。奇点的总数称为奇点数,偶点的总数称为偶点数。定义2.1.5 结点vi到vj结点之间最短通路定义为vi到vj的最短路径。[1]3 Dijkstra算法概述Dijkstra算法是由荷兰计算机科学家狄克斯特拉(Dijkstra)于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各定点最短路径算法,解决的是有向图中最短路径问题,当然对无向图也同样适用。Dijkstra算法用于计算一个源节点到所有其他节点的最短代价路径,它是按路径长度递增的次序来产生最短路径的算法。【4】其基本原理是:每次新扩展一个距离最短的点,更新与其相邻接的点的距离。当所有边权都为正时,由于不会存在一个距离更短的没扩展过的点,所以这个点的距离永远不会再被改变,因而保证了算法的正确性。不过根据这个原理,用Dijkstra求最短路的图不能有负权边,因为扩展到负权边的时候会产生更短的距离,有可能就破坏了已经更新的点距离不会改变的性质。举例来说,如果图中的顶点表示城市,而边上的权重表示各个城市间的距离,Dijkstra算法可以用来找到两个城市之间的最短路径。4 算法描述4.1 基本思想Dijkstra提出的是一种按路径长度递增的顺序产生最短路径的方法,即:把图中所有顶点分成两组,第一组S包括已经确定最短路径的顶点,初始时只含有源点;第二组V-S中包括尚未包括最短路径的顶点,初始时含有图中除源点以外的所有其他顶点。按路径长度递增的顺序就是远点到各顶点的最短路径,逐个把第二组中的顶点加到第一组中去,直至S=V。【5】4.2 实现思路整个网络用邻接矩阵cost[][]表示,其中规定:(1)两个顶点之间无直接路径,即Vi,Vj弧不存在,矩阵中对应权值为无穷大;(2)两个顶点之间有直接路径Vi,Vj的,矩阵中的权值就是Vi,Vj弧对应的两点间的权值,当然根据实际的问题这里既可以是两地之间的距离也可以是两地间需要的费用等;(3)Vi,Vi对应的值为0.S集合初始存放在最短路径的源点,计算过程中将已经确定了最短路径的点加入到S中去,本人的思路是每个点对应数组里对应的值,若确定了某顶点时最短路径的点则将其对应的值变为1,知道所有的点对应的值变为1。dist数组最终存放源点到各顶点最短路径的结果。Path数组最终存放源点到各顶点的最短路径经过的顶点。4.3 计算步骤(1)dist初始存放源点到各顶点的权值。 (2){dist(i)|Vi∈(V-S)}中最小值对应的顶点就是从源点Vi到其他顶点的最短路径中最短的一条所对应的顶点,即dist(j)=min{dist(i)∈(V—S)}。 (3)对于所有顶点Vk(Vk∈(V—S)),修改dist(k)的值

文档评论(0)

skvdnd51 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档