拓扑网络连通性算法

阅读: 评论:0

网络连通性算法
网络定义
节点与支路的集合,该集合中的节点与支路的连接关系可通过一节点-节点关联矩阵A 充分表达:
A =[a ij ]n ×n  i,j=1,2,…,n
式中:a ij =⎩⎨⎧间有支路直接相连。
与节点,当节点间无支路直接相连,与节点,当节点j i 1j i 0
n —网络节点数
连通性算法
理论算法:
称矩阵A 为网络一级连通矩阵,A 2为二级连通矩阵,…,A n-1为n-1级连通矩阵。
A 2=AA =[a 2ij ]n ×n  i,j=1,2,…,n
式中:a 2ij =⎩
⎨⎧相连。节点间有支路直接或经第与节点,当节点相连,节点间无支路直接且经第与节点,当节点k 3j i 1 3j i 0k  k=1,2,…,n ,k ≠i,j
……
A n-1=    个1-⋯n A AA  =[a n-1ij ]n ×n  i,j =1,2,…,n
式中:
a n-1ij =⎩⎨⎧-⋯-⋯个节点相连。,,,
间有支路直接或经其它与节点,当节点个节点相连,,,,间无支路直接且经其它与节点,当节点221j i 1 221j i 0n n  矩阵A n-1的每一线性无关的行或列中“1”元素对应的节点均处于同一连通子集中。 实际算法:
若矩阵A 第i (i=1,2,…,n )行元素与第j (j=i+1,i+2,…,n )行元素中第k 列元素a ik 和a jk 同为“1”,则第j 行中的其它“1”元素均填入第i 行的相应列中。结果矩阵A 第i 行中所有“1”元素对应的节点处于同一连通子集中。
数据定义
Nc —元件数
Nd —节点数
NOD (Nc,3)—每个元件的节点编号i 、j 、k
KND (Nc )—每个元件的种类(断路器、隔离开关、母线、线路、变压器……) CNT (Nc )—每个开关元件的分、合状态(逻辑型,例如:合为“真”,分为“假”) NDS0(Nd )—每个节点初始所在连通子集编号
NDS (Nd )—每个节点所在连通子集编号
NCT0(Nc )—每个元件初始所在连通子集编号
NCT(Nc)—每个元件所在连通子集编号
NST(Ns,3)—每个原始连通子集内[子集号,子集内节点数,子集内首位节点号]
Ns—最大可能连通子集数
电动车遮阳棚
RA(Nd)—节点关联矩阵第i行,逻辑型
高铬铸铁RB(Nd)—节点关联矩阵第j行,逻辑型
检验第k0个连通子集的连通性子程序CNTS(k0)
初始化
IND=NST(k0,3) 取第k0个连通子集的首位节点号
N=0 连通子集数置0
LOOP1 l=1,Nd l从1至Nd循环
IF (NDS0(l)=k0),NDS(l)=0  第k0个连通子集的节点l的子集号临时置0 END LOOP1
连通性检验大循环
10 NSUM=1 节点关联矩阵“真”元素计数置为1
LOOP1 l=1,Nd l从1至Nd循环
RA(l)=FALSE 第k0个连通子集中第IND行第l列元素置为“假”
END LOOP1
RA(IND)=TRUE 节点关联矩阵第IND行对角元素置1
M=1 节点关联矩阵第IND行“真”元素计数置为1
形成节点关联矩阵的第IND行RA
LOOP1 l=1,Nc  l从1至Nc循环
IF(NCT0(l)=k0),THEN 如果元件l属于初始连通子集k0,则
IF(KND(l)≠‘开关’or (KND(l)=‘开关’and CNT(l)=‘合’),THEN
I=NOD(l,1) J=NOD(l,2) K=NOD(l,3) 取元件l的各端节点号
IF(I=IND),THEN 如果节点号I等于节点号IND,则
IF(J≠0 and J≠I),THEN 如果节点号J不等于0和I,则
RA(J)=TRUE 关联矩阵第IND行第J列元素置为“真”
M=M+1 关联矩阵第IND行“真”元素计数+1
END IF
IF(K≠0 and K≠I and K≠J),THEN 如果节点号K不等于0和I和J,则
RA(K)=TRUE 关联矩阵第IND行第K列元素置为“真”
M=M+1 关联矩阵第IND行“真”元素计数+1
END IF
END IF
IF(J=IND),THEN 如果节点号J等于节点号IND,则
IF(I≠0 and I≠J),THEN 如果节点号I不等于0和I,则
RA(I)=TRUE 关联矩阵第IND行第I列元素置为“真”
M=M+1 关联矩阵第IND行“真”元素计数+1
END IF
IF(K≠0 and K≠I and K≠J),THEN 如果节点号K不等于0和I和J,则变量泵
RA(K)=TRUE 关联矩阵第IND行第K列元素置为“真”
M=M+1 关联矩阵第IND行“真”元素计数+1
END IF
END IF
IF(K=IND),THEN 如果节点号K等于节点号IND,则
IF(I≠0 and I≠K),THEN 如果节点号I不等于0和K,则
RA(I)=TRUE 关联矩阵第IND行第I列元素置为“真”
M=M+1 关联矩阵第IND行“真”元素计数+1
END IF
IF(J≠0 and J≠I and J≠K),THEN 如果节点号J不等于0和I和K,则
RA(J)=TRUE      关联矩阵第IND 行第J 列元素置为“真” M=M+1        关联矩阵第IND 行“真”元素计数+1
END IF
END IF
END IF
END IF
END LOOP1
将节点连通矩阵第IND+1~Nd 行与第IND 行比较,寻包含节点IND 的连通子集
LOOP1 WHILE(M <NST(k 0,2) and M >NSUM) 当
NSUM=M
LOOP2  ld=IND+1,Nd  ld 自IND+1至Nd 循环
IF (NDS0(ld)=k 0 and RA(ld)=FALSE and NDS(ld)=0),THEN 当
LOOP3  l=1,Nd  l 自1至nd 循环
RB(l)=FALSE  关联矩阵第ld 行第l 列元素置为“假”
END LOOP3
RB(ld)=TRUE      节点关联矩阵第ld 行对角元素置1
形成节点关联矩阵的第ld 行RB
LOOP3  l=1,Nc      l 自1至Nc 循环
IF(NCT0(l)=k 0),THEN    如果元件l 属于原连通子集k 0,则 IF(KND(l)≠‘开关’or (KND(l)=‘开关’and CNT(l)=‘合’),THEN
I=NOD(l,1) J=NOD(l,2) K=NOD(l,3) 取元件l 的各端节点号
IF(I=ld),THEN      如果节点号I 等于节点号ld ,则
IF(J ≠0 and J ≠I),THEN  如果节点号J 不等于0和I ,则
RB(J)=TRUE      关联矩阵第ld 行第J 列元素置为“真”
END IF
IF(K ≠0 and K ≠I and K ≠J),THEN 如果节点号K 不等于0和I 和J ,则
RB(K)=TRUE      关联矩阵第ld 行第K 列元素置为“真”
END IF
END IF
IF(J=ld),THEN      如果节点号J 等于节点号ld ,则
IF(I ≠0 and I ≠J),THEN  如果节点号I 不等于0和J ,则
RB(I)=TRUE      关联矩阵第ld 行第I 列元素置为“真”
END IF
IF(K ≠0 and K ≠I and K ≠J),THEN 如果节点号K 不等于0和I 和J ,则
RB(K)=TRUE      关联矩阵第ld 行第K 列元素置为“真”
END IF
END IF
IF(K=ld),THEN    如果节点号K 等于节点号ld ,则
IF(I ≠0 and I ≠K),THEN  如果节点号I 不等于0和K ,则
RB(I)=TRUE      关联矩阵第ld 行第I 列元素置为“真”
END IF
IF(J ≠0 and J ≠I and J ≠K),THEN 如果节点号K 不等于0和I 和J ,则
RB(J)=TRUE      关联矩阵第ld 行第J 列元素置为“真”
END IF
END IF
END IF
END IF  END LOOP3
节点ld 属于连通子集k 0,且关联矩阵第IND 行第ld 列元素为“假”,且未到节点ld 新连通子集号时,循环 M <子集k 0节点数且有新“真”元素出现时,循环
LOOP3  l=1,Nd  l 自1至Nd 循环    IF(NDS0(l)=k 0 and RA(l) and RB(l)),THEN      LOOP4  j=1,Nd  jl 自1至Nd 循环
雀榕叶
IF(RA(j)=FALSE and RB(j)=TRUE),THEN    RA(j)=TRUE  行IND 列j 置为“真”    M=M+1      关联矩阵第IND 行“真”元素计数+1    END IF
END LOOP4
GOTO 20      跳出循环3
金属检测传感器END LOOP3
20  END LOOP2
END LOOP1
N=N+1          连通子集计数+1
IF(M=NST(k 0,2)),THEN    如果M=原连通子集k 0中节点总数,则  LOOP1  l=1,Nd      l 自1至Nd 循环
IF(NDS0(l)=k 0),NDS(l)=1    连通子集k 0中节点l 的子集号置为1  END LOOP1        (子集k 0全连通)
ELSE          否则
LOOP1  l=1,Nd      l 自1至Nd 循环
IF(RA(l)=TRUE),NDS(l)=N  如果RA(l)为“真”,连通子集k 0中节    END LOOP1        点l 的子集号置为N
LOOP1  l=IND+1,Nd    l 自IND+1至Nd 循环
IF(NDSO(l)=k 0 and NDS(l)=0) THEN 如果节点l 属原子集k 0且无新子集号,则  IND=l        将寻下一连通子集的起始节点号置为l  GOTO 10      返回10,自节点l 开始寻下一连通子集    END IF
END LOOP1
END IF
NST(k 0,1)=N      将原始连通子集k 0内的连通子集数置为N  LOOP1  l=1,Nc      l 自1至Nc 循环
IF(NCT0(l)=k 0),THEN    如果元件l 属于初始连通子集k 0,则    IF(KND(l)≠‘开关’or (KND(l)=‘开关’and CNT(l)=‘合’),THEN    I=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 40
END IF
END IF
END IF
ELSE
GOTO30
END IF
END IF 如果节点l 属于原连通子集k 0,且关联矩阵第IND 行第l 列元素与第
ld 行第l 列元素同为“真”,则 如果第IND 行第j 列元素为“假”,
且ld 行第j 列元素为“真”
,则

本文发布于:2023-05-21 12:34:09,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/4/108128.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:节点   子集   元素
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图