基于VC的最短路径Floyed算法的实现.doc

基于VC的最短路径Floyed算法的实现.doc

ID:25529929

大小:102.00 KB

页数:14页

时间:2018-11-20

基于VC的最短路径Floyed算法的实现.doc_第1页
基于VC的最短路径Floyed算法的实现.doc_第2页
基于VC的最短路径Floyed算法的实现.doc_第3页
基于VC的最短路径Floyed算法的实现.doc_第4页
基于VC的最短路径Floyed算法的实现.doc_第5页
资源描述:

《基于VC的最短路径Floyed算法的实现.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于VC的最短路径Floyed算法的实现1.课程设计的目的为了巩固“通信网技术应用”课程学到的相关知识,通过对本课程所学知识的综合运用,融会贯通课程中所学的理论知识,初步掌握通信网络的体系结构和扩频通信系统等相关知识;加深对通信网络的基本理论、基本知识和常用技术的理解;提高学生分析问题的能力和实践能力,培养科学研究的独立工作能力。通过floyed算法求解图中顶点的最短路径问题实验,更加深入的了解了数据结构与算法在各个领域的应用。比如图的最短路径问题,衍生为校内导游图,乘车路径问题等等的实际性的日常问

2、题。2.设计方案论证2.1Floyd算法定义Floyd算法又称为弗洛伊德算法,插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法。2.2核心思路通过一个图的权值矩阵求出它的每两点间的最短路径矩阵。从图的带权邻接矩阵A=[a(i,j)]n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按一个公式,构造出矩阵D(1);又用同样地公式由D(1)构造出D(2);……;最后又用同样的公式由D(n-1)构造出矩阵D(n)。矩阵D(n)的i行j列元素便是i号顶点到j号顶点的最短路径长度,称D(n)为图的

3、距离矩阵,同时还可引入一个后继节点矩阵path来记录两点间的最短路径。采用的是松弛技术,对在i和j之间的所有其他点进行一次松弛。所以时间复杂度为O(n^3);其状态转移方程如下:map[i,j]:=min{map[i,k]+map[k,j],map[i,j]}map[i,j]表示i到j的最短距离K是穷举i,j的断点map[n,n]初值应该为0,或者按照题目意思来做。当然,如果这条路没有通的话,还必须特殊处理,比如没有map[i,k]这条路2.3算法过程把图用邻接矩阵G表示出来,如果从Vi到Vj有路可

4、达,则G[i,j]=d,d表示该路的长度;否则G[i,j]=空值。定义一个矩阵D用来记录所插入点的信息,D[i,j]表示从Vi到Vj需要经过的点,初始化D[i,j]=j。把各个顶点插入图中,比较插点后的距离与原来的距离,G[i,j]=min(G[i,j],G[i,k]+G[k,j]),如果G[i,j]的值变小,则D[i,j]=k。在G中包含有两点之间最短道路的信息,而在D中则包含了最短通路径的信息。比如,要寻找从V5到V1的路径。根据D,假如D(5,1)=3则说明从V5到V1经过V3,路径为{V5,

5、V3,V1},如果D(5,3)=3,说明V5与V3直接相连,如果D(3,1)=1,说明V3与V1直接相连。最短路径问题是图论研究中的一个经典算法问题,旨在寻找图(由结点和路径组成的)中两结点之间的最短路径通过一个图的权值矩阵求出它的每两点间的最短路径矩阵。从图的带权邻接矩阵A=[a(i,j)]n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按一个公式,构造出矩阵D(1);又用同样地公式由D(1)构造出D(2);……;最后又用同样的公式由D(n-1)构造出矩阵D(n)。矩阵D(n)的i行j列元素

6、便是i号顶点到j号顶点的最短路径长度,称D(n)为图的距离矩阵,同时还可引入一个后继节点矩阵path来记录两点间的最短路径。对任意图,选择合适的数据结构表示图,在此基础上实现求解最短路径的Floyd算法。⑴通过独立解决某个课程设计问题,在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解和综合运用。⑵深刻理解、牢固掌握数据结构和算法设计技术,提高分析和解决实际问题的能力。⑶在程序设计方法以及上机操作等基本技能和科学作风方面进行比较系统和严格的训练。3.

7、设计的过程与分析3.1设计的过程对于任意图,选择存储结构存储图并实现FLOYED算法求解最短路径。将问题分解,分解为两个方面。一是对于任意图的存储问题,第二个是实现floyed算法求解最短路径。首先对于图的创建选择合适的存储结构进行存储,对于合适的存储结构可以简化程序。本实验采用邻接矩阵存储。然后是实现FLOYED算法求解最短路径,在FLOYED算法中路径的长度即是图中两顶点间边的权值,FLOYED算法要求输出任意两个顶点间的最短路径,而且经过的顶点也要输出。考虑到问题的特殊性,采用两个二维数组进行

8、存储。第一个二维数组存储最短路径,第二个二维数组存储路径经过的顶点,在进行适当的运算后对这两个数组进行输出即可。通过问题的分解,逐个解决,实现所要求程序。为实现上述程序的功能,需要创建邻接矩阵存储图,FLOYED算法求解最短路径。在求解最短路径的时候需要申请两个二维数组A[][]和path[][]分别存储路径和路径经过的顶点。输出是需判断A[][]的值,若A[i][j]=0但i!=j,此时i到j的路径长度就是0,若A[i][j]=INF,及最大值,表示从i到j没有路径

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。