收藏 分享(赏)

拓扑-网络连通性算法.doc

上传人:yjrm16270 文档编号:7054549 上传时间:2019-05-04 格式:DOC 页数:6 大小:45KB
下载 相关 举报
拓扑-网络连通性算法.doc_第1页
第1页 / 共6页
拓扑-网络连通性算法.doc_第2页
第2页 / 共6页
拓扑-网络连通性算法.doc_第3页
第3页 / 共6页
拓扑-网络连通性算法.doc_第4页
第4页 / 共6页
拓扑-网络连通性算法.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、网络连通性算法网络定义节点与支路的集合,该集合中的节点与支路的连接关系可通过一节点-节点关联矩阵 A 充分表达:A=aijnn i,j=1,2,n式中:a ij=间 有 支 路 直 接 相 连 。与 节 点, 当 节 点 间 无 支 路 直 接 相 连 ,与 节 点, 当 节 点 ji10n网络节点数连通性算法理论算法:称矩阵 A 为网络一级连通矩阵,A 2 为二级连通矩阵,A n-1 为 n-1 级连通矩阵。A2=AA=a2ijnn i,j=1,2,n式中:a 2ij= 相 连 。节 点间 有 支 路 直 接 或 经 第与 节 点, 当 节 点 相 连 ,节 点间 无 支 路 直 接 且 经

2、 第与 节 点, 当 节 点 k3ji1 0k=1,2,n,k i,jAn-1= =an-1ijnn i,j=1,2,n个1n式中:an-1ij= 个 节 点 相 连 。,间 有 支 路 直 接 或 经 其 它与 节 点, 当 节 点 个 节 点 相 连 ,间 无 支 路 直 接 且 经 其 它与 节 点, 当 节 点 21ji1 0 n矩阵 An-1 的每一线性无关的行或列中“1”元素对应的节点均处于同一连通子集中。实际算法:若矩阵 A 第 i(i=1,2, ,n)行元素与第 j(j=i+1,i+2,n)行元素中第 k 列元素 aik和 ajk 同为“ 1”,则第 j 行中的其它 “1”元素

3、均填入第 i 行的相应列中。结果矩阵 A第 i 行中所有“1”元素对应的节点处于同一连通子集中。数据定义Nc元件数Nd节点数NOD(Nc,3) 每个元件的节点编号 i、j、kKND(Nc) 每个元件的种类(断路器、隔离开关、母线、线路、变压器)CNT(Nc) 每个开关元件的分、合状态(逻辑型,例如:合为“真” ,分为“假” )NDS0(Nd)每个节点初始所在连通子集编号NDS(Nd)每个节点所在连通子集编号NCT0(Nc) 每个元件初始所在连通子集编号NCT(Nc) 每个元件所在连通子集编号NST(Ns ,3)每个原始连通子集内子集号,子集内节点数,子集内首位节点号Ns最大可能连通子集数RA(

4、Nd)节点关联矩阵第 i 行,逻辑型RB(Nd) 节点关联矩阵第 j 行,逻辑型检验第 k0个连通子集的连通性子程序 CNTS(k0)初始化IND=NST(k0,3) 取第 k0 个连通子集的首位节点号N=0 连通子集数置 0LOOP1 l=1,Nd l 从 1 至 Nd 循环IF (NDS0(l)=k 0), NDS(l)=0 第 k0 个连通子集的节点 l 的子集号临时置0END LOOP1连通性检验大循环10 NSUM=1 节点关联矩阵“真”元素计数置为 1LOOP1 l=1,Nd l 从 1 至 Nd 循环RA(l)=FALSE 第 k0 个连通子集中第 IND 行第 l 列元素置为“

5、假”END LOOP1RA(IND)=TRUE 节点关联矩阵第 IND 行对角元素置 1M=1 节点关联矩阵第 IND 行 “真”元素计数置为 1形成节点关联矩阵的第 IND 行 RALOOP1 l=1,Nc l 从 1 至 Nc 循环IF(NCT0(l)=k0),THEN 如果元件 l 属于初始连通子集 k0,则IF(KND(l)开关or (KND(l)=开关and CNT(l)=合),THENI=NOD(l,1) J=NOD(l,2) K=NOD(l,3) 取元件 l 的各端节点号IF(I=IND),THEN 如果节点号 I 等于节点号 IND,则IF(J0 and JI),THEN 如果

6、节点号 J 不等于 0 和 I,则RA(J)=TRUE 关联矩阵第 IND 行第 J 列元素置为“真”M=M+1 关联矩阵第 IND 行“真”元素计数+1END IFIF(K0 and KI and KJ),THEN 如果节点号 K 不等于 0 和 I 和 J,则RA(K)=TRUE 关 联 矩 阵 第 IND 行 第 K 列 元 素 置 为 “真 ”M=M+1 关联矩阵第 IND 行“真”元素计数+1END IFEND IFIF(J=IND),THEN 如果节点号 J 等于节点号 IND,则IF(I0 and IJ),THEN 如果节点号 I 不等于 0 和 I,则RA(I)=TRUE 关联

7、矩阵第 IND 行第 I 列元素置为“真”M=M+1 关联矩阵第 IND 行“真”元素计数+1END IFIF(K0 and KI and KJ),THEN 如果节点号 K 不等于 0 和 I 和 J,则RA(K)=TRUE 关 联 矩 阵 第 IND 行 第 K 列 元 素 置 为 “真 ”M=M+1 关联矩阵第 IND 行“真”元素计数+1END IFEND IFIF(K=IND),THEN 如果节点号 K 等于节点号 IND,则IF(I0 and IK),THEN 如果节点号 I 不等于 0 和 K,则RA(I)=TRUE 关联矩阵第 IND 行第 I 列元素置为“真”M=M+1 关联矩

8、阵第 IND 行“真”元素计数+1END IFIF(J0 and JI and JK),THEN 如果节点号 J 不等于 0 和 I 和 K,则RA(J)=TRUE 关联矩阵第 IND 行第 J 列元素置为“真”M=M+1 关联矩阵第 IND 行“真”元素计数+1END IFEND IFEND IFEND IFEND LOOP1将节点连通矩阵第 IND+1Nd 行与第 IND 行比较,寻找包含节点 IND 的连通子集LOOP1 WHILE(M NST(k0,2) and MNSUM) 当NSUM=MLOOP2 ld=IND+1,Nd ld 自 IND+1 至 Nd 循环IF (NDS0(ld)

9、=k0 and RA(ld)=FALSE and NDS(ld)=0),THEN 当LOOP3 l=1,Nd l 自 1 至 nd 循环RB(l)=FALSE 关联矩阵第 ld 行第 l 列元素置为“假”END LOOP3RB(ld)=TRUE 节点关联矩阵第 ld 行对角元素置 1形成节点关联矩阵的第 ld 行 RBLOOP3 l=1,Nc l 自 1 至 Nc 循环IF(NCT0(l)=k0),THEN 如果元件 l 属于原连通子集 k0,则IF(KND(l) 开关or (KND(l)=开关and CNT(l)=合),THENI=NOD(l,1) J=NOD(l,2) K=NOD(l,3)

10、 取元件 l 的各端节点号IF(I=ld),THEN 如果节点号 I 等于节点号 ld,则IF(J0 and JI),THEN 如果节点号 J 不等于 0 和 I,则RB(J)=TRUE 关联矩阵第 ld 行第 J 列元素置为“真”END IFIF(K0 and KI and KJ),THEN 如果节点号 K 不等于 0 和 I 和 J,则RB(K)=TRUE 关联矩阵第 ld 行第 K 列元素置为“真”END IFEND IFIF(J=ld),THEN 如果节点号 J 等于节点号 ld,则IF(I0 and IJ),THEN 如果节点号 I 不等于 0 和 J,则RB(I)=TRUE 关联矩

11、阵第 ld 行第 I 列元素置为“真”END IFIF(K0 and KI and KJ),THEN 如果节点号 K 不等于 0 和 I 和 J,则RB(K)=TRUE 关联矩阵第 ld 行第 K 列元素置为“真”节点 ld 属于连通子集 k0,且关联矩阵第 IND 行第 ld 列元素为“假” ,且未找到节点 ld 新连通子集号时,循环M子集 k0 节点数且有新“真”元素出现时,循环END IFEND IFIF(K=ld),THEN 如果节点号 K 等于节点号 ld,则IF(I0 and IK),THEN 如果节点号 I 不等于 0 和 K,则RB(I)=TRUE 关联矩阵第 ld 行第 I

12、列元素置为“真”END IFIF(J0 and JI and JK),THEN 如果节点号 K 不等于 0 和 I 和 J,则RB(J)=TRUE 关联矩阵第 ld 行第 J 列元素置为“真”END IFEND IFEND IFEND IFEND LOOP3LOOP3 l=1,Nd l 自 1 至 Nd 循环IF(NDS0(l)=k0 and RA(l) and RB(l),THENLOOP4 j=1, Nd jl 自 1 至 Nd 循环IF(RA(j)=FALSE and RB(j)=TRUE),THENRA(j)=TRUE 行 IND 列 j 置为“真”M=M+1 关联矩阵第 IND 行“

13、真”元素计数+1END IFEND LOOP4GOTO 20 跳出循环 3END LOOP320 END LOOP2END LOOP1N=N+1 连通子集计数+1IF(M=NST(k0,2),THEN 如果 M=原连通子集 k0 中节点总数,则LOOP1 l=1,Nd l 自 1 至 Nd 循环IF(NDS0(l)=k0),NDS(l)=1 连通子集 k0 中节点 l 的子集号置为 1END LOOP1 (子集 k0 全连通)ELSE 否则LOOP1 l=1,Nd l 自 1 至 Nd 循环IF(RA(l)=TRUE),NDS(l)=N 如果 RA(l)为“真” ,连通子集 k0 中节 END

14、 LOOP1 点 l 的子集号置为 NLOOP1 l=IND+1,Nd l 自 IND+1 至 Nd 循环IF(NDSO(l)=k0 and NDS(l)=0) THEN 如果节点 l 属原子集 k0 且无新子集号,则IND=l 将寻找下一连通子集的起始节点号置为 lGOTO 10 返回 10,自节点 l 开始寻找下一连通子集END IFEND LOOP1END IFNST(k0,1)=N 将原始连通子集 k0 内的连通子集数置为 NLOOP1 l=1,Nc l 自 1 至 Nc 循环如果节点 l 属于原连通子集 k0,且关联矩阵第 IND 行第 l 列元素与第ld 行第 l 列元素同为“真”

15、 ,则如果第 IND 行第 j 列元素为“ 假” ,且 ld 行第 j 列元素为“真” ,则IF(NCT0(l)=k0),THEN 如果元件 l 属于初始连通子集 k0,则IF(KND(l)开关or (KND(l)=开关and CNT(l)=合),THENI=NOD(l,1) I=元件 l 的第一个节点号IF(I=0),THEN 如果 I 为 0,则I=NOD(l,2) I=元件 l 的第二个节点号IF(I=0),THEN 如果 I 为 0,则I=NOD(l,3) I=元件 l 的第三个节点号IF(I=0),THEN 如果 I 为 0,则30 NCT(l)=0 元件 l 所在连通子集号为 0(孤立元件)GOTO 40END IFEND IFEND IFELSEGOTO30END IFEND IFNCT(l)=NDS(I) 元件 l 所在连通子集号为节点 I 的连通子集号40 END LOOP1RETURNEND

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报