北邮信息工程通信网理论基础实验报告——图的连通性

北邮信息工程通信网理论基础实验报告——图的连通性

ID:15012286

大小:521.75 KB

页数:11页

时间:2018-07-31

北邮信息工程通信网理论基础实验报告——图的连通性_第1页
北邮信息工程通信网理论基础实验报告——图的连通性_第2页
北邮信息工程通信网理论基础实验报告——图的连通性_第3页
北邮信息工程通信网理论基础实验报告——图的连通性_第4页
北邮信息工程通信网理论基础实验报告——图的连通性_第5页
资源描述:

《北邮信息工程通信网理论基础实验报告——图的连通性》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、通信网理论基础实验报告信息与通信工程学院通信网理论基础实验报告班级:姓名:学号:序号:日期:第10页通信网理论基础实验报告实验三图的连通性判断一、实验目的本次实验要求用计算机语言编写图的连通性判断算法,可输入图的邻接矩阵,判断图是否连通以及确定连通分支的个数,使学生掌握Warshell算法或矩阵幂算法的实现方法,培养算法设计与优化能力。二、实验原理1、Warshall算法Warshall算法可解决图是否连通的问题,而且效率很高。在该算法中,矩阵是判断矩阵,表示从到连通,表示从到不连通。(1)置新矩阵P:=C;(2)置=1;(3)对所有的,如

2、果pj,i=1,则对k=1,2,…,n;(4);(5)如转向步骤(3),否则停止。2、矩阵幂算法由于邻接阵包含了图的所有信息,和关联阵一样,是图的等价表示。可以通过对邻接阵C做一些计算,得到图G的一些性质。例如考虑中的的元素,如果它不为零,由于,则至少存在一组或一个长度为3的链使端和端j相连。从而,通过计算C的各阶幂次可得到关于图是否连通的信息。3、算法分析对于算法,基本问题是算法的正确性,其次是算法复杂度。从复杂度考虑,算法可以简单分为多项式复杂度和指数复杂度两大类,前者的目标是找到尽可能小的复杂度算法;后者的目标是找到合适的近似算法。第

3、10页通信网理论基础实验报告二、实验内容(1)两人一组,利用MATLAB等语言实现图的连通性判断算法,可对输入的邻接阵进行连通性以及连通分支数的判断。(2)比较Warshall算法和矩阵幂算法在算法正确性和算法复杂度上的区别。(3)对算法进行优化。四、程序基本信息1、设计语言及开发工具:MATLAB。2、数据结构:本次实验由于算法简单,每次计算的数据之间也不存在任何关系(独立)的,因此程序设计时只采用了诸如串、数组等简单形式用于存储数据,复杂的数据结构思想诸如链表、树等基本没有采用。3、主要函数(算法):本程序采用MATLAB语言编写,包含

4、2个主要的M文件。(1)generatematrix.m文件这个函数随机产生一个邻接矩阵,代码比较简单不作过多介绍。因为本次设计的算法主要用于无向图,因此生成的矩阵是对称的方阵。(2)connectivity.m文件主程序,包含四个通过分析输入的邻接矩阵判断图连通性的算法,程序也被分成四部分。除了第一部分以外,其它三个部分都是判断图的连通性的算法,并可统计算法运行时间。第一部分:判断图的连通分支数该算法的主要思想是根据端与端的连接关系把各端点进行归类,每一类即一个连通分支。具体见下页的流程图。理论复杂度为。第二部分:矩阵幂算法算法原理:通过

5、计算矩阵的各阶幂次可得到关于图是否连通的信息。有如下定理:若,则i节点和j节点间没有路径相通。根据该定理可得到如下利用矩阵幂算法判定图的连通性的准则:第10页通信网理论基础实验报告对于矩阵,如果矩阵S中的元素全部为非零元素,则图G为连通图;否则如果矩阵S中存在t(t1)个零元素,则图G为非连通图。判定连通分支算法的流程图该算法基于以上判定准则编写,判定一个用n阶邻接矩阵表示的图的连通性,它的2次幂、3次幂……一直到n次幂都需要计算,因此花费时间总体来说是所有算法中最长的。由于要求从2到n次幂,每次计算矩阵幂的复杂度为,因此理论复杂度为(更准

6、确的表述是)。第三部分:矩阵幂算法(改进)第10页通信网理论基础实验报告根据矩阵幂算法的原理,需要计算多次矩阵幂且把每次的结果相加,最后的矩阵只需满足每个元素值大于零即可。针对这一点,我想了两个方面的优化办法:第一:只计算矩阵幂中特定位置的元素值。邻接矩阵及其矩阵幂中,若>0,表明端和端j已经相连,也就是说在接下来判定的过程中,这些元素都是不必考虑的。由此,若邻接矩阵中位置元素为0,只需计算矩阵幂中位置的元素值,若不为0则可判定端和端j相连。这种计算方法可用公式表示如下(该公式是前面给出的3阶矩阵幂元素值公式的拓展):可见,实现该公式,需要

7、考虑这n-1个元素中每个元素取值1~m(m为矩阵阶数)的所有情况,简单的说就是要实现次循环。由于MATLAB没有类似C语言中GOTO的语句,所以要实现这个公式可以说是非常困难。当然并非完全不可以,例如利用其它语言控制MATLAB的循环语句执行次数等等,但是由于难度较大加之时间有限,我最终没有采用这个优化方案。第二:减少矩阵幂的计算次数。这个方案非常简单,实现起来也容易得多。原算法首先计算矩阵的2到n次幂,再按所有幂相加之后的矩阵判断,事实上,只要有一次矩阵幂算法的结果矩阵所有元素均大于0,那么就可判定原图连通,算法终止。由此,每执行一次矩阵

8、幂算法,就判断结果矩阵所有元素是否均大于0。这样很多时候可以减少计算量。当然必须要说明的是,这种方案在减少计算次数的同时,增加了判定的次数。因此对于阶数较小的邻接阵的判定,使用该

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

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

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