本文属于「离散数学」系列文章之一。这一系列着重于离散数学的学习和应用。由于内容随时可能发生更新变动,欢迎关注和收藏离散数学系列文章汇总目录一文以作备忘。此外,在本系列学习文章中,为了透彻理解数学知识,本人参考了诸多博客、教程、文档、书籍等资料。以下是本文的不完全参考目录,在后续学习中还会逐渐补充:
- (国外经典教材)离散数学及其应用 第八版
Discrete Mathematics and Its Applications Eighth Edition
,作者是Kenneth H.Rosen
,袁崇义译,机械工业出版社- 离散数学 第二版,武波等编著,西安电子科技大学出版社,2006年
- 离散数学 第三版,方世昌等编著,西安电子科技大学出版社,2013年
- (经典参考书及其题解)离散数学/离散数学——理论•分析•题解,左孝凌、李为鉴、刘永才编著,上海科学技术文献出版社
- 离散数学习题集:数理逻辑与集合论分册,耿素云;图论分册,耿素云;抽象代数分册, 张立昂。北京大学出版社
文章目录
7.3 图的矩阵表示
采用矩阵表示图,便于计算机存储和处理图的信息(只对小图、稠密图有点用),也便于运用代数的方法研究图的性质(这才是重点!),例如,我们可以通过矩阵计算结果,判定图的连通性/可达性等问题。
7.3.1 邻接矩阵
定义7.3.1 设
G
=
⟨
V
,
E
⟩
G= \langle V, E\rangle
G=⟨V,E⟩ 是一个线图,结点集合
V
=
{
v
1
,
v
2
,
…
,
v
n
}
V = \{ v_1, v_2, \dots, v_n\}
V={v1,v2,…,vn} ,令
A
(
G
)
=
[
a
i
j
]
n
×
n
A(G) = [a_{ij}]_{n\times n}
A(G)=[aij]n×n ,其中:
a
i
j
=
{
1
若
[
v
i
,
v
j
]
∈
E
0
若
[
v
i
,
v
j
]
∉
E
a_{ij} = \begin{cases} 1 \quad &若[v_i,\ v_j] \in E\\ 0\quad &若[v_i,\ v_j] \notin E \end{cases}
aij={10若[vi, vj]∈E若[vi, vj]∈/E 则称
A
(
G
)
A(G)
A(G) 为
G
G
G 的邻接矩阵 adjacency matrix
。
【例1】设
G
1
G_1
G1 是有向图、
G
2
G_2
G2 是无向图,分别如图7.3.1(a)和(b)所示,写出
G
1
,
G
2
G_1, G_2
G1,G2 的邻接矩阵。
解:
A
(
G
1
)
=
[
1
1
0
0
0
0
1
0
1
1
0
0
0
0
1
1
]
A
(
G
2
)
=
[
1
1
1
1
1
0
1
0
1
1
0
1
1
0
1
1
]
A(G_1)= \begin{bmatrix} 1 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0\\ 1 & 1 & 0 & 0 \\ 0 & 0 & 1 & 1 \end{bmatrix} \ A(G_2)= \begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & 0 & 1 & 0\\ 1 & 1 & 0 & 1 \\ 1 & 0 & 1 & 1 \end{bmatrix}
A(G1)=⎣⎢⎢⎡1010101001010001⎦⎥⎥⎤ A(G2)=⎣⎢⎢⎡1111101011011011⎦⎥⎥⎤
当结点编号次序不同时,同一个图所得的邻接矩阵可能不同,但可以通过有限次的行、列变换而得到相同的邻接矩阵(同构的图?)。
通过图的邻接矩阵运算,可以判断图的一些性质。设 G = ⟨ V , E ⟩ G = \langle V, E\rangle G=⟨V,E⟩ 是有向线图, ∣ V ∣ = n |V| = n ∣V∣=n , A A A 是 G G G 的邻接矩阵。
1. A A T AA^T AAT 的元素的意义
可知,
b
i
j
=
∑
k
=
1
n
a
i
k
⋅
a
j
k
b_{ij} = \displaystyle \sum^n_{k = 1} a_{ik} \cdot a_{jk}
bij=k=1∑naik⋅ajk ,如图7.3.2所示,则在
G
G
G 中恰好有
b
i
j
b_{ij}
bij 个结点,从
v
i
v_i
vi 和
v
j
v_j
vj 均有边引出到这些结点
v
k
1
,
v
k
2
,
…
,
v
k
n
v_{k_1}, v_{k_2}, \dots, v_{k_n}
vk1,vk2,…,vkn 。特别地,当
i
=
j
i = j
i=j 时
b
i
j
b_{ij}
bij 表示
v
i
v_i
vi 的出度。
2. A T A A^TA ATA 的元素的意义
可知,
b
i
j
=
∑
k
=
1
n
a
k
i
⋅
a
k
j
b_{ij} = \displaystyle \sum^n_{k = 1} a_{ki} \cdot a_{kj}
bij=k=1∑naki⋅akj ,如图7.3.3所示,则在
G
G
G 中恰好有
b
i
j
b_{ij}
bij 个结点,以这些结点为始点,既有边引入到
v
i
v_i
vi 、又有边引入到
v
j
v_j
vj 。特别地,当
i
=
j
i = j
i=j 时
b
i
j
b_{ij}
bij 表示
v
i
v_i
vi 的入度。
3. A 2 = A × A A^{2} = A\times A A2=A×A 的元素的意义
若有
b
i
j
=
∑
k
=
1
n
a
i
k
⋅
a
k
j
b_{ij} = \displaystyle \sum^n_{k = 1} a_{ik} \cdot a_{kj}
bij=k=1∑naik⋅akj ,如图7.3.4所示,则从
v
i
v_i
vi 到
v
j
v_j
vj 长度为
2
2
2 的路有
b
i
j
b_{ij}
bij 条。特别地,当
i
=
j
i = j
i=j 时
v
i
v_i
vi 到自身长度为
2
2
2 的回路有
b
i
j
b_{ij}
bij 条。
对于
A
m
=
A
×
A
×
⋯
×
A
⏟
m
个
A
,
m
≥
1
A^m =\underbrace{ A\times A\times \dots \times A}_{m个A},\ m \ge 1
Am=m个A
A×A×⋯×A, m≥1 ,有如下结论。
定理7.3.1 设
G
=
⟨
V
,
E
⟩
G = \langle V, E\rangle
G=⟨V,E⟩ 为有向线图,结点集
V
=
{
v
1
,
v
2
,
…
,
v
n
}
V = \{ v_1, v_2, \dots, v_n\}
V={v1,v2,…,vn} ,
A
=
[
a
i
j
]
n
×
n
A = [a_{ij}]_{n\times n}
A=[aij]n×n 为
G
G
G 的邻接矩阵,
A
m
=
[
a
i
j
(
m
)
]
n
×
n
A^m = [a_{ij}^{(m)}]_{n\times n}
Am=[aij(m)]n×n ,则
G
G
G 中从
v
i
v_i
vi 到
v
j
v_j
vj 有
a
i
j
(
m
)
a_{ij}^{(m)}
aij(m) 条长度为
m
m
m 的路。
证明 对
m
m
m 进行归纳。
- 当 m = 1 , m = 2 m = 1, m = 2 m=1,m=2 时,由定义和上面的分析可知,显然成立;
- 设当 m = t ( t ≥ 2 ) m = t\ (t \ge 2) m=t (t≥2) 时,命题成立;
- 当
m
=
t
+
1
m = t + 1
m=t+1 时,由
A t + 1 = A ⋅ A t = [ a i j ( t + 1 ) ] n × n = [ ∑ k = 1 n a i k ⋅ a k j ( t ) ] A^{t + 1} = A \cdot A^t = [a_{ij}^{(t + 1)}]_{n\times n} =\bigg [\ \sum^n_{k = 1} a_{ik} \cdot a_{kj}^{(t)}\ \bigg] At+1=A⋅At=[aij(t+1)]n×n=[ k=1∑naik⋅akj(t) ] 故 a i j ( t + 1 ) = ∑ k = 1 n a i k ⋅ a k j ( t ) \displaystyle a_{ij}^{(t + 1)} = \sum^n_{k = 1} a_{ik} \cdot a_{kj}^{(t)} aij(t+1)=k=1∑naik⋅akj(t) 。根据邻接矩阵的定义可知, a i k a_{ik} aik 表示结点 v i v_i vi 与 v k v_k vk 的长度为 1 1 1 的路的条数。根据归纳假设知, a k j ( t ) a_{kj}^{(t)} akj(t) 是连接 v k v_k vk 与 v j v_j vj 的长度为 t t t 的路的条数。因此, a i k ⋅ a k j ( t ) a_{ik} \cdot a_{kj}^{(t)} aik⋅akj(t) 表示从结点 v i v_i vi 出发、经过 v k v_k vk 、到达结点 v j v_j vj 的长度为 t + 1 t+1 t+1 的路的条数。
对所有的 k ∈ { 1 , 2 , … , n } k \in \{ 1, 2, \dots, n\} k∈{1,2,…,n} 求和得 a i j ( t + 1 ) = ∑ k = 1 n a i k ⋅ a k j ( t ) a_{ij}^{(t + 1)} = \displaystyle \sum_{k = 1}^n a_{ik} \cdot a_{kj}^{(t)} aij(t+1)=k=1∑naik⋅akj(t) , a i j ( t + 1 ) a_{ij}^{(t + 1)} aij(t+1) 就是从结点 v i v_i vi 到结点 v j v_j vj 的、所有长度为 t + 1 t + 1 t+1 的路的条数。故当 k = t + 1 k = t + 1 k=t+1 时命题也成立。
以上仅给出有向线图的一些基本结论,对于无向线图也有类似结论。
【例2】有向图
G
=
⟨
V
,
E
⟩
G = \langle V, E\rangle
G=⟨V,E⟩ 如图7.3.5所示,用
G
G
G 的邻接矩阵计算从顶点
v
3
v_3
v3 到
v
1
v_1
v1 的所有有向通路 path
。
解:图
G
G
G 的邻接矩阵为:
A
=
[
0
1
0
0
0
0
1
1
0
1
0
1
1
1
0
0
]
A =\begin{bmatrix} 0 & 1 & 0 & 0\\ 0 & 0 & 1 & 1 \\ 0 & 1 & 0 & 1 \\ 1 & 1 & 0 & 0 \end{bmatrix}
A=⎣⎢⎢⎡0001101101000110⎦⎥⎥⎤ 由
A
[
3
]
[
1
]
=
0
A[3][1] = 0
A[3][1]=0 知(下标从1开始),从顶点
v
3
v_3
v3 到
v
1
v_1
v1 没有长度为
1
1
1 的通路。再计算
A
2
A^2
A2 :
A
2
=
[
0
0
1
1
1
2
0
1
1
1
1
1
0
1
1
1
]
A^2 =\begin{bmatrix} 0 & 0 & 1 & 1\\ 1 & 2 & 0 & 1 \\ 1 & 1 & 1 & 1 \\ 0 & 1 & 1 & 1 \end{bmatrix}
A2=⎣⎢⎢⎡0110021110111111⎦⎥⎥⎤ 由
A
2
[
3
]
[
1
]
=
1
A^2 [3][1] = 1
A2[3][1]=1 可知,从顶点
v
3
v_3
v3 到
v
1
v_1
v1 的、长度为
2
2
2 的路有
1
1
1 条。根据计算过程:
A
2
[
3
]
[
1
]
=
A
[
3
]
[
1
]
×
A
[
1
]
[
1
]
+
A
[
3
]
[
2
]
×
A
[
2
]
[
1
]
+
A
[
3
]
[
3
]
×
A
[
3
]
[
1
]
+
A
[
3
]
[
4
]
×
A
[
4
]
[
1
]
=
0
×
0
+
1
×
0
+
0
×
0
+
1
×
1
=
1
\begin{aligned} A^2[3][1] &= A[3][1] \times A[1][1] + A[3][2] \times A[2][1] \\ &+ A[3][3] \times A[3][1] + A[3][4] \times A[4][1] \\ &= 0 \times 0 + 1 \times 0 + 0\times 0 + 1 \times 1 = 1 \end{aligned}
A2[3][1]=A[3][1]×A[1][1]+A[3][2]×A[2][1]+A[3][3]×A[3][1]+A[3][4]×A[4][1]=0×0+1×0+0×0+1×1=1 得到从顶点
v
3
v_3
v3 到
v
1
v_1
v1 的、长度为
2
2
2 的有向路为
(
v
3
,
v
4
,
v
1
)
(v_3,\ v_4,\ v_1)
(v3, v4, v1) 。显然,它也是一条通路。再计算
A
3
A^3
A3 :
A
3
=
[
1
2
0
1
1
2
2
2
1
3
1
2
1
2
1
2
]
A^3 =\begin{bmatrix} 1 & 2 & 0 & 1\\ 1 & 2 & 2 & 2 \\ 1 & 3 & 1 & 2 \\ 1 & 2 & 1 & 2 \end{bmatrix}
A3=⎣⎢⎢⎡1111223202111222⎦⎥⎥⎤ 由
A
3
[
3
]
[
1
]
=
1
A^3[3][1] = 1
A3[3][1]=1 知,从顶点
v
3
v_3
v3 到
v
1
v_1
v1 的、长度为
3
3
3 的路有
1
1
1 条。根据计算过程:
A
3
[
3
]
[
1
]
=
A
2
[
3
]
[
1
]
×
A
[
1
]
[
1
]
+
A
2
[
3
]
[
2
]
×
A
[
2
]
[
1
]
+
A
2
[
3
]
[
3
]
×
A
[
3
]
[
1
]
+
A
2
[
3
]
[
4
]
×
A
[
4
]
[
1
]
=
1
×
0
+
1
×
0
+
1
×
0
+
1
×
1
=
1
\begin{aligned} A^3[3][1] &= A^2[3][1] \times A[1][1] + A^2[3][2] \times A[2][1] \\ &+ A^2[3][3] \times A[3][1] + A^2[3][4] \times A[4][1] \\ &= 1 \times 0 + 1 \times 0 + 1\times 0 + 1 \times 1 = 1 \end{aligned}
A3[3][1]=A2[3][1]×A[1][1]+A2[3][2]×A[2][1]+A2[3][3]×A[3][1]+A2[3][4]×A[4][1]=1×0+1×0+1×0+1×1=1 得到从顶点
v
3
v_3
v3 到
v
1
v_1
v1 的、长度为
3
3
3 的有向路为:从顶点
v
3
v_3
v3 到
v
4
v_4
v4 的一条长度为
2
2
2 的路接上
(
v
4
,
v
1
)
(v_4,\ v_1)
(v4, v1) 。再根据计算过程:
A
2
[
3
]
[
4
]
=
A
[
3
]
[
1
]
×
A
[
1
]
[
4
]
+
A
[
3
]
[
2
]
×
A
[
2
]
[
4
]
+
A
[
3
]
[
3
]
×
A
[
3
]
[
4
]
+
A
[
3
]
[
4
]
×
A
[
4
]
[
4
]
=
0
×
0
+
1
×
1
+
0
×
1
+
1
×
0
=
1
\begin{aligned} A^2[3][4] &= A[3][1] \times A[1][4] + A[3][2] \times A[2][4] \\ &+ A[3][3] \times A[3][4] + A[3][4] \times A[4][4] \\ &= 0 \times 0 + 1 \times 1 + 0\times 1 + 1 \times 0 = 1 \end{aligned}
A2[3][4]=A[3][1]×A[1][4]+A[3][2]×A[2][4]+A[3][3]×A[3][4]+A[3][4]×A[4][4]=0×0+1×1+0×1+1×0=1 得到从顶点
v
3
v_3
v3 到
v
4
v_4
v4 的一条长度为
2
2
2 的有向路是
(
v
3
,
v
2
,
v
4
)
(v_3,\ v_2,\ v_4)
(v3, v2, v4) 。所以,从顶点
v
3
v_3
v3 到
v
1
v_1
v1 的、长度为
3
3
3 的有向路是
(
v
3
,
v
2
,
v
4
,
v
1
)
(v_3,\ v_2,\ v_4, \ v_1)
(v3, v2, v4, v1) 。显然,它也是一条通路。
因为对于 4 4 4 个结点的有向图,当路的长度超过 3 3 3 时,必定不是通路,所以从顶点 v 3 v_3 v3 到 v 1 v_1 v1 的通路共有两条: ( v 3 , v 4 , v 1 ) (v_3,\ v_4,\ v_1) (v3, v4, v1) 和 ( v 3 , v 2 , v 4 , v 1 ) (v_3,\ v_2,\ v_4,\ v_1) (v3, v2, v4, v1) 。
7.3.2 可达矩阵
1. 可达矩阵定义
定义7.3.2 设
G
=
⟨
V
,
E
⟩
G= \langle V, E\rangle
G=⟨V,E⟩ 是一个线图,结点集合
V
=
{
v
1
,
v
2
,
…
,
v
n
}
V = \{ v_1, v_2, \dots, v_n\}
V={v1,v2,…,vn} ,令
P
(
G
)
=
[
p
i
j
]
n
×
n
P(G) = [p_{ij}]_{n\times n}
P(G)=[pij]n×n ,其中:
p
i
j
=
{
1
若
从
v
i
可
达
v
j
0
若
从
v
i
不
可
达
v
j
p_{ij} = \begin{cases} 1 \quad &若从\ v_i\ 可达\ v_j\ \\ 0\quad &若从\ v_i\ 不可达\ v_j \end{cases}
pij={10若从 vi 可达 vj 若从 vi 不可达 vj 则称
P
(
G
)
P(G)
P(G) 为
G
G
G 的可达矩阵。
可达矩阵用于描述一个线图中、从任一结点到另一结点之间是否存在路。由于在图中「两个结点之间有路」,则「必存在长度小于等于
n
−
1
n - 1
n−1 的通路」。另外,一般认为「同一个结点到自身可达」。因此,可用以下公式计算
P
(
G
)
P(G)
P(G) :
P
(
G
)
=
[
p
i
j
]
n
×
n
=
A
0
∨
A
1
∨
⋯
∨
A
n
−
1
P(G) = [p_{ij} ]_{n\times n} = A^0 \lor A^1 \lor \cdots \lor A^{n - 1}
P(G)=[pij]n×n=A0∨A1∨⋯∨An−1 其中,
A
0
A^0
A0 是
n
×
n
n\times n
n×n 的单位矩阵,
∨
\lor
∨ 是析取(或逻辑加/并)运算。即「顶点
v
i
v_i
vi 到达
v
j
v_j
vj 有长度为零的路、或有长度为
1
1
1 的路、……、或有长度为
n
−
1
n - 1
n−1 的路」,这些路可能是通路、可能不是,但其中至少存在一条通路。
2. 可达矩阵求解连通性和强分图
为什么要在【图的连通性】后介绍【图的矩阵表示(邻接矩阵、可达矩阵)】,是因为利用邻接矩阵 A A A 和可达矩阵 P P P ,可判断图的连通性:
- 无向线图 G G G 是连通图,当且仅当它的可达矩阵 P P P 为全 1 1 1 矩阵;
- 有向线图 G G G 是强连通图,当且仅当它的可达矩阵 P P P 为全 1 1 1 矩阵;
- 有向线图 G G G 是单向连通图,当且仅当 P ∨ P T P \lor P^T P∨PT 为全 1 1 1 矩阵;
- 有向线图 G G G 是弱连通图(忽略方向的底图为连通图),当且仅当以 P ∨ A T P\lor A^T P∨AT 作为邻接矩阵,求得的可达矩阵 P ′ P' P′ 为全 1 1 1 矩阵
利用可达矩阵
P
P
P ,还可求得有向图的强分图。设
G
=
⟨
V
,
E
⟩
G = \langle V, E\rangle
G=⟨V,E⟩ ,
P
P
P 为图
G
G
G 的可达矩阵。考察
P
∧
P
T
P \land P^T
P∧PT ,对于任何
i
∈
{
1
,
2
,
…
,
n
}
i\in \{ 1, 2, \dots, n\}
i∈{1,2,…,n} ,设第
i
i
i 行的非零元素所在的列分别是
i
1
,
i
2
,
…
,
i
k
i_1, i_2, \dots, i_k
i1,i2,…,ik 列(第
i
i
i 行必有第
i
i
i 列非零),则结点集
V
i
=
{
v
i
1
,
v
i
2
,
…
,
v
i
k
}
V_i = \{ v_{i_1}, v_{i_2}, \dots, v_{i_k}\}
Vi={vi1,vi2,…,vik} 导出的子图
G
(
V
i
)
G(V_i)
G(Vi) 是图
G
G
G 的一个强分图(一个全
1
1
1 子矩阵;另知强连通是等价关系)。
【例3】 设有向线图
G
=
⟨
V
,
E
⟩
G = \langle V, E\rangle
G=⟨V,E⟩ 如图7.3.6所示,求
G
G
G 的强分图。
解:首先求邻接矩阵
A
A
A 的幂次:
A
0
=
[
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
1
]
,
A
1
=
[
0
0
1
0
0
0
0
0
1
0
0
0
0
1
0
0
0
1
0
1
0
0
0
1
0
]
,
A
2
=
[
0
0
0
1
0
0
0
1
0
1
0
0
1
0
1
0
0
0
1
0
0
0
1
0
1
]
,
A
3
=
[
0
0
1
0
1
0
0
0
1
0
0
0
0
1
0
0
0
1
0
1
0
0
0
1
0
]
,
A
4
=
A
2
=
[
0
0
0
1
0
0
0
1
0
1
0
0
1
0
1
0
0
0
1
0
0
0
1
0
1
]
A^0 = \begin{bmatrix} 1 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 & 1 \end{bmatrix}, A^1 = \begin{bmatrix} 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 & 0\\ 0 & 0 & 1 & 0 & 1\\ 0 & 0 & 0 & 1 & 0 \end{bmatrix}, \\ {} \\ A^2 = \begin{bmatrix} 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 1 & 0 & 1 \\ 0 & 0 & 1 & 0 & 1\\ 0 & 0 & 0 & 1 & 0\\ 0 & 0 & 1 & 0 & 1 \end{bmatrix}, A^3 = \begin{bmatrix} 0 & 0 & 1 & 0 & 1\\ 0 & 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 1 & 0 & 1\\ 0 & 0 & 0 & 1 & 0 \end{bmatrix}, \\ {} \\ A^4 = A^2 = \begin{bmatrix} 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 1 & 0 & 1 \\ 0 & 0 & 1 & 0 & 1\\ 0 & 0 & 0 & 1 & 0\\ 0 & 0 & 1 & 0 & 1 \end{bmatrix}
A0=⎣⎢⎢⎢⎢⎡1000001000001000001000001⎦⎥⎥⎥⎥⎤,A1=⎣⎢⎢⎢⎢⎡0000000000100100110100010⎦⎥⎥⎥⎥⎤,A2=⎣⎢⎢⎢⎢⎡0000000000011011001001101⎦⎥⎥⎥⎥⎤,A3=⎣⎢⎢⎢⎢⎡0000000000100100110110010⎦⎥⎥⎥⎥⎤,A4=A2=⎣⎢⎢⎢⎢⎡0000000000011011001001101⎦⎥⎥⎥⎥⎤ 可求得图
G
G
G 的可达矩阵:
P
=
A
0
∨
A
1
∨
A
2
∨
A
3
=
[
1
0
1
1
1
0
1
1
1
1
0
0
1
1
1
0
0
1
1
1
0
0
1
1
1
]
,
P
T
=
[
1
0
0
0
0
0
1
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
]
,
P
∧
P
T
=
[
1
0
0
0
0
0
1
0
0
0
0
0
1
1
1
0
0
1
1
1
0
0
1
1
1
]
P = A^0 \lor A^1 \lor A^2 \lor A^3 = \begin{bmatrix} 1 & 0 & 1 & 1 & 1\\ 0 & 1 & 1 & 1 & 1\\ 0 & 0 & 1 & 1 & 1\\ 0 & 0 & 1 & 1 & 1\\ 0 & 0 & 1 & 1 & 1 \end{bmatrix},\\ {} \\ P^T = \begin{bmatrix} 1 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0\\ 1 & 1 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 & 1 \end{bmatrix}, P\land P^T = \begin{bmatrix} 1 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0\\ 0 & 0 & 1 & 1 & 1 \\ 0 & 0 & 1 & 1 & 1 \\ 0 & 0 & 1 & 1 & 1 \end{bmatrix}
P=A0∨A1∨A2∨A3=⎣⎢⎢⎢⎢⎡1000001000111111111111111⎦⎥⎥⎥⎥⎤,PT=⎣⎢⎢⎢⎢⎡1011101111001110011100111⎦⎥⎥⎥⎥⎤,P∧PT=⎣⎢⎢⎢⎢⎡1000001000001110011100111⎦⎥⎥⎥⎥⎤ 由此可知,
G
G
G 的强分图有
3
3
3 个:
{
v
1
}
,
{
v
2
}
,
{
v
3
,
v
4
,
v
5
}
\{ v_1 \},\ \{ v_2 \}, \ \{ v_3, v_4, v_5\}
{v1}, {v2}, {v3,v4,v5} 。
【例4】设有向图
D
=
⟨
V
,
E
⟩
D = \langle V, E\rangle
D=⟨V,E⟩ 如图7.3.7所示,请回答下列问题。
(1)图
D
D
D 中
v
1
v_1
v1 到
v
3
v_3
v3 长度为
3
3
3 的通路有多少条?
(2)图
D
D
D 是哪种类型的连通图?
解:
(1)
D
D
D 的邻接矩阵及其幂次为:
A
0
=
[
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
]
,
A
1
=
[
0
1
1
1
1
0
1
0
0
0
0
1
0
0
0
0
]
,
A
2
=
[
1
0
1
1
0
1
1
2
0
0
0
0
0
0
0
0
]
,
A
3
=
[
0
1
1
2
1
0
1
1
0
0
0
0
0
0
0
0
]
A^0 = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}, A^1 = \begin{bmatrix} 0 & 1 & 1 & 1\\ 1 & 0 & 1 & 0\\ 0 & 0 & 0 & 1\\ 0 & 0 & 0 & 0 \end{bmatrix}, \\ {} \\ A^2 = \begin{bmatrix} 1 & 0 & 1 & 1 \\ 0 & 1 & 1 & 2 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 \end{bmatrix}, A^3 = \begin{bmatrix} 0 & 1 & 1 & 2\\ 1 & 0 & 1 & 1\\ 0 & 0 & 0 & 0\\ 0 & 0 & 0 & 0 \end{bmatrix}
A0=⎣⎢⎢⎡1000010000100001⎦⎥⎥⎤,A1=⎣⎢⎢⎡0100100011001010⎦⎥⎥⎤,A2=⎣⎢⎢⎡1000010011001200⎦⎥⎥⎤,A3=⎣⎢⎢⎡0100100011002100⎦⎥⎥⎤ 由
A
3
[
1
]
[
4
]
=
2
A^3[1][4] = 2
A3[1][4]=2 知,
v
1
v_1
v1 到
v
4
v_4
v4 共有两条长度为
3
3
3 的路,计算过程如下:
A
3
[
1
]
[
4
]
=
A
2
[
1
]
[
1
]
×
A
[
1
]
[
4
]
+
A
2
[
1
]
[
2
]
×
A
[
2
]
[
4
]
+
A
2
[
1
]
[
3
]
×
A
[
3
]
[
4
]
+
A
2
[
1
]
[
4
]
×
A
[
4
]
[
4
]
=
1
×
1
+
0
×
0
+
1
×
1
+
1
×
0
=
2
A
2
[
1
]
[
1
]
=
A
[
1
]
[
1
]
×
A
[
1
]
[
1
]
+
A
[
1
]
[
2
]
×
A
[
2
]
[
1
]
+
A
[
1
]
[
3
]
×
A
[
3
]
[
1
]
+
A
[
1
]
[
4
]
×
A
[
4
]
[
1
]
=
0
×
0
+
1
×
1
+
1
×
0
+
1
×
0
=
1
A
2
[
1
]
[
3
]
=
A
[
1
]
[
1
]
×
A
[
1
]
[
3
]
+
A
[
1
]
[
2
]
×
A
[
2
]
[
3
]
+
A
[
1
]
[
3
]
×
A
[
3
]
[
3
]
+
A
[
1
]
[
4
]
×
A
[
4
]
[
3
]
=
0
×
1
+
1
×
1
+
1
×
0
+
1
×
0
=
1
\begin{aligned} A^3[1][4] &= A^2[1][1] \times A[1][4] + A^2[1][2] \times A[2][4] \\ &+ A^2[1][3] \times A[3][4] + A^2[1][4] \times A[4][4] \\ &= 1 \times 1 + 0 \times 0 + 1 \times 1 + 1 \times 0 = 2 \end{aligned} \\ \begin{aligned} A^2[1][1] &= A[1][1] \times A[1][1] + A[1][2] \times A[2][1] \\ &+ A[1][3] \times A[3][1] + A[1][4] \times A[4][1] \\ &= 0 \times 0 + 1 \times 1 + 1 \times 0 + 1 \times 0 = 1 \end{aligned} \\ \begin{aligned} A^2[1][3] &= A[1][1] \times A[1][3] + A[1][2] \times A[2][3] \\ &+ A[1][3] \times A[3][3] + A[1][4] \times A[4][3] \\ &= 0 \times 1 + 1 \times 1 + 1 \times 0 + 1 \times 0 = 1 \end{aligned}
A3[1][4]=A2[1][1]×A[1][4]+A2[1][2]×A[2][4]+A2[1][3]×A[3][4]+A2[1][4]×A[4][4]=1×1+0×0+1×1+1×0=2A2[1][1]=A[1][1]×A[1][1]+A[1][2]×A[2][1]+A[1][3]×A[3][1]+A[1][4]×A[4][1]=0×0+1×1+1×0+1×0=1A2[1][3]=A[1][1]×A[1][3]+A[1][2]×A[2][3]+A[1][3]×A[3][3]+A[1][4]×A[4][3]=0×1+1×1+1×0+1×0=1 即这两条长度为
3
3
3 的路为
(
v
1
,
v
2
,
v
1
,
v
4
)
(v_1,\ v_2,\ v_1,\ v_4)
(v1, v2, v1, v4) 和
(
v
1
,
v
2
,
v
3
,
v
4
)
(v_1,\ v_2,\ v_3,\ v_4)
(v1, v2, v3, v4) 。其中,
(
v
1
,
v
2
,
v
3
,
v
4
)
(v_1,\ v_2,\ v_3,\ v_4)
(v1, v2, v3, v4) 是一条通路,所以
D
D
D 中
v
1
v_1
v1 到
v
4
v_4
v4 长度为
3
3
3 的通路有一条。
(2)计算
D
D
D 的可达矩阵。显然,
D
D
D 不是强连通的,因为
v
3
v_3
v3 到
v
1
v_1
v1 是不可达的;
D
D
D 是单侧连通的(即对于任意顶点偶对,至少一个结点到另一个结点是可达的),因为
P
∨
P
T
P \lor P^T
P∨PT 是全
1
1
1 矩阵:
P
=
A
0
∨
A
1
∨
A
2
∨
A
3
=
[
1
1
1
1
1
1
1
1
0
0
1
1
0
0
0
1
]
,
P
T
=
[
1
1
0
0
1
1
0
0
1
1
1
0
1
1
1
1
]
,
P
∨
P
T
=
[
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
]
P = A^0 \lor A^1 \lor A^2 \lor A^3 = \begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 \\ 0 & 0 & 1 & 1 \\ 0 & 0 & 0 & 1 \end{bmatrix},\\ {}\\ P^T = \begin{bmatrix} 1 & 1 & 0 & 0 \\ 1 & 1 & 0 & 0 \\ 1 & 1 & 1 & 0 \\ 1 & 1 & 1 & 1 \end{bmatrix}, P\lor P^T = \begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 \end{bmatrix}
P=A0∨A1∨A2∨A3=⎣⎢⎢⎡1100110011101111⎦⎥⎥⎤,PT=⎣⎢⎢⎡1111111100110001⎦⎥⎥⎤,P∨PT=⎣⎢⎢⎡1111111111111111⎦⎥⎥⎤
7.3.3 求解传递闭包的快速算法
在第3章中,曾使用关系图表示二元关系,而关系图就是有向图。本节将利用图的矩阵表示及其运算,讨论求解有限集合上「二元关系的传递闭包」的快速算法。
定理7.3.2 设
R
R
R 是集合
V
V
V 上的二元关系,
n
∈
Z
+
n \in \Z^+
n∈Z+ ,对于任意
a
,
b
∈
V
,
⟨
a
,
b
⟩
∈
R
n
a, b\in V,\ \langle a, b \rangle \in R^n
a,b∈V, ⟨a,b⟩∈Rn 当且仅当
R
R
R 的关系图
G
=
⟨
V
,
E
⟩
G = \langle V, E\rangle
G=⟨V,E⟩ 中,存在从
a
a
a 到
b
b
b 的长度为
n
n
n 的有向路。
证明 对
n
n
n 进行归纳:
(1)(归纳基础)根据关系图的定义,从
a
a
a 到
b
b
b 存在一条长度为
1
1
1 的路,当且仅当
⟨
a
,
b
⟩
∈
R
\langle a, b \rangle \in R
⟨a,b⟩∈R 。故当
n
=
1
n = 1
n=1 时命题成立。
(2)(归纳假设)假设当
n
=
k
(
k
≥
1
)
n = k\ (k \ge 1)
n=k (k≥1) 时,命题成立。
(3)(归纳推理)当
n
=
k
+
1
n = k + 1
n=k+1 时,从
a
a
a 到
b
b
b 存在一条长度为
k
+
1
k + 1
k+1 的路,当且仅当存在元素
c
∈
V
c \in V
c∈V ,使得从
a
a
a 到
c
c
c 存在一条长度为
k
k
k 的路、从
c
c
c 到
b
b
b 存在一条长度为
1
1
1 的路,当且仅当存在元素
c
∈
V
c \in V
c∈V 且满足
⟨
a
,
c
⟩
∈
R
k
,
⟨
c
,
b
⟩
∈
R
\langle a, c\rangle \in R^k,\ \langle c, b \rangle \in R
⟨a,c⟩∈Rk, ⟨c,b⟩∈R ,当且仅当
⟨
a
,
b
⟩
∈
R
k
∘
R
=
R
k
+
1
\langle a, b \rangle \in R^k \circ R = R^{k + 1}
⟨a,b⟩∈Rk∘R=Rk+1 。
因此,从
a
a
a 到
b
b
b 存在一条长度为
k
+
1
k + 1
k+1 的路,当且仅当
⟨
a
,
b
⟩
∈
R
k
+
1
\langle a, b \rangle \in R^{k + 1}
⟨a,b⟩∈Rk+1 。
由邻接矩阵的定义可知,集合 V V V 上的二元关系 R R R 的关系矩阵,就是其关系图的邻接矩阵。
设 M R M_R MR 是 n n n 元素集合 V V V 上的二元关系 R R R 的关系矩阵(即对应关系图的邻接矩阵), R R R 的传递闭包 t ( R ) = R ∪ R 2 ∪ ⋯ ∪ R n t(R) = R\cup R^2\cup \cdots \cup R^n t(R)=R∪R2∪⋯∪Rn :
- t ( R ) t(R) t(R) 的关系矩阵 M t ( R ) = M R ∨ M R 2 ∨ ⋯ ∨ M R n M_{t(R)} = M_R \lor M_{R^2} \lor \cdots \lor M_{R^n} Mt(R)=MR∨MR2∨⋯∨MRn
- t ( R ) t(R) t(R) 的关系图是—— R R R 关系图中任意结点 a , b a, b a,b 间「有长度为 1 1 1 的路可达(即 ⟨ a , b ⟩ ∈ R \langle a, b \rangle \in R ⟨a,b⟩∈R)、或有长度为 2 2 2 的路可达(即 ⟨ a , b ⟩ ∈ R 2 \langle a, b \rangle \in R^2 ⟨a,b⟩∈R2)、……、或有长度为 n n n 的路可达(即 ⟨ a , b ⟩ ∈ R n \langle a, b \rangle \in R^n ⟨a,b⟩∈Rn)」这一二元关系的关系图。
【例5】已知集合
V
=
{
a
,
b
,
c
}
V = \{ a, b, c\}
V={a,b,c} ,集合
V
V
V 上二元关系
R
R
R 的关系图如图7.3.8(a)所示,求关系
R
R
R 的传递闭包
t
(
R
)
t(R)
t(R) 的关系矩阵和关系图:
解:
R
R
R 的关系矩阵
M
R
=
[
1
0
1
0
1
0
1
1
0
]
M_R = \begin{bmatrix} 1 & 0 & 1\\ 0 & 1 & 0 \\ 1 & 1 & 0 \end{bmatrix}
MR=⎣⎡101011100⎦⎤ ,而
M
t
(
R
)
=
M
R
∨
M
R
2
∨
M
R
3
=
[
1
0
1
0
1
0
1
1
0
]
∨
[
1
1
1
0
1
0
1
1
1
]
∨
[
1
1
1
0
1
0
1
1
1
]
=
[
1
1
1
0
1
0
1
1
1
]
M_{t(R)} = M_R \lor M_{R^2} \lor M_{R^3} = \begin{bmatrix} 1 & 0 & 1\\ 0 & 1 & 0 \\ 1 & 1 & 0 \end{bmatrix} \lor \begin{bmatrix} 1 & 1 & 1 \\ 0 & 1 & 0 \\ 1 & 1 & 1 \end{bmatrix} \lor \begin{bmatrix} 1 & 1 & 1 \\ 0 & 1 & 0 \\ 1 & 1 & 1 \end{bmatrix} = \begin{bmatrix} 1 & 1 & 1 \\ 0 & 1 & 0 \\ 1 & 1 & 1 \end{bmatrix}
Mt(R)=MR∨MR2∨MR3=⎣⎡101011100⎦⎤∨⎣⎡101111101⎦⎤∨⎣⎡101111101⎦⎤=⎣⎡101111101⎦⎤ ,
t
(
R
)
t(R)
t(R) 的关系图如图7.3.8(b)所示,它其实是图7.3.8(a)中结点间「有长度大于
0
0
0 的路可达」关系的关系图。
虽然可用计算机编程,自动实现有限集合上「二元关系传递闭包」的计算,但是仍需要进行大量的位运算。下面介绍一个高效的求解传递闭包的算法,它是由[英]史蒂芬·沃舍尔 Stephen Warshall
于1960年提出的。
沃舍尔算法的实现,用到了内点的概念。给定有向图 G = ⟨ V , E ⟩ G = \langle V, E\rangle G=⟨V,E⟩ , V = { v 1 , v 2 , … , v n } V = \{ v_1, v_2, \dots, v_n\} V={v1,v2,…,vn} , x , y ∈ V x, y \in V x,y∈V ,若 x , v i 1 , v i 2 , … , v i s , y x,\ v_{i1},\ v_{i2},\ \dots,\ v_{is},\ y x, vi1, vi2, …, vis, y 是 G G G 中一条从 x x x 到 y y y 的有向路,则称 v i 1 , v i 2 , … , v i s v_{i1},\ v_{i2},\ \dots,\ v_{is} vi1, vi2, …, vis 为从 x x x 到 y y y 的有向路的内点。
定理7.3.3 设有向图
G
=
⟨
V
,
E
⟩
G= \langle V, E\rangle
G=⟨V,E⟩ ,
V
=
{
v
1
,
v
2
,
…
,
v
n
}
V = \{ v_1, v_2, \dots, v_n\}
V={v1,v2,…,vn} ,
1
≤
k
≤
n
1 \le k \le n
1≤k≤n ,
v
i
,
v
j
∈
V
v_i, v_j \in V
vi,vj∈V 。若从
v
i
v_i
vi 到
v
j
v_j
vj 存在所有内点属于
{
v
1
,
v
2
,
…
,
v
k
}
\{ v_1, v_2, \dots, v_k\}
{v1,v2,…,vk} 的路,当且仅当存在从
v
i
v_i
vi 到
v
j
v_j
vj 的路、并且所有内点属于
{
v
1
,
v
2
,
…
,
v
k
−
1
}
\{ v_1, v_2, \dots, v_{k - 1} \}
{v1,v2,…,vk−1} ,或者存在从
v
i
v_i
vi 到
v
k
v_k
vk 的路和从
v
k
v_k
vk 到
v
j
v_j
vj 的路、并且两者所有内点均属于
{
v
1
,
v
2
,
…
,
v
k
−
1
}
\{ v_1, v_2, \dots, v_{k - 1}\}
{v1,v2,…,vk−1} 。
证明留作练习。
在定理7.3.3中,从
v
i
v_i
vi 到
v
j
v_j
vj 并且内点属于
{
v
1
,
v
2
,
…
,
v
k
−
1
}
\{ v_1, v_2, \dots, v_{k - 1}\}
{v1,v2,…,vk−1} 的路如图7.3.9(a)所示,从
v
i
v_i
vi 到
v
k
v_k
vk 和从
v
k
v_k
vk 到
v
j
v_j
vj 、并且两者所有内点均属于
{
v
1
,
v
2
,
…
,
v
k
−
1
}
\{v_1, v_2, \dots, v_{k - 1}\}
{v1,v2,…,vk−1} 的路如图7.3.9(b)所示:
给定 M R M_R MR 是 n n n 元素集合 V V V 上的二元关系 R R R 的关系矩阵, V = { v 1 , v 2 , … , v n } V = \{ v_1, v_2, \dots, v_n\} V={v1,v2,…,vn} ,其关系图是有向图 G = ⟨ V , E ⟩ G = \langle V, E\rangle G=⟨V,E⟩ 。设 1 ≤ k ≤ n 1 \le k \le n 1≤k≤n ,构造矩阵 W k = [ W i j k ] n × n W^k = [W_{ij}^k]_{n \times n} Wk=[Wijk]n×n ,其中 W i j k = 1 W_{ij}^k= 1 Wijk=1 表示存在从 v i v_i vi 到 v j v_j vj 的路、并且内点属于 V = { v 1 , v 2 , … , v k } V = \{v_1, v_2, \dots, v_k\} V={v1,v2,…,vk} ,则 M t ( R ) = W n M_{t(R)} = W^n Mt(R)=Wn 。
根据以上知识我们知道, W i j k = 1 W_{ij}^k = 1 Wijk=1 当且仅当存在从 v i v_i vi 到 v j v_j vj 的路、并且所有内点属于 { v 1 , v 2 , … , v k − 1 } \{ v_1, v_2, \dots, v_{k - 1} \} {v1,v2,…,vk−1},或者存在从 v i v_i vi 到 v k v_k vk 的路和从 v k v_k vk 到 v j v_j vj 的路、并且两者所有内点均属于 { v 1 , v 2 , … , v k − 1 } \{ v_1, v_2, \dots, v_{k - 1}\} {v1,v2,…,vk−1} 。所以有: W i j k = W i j k − 1 ∨ ( W i k k − 1 ∧ W k j k − 1 ) W_{ij}^k = W_{ij}^{k - 1} \lor (W_{ik}^{k - 1} \land W_{kj}^{k - 1}) Wijk=Wijk−1∨(Wikk−1∧Wkjk−1) 显然:
- W 0 = M R W^0 = M_R W0=MR ,此时 W i j 0 = 1 W^0_{ij} = 1 Wij0=1 表示存在从 v i v_i vi 到 v j v_j vj 的路、并且内点属于 ∅ \varnothing ∅ ,即 v i v_i vi 和 v j v_j vj 直连、其间不经过任何其他点;
- 当 k = 1 k = 1 k=1 时, W i j 1 = W i j 0 ∨ ( W i 1 0 ∧ W 1 j 0 ) W_{ij}^1 = W_{ij}^0 \lor (W_{i1}^0 \land W_{1j}^0) Wij1=Wij0∨(Wi10∧W1j0) ;
- 当 k = 2 k = 2 k=2 时, W i j 2 = W i j 1 ∨ ( W i 2 1 ∧ W 2 j 1 ) W_{ij}^2 = W_{ij}^1 \lor (W_{i2}^1 \land W_{2j}^1) Wij2=Wij1∨(Wi21∧W2j1) ;
- ……
- 如此下去,当 k = n k = n k=n 时, W i j n = W i j n − 1 ∨ ( W i n n − 1 ∧ W n j n − 1 ) W_{ij}^n = W_{ij}^{n - 1} \lor (W_{in}^{n - 1} \land W_{nj}^{n - 1}) Wijn=Wijn−1∨(Winn−1∧Wnjn−1) ,就得到传递闭包的关系矩阵 M t ( R ) = W n M_{t(R)} = W^n Mt(R)=Wn 。
算法的过程描述如下:
(1)置新矩阵
W
=
(
M
R
)
n
×
n
W = (M_R)_{n \times n}
W=(MR)n×n 。。
(2)置
k
=
1
k = 1
k=1 ;
(3)对
i
=
1
,
2
,
…
,
n
i = 1, 2, \dots, n
i=1,2,…,n ,如果
W
[
i
]
[
k
]
=
1
W[i][k] = 1
W[i][k]=1(即存在从
v
i
v_i
vi 到
v
k
v_k
vk 的路、并且内点属于
∅
\varnothing
∅ ),则有:
W
[
i
]
[
j
]
=
W
[
i
]
[
j
]
∨
W
[
k
]
[
j
]
W[i][j] = W[i][j] \lor W[k][j]
W[i][j]=W[i][j]∨W[k][j] 即是否存在从
v
i
v_i
vi 到
v
j
v_j
vj 的路、内点属于
{
v
1
}
\{v_1\}
{v1} ,取决于是否存在从
v
k
v_k
vk 到
v
j
v_j
vj 的路、并且内点属于
∅
\varnothing
∅ ;
(4)
k
=
k
+
1
k = k + 1
k=k+1 ;
(5)如果
k
≤
n
k \le n
k≤n ,则转步骤(3),否则停止。
以上沃舍尔算法,可以简述为:按列号顺序,对 R R R 的关系矩阵 W W W 的每一列中的元素、从上至下依次扫描每行,如果当前扫描的是第 i i i 行第 k k k 列、且遇到 1 1 1 时,将 1 1 1 所对应的第 i i i 行析取第 k k k 行、作为该行的新值。
【例6】设二元关系
R
R
R 的关系矩阵
M
R
=
[
0
0
0
1
1
0
1
0
1
0
0
1
0
0
1
0
]
M_R = \begin{bmatrix} 0 & 0 & 0 & 1\\ 1 & 0 & 1 & 0 \\ 1 & 0 & 0 & 1\\ 0 & 0 & 1 & 0 \end{bmatrix}
MR=⎣⎢⎢⎡0110000001011010⎦⎥⎥⎤ ,求
R
R
R 的传递闭包。
解:
W
0
=
M
R
=
[
0
0
0
1
1
0
1
0
1
0
0
1
0
0
1
0
]
W
1
=
[
0
0
0
1
1
0
1
1
1
0
0
1
0
0
1
0
]
W
2
=
[
0
0
0
1
1
0
1
1
1
0
0
1
0
0
1
0
]
W
3
=
[
0
0
0
1
1
0
1
1
1
0
0
1
1
0
1
1
]
W
4
=
M
t
(
R
)
=
[
1
0
1
1
1
0
1
1
1
0
1
1
1
0
1
1
]
W^0 = M_R = \begin{bmatrix} 0 & 0 & 0 & 1\\ 1 & 0 & 1 & 0 \\ 1 & 0 & 0 & 1\\ 0 & 0 & 1 & 0 \end{bmatrix} \\ {} \\ W^1 = \begin{bmatrix} 0 & 0 & 0 & 1\\ 1 & 0 & 1 & 1 \\ 1 & 0 & 0 & 1\\ 0 & 0 & 1 & 0 \end{bmatrix} \\ {} \\ W^2 = \begin{bmatrix} 0 & 0 & 0 & 1\\ 1 & 0 & 1 & 1 \\ 1 & 0 & 0 & 1\\ 0 & 0 & 1 & 0 \end{bmatrix} \\ {} \\ W^3 = \begin{bmatrix} 0 & 0 & 0 & 1\\ 1 & 0 & 1 & 1 \\ 1 & 0 & 0 & 1\\ 1 & 0 & 1 & 1 \end{bmatrix} \\ {} \\ W^4 = M_{t(R)} = \begin{bmatrix} 1 & 0 & 1 & 1\\ 1 & 0 & 1 & 1 \\ 1 & 0 & 1 & 1\\ 1 & 0 & 1 & 1 \end{bmatrix}
W0=MR=⎣⎢⎢⎡0110000001011010⎦⎥⎥⎤W1=⎣⎢⎢⎡0110000001011110⎦⎥⎥⎤W2=⎣⎢⎢⎡0110000001011110⎦⎥⎥⎤W3=⎣⎢⎢⎡0111000001011111⎦⎥⎥⎤W4=Mt(R)=⎣⎢⎢⎡1111000011111111⎦⎥⎥⎤