ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:73.98KB ,
资源ID:17013129      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17013129.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(d算法实现路由最短路径Word文档下载推荐.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

d算法实现路由最短路径Word文档下载推荐.docx

1、采用的是松弛技术,对在i和j之间的所有其他点进行一次松弛。所以时间复杂度为O(n3)。Dijkstra算法是由荷兰计算机科学家艾兹格迪科斯彻发现的。算法解决的是有向图中最短路径问题。Dijkstra算法是一种求单源最短路的算法,即从一个点开始到所有其他点的最短路。其基本原理是:每次新扩展一个距离最短的点,更新与其相邻的点的距离。当所有边权都为正时,由于不会存在一个距离更短的没扩展过的点,所以这个点的距离永远不会再被改变,因而保证了算法的正确性。不过根据这个原理,用Dijkstra求最短路的图不能有负权边,因为扩展到负权边的时候会产生更短的距离,有可能就破坏了已经更新的点距离不会改变的性质。 沈

2、 阳 大 学课程设计说明书 NO.2举例来说,如果顶点表示城市,而边上的权重表示著城市间开车行经的距离。 Dijkstra算法可以用来找到两个城市之间的最短路径。Dijkstra 算法的输入包含了一个有权重的有向图G,以及G中的一个来源顶点S。我们以V表示G中所有顶点的集合。每一个边,都是两个顶点所形成的有序元素对。 (u,v)表示从顶点u到v有路径相连。我们以E所有边的集合,而边的权重则由权重函数w: E 0, 定义。因此,w(u,v)就是从顶点u到顶点v的非负花费值(cost)。边的花费可以想像成两个顶点之间的距离。任两点间路径的花费值,就是该路径 上所有边的花费值总和。已知有V中有顶点s

3、及t,Dijkstra算法可以找到s到t的最低花费路径(i.e. 最短路径)。这个算法也可以找到从一个顶点s到任何其他顶点的最短路径。2.2 Dijkstra算法基本步骤令:并令:(1)对,求。(2)求得,使=令(3)若则已找到到的最短路距离,否则令从中删去转1第一步 先取意即的距离为0,而是对所赋的初值。第二步 利用已知,根据对进行修正。第三步 对所有修正后的求出其最小者其对应的点是所能一步到达的点中最近的一个,由于所有因此任何从其它点中转而到达的通路上的距离都大于直接到的距离,因此就是的最短距离,所以在算法中令并从s中删去,若k=n则的最短路线, 沈 阳 大 学课程设计说明书 NO.3计算

4、结束。否则令回到第二步,继续运算,直到k=n为止。表1各个顶点的距离:6个顶点10条边起始顶点目的顶点距离AB2D1C53EF其路径图为:课程设计说明书 NO.4图1 路径图Dijkstra算法代码为:#includestdio.hstdlib.hstring.h#define MAX_NAME 10#define MAX_VERTEX_NUM 26 typedef char VertexTypeMAX_NAME;typedef int AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM; /邻接距阵struct MGraph/定义网VertexType vexsMAX

5、_VERTEX_NUM;AdjMatrix arcs;int vexnum,arcnum;int LocateVex(MGraph G,VertexType u)/定位 int i;for(i=0;iG.vexnum;+i)if(strcmp(u,G.vexsi)=0)return i;return -1;void CreateDN(MGraph &G)/建网课程设计说明书 NO.5int i,j,k,w;VertexType va,vb;printf(请输入有向网G的顶点数和弧数(以空格作为间隔)n);scanf(%d %d,&G.vexnum,&G.arcnum);请输入%d个顶点的值(%

6、d个字符):n,G.vexnum,MAX_NAME);+i) %s,G.vexsi);for(j=0;j+j)G.arcsij=0x7fffffff;请输入%d条弧的弧尾 弧头 权值(以空格作为间隔): n,G.arcnum);for(k=0;kG.arcnum;+k)%s%s%d%*c,va,vb,&w);i=LocateVex(G,va);j=LocateVex(G,vb);G.arcsij=w;typedef int PathMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM;typedef int ShortPathTableMAX_VERTEX_NUM;void S

7、hortestPath_DIJ(MGraph G,int v0,PathMatrix P,ShortPathTable D)int v,w,i,j,min;int finalMAX_VERTEX_NUM;for(v=0;v+v)finalv=0;Dv=G.arcsv0v;for(w=0;w+w)Pvw=0;if(Dv0x7fffffff) Pvv0=Pvv=1;Dv0=0;finalv0=1;for(i=1;课程设计说明书 NO.6min=0x7fffffff;if(!finalw&Dwmin) v=w;min=Dw;finalv=1;+w) min0x7fffffff&G.arcsvw(mi

8、n+G.arcsvwDw)Dw=min+G.arcsvw;+j) Pwj=Pvj;Pww=1;int main()int i,j;MGraph g;PathMatrix p;ShortPathTable d;CreateDN(g);ShortestPath_DIJ(g,0,p,d); /以g中位置为0的顶点为源点,球其到其余各顶点的最短距离。存于d中最短路径数组pij如下:g.vexnum;+i)%2d,pij);%s到各顶点的最短路径长度为:,g.vexs0);if(i!=0)if(di-0x7fffffff)printf(%s-%s:%dn,g.vexs0,g.vexsi,di);else

9、课程设计说明书 NO.7无路n,g.vexs0,g.vexsi);system(PAUSEreturn 0;3设计结果与分析3.1运行结果图2 输入数据课程设计说明书 NO.8图3 运行结果3.2结果分析利用Dijkstra算法给出顶点和边的个数,经过程序的计算的出最短路由的矩阵,其计算过程是:表2 算法的计算过程NAA,D4A,D,EA,B,D,EA,B,C,D,EA,B,C,D,E,F课程设计说明书 NO.9得出最短的路径图为:图4 最短路径图在VC+6.0运行环境中程序以A节点为源节点生成最短路径,它的产生过程是:建立一个以源节点A为根的最短路径树,直到包括最远的节点在内为止。第k步,计

10、算到离源节点最近的k个节点的最短路径。这些路径定义在集N内。本程序将最短路理论应用到实际生活中,尤其是在实际的应用中的应用具有很重要的意义。将实际生活中出现的安全隐患尽量降低,同时也凸显出学习和应用最短路问题原理的重要性。另外,最短路问题在城市道路建设、物资供应站选址等问题上也有很重要的作用。分析和研究最短路问题趋于热门化。4设计体会通过该课程设计,全面系统的理解了编译原理程序构造的一般原理和基本实现方法。把死板的课本知识变得生动有趣,激发了学习的积极性。使我加深了对课堂抽象概念的理解,巩固了课堂上所学的理论知识,并且很好地理解与掌握信号处理中的采样与重构的基本概念、基本原理、基本分析方法,同

11、时培养了我的综合设计能力与实际工作能力,综合素质得到较大提高。这次课程设计的基本目的在于运用学习成果,检验学习成果。课程设计中程序比较复杂,在调试时应该仔细,在程序调试时,注意指针,将不必要的命令去除。在这次课程设计中,我就是按照实验指导的思想来完成。加深了理解文件系统的内部功能及内部实现,培养实践动手能力和程序开发能力的目的。运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。同时它也检验课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完课程设计说明书 NO.10善学习计划,改变

12、学习内容与方法提供实践依据。对于我们来说,实际能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。课是通过对软件开发流程的了解,进一步激发了我们对专业知识的兴趣,并能够结合实际程设计达到了专业学习的预期目的。在一个星期的课程设计之后,我们普遍感到不仅实际动手能力有所提高,更重要的存在的问题在专业领域内进行更深入的学习。5参考文献1鲜继清现代通信系统.西安:西安电子科技大学出版社,2003.2:342-3562唐宝民通信网基础M.北京:机械工业出版社,2004:300-3033郑阿奇Visual C+实用教程.北京:电子工业出版社,2007:140-1644唐宝明,张颖. 通信网基础M.北京:机械工业出版社2007-12:300-3015魏亮,李春葆. Visual C+程序设计例学与实践M.北京:清华大学出版社2006-6:45-98

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1