/Matlab-Distributed_sensor_algorithm_judege_connection

用计算机语言编写图的连通性判断算法,判断节点是否连通以及确定连通分支的个数,采用Warshell算法

Primary LanguageM

Matlab-Distributed_sensor_algorithm_judege_connection

用计算机语言编写图的连通性判断算法,判断节点是否连通以及确定连通分支的个数,采用Warshell算法 Warshell算法: Warshell算法可解决图是否连通的问题, 而且效率很高。在该算法中,矩阵 是判断矩阵, 表示从 到 连通, 表示从 到 不连通。T矩阵是模拟节点的两两直接连通矩阵Tij =1表示从 到 连通,Tij=0表示从 到 不连通。 (1)置新矩阵 P:= T; (2)k=1.....9,P=P*T;循环叠乘得出最终连通矩阵。 (3)对P矩阵Pij进行连续判断,若有Pij<=0,则该图不连通,跳出循环。 (4)重复上面操作1000次,累计连通图的次数n,得出连通率。 Google了一些判断方法后尝试使用了warshell算法,但是出来的图形与书中的有很大偏差,然后在MATLAB源代码上把判断连通性那一块的算法换成了矩阵幂的算法:将邻接矩阵连续乘n-1次,判断最后值若大于0,则说明连通),这个方法虽然有些笨,但是很实用(至少用这个办法做出来图形了),虽然运行的时间比较长,第一个图用时189s,第二张图用了368s(电脑性能比较好,运行的相对快些),但是其代码却不复杂,运用多个for循环函数以及switch函数,每个图的代码仅有60行左右,逻辑也较简单,唯一的遗憾是没能用warshell算法做出满意的图形。