一种在网络中枚举最小割集的递归方法
A Recursive Approach for Enumerating Minimal Cutsets in a Network
申明
版权归原文作者及出版单位所有,如有侵权请联系删除。
摘要
本文提出了一种新的递归标记算法,用于在有向网络中确定所有最小割集,采用了从动态规划算法中改编的方法,解决了经典最短路径问题。该算法能够产生所有最小割集,并使用比较逻辑来消除任何冗余的割集。计算实验表明:1)每个割集的时间与节点数成线性变化,但随着图的密度指数级减少;2)尽管该算法在“每个割集的时间变化与节点数的关系”方面与其他算法相似,但在与图的密度比较的性能方面似乎表现出优越性。
1.介绍
在评估网络可靠性时,枚举单源单汇网络中的所有最小割集特别重要。已经有几种算法用于有向和无向图[1-4, 8-16, 18-1]。这些论文中的方法基于两类广泛应用的方法:
高斯消元和布尔代数
隐式或显式枚举方案
枚举似乎是计算上最高效的方法。
2.概念
2.1 背景
我们的算法(YTL’)是从Jensen和Bellmore(JB) [11]的基本方法中得出的枚举方案。Tsukiyama等人[18]后来扩展了这个想法,以提高算法的计算效率和空间需求。
JB证明,在一个有两个终端的设备-弧网络中,移除"最小割集的弧"将节点分成两个互斥的集合,具体地说:
- 源终端属于一个集合,而汇终端属于另一个集合。
- 每个集合包含一个连通子网络。
- 每个最小割集的弧有一个终端在一个集合中,并且属于另一个集合。另一个终端在另一个集合中。
JB利用这个原理构建了一个系统化的二叉树搜索,通过顺序添加节点和分支,直到每条路径都形成一个最小割集。
YTL证明了JB划分原理可以在不构造二叉搜索树的情况下实现。事实上,YTL通过以满足JB划分原则的方式添加和移除弧来一步一步构造每个最小割集。在这方面,YTL为提高计算时间和计算机存储需求提供了机会,详情见第7节。
2.2 简单示例
这个示例演示了YTL的一般思路。在图1中,节点1和4代表网络的源节点和汇节点。组件由弧A、B、C、D、E表示,所有弧都是有向的。假设X和Y是由JB原则定义的两个互斥的节点集合。
开始时,将X={1}和Y={2,3,4},这满足JB划分原则。对应于这个划分的最小割集是{A, B},定义了从节点1出发的弧。割集{A, B}然后与节点1相关联。
算法的一般步骤是从集合Y中移除一个节点,并以不违反JB划分原则的方式将其添加到集合X中。这个条件要求从Y中移除的节点与X中的某个节点相连。因此,如果我们从Y中移除节点2,则得到的分区为X={1,2}和Y={3,4}。我们可以通过识别将节点1和2连接起来的弧B,用将节点2与Y中的节点连接起来的弧C和E替换它,从而从节点1生成节点2的最小割集(={A, C, E})。实质上,节点2的新最小割集是通过用出弧C和E替换入弧B,自节点1的最小割集生成的。
接下来是将节点3加入到X中,使得X={1,2,3}和Y={4}。然后,节点3的最小割集由节点1和2的最小割集生成:
从节点1开始,将{A,B}中的弧A替换为弧D,得到最小割集{B,D}。
从节点2开始,将{A,C,E}中的弧A和C分别替换为弧D和E,得到最小割集{D,E}。
于是,节点3识别了最小割集{B,D}和{D,E}。由于Y现在只包括汇节点,过程结束。
为了让YTL识别出所有的最小割集,网络必须满足三角形属性。为了说明这一点,再次考虑图1中的网络。如果网络中没有弧C,给定的过程将无法从节点2的割集{A,C,E}生成节点3的割集{D,E},因为节点2和3没有直接连接。通过在节点2和3之间插入一个任意方向的虚拟弧(组件)来避免这个困难。这个虚拟弧不会出现在任何节点的割集中。因此,如果将虚拟弧从节点2连接到节点3,可以按照以下顺序生成连续的割集:
节点1的割集{A,B}。
节点2的割集{A,E}(注意,不包括虚拟弧C)。
节点3的割集{B,D},从节点1的切集{A,B}生成。
节点3的割集{D,E},从节点2的切集{A,E}生成。
最后,添加的虚拟弧可以被视为常规弧,并在YTL结束时从生成的最小割集中简单地删除。
施用三角形属性( triangular property)的一般规则是:如果节点 i i i直接连接到节点 j j j和 k k k,而节点j既不直接连接到节点k,也没有间接连接到节点 k k k,那么必须在节点 j j j和 k k k之间插入一个虚拟弧。检测未连接的节点的一个简单方法是将可靠性网络视为一个距离网络,其中每个有向弧具有单位长度。通过实现Floyd算法[6]来确定网络中所有节点对之间的最短路径,可以找到一个跨度为无穷大的节点对,这些节点对必须通过虚拟弧连接起来。
3.模型
符号表示:
N
{
1
,
2
,
.
.
.
,
n
}
N \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{1, 2, ..., n\}
N {1,2,...,n}:网络的节点集合;节点
1
1
1和
n
n
n代表源节点和汇节点
A
{
1
,
2
,
.
.
.
,
m
}
A \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \{1, 2, ..., m\}
A {1,2,...,m}:网络的弧集合
C
j
(
p
)
为
C_j^{(p)} \ \ \ \ \ \ \ \ \ \ \ 为
Cj(p) 为定义在节点
j
j
j上的(最小)割集
p
p
p,其中
j
∈
N
j∈N
j∈N
I
A
j
为
IA_j \ \ \ \ \ \ \ \ \ \ \ 为
IAj 为节点
j
j
j的入弧集合,其中
j
∈
N
j∈N
j∈N
O
A
j
为
OA_j \ \ \ \ \ \ \ \ \ \ 为
OAj 为节点
j
j
j的出弧集合,其中
j
∈
N
j∈N
j∈N
I
N
j
为
IN_j \ \ \ \ \ \ \ \ \ \ \ 为
INj 为进入节点
j
j
j的弧的尾部节点集合,其中
j
∈
N
j∈N
j∈N
O
N
j
为
ON_j \ \ \ \ \ \ \ \ \ \ 为
ONj 为从节点
j
j
j出发的弧的头部节点集合,其中
j
∈
N
j∈N
j∈N
假设:
- 系统由一个具有1个源和1个汇的设备-弧网络表示。
- 网络满足三角形属性。
- 网络中的所有简单串行弧都被一个单一的OR(I)弧替换。
4.有向网络的YTL算法
该算法通过研究每个节点枚举最小割集,从节点1(源节点)开始。根据定义,节点1有一个单一的最小割集,定义为 C 1 ( 1 ) = O A 1 C_1^{(1)} = OA_1 C1(1)=OA1。因此,节点1被标记为 C 1 ( 1 ) C_1^{(1)} C1(1)。如果一个节点的所有标签(最小割集)都已经生成,那么这个节点就被标记为已完成。因此,节点1是已完成的,因为它只生成了一个最小割集。
鉴于节点1是已完成的,算法的一般思路是,只有当所有直接进入节点 j j j的节点 k k k已经完成时,新的节点 j j j才能被标记(枚举其最小割集):即只有当直接进入节点 j j j的弧的尾部节点都已经完成时,才能生成节点 j j j的最小割集。然后,节点 j j j的最小割集由递归地使用已完成节点 k ∈ I N j k∈IN_j k∈INj的最小割集(标签)和节点 j j j的入弧和出弧集合,由以下一般递归方程生成:
C j ( p ) = { C k ( p ) ∪ O A j } − { C k ( p ) ∩ I A j } , p = 1 , 2 , . . . , S k C_j^{(p)} = \{C_k^{(p)}\cup OA_j\}-\{C_k^{(p)} \cap IA_j\},p=1,2,...,S_k Cj(p)={Ck(p)∪OAj}−{Ck(p)∩IAj},p=1,2,...,Sk,对于所有 k ∈ I N j k∈IN_j k∈INj
S
k
S_k
Sk
≡
\equiv
≡ 已完成的节点
k
k
k(例如,
S
1
=
1
S_1 = 1
S1=1)的最小割集(标签)数量。
节点
j
j
j在生成了
S
j
=
∑
k
∈
I
N
j
S
k
S_j = \sum \limits_{k \in IN_j}S_k
Sj=k∈INj∑Sk个标签后被标记为已完成。
算法步骤:
- 定义
X
1
=
{
1
}
X_1 =\{1\}
X1={1}和
Y
1
=
{
2
,
3
,
.
.
.
,
n
}
Y_1 = \{2, 3, ..., n\}
Y1={2,3,...,n}。
标记节点1。以 C 1 ( 1 ) = O A 1 C_1^{(1)} = OA_1 C1(1)=OA1作为起始。节点1被标记为已完成。 - 选择下一个要标记为已完成的节点
j
j
j,使得所有节点
k
∈
I
N
j
k \in IN_j
k∈INj都已完成和定义:
X i = X i − 1 + { j } X_i = X_{i-1} + \{j\} Xi=Xi−1+{j}
Y i = Y i − 1 − { j } Y_i = Y_{i-1} - \{j\} Yi=Yi−1−{j}
设 C k ( p ) C_k^{(p)} Ck(p)表示节点 k k k, k ∈ I N j k∈IN_j k∈INj的标签 p = 1 , 2 , . . . , S k p=1,2,...,S_k p=1,2,...,Sk。然后节点j的关联标签 C j ( p ) C_j^{(p)} Cj(p)由以下方式确定:
C j ( p ) = { C k ( p ) ∪ O A j } − { C k ( p ) ∩ I A j } , p = 1 , 2 , . . . , S k C_j^{(p)} = \{C_k^{(p)}\cup OA_j\}-\{C_k^{(p)} \cap IA_j\},p=1,2,...,S_k Cj(p)={Ck(p)∪OAj}−{Ck(p)∩IAj},p=1,2,...,Sk,对于所有 k ∈ I N j k∈IN_j k∈INj
IF Y i = { n } Y_i = \{n\} Yi={n}(所有节点 j ∈ X i = { 1 , 2 , . . . , n − 1 } j∈X_i = \{1, 2, ..., n-1\} j∈Xi={1,2,...,n−1}都已完成),则停止。否则,返回步骤1。
节点1、2和n-1的标签定义了有向网络的最小割集。
5.有向网络示例
图2中的示例网络来自 Ahmad [2]。
通过进行以下替换,将所有简单串行弧转换为等效的OR弧:
移除节点2,并用OR弧1|2替换弧1&2。
移除节点5,并用OR弧8|10替换弧8&10。
图3显示了应用该算法后的新简化网络。得到的网络满足三角形特性。
图3中的标签计算如下:
-
节点1: ( X 1 = 1 , Y 1 = { 3 , 4 , 6 , 7 } ) (X_1 = {1}, Y_1 = \{3,4,6,7\}) (X1=1,Y1={3,4,6,7}),
O A 1 = { 1 ∣ 2 , 3 , 4 } OA_1 = \{1|2,3,4\} OA1={1∣2,3,4},因此
C 1 ( 1 ) = O A 1 = { 1 ∣ 2 , 3 , 4 } C_1^{(1)} = OA_1 = \{1|2,3,4\} C1(1)=OA1={1∣2,3,4}
节点1完成(fathomed)。唯一可以考虑完成的下一个节点是节点3,因为它是唯一一个所有前驱节点(节点1)都被完成的节点。 -
节点3: ( X 3 = { 1 , 3 } , Y 2 = { 4 , 6 , 7 } ) (X3 = \{1,3\}, Y2 = \{4,6,7\}) (X3={1,3},Y2={4,6,7})
由于节点3只有一个前驱节点(节点1)并且有一个标签( C 1 ( 1 ) C_1^{(1)} C1(1)),完成节点3所需的标签数量为1;即 S 1 = 1 S_1 = 1 S1=1。此标签的计算如下:
I A 3 = { 1 ∣ 2 , 3 } IA_3 = \{1|2,3\} IA3={1∣2,3}, O A 3 = { 6 , 7 } OA_3 = \{6,7\} OA3={6,7}
C 3 ( 1 ) = { C 1 ( 1 ) ∪ O A 3 } − { C 1 ( 1 ) ∩ I A 3 } C_3^{(1)} = \{C_1^{(1)} \cup OA_3\} - \{C_1^{(1)}\cap IA_3\} C3(1)={C1(1)∪OA3}−{C1(1)∩IA3}
= { 1 ∣ 2 , 3 , 4 , 6 , 7 } − { 1 ∣ 2 , 3 } \{1|2,3,4,6,7\} - \{1|2,3\} {1∣2,3,4,6,7}−{1∣2,3}
= { 4 , 6 , 7 } \{4,6,7\} {4,6,7}
节点3完成。接下来考虑完成节点4。
继续以同样的方式进行递归计算,总结在表1中。
我们现在可以通过将OR弧展开为其各个串行组件,来获取图2中原始网络的割集。
例如,
C
1
(
1
)
=
{
1
∣
2
,
3
,
4
}
C_1^{(1)} = \{1|2,3,4\}
C1(1)={1∣2,3,4} 给出了2个最小割集
{
1
,
3
,
4
}
\{1,3,4\}
{1,3,4} &
{
2
,
3
,
4
}
\{2,3,4\}
{2,3,4}。将这个规则应用于其余的标签,图2中网络的最小割集为:
{
1
,
3
,
4
}
,
{
2
,
3
,
4
}
,
{
4
,
6
,
7
}
,
{
,
4
,
7
,
8
,
9
}
,
{
4
,
7
,
9
,
10
}
,
\{1,3,4\},\{2,3,4\},\{4,6,7\},\{,4,7,8,9\},\{4,7,9,10\},
{1,3,4},{2,3,4},{4,6,7},{,4,7,8,9},{4,7,9,10},
{
1
,
3
,
11
}
,
{
2
,
3
,
11
}
,
{
6
,
11
}
,
{
8
,
11
}
,
{
10
,
11
}
\{1,3,11\},\{2,3,11\},\{6,11\},\{8,11\},\{10,11\}
{1,3,11},{2,3,11},{6,11},{8,11},{10,11}
6.YTL算法用于无向网络
无向算法中的计算基于第3节介绍的通用递归方程。然而,为了考虑反馈回路,需要进行两个特殊修改:
- 要求一个节点在其所有前驱节点都被完成之前不能被标记,在无向算法中无法应用。因此,递归计算的顺序(节点标记的顺序)必须改变。
- 尽管无向递归算法产生所有最小割集,但也可能生成不一定是最小的割集。因此,与有向算法不同,算法过程中生成的割集可能是可能最小( p o s s i b l y m i n i m a l , p m possibly \ \ minimal,pm possibly minimal,pm)的割集。因此,在程序终止时需要通过使用系统化的排除过程来排除所有非最小的割集。
为了考虑反馈回路的影响,有必要跟踪导致当前节点生成
p
m
pm
pm割集的节点路线(递归节点序列)。这意味着节点
j
j
j的标签包括
p
m
pm
pm割集
C
j
(
p
)
C_j^{(p)}
Cj(p)以及有序的路线集
R
j
(
P
)
R_j^{(P)}
Rj(P)。图4说明了路线集
R
R
R的典型定义。
- 在节点3处生成的 C 3 ( 1 ) C_3^{(1)} C3(1)来自节点2的 C 2 ( 1 ) C_2^{(1)} C2(1),递归的, C 2 ( 1 ) C_2^{(1)} C2(1)是从节点1的 C 1 ( 1 ) C_1^{(1)} C1(1)生成的。
- 因此, C 3 ( 1 ) C_3^{(1)} C3(1)路线集 R 3 ( 1 ) = { 1 , 2 , 3 } R_3^{(1)}=\{1,2,3\} R3(1)={1,2,3}。
- 另一方面,由于 C 3 ( 2 ) C_3^{(2)} C3(2)是从节点1的 C 1 ( 1 ) C_1^{(1)} C1(1)生成的,因此节点1的 R 3 ( 2 ) = { 1 , 3 } R_3^{(2)}=\{1,3\} R3(2)={1,3}。
在给定路线集 R R R的定义后,为了考虑反馈回路的存在,有向算法的递归方程需要进行以下修改:
- 递归计算从一个已标记的节点k开始,通过标记(使用集合 C C C& R R R)其所有出边节点 j ∈ O N k j \in ON_k j∈ONk来递归计算(与有向算法不同,在有向算法中仅当所有入边节点 k ∈ I N j k \in IN_j k∈INj被解除时才标记新节点 j j j)。为了算法的目的,我们将节点 k k k称为父节点。这种修改中的递归过程类似于 D i j k s t r a Dijkstra Dijkstra [5] 在设计无向(循环)最短路径算法时使用的递归过程。
- 由于最小割集根据定义不包括任何循环,因此需要修改递归方程来排除此类可能性:a) 不对父节点的路径集R中的任何节点进行(再)标记(完成relabeling),b) 从新生成的割集中排除将被标记节点与其路径集中的节点连接起来的任何弧。
7.计算实验
Tsukiyama等人 [17] 报告称,随着节点数n以及图的密度(活动数m和节点数n的函数)增加,时间/割集线性增长。我们的计算结果在节点数n方面也显示出类似的线性增长。然而,YTL表明随着图的密度增加,时间/割集实际上呈指数下降。
所有在此报告的计算都是在基于UNIX的小型计算机上完成的。由于我们不是专业程序员,计算结果并没有绝对意义上的解释。相反,数据被视为代表时间/割集随节点数和图的密度变化趋势的趋势。
图5显示了当
m
=
2
n
m = 2n
m=2n且密度为1(除源节点和汇节点外,所有节点对直接连接)时,时间/割集的变化情况。在这两种情况下,相关系数
R
R
R约为0.99,表明时间/割集与节点数之间存在强烈的线性关系。
图5中的数据点代表:
- 每个数据点是5次重复实验的平均值,每次重复实验是随机选择 m ( m = 2 n ) m (m = 2n) m(m=2n) 条连接弧的结果,用符号" ◯ \bigcirc ◯"表示。
- 一个100%密集图的单次重复实验,用符号" ♢ \diamondsuit ♢"表示。
在图5中,当 n < 8 n < 8 n<8时,计算时间太小,以至于在不同节点之间无法观察到明显的变化。
图6显示了时间/割集与密度之间的变化。
与[17]的结果不同,它显示出随着密度的增加,时间/割集呈指数下降。我们直观地解释这个结果是因为:
- [17] 中的树搜索算法单独跟踪每个割集,而YTL中的计算主要与网络中的节点数有关。
- 尽管最小割集的数量也很重要,但是最小割集数量随密度的增加的速率似乎超过了总执行时间的增长速率,因此使得时间/割集下降。
如果有需要,我们很乐意根据要求提供更多信息或用于解决最多20个节点问题的算法实现的软件代码。
参考文献
[l] U. Abel, R. Bicker, “Determination of all minimal cut-sets between a
vertex in an undirected graph’’, IEEE Trans. Reliability, vol R-31, 1982
Jun, pp 167-171.
[2] S. Ahmad, “Simple enumeration of minimal cut-sets of acyclic directed
graph”, IEEE Trans. Reliability, vol 37, 1988 Dec, pp 484-487.
[3] S. Arunkumar, S. Lee, “Enumeration of all minimal cut-sets for a node
pair in a graph”, IEEE Trans. Reliability, vol R-28, 1979 Apr, pp 51-55.
[4] J. Biegel, “Determination of tie sets and cutsets for a system without
feedback”, IEEE Trans. Reliability, vol R-26, 1977 Apr, pp 39-42.
[5] E. Dijkstra, “A note on two problems in connection with graphs”,
Numerische Marhematik, vol 1, 1959, pp 269-271.
[6] R. Floyd, “Algorithm 97: Shortest path”, Comm. ACM, vol5, num 6,
1962, p 345.
[7] L. Ford, D. Fulkerson, Flows in Nefworks, 1%2; Princeton Univ. Press.
[8] K. Heidt”, “Inverting paths and cuts of 2-state system”, IEEE Truns.
Relinbility, vol R-32, 1983 Dec, pp 469-471.
[9] G. Jasmon, K. Foong, “Cutset analysis of networks using basic minimal
paths and network decomposition”, IEEE Trans. Reliability, vol R-36,
[lo] G. Jasmon, 0. Kai, “A new technique in minimal path and cutset evaluation”, IEEE Trans. Reliability, vol R-34, 1985 Jun, pp 136-141.
[l 11 P. Jensen, M. Bellmore, “An algorithm to determine the reliability of
a complex system”, IEEE Trans. Reliability, vol R-18, 1969 Nov, pp
[I21 M. Locks, “Inverting and minimalizing path sets and cutsets”, IEEE
Trans. Reliability, vol R-27, 1978 Jun, pp 107-109.
[I31 M. Locks, “Inverting and “alizing Boolean functions, minimal paths
and “al cuts: Noncoherent system analysis”, IEEE Trans. Reliability,
[14] G. Pearson, “Computer program for approximating the reliability
characteristics of acyclic directed graphs”, IEEE Trans. Reliability, vol
R-26, 1977 Apr, pp 32-38.
[I51 D. Shier, D. Whited, “Algorithms for generating minimal cutsets by
inversion”, ZEEE Trans. Reliability, vol R-34, 1985 Oct, pp 314-319.
[16] D. Shier, D. Whited, “Iterative algorithms for generating minimal cutsets
in directed graphs”, Nemo&, vol 16, num 2, 1986 summer, pp 133-147.
[I71 S. Tsukiyama, I. Shirakawa, H. Ozaki, H. Ariyoshi, “An algorithm to
enumerate all cutsets of a graph in linear time per cutset”, .I. Assoc. Computing Machinery, vol 27, num 4, 1980, pp 619-632.
[18] H. Taha, Operations Research: An Introduction (5“ ed), 1992;
Macmillan.
作者
李燕;工业工程系;贝尔工程中心4117室;阿肯色大学;费耶特维尔,阿肯色州,美国72701。李燕是阿肯色大学工业工程的博士候选人。他在中国–吉林工业大学获得了机械工程学士学位(1982年),在吉林工业大学获得了机械工程硕士学位(1988年),并在阿肯色大学获得了工业工程硕士学位(1992年)。他在工业界有超过5年的经验。
(译者注:2000年以后,原吉林工业大学合并入吉林大学)
汉迪·A·塔哈博士;工业工程系;贝尔工程中心4207室;阿肯色大学;费耶特维尔,阿肯色州,美国72701。汉迪·A·塔哈博士在埃及亚历山大大学获得了电气工程学士学位(1958年),在斯坦福大学获得了工业工程硕士学位(1961年),在亚利桑那州立大学获得了工业工程博士学位(1%年)。他是《运筹学导论》第5版(1992年)、《模拟建模与仿真》(1988年)和《整数规划:理论、应用与计算》(1975年)的作者。他于1969年加入阿肯色大学担任副教授。他曾在美国、墨西哥和中东的石油和钢铁工业领域提供咨询服务。
汤玛斯·L·兰德斯博士;工业工程系;贝尔工程中心4207室;阿肯色大学;费耶特维尔,阿肯色州,美国72701。电子邮件:tlanders@uafsysb.uark.edu。汤玛斯·L·兰德斯是阿肯色大学工业工程的教授。他在得克萨斯科技大学获得了工业工程博士学位,并在工业界有超过10年的经验。他曾在轻型战斗机和F-16系统计划办公室担任可靠性工程师,并在一家供应日本汽车制造商的公司担任质量保证和保修管理工作。他是《电子制造工艺》(1994年)的主要作者,并曾担任IEEE Transactions on Reliability杂志的副编辑(1993年12月27日手稿)。
Li Yan, H. A. Taha and T. L. Landers, “A recursive approach for enumerating minimal cutsets in a network,” in IEEE Transactions on Reliability, vol. 43, no. 3, pp. 383-388, Sept. 1994, doi: 10.1109/24.326430.