前置技能
行列式
定义
对于一个
n
×
n
n \times n
n × n 的矩阵
A
A
A ,记它第
i
i
i 行第
j
j
j 列的元素为
a
i
,
j
a_{i, j}
a i , j ,以及一个
1
∼
n
1 \sim n
1 ∼ n 的排列
p
p
p ,记
λ
A
(
p
)
=
(
−
1
)
τ
(
p
)
∏
i
=
1
n
a
i
,
p
i
\lambda_A(p) = (-1) ^ {\tau(p)} \prod_{i = 1}^{n} a_{i, p_i}
λ A ( p ) = ( − 1 ) τ ( p ) i = 1 ∏ n a i , p i (其中
τ
(
p
)
\tau(p)
τ ( p ) 是
p
p
p 的逆序对个数)则
∣
A
∣
=
det
A
=
∑
p
λ
A
(
p
)
=
∑
p
(
(
−
1
)
τ
(
p
)
∏
i
=
1
n
a
i
,
p
i
)
|A| = \det A = \sum_{p} \lambda_A(p) = \sum_{p} \left( (-1) ^ {\tau(p)} \prod_{i = 1}^{n} a_{i, p_i} \right)
∣ A ∣ = det A = p ∑ λ A ( p ) = p ∑ ( ( − 1 ) τ ( p ) i = 1 ∏ n a i , p i ) (其中
∣
A
∣
|A|
∣ A ∣ 和
det
A
\det A
det A 都是
A
A
A 的行列式的意思,后文有时为了便于区分行列式和绝对值会使用
det
A
\det A
det A ,其余大部分时候使用
∣
A
∣
|A|
∣ A ∣ )显然行列式运算结果是数量。
简单理解一下发现这样的计算方法的时间复杂度是
O
(
n
⋅
log
n
⋅
n
!
)
O(n \cdot \log n \cdot n!)
O ( n ⋅ log n ⋅ n ! ) 。因此这个定义没什么用
性质
除了少数几个,名字基本都是乱编的
拉普拉斯展开
对于一个
n
×
n
n \times n
n × n 的矩阵
A
A
A 和任意一个
1
≤
i
≤
n
1 \leq i \leq n
1 ≤ i ≤ n ,有
∣
A
∣
=
∑
j
=
1
n
(
−
1
)
i
+
j
a
i
,
j
∣
A
i
,
j
∣
|A| = \sum_{j = 1}^{n} (-1)^{i + j} a_{i, j} |A_{i, j}|
∣ A ∣ = j = 1 ∑ n ( − 1 ) i + j a i , j ∣ A i , j ∣ 其中
A
i
,
j
A_{i, j}
A i , j 指矩阵
A
A
A 删去第
i
i
i 行和第
j
j
j 列的所有元素后形成的一个
(
n
−
1
)
×
(
n
−
1
)
(n - 1) \times (n - 1)
( n − 1 ) × ( n − 1 ) 的矩阵。这个计算式称为对第
i
i
i 行进行拉普拉斯展开。
证明: 根据定义每个
λ
A
(
p
)
\lambda_A(p)
λ A ( p ) 一定有一个因子
x
x
x 满足
x
∈
{
a
i
,
1
,
a
i
,
2
,
⋯
,
a
i
,
n
}
x \in \{a_{i, 1}, a_{i, 2}, \cdots, a_{i, n}\}
x ∈ { a i , 1 , a i , 2 , ⋯ , a i , n } ,枚举
j
j
j 得到这个因子
a
i
,
j
a_{i, j}
a i , j 和满足
p
i
=
j
p_i = j
p i = j 的排列
p
p
p ,然后将这个
p
i
p_i
p i 删除,并把
p
p
p 中所有大于
j
j
j 的元素减一得到
q
q
q (
q
q
q 是
1
∼
n
−
1
1 \sim n-1
1 ∼ n − 1 的排列),于是在
n
,
i
,
j
n, i, j
n , i , j 确定时有了一个
p
p
p 与
q
q
q 之间的一一对应的函数关系。
例如,当
n
=
3
,
i
=
1
,
j
=
2
n = 3, i = 1, j = 2
n = 3 , i = 1 , j = 2 时,满足
p
1
=
2
p_1 = 2
p 1 = 2 的
p
p
p 有
{
2
,
1
,
3
}
,
{
2
,
3
,
1
}
\{2, 1, 3\}, \{2, 3, 1\}
{ 2 , 1 , 3 } , { 2 , 3 , 1 } ,将
2
2
2 删除,得到
{
1
,
3
}
,
{
3
,
1
}
\{1, 3\}, \{3, 1\}
{ 1 , 3 } , { 3 , 1 } ,然后将
3
3
3 减一,得到
q
q
q 为
{
1
,
2
}
\{1, 2\}
{ 1 , 2 } 和
{
2
,
1
}
\{2, 1\}
{ 2 , 1 } ;根据
n
=
3
,
i
=
1
,
j
=
2
n = 3, i = 1, j = 2
n = 3 , i = 1 , j = 2 ,亦可将
q
q
q 还原为
p
p
p 。
令
ξ
(
p
)
=
q
\xi(p) = q
ξ ( p ) = q ,那么
∣
∑
p
λ
A
(
p
)
⋅
[
j
=
p
i
]
a
i
,
j
∣
=
∣
∑
p
λ
A
i
,
j
(
ξ
(
p
)
)
⋅
[
j
=
p
i
]
∣
\left| \frac{\sum_{p} \lambda_A(p) \cdot [j = p_i]}{a_{i, j}} \right| = \left|\sum_{p} \lambda_{A_{i, j}}(\xi(p)) \cdot [j = p_i] \right|
∣ ∣ ∣ ∣ a i , j ∑ p λ A ( p ) ⋅ [ j = p i ] ∣ ∣ ∣ ∣ = ∣ ∣ ∣ ∣ ∣ p ∑ λ A i , j ( ξ ( p ) ) ⋅ [ j = p i ] ∣ ∣ ∣ ∣ ∣ 右边变为直接枚举
ξ
(
p
)
\xi(p)
ξ ( p ) ,即
∣
∑
p
λ
A
(
p
)
⋅
[
j
=
p
i
]
a
i
,
j
∣
=
∣
∑
q
λ
A
i
,
j
(
q
)
∣
=
∣
det
A
i
,
j
∣
\left| \frac{\sum_{p} \lambda_A(p) \cdot [j = p_i]}{a_{i, j}} \right| = \left|\sum_{q} \lambda_{A_{i, j}}(q) \right| = |\det A_{i, j}|
∣ ∣ ∣ ∣ a i , j ∑ p λ A ( p ) ⋅ [ j = p i ] ∣ ∣ ∣ ∣ = ∣ ∣ ∣ ∣ ∣ q ∑ λ A i , j ( q ) ∣ ∣ ∣ ∣ ∣ = ∣ det A i , j ∣
∣
∑
p
λ
A
(
p
)
⋅
[
j
=
p
i
]
∣
=
∣
a
i
,
j
⋅
det
A
i
,
j
∣
\left| \sum_{p} \lambda_A(p) \cdot [j = p_i] \right| = |a_{i, j} \cdot \det A_{i, j}|
∣ ∣ ∣ ∣ ∣ p ∑ λ A ( p ) ⋅ [ j = p i ] ∣ ∣ ∣ ∣ ∣ = ∣ a i , j ⋅ det A i , j ∣ 再考虑正负号,即
τ
(
p
)
\tau(p)
τ ( p ) 与
τ
(
ξ
(
p
)
)
\tau(\xi(p))
τ ( ξ ( p ) ) 的奇偶性的差别,这取决于
p
i
p_i
p i 前面大于
j
j
j 的数量和
p
i
p_i
p i 后面小于
j
j
j 的数量,即
∑
k
=
1
i
−
1
[
p
k
>
j
]
+
∑
k
=
i
+
1
n
[
p
k
<
j
]
=
∑
k
=
1
i
−
1
[
p
k
>
j
]
+
(
j
−
1
−
∑
k
=
1
i
−
1
[
p
k
<
j
]
)
=
∑
k
=
1
i
−
1
[
p
k
>
j
]
+
j
−
1
−
(
i
−
1
−
∑
k
=
1
i
−
1
[
p
k
>
j
]
)
=
2
∑
k
=
1
i
−
1
[
p
k
>
j
]
+
(
i
+
j
)
≡
i
+
j
m
o
d
2
\begin{aligned} & \sum_{k = 1}^{i - 1} [p_k > j] + \sum_{k = i + 1}^{n}[p_k < j] \\ =& \sum_{k = 1}^{i - 1} [p_k > j] + \left( j - 1 - \sum_{k = 1}^{i - 1}[p_k < j] \right) \\ =& \sum_{k = 1}^{i - 1} [p_k > j] + j - 1 - \left( i - 1 - \sum_{k = 1}^{i - 1}[p_k > j] \right) \\ =& 2\sum_{k = 1}^{i - 1} [p_k > j] + (i + j) \equiv i + j \mod 2\end{aligned}
= = = k = 1 ∑ i − 1 [ p k > j ] + k = i + 1 ∑ n [ p k < j ] k = 1 ∑ i − 1 [ p k > j ] + ( j − 1 − k = 1 ∑ i − 1 [ p k < j ] ) k = 1 ∑ i − 1 [ p k > j ] + j − 1 − ( i − 1 − k = 1 ∑ i − 1 [ p k > j ] ) 2 k = 1 ∑ i − 1 [ p k > j ] + ( i + j ) ≡ i + j m o d 2 于是
τ
(
p
)
=
(
−
1
)
i
+
j
τ
(
ξ
(
p
)
)
\tau(p) = (-1)^{i + j} \tau(\xi(p))
τ ( p ) = ( − 1 ) i + j τ ( ξ ( p ) ) ,则
∑
p
λ
A
(
p
)
⋅
[
j
=
p
i
]
=
(
−
1
)
i
+
j
⋅
a
i
,
j
⋅
det
A
i
,
j
\sum_{p} \lambda_A(p) \cdot [j = p_i] = (-1)^{i + j} \cdot a_{i, j} \cdot \det A_{i, j}
p ∑ λ A ( p ) ⋅ [ j = p i ] = ( − 1 ) i + j ⋅ a i , j ⋅ det A i , j 于是
∣
A
∣
=
∑
p
λ
A
(
p
)
=
∑
j
=
1
n
∑
p
λ
A
(
p
)
⋅
[
j
=
p
i
]
=
∑
j
=
1
n
(
−
1
)
i
+
j
a
i
,
j
∣
A
i
,
j
∣
|A| = \sum_{p} \lambda_A(p) = \sum_{j = 1}^{n} \sum_{p} \lambda_A(p) \cdot [j = p_i] = \sum_{j = 1}^{n} (-1)^{i + j} a_{i, j} |A_{i, j}|
∣ A ∣ = p ∑ λ A ( p ) = j = 1 ∑ n p ∑ λ A ( p ) ⋅ [ j = p i ] = j = 1 ∑ n ( − 1 ) i + j a i , j ∣ A i , j ∣
(百度百科“拉普拉斯展开”中有一个看不怎么懂的高端证明,但比较简洁,emmm 感觉上跟我这个自己 yy 的证明可能差不多)
线性性
可乘性
对于任意
1
≤
i
≤
n
1 \leq i \leq n
1 ≤ i ≤ n 和
k
k
k ,若
A
=
(
a
1
,
1
a
1
,
2
⋯
a
1
,
n
⋮
⋮
⋱
⋮
k
a
i
,
1
k
a
i
,
2
⋯
k
a
i
,
n
⋮
⋮
⋱
⋮
a
n
,
1
a
n
,
2
⋯
a
n
,
n
)
A = \begin{pmatrix} a_{1, 1} & a_{1, 2} & \cdots & a_{1, n} \\ \vdots & \vdots & \ddots & \vdots \\ ka_{i, 1} & ka_{i, 2} & \cdots & ka_{i, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n, 1} & a_{n, 2} & \cdots & a_{n, n} \end{pmatrix}
A = ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ a 1 , 1 ⋮ k a i , 1 ⋮ a n , 1 a 1 , 2 ⋮ k a i , 2 ⋮ a n , 2 ⋯ ⋱ ⋯ ⋱ ⋯ a 1 , n ⋮ k a i , n ⋮ a n , n ⎠ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎞ ,
B
=
(
a
1
,
1
a
1
,
2
⋯
a
1
,
n
⋮
⋮
⋱
⋮
a
i
,
1
a
i
,
2
⋯
a
i
,
n
⋮
⋮
⋱
⋮
a
n
,
1
a
n
,
2
⋯
a
n
,
n
)
B = \begin{pmatrix} a_{1, 1} & a_{1, 2} & \cdots & a_{1, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{i, 1} & a_{i, 2} & \cdots & a_{i, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n, 1} & a_{n, 2} & \cdots & a_{n, n} \end{pmatrix}
B = ⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ a 1 , 1 ⋮ a i , 1 ⋮ a n , 1 a 1 , 2 ⋮ a i , 2 ⋮ a n , 2 ⋯ ⋱ ⋯ ⋱ ⋯ a 1 , n ⋮ a i , n ⋮ a n , n ⎠ ⎟ ⎟ ⎟ ⎟ ⎟ ⎟ ⎞ ,则
∣
A
∣
=
k
∣
B
∣
|A| = k|B|
∣ A ∣ = k ∣ B ∣ 。
证明: 根据定义,对于每个
p
p
p ,
λ
A
(
p
)
=
k
⋅
λ
B
(
p
)
\lambda_A(p) = k \cdot \lambda_B(p)
λ A ( p ) = k ⋅ λ B ( p ) ,得证。
可加性
对于任意
1
≤
i
≤
n
1 \leq i \leq n
1 ≤ i ≤ n 和
k
k
k ,
∣
a
1
,
1
a
1
,
2
⋯
a
1
,
n
⋮
⋮
⋱
⋮
a
i
−
1
,
1
a
i
−
1
,
2
⋯
a
i
−
1
,
n
a
i
,
1
+
b
i
,
1
a
i
,
2
+
b
i
,
2
⋯
a
i
,
n
+
b
i
,
n
a
i
+
1
,
1
a
i
+
1
,
2
⋯
a
i
+
1
,
n
⋮
⋮
⋱
⋮
a
n
,
1
a
n
,
2
⋯
a
n
,
n
∣
=
∣
a
1
,
1
a
1
,
2
⋯
a
1
,
n
⋮
⋮
⋱
⋮
a
i
−
1
,
1
a
i
−
1
,
2
⋯
a
i
−
1
,
n
a
i
,
1
a
i
,
2
⋯
a
i
,
n
a
i
+
1
,
1
a
i
+
1
,
2
⋯
a
i
+
1
,
n
⋮
⋮
⋱
⋮
a
n
,
1
a
n
,
2
⋯
a
n
,
n
∣
+
∣
a
1
,
1
a
1
,
2
⋯
a
1
,
n
⋮
⋮
⋱
⋮
a
i
−
1
,
1
a
i
−
1
,
2
⋯
a
i
−
1
,
n
b
i
,
1
b
i
,
2
⋯
b
i
,
n
a
i
+
1
,
1
a
i
+
1
,
2
⋯
a
i
+
1
,
n
⋮
⋮
⋱
⋮
a
n
,
1
a
n
,
2
⋯
a
n
,
n
∣
\begin{vmatrix} a_{1, 1} & a_{1, 2} & \cdots & a_{1, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{i - 1, 1} & a_{i - 1, 2} & \cdots & a_{i - 1, n} \\ a_{i, 1} + b_{i, 1} & a_{i, 2} + b_{i, 2} & \cdots & a_{i, n} + b_{i, n} \\ a_{i + 1, 1} & a_{i + 1, 2} & \cdots & a_{i + 1, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n, 1} & a_{n, 2} & \cdots & a_{n, n} \end{vmatrix} = \begin{vmatrix} a_{1, 1} & a_{1, 2} & \cdots & a_{1, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{i - 1, 1} & a_{i - 1, 2} & \cdots & a_{i - 1, n} \\ a_{i, 1} & a_{i, 2} & \cdots & a_{i, n} \\ a_{i + 1, 1} & a_{i + 1, 2} & \cdots & a_{i + 1, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n, 1} & a_{n, 2} & \cdots & a_{n, n} \end{vmatrix} + \begin{vmatrix} a_{1, 1} & a_{1, 2} & \cdots & a_{1, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{i - 1, 1} & a_{i - 1, 2} & \cdots & a_{i - 1, n} \\ b_{i, 1} & b_{i, 2} & \cdots & b_{i, n} \\ a_{i + 1, 1} & a_{i + 1, 2} & \cdots & a_{i + 1, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n, 1} & a_{n, 2} & \cdots & a_{n, n} \end{vmatrix}
∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ a 1 , 1 ⋮ a i − 1 , 1 a i , 1 + b i , 1 a i + 1 , 1 ⋮ a n , 1 a 1 , 2 ⋮ a i − 1 , 2 a i , 2 + b i , 2 a i + 1 , 2 ⋮ a n , 2 ⋯ ⋱ ⋯ ⋯ ⋯ ⋱ ⋯ a 1 , n ⋮ a i − 1 , n a i , n + b i , n a i + 1 , n ⋮ a n , n ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ = ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ a 1 , 1 ⋮ a i − 1 , 1 a i , 1 a i + 1 , 1 ⋮ a n , 1 a 1 , 2 ⋮ a i − 1 , 2 a i , 2 a i + 1 , 2 ⋮ a n , 2 ⋯ ⋱ ⋯ ⋯ ⋯ ⋱ ⋯ a 1 , n ⋮ a i − 1 , n a i , n a i + 1 , n ⋮ a n , n ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ + ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ a 1 , 1 ⋮ a i − 1 , 1 b i , 1 a i + 1 , 1 ⋮ a n , 1 a 1 , 2 ⋮ a i − 1 , 2 b i , 2 a i + 1 , 2 ⋮ a n , 2 ⋯ ⋱ ⋯ ⋯ ⋯ ⋱ ⋯ a 1 , n ⋮ a i − 1 , n b i , n a i + 1 , n ⋮ a n , n ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣
证明: 对第
i
i
i 行拉普拉斯展开即证。
不重性
对于
n
×
n
(
n
>
1
)
n \times n (n > 1)
n × n ( n > 1 ) 的矩阵
A
A
A ,若存在
1
≤
i
≤
n
,
1
≤
j
≤
n
,
j
≠
j
1 \leq i \leq n, 1 \leq j \leq n, j \neq j
1 ≤ i ≤ n , 1 ≤ j ≤ n , j = j 使得对于任意
1
≤
k
≤
n
1 \leq k \leq n
1 ≤ k ≤ n 都有
a
i
,
k
=
a
j
,
k
a_{i, k} = a_{j, k}
a i , k = a j , k ,即矩阵中某两行对应相等,则
∣
A
∣
=
0
|A| = 0
∣ A ∣ = 0 。
证明: 若某排列
p
p
p 满足
p
x
=
i
,
p
y
=
j
(
x
<
y
)
p_x = i, p_y = j (x < y)
p x = i , p y = j ( x < y ) ,记
q
q
q 为
p
p
p 交换第
x
,
y
x, y
x , y 个元素后得到的排列,即
q
y
=
i
,
q
x
=
j
(
x
<
y
)
q_y = i, q_x = j (x < y)
q y = i , q x = j ( x < y ) ,那么
λ
A
(
p
)
=
−
λ
A
(
q
)
\lambda_A(p) = -\lambda_A(q)
λ A ( p ) = − λ A ( q ) ,因为两者逆序对个数相差
1
1
1 。 于是将所有
1
∼
n
1 \sim n
1 ∼ n 的排列这样两两配对,即可使所有
λ
A
(
p
)
\lambda_A(p)
λ A ( p ) 抵消为
0
0
0 ,得证。
可倍加性
对于任意
1
≤
i
≤
n
,
1
≤
j
≤
n
,
j
≠
j
1 \leq i \leq n, 1 \leq j \leq n, j \neq j
1 ≤ i ≤ n , 1 ≤ j ≤ n , j = j :
∣
a
1
,
1
a
1
,
2
⋯
a
1
,
n
⋮
⋮
⋱
⋮
a
i
,
1
a
i
,
2
⋯
a
i
,
n
⋮
⋮
⋱
⋮
a
n
,
1
a
n
,
2
⋯
a
n
,
n
∣
=
∣
a
1
,
1
a
1
,
2
⋯
a
1
,
n
⋮
⋮
⋱
⋮
a
i
,
1
+
k
a
j
,
1
a
i
,
2
+
k
a
j
,
2
⋯
a
i
,
n
+
k
a
j
,
n
⋮
⋮
⋱
⋮
a
n
,
1
a
n
,
2
⋯
a
n
,
n
∣
\begin{vmatrix} a_{1, 1} & a_{1, 2} & \cdots & a_{1, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{i, 1} & a_{i, 2} & \cdots & a_{i, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n, 1} & a_{n, 2} & \cdots & a_{n, n} \end{vmatrix} = \begin{vmatrix} a_{1, 1} & a_{1, 2} & \cdots & a_{1, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{i, 1} + ka_{j, 1} & a_{i, 2} + ka_{j, 2} & \cdots & a_{i, n} + ka_{j, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n, 1} & a_{n, 2} & \cdots & a_{n, n} \end{vmatrix}
∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ a 1 , 1 ⋮ a i , 1 ⋮ a n , 1 a 1 , 2 ⋮ a i , 2 ⋮ a n , 2 ⋯ ⋱ ⋯ ⋱ ⋯ a 1 , n ⋮ a i , n ⋮ a n , n ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ = ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ a 1 , 1 ⋮ a i , 1 + k a j , 1 ⋮ a n , 1 a 1 , 2 ⋮ a i , 2 + k a j , 2 ⋮ a n , 2 ⋯ ⋱ ⋯ ⋱ ⋯ a 1 , n ⋮ a i , n + k a j , n ⋮ a n , n ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣
证明:
∣
a
1
,
1
a
1
,
2
⋯
a
1
,
n
⋮
⋮
⋱
⋮
a
i
,
1
+
k
a
j
,
1
a
i
,
2
+
k
a
j
,
2
⋯
a
i
,
n
+
k
a
j
,
n
⋮
⋮
⋱
⋮
a
n
,
1
a
n
,
2
⋯
a
n
,
n
∣
=
∣
a
1
,
1
a
1
,
2
⋯
a
1
,
n
⋮
⋮
⋱
⋮
a
i
,
1
a
i
,
2
⋯
a
i
,
n
⋮
⋮
⋱
⋮
a
n
,
1
a
n
,
2
⋯
a
n
,
n
∣
+
∣
a
1
,
1
a
1
,
2
⋯
a
1
,
n
⋮
⋮
⋱
⋮
k
a
j
,
1
k
a
j
,
2
⋯
k
a
j
,
n
⋮
⋮
⋱
⋮
a
n
,
1
a
n
,
2
⋯
a
n
,
n
∣
(
可
加
性
)
=
∣
a
1
,
1
a
1
,
2
⋯
a
1
,
n
⋮
⋮
⋱
⋮
a
i
,
1
a
i
,
2
⋯
a
i
,
n
⋮
⋮
⋱
⋮
a
n
,
1
a
n
,
2
⋯
a
n
,
n
∣
+
k
∣
a
1
,
1
a
1
,
2
⋯
a
1
,
n
⋮
⋮
⋱
⋮
a
j
,
1
a
j
,
2
⋯
a
j
,
n
⋮
⋮
⋱
⋮
a
n
,
1
a
n
,
2
⋯
a
n
,
n
∣
(
线
性
性
)
=
∣
a
1
,
1
a
1
,
2
⋯
a
1
,
n
⋮
⋮
⋱
⋮
a
i
,
1
a
i
,
2
⋯
a
i
,
n
⋮
⋮
⋱
⋮
a
n
,
1
a
n
,
2
⋯
a
n
,
n
∣
+
0
(
不
重
性
)
=
∣
a
1
,
1
a
1
,
2
⋯
a
1
,
n
⋮
⋮
⋱
⋮
a
i
,
1
a
i
,
2
⋯
a
i
,
n
⋮
⋮
⋱
⋮
a
n
,
1
a
n
,
2
⋯
a
n
,
n
∣
\begin{aligned} & \begin{vmatrix} a_{1, 1} & a_{1, 2} & \cdots & a_{1, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{i, 1} + ka_{j, 1} & a_{i, 2} + ka_{j, 2} & \cdots & a_{i, n} + ka_{j, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n, 1} & a_{n, 2} & \cdots & a_{n, n} \end{vmatrix} \\ =& \begin{vmatrix} a_{1, 1} & a_{1, 2} & \cdots & a_{1, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{i, 1} & a_{i, 2} & \cdots & a_{i, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n, 1} & a_{n, 2} & \cdots & a_{n, n} \end{vmatrix} + \begin{vmatrix} a_{1, 1} & a_{1, 2} & \cdots & a_{1, n} \\ \vdots & \vdots & \ddots & \vdots \\ ka_{j, 1} & ka_{j, 2} & \cdots & ka_{j, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n, 1} & a_{n, 2} & \cdots & a_{n, n} \end{vmatrix} & (可加性) \\ =& \begin{vmatrix} a_{1, 1} & a_{1, 2} & \cdots & a_{1, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{i, 1} & a_{i, 2} & \cdots & a_{i, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n, 1} & a_{n, 2} & \cdots & a_{n, n} \end{vmatrix} + k\begin{vmatrix} a_{1, 1} & a_{1, 2} & \cdots & a_{1, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{j, 1} & a_{j, 2} & \cdots & a_{j, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n, 1} & a_{n, 2} & \cdots & a_{n, n} \end{vmatrix} & (线性性) \\ =& \begin{vmatrix} a_{1, 1} & a_{1, 2} & \cdots & a_{1, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{i, 1} & a_{i, 2} & \cdots & a_{i, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n, 1} & a_{n, 2} & \cdots & a_{n, n} \end{vmatrix} + 0 & (不重性) \\ =& \begin{vmatrix} a_{1, 1} & a_{1, 2} & \cdots & a_{1, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{i, 1} & a_{i, 2} & \cdots & a_{i, n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n, 1} & a_{n, 2} & \cdots & a_{n, n} \end{vmatrix} \end{aligned}
= = = = ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ a 1 , 1 ⋮ a i , 1 + k a j , 1 ⋮ a n , 1 a 1 , 2 ⋮ a i , 2 + k a j , 2 ⋮ a n , 2 ⋯ ⋱ ⋯ ⋱ ⋯ a 1 , n ⋮ a i , n + k a j , n ⋮ a n , n ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ a 1 , 1 ⋮ a i , 1 ⋮ a n , 1 a 1 , 2 ⋮ a i , 2 ⋮ a n , 2 ⋯ ⋱ ⋯ ⋱ ⋯ a 1 , n ⋮ a i , n ⋮ a n , n ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ + ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ a 1 , 1 ⋮ k a j , 1 ⋮ a n , 1 a 1 , 2 ⋮ k a j , 2 ⋮ a n , 2 ⋯ ⋱ ⋯ ⋱ ⋯ a 1 , n ⋮ k a j , n ⋮ a n , n ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ a 1 , 1 ⋮ a i , 1 ⋮ a n , 1 a 1 , 2 ⋮ a i , 2 ⋮ a n , 2 ⋯ ⋱ ⋯ ⋱ ⋯ a 1 , n ⋮ a i , n ⋮ a n , n ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ + k ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ a 1 , 1 ⋮ a j , 1 ⋮ a n , 1 a 1 , 2 ⋮ a j , 2 ⋮ a n , 2 ⋯ ⋱ ⋯ ⋱ ⋯ a 1 , n ⋮ a j , n ⋮ a n , n ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ a 1 , 1 ⋮ a i , 1 ⋮ a n , 1 a 1 , 2 ⋮ a i , 2 ⋮ a n , 2 ⋯ ⋱ ⋯ ⋱ ⋯ a 1 , n ⋮ a i , n ⋮ a n , n ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ + 0 ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ a 1 , 1 ⋮ a i , 1 ⋮ a n , 1 a 1 , 2 ⋮ a i , 2 ⋮ a n , 2 ⋯ ⋱ ⋯ ⋱ ⋯ a 1 , n ⋮ a i , n ⋮ a n , n ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ∣ ( 可 加 性 ) ( 线 性 性 ) ( 不 重 性 )
转置不变性
任意一个
n
×
n
n \times n
n × n 的矩阵
A
A
A ,满足
∣
A
T
∣
=
∣
A
∣
|A^T| = |A|
∣ A T ∣ = ∣ A ∣ 。
A
T
A^T
A T 表示矩阵
A
A
A 的转置,即
a
i
,
j
→
a
j
,
i
a_{i, j} \to a_{j, i}
a i , j → a j , i (换句话说,将
A
A
A 沿“左上 - 右下”对角线翻折即得到
A
T
A^T
A T ),下同。
证明: 对于一个排列
p
p
p ,根据转置的定义,令
ξ
(
p
)
=
q
(
q
p
i
=
i
)
\xi(p) = q\ (q_{p_i} = i)
ξ ( p ) = q ( q p i = i ) ,那么
λ
A
(
p
)
=
λ
A
T
(
ξ
(
p
)
)
\lambda_A(p) = \lambda_{A^T}(\xi(p))
λ A ( p ) = λ A T ( ξ ( p ) ) 。考虑
τ
(
p
)
\tau(p)
τ ( p ) 和
τ
(
ξ
(
p
)
)
\tau(\xi(p))
τ ( ξ ( p ) ) 的关系: 把
A
i
,
p
i
(
1
≤
i
≤
n
)
A_{i, p_i}\ (1 \leq i \leq n)
A i , p i ( 1 ≤ i ≤ n ) 记做特殊点,令
T
p
(
i
)
\Tau_p(i)
T p ( i ) 表示
A
i
,
p
i
A_{i, p_i}
A i , p i 的左下方的特殊点数量,
T
p
′
(
i
)
\Tau'_p(i)
T p ′ ( i ) 表示
A
i
,
p
i
A_{i, p_i}
A i , p i 的右上方的特殊点数量,则
τ
(
p
)
=
∑
i
=
1
n
T
p
(
i
)
=
∑
i
=
1
n
T
p
′
(
i
)
\tau(p) = \sum_{i = 1}^{n} \Tau_p(i) = \sum_{i = 1}^{n} \Tau'_p(i)
τ ( p ) = ∑ i = 1 n T p ( i ) = ∑ i = 1 n T p ′ ( i ) ,由于是沿对角线翻折,所以显然
T
p
(
i
)
=
T
q
′
(
i
)
\Tau_p(i) = \Tau'_q(i)
T p ( i ) = T q ′ ( i ) (事实上只是把“左下方”的特殊点变到“右上方”,“右上方”变到“左下方”),于是
τ
(
p
)
=
τ
(
q
)
\tau(p) = \tau(q)
τ ( p ) = τ ( q ) 。 因此
λ
A
(
p
)
=
λ
A
T
(
ξ
(
p
)
)
\lambda_A(p) = \lambda_{A^T}(\xi(p))
λ A ( p ) = λ A T ( ξ ( p ) ) ,得证。
可交换性
行可交换性
矩阵两行交换,矩阵的行列式值反号。
证明: 交换
A
A
A 的两行
u
,
v
u, v
u , v 可视为将
v
v
v 行加到
u
u
u 行上(①)得到一个新矩阵
A
′
A'
A ′ ,再从
A
′
A'
A ′ 的
v
v
v 行上减去
A
′
A'
A ′ 的
u
u
u 行(②),再将
A
′
A'
A ′ 的
u
u
u 行全部取反(③)。根据可倍加性,① 和 ② 均不改变行列式的值,根据可乘性,③ 操作使行列式的值反号,得证。
列可交换性
矩阵两列交换,矩阵行列式值反号。
证明: 根据转置不变性,先转置再用行可交换性交换两行,再转置回来即证。
优化行列式的计算
对矩阵
A
A
A 的第一行进行拉普拉斯展开可以证明:当
A
A
A 为一个上三角矩阵(即任意
i
>
j
i > j
i > j ,满足
a
i
,
j
=
0
a_{i, j} = 0
a i , j = 0 )时:
∣
A
∣
=
∏
i
=
1
n
a
i
,
i
|A| = \prod_{i = 1}^{n} a_{i, i}
∣ A ∣ = i = 1 ∏ n a i , i 发现高斯消元用到的是可倍加性、可交换性,于是我们对
A
A
A 高斯消元,可以得到一个上三角矩阵,这个矩阵的对角线乘积即为
A
A
A 的行列式的绝对值(可交换性会使其反号)!于是我们做到了
O
(
n
3
)
O(n^3)
O ( n 3 ) 求行列式的值。
矩阵树定理
前置定义
对于一个无向图
G
=
(
V
,
E
)
G = (V, E)
G = ( V , E ) ,其中
∣
V
∣
=
n
|V| = n
∣ V ∣ = n (点数),
∣
E
∣
=
m
|E| = m
∣ E ∣ = m (边数):
给
G
G
G 的每条边任意分配一个方向,则它的关联矩阵(大小为
m
×
n
m \times n
m × n )
B
B
B :
b
i
,
j
=
{
1
点
j
是
边
i
的
起
点
−
1
点
j
是
边
i
的
终
点
0
其
他
b_{i, j} = \begin{cases} 1 & 点\ j\ 是边\ i\ 的起点 \\ -1 & 点\ j\ 是边\ i\ 的终点 \\ 0 & 其他\end{cases}
b i , j = ⎩ ⎪ ⎨ ⎪ ⎧ 1 − 1 0 点 j 是 边 i 的 起 点 点 j 是 边 i 的 终 点 其 他
G
G
G 的基尔霍夫矩阵(大小为
n
×
n
n \times n
n × n )
L
L
L :
l
i
,
j
=
{
d
i
i
=
j
−
e
i
,
j
i
≠
j
l_{i, j} = \begin{cases} d_i & i = j \\ -e_{i, j} & i \neq j\end{cases}
l i , j = { d i − e i , j i = j i = j (其中
d
i
d_i
d i 表示
i
i
i 号点的度,
e
i
,
j
e_{i, j}
e i , j 连接点
i
,
j
i, j
i , j 的边的数量)
一些引理
转置引理
L
=
B
B
T
L = BB^T
L = B B T
L
,
B
,
B
T
L, B, B^T
L , B , B T 定义如上,乘法是矩阵乘法。
证明: 按照矩阵乘法的规则展开即证。 事实上如果定义两个序列相乘的结果是对应位置的乘积之和的话,矩阵乘法将
B
B
B 的列两两相乘得到了一个新矩阵,这个矩阵就是
L
L
L 。
连通性引理
引理 1
若
G
G
G 是一个连通图,那么
∣
L
∣
=
0
|L| = 0
∣ L ∣ = 0 。
证明: 若
G
G
G 是连通图,那么根据定义
L
L
L 的每一列的元素之和都为
0
0
0 ,再根据可倍加性,将其他所有行加到某一行上,这一行的元素就全部为零,再对这一行进行拉普拉斯展开,得到
∣
L
∣
=
0
|L| = 0
∣ L ∣ = 0 。
引理 2
若
G
G
G 不连通,则对任意
1
≤
i
≤
n
1 \leq i \leq n
1 ≤ i ≤ n ,
∣
L
i
,
i
∣
=
0
|L_{i, i}| = 0
∣ L i , i ∣ = 0 。
证明: 根据行列可交换性,我们将同一联通块的点换到一起,得到的新矩阵
L
′
L'
L ′ 满足
∣
det
L
′
∣
=
∣
det
L
∣
|\det L'| = |\det L|
∣ det L ′ ∣ = ∣ det L ∣ ,并且
L
′
L'
L ′ 长这个样子:
(
A
1
0
0
⋯
0
0
A
2
0
⋯
0
0
0
A
3
⋯
0
⋮
⋮
⋮
⋱
⋮
0
0
0
⋯
A
k
)
\begin{pmatrix} A_1 & \bold{0} & \bold{0} & \cdots & \bold{0} \\ \bold{0} & A_2 & \bold{0} & \cdots & \bold{0} \\ \bold{0} & \bold{0} & A_3 & \cdots & \bold{0} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \bold{0} & \bold{0} & \bold{0} & \cdots & A_k\end{pmatrix}
⎝ ⎜ ⎜ ⎜ ⎜ ⎜ ⎛ A 1 0 0 ⋮ 0 0 A 2 0 ⋮ 0 0 0 A 3 ⋮ 0 ⋯ ⋯ ⋯ ⋱ ⋯ 0 0 0 ⋮ A k ⎠ ⎟ ⎟ ⎟ ⎟ ⎟ ⎞ (
0
\bold{0}
0 代表零矩阵,
k
k
k 是联通块的个数) 由于
G
G
G 不连通,所以
k
≥
2
k \geq 2
k ≥ 2 ,所以
L
i
,
i
L_{i, i}
L i , i 至少包含一个
A
x
(
1
≤
x
≤
k
)
A_x (1 \leq x \leq k)
A x ( 1 ≤ x ≤ k ) 。因为
A
x
A_x
A x 是一个独立连通子图,所以
A
x
A_x
A x 可以经过适当操作使得其对角线上某个元素为
0
0
0 ,进而
∣
L
i
,
i
∣
=
0
|L_{i, i}| = 0
∣ L i , i ∣ = 0 。
引理 3
若
G
G
G 是一个树,则对任意
1
≤
i
≤
n
1 \leq i \leq n
1 ≤ i ≤ n ,
∣
det
L
i
,
i
∣
=
1
|\det L_{i, i}| = 1
∣ det L i , i ∣ = 1 。
证明: 将这个树的结点拓扑排序,使得对于任意点
i
i
i ,去除掉所有
1
∼
i
−
1
1 \sim i - 1
1 ∼ i − 1 的点后
i
i
i 的度数为
1
1
1 ,这可以通过不断“摘掉”叶子结点实现。然后以这个顺序整理矩阵
L
L
L 的各行得到
L
′
L'
L ′ ,我们对
L
′
L'
L ′ 模拟高斯消元的过程: 假设当前到了第
i
i
i 行。没有消元时,由于我们拓扑排序了,那么
l
i
,
i
′
l'_{i, i}
l i , i ′ 右边(“右边”指所有
l
i
,
j
′
(
j
>
i
)
l'_{i, j}\ (j > i)
l i , j ′ ( j > i ) ,“左边”“上面”“下面”同理)和下面有且仅有
1
1
1 个
−
1
-1
− 1 ,左边和上面有且仅有
l
i
,
i
′
−
1
l'_{i, i} - 1
l i , i ′ − 1 个
−
1
-1
− 1 ;由于我们用前
i
−
1
i - 1
i − 1 行消掉了
l
i
,
i
′
l'_{i, i}
l i , i ′ 前面的
l
i
,
i
′
−
1
l'_{i, i} - 1
l i , i ′ − 1 个
−
1
-1
− 1 , 并且
l
i
,
i
′
l'_{i, i}
l i , i ′ 上面有
l
i
,
i
′
−
1
l'_{i, i} - 1
l i , i ′ − 1 个
−
1
-1
− 1 ,于是
l
i
,
i
′
l'_{i, i}
l i , i ′ 被加了
l
i
,
i
′
−
1
l'_{i, i} - 1
l i , i ′ − 1 个
−
1
-1
− 1 ,就变成了
1
1
1 。 按这样高斯消元下去,最后一个元素(
l
n
,
n
′
l'_{n, n}
l n , n ′ ) 肯定是
0
0
0 。但我们要求的是
∣
L
i
,
i
∣
=
∣
L
i
,
i
′
∣
|L_{i, i}| = |L'_{i, i}|
∣ L i , i ∣ = ∣ L i , i ′ ∣ ,它是
L
′
L'
L ′ 删去了一行一列,因此
L
i
,
i
′
L'_{i, i}
L i , i ′ 消元过后的最后一个(
l
n
−
1
,
n
−
1
′
′
l''_{n - 1, n - 1}
l n − 1 , n − 1 ′ ′ )是
1
1
1 。于是对角线上的元素全部是
1
1
1 ,得证。
Binet - Cauchy 定理
设
A
A
A 是一个
n
×
m
n \times m
n × m 的矩阵,
B
B
B 是一个
m
×
n
m \times n
m × n 的矩阵,有
∣
A
B
∣
=
{
0
n
>
m
∣
A
∣
⋅
∣
B
∣
n
=
m
∑
1
≤
k
1
<
k
2
<
⋯
<
k
n
≤
m
∣
A
(
1
,
2
,
⋯
,
n
;
k
1
,
k
2
,
⋯
,
k
n
)
∣
⋅
∣
B
(
k
1
,
k
2
,
⋯
,
k
n
;
1
,
2
,
⋯
,
n
)
∣
n
<
m
|AB| = \begin{cases} 0 & n > m \\ |A| \cdot |B| & n = m\\ \sum\limits_{1 \leq k_1 < k_2 < \cdots < k_n \leq m} |A(1, 2, \cdots, n; k_1, k_2, \cdots, k_n)| \cdot |B(k_1, k_2, \cdots, k_n; 1, 2, \cdots, n)| & n < m \end{cases}
∣ A B ∣ = ⎩ ⎪ ⎪ ⎨ ⎪ ⎪ ⎧ 0 ∣ A ∣ ⋅ ∣ B ∣ 1 ≤ k 1 < k 2 < ⋯ < k n ≤ m ∑ ∣ A ( 1 , 2 , ⋯ , n ; k 1 , k 2 , ⋯ , k n ) ∣ ⋅ ∣ B ( k 1 , k 2 , ⋯ , k n ; 1 , 2 , ⋯ , n ) ∣ n > m n = m n < m (
A
(
1
,
2
,
⋯
,
n
;
k
1
,
k
2
,
⋯
,
k
n
)
A(1, 2, \cdots, n; k_1, k_2, \cdots, k_n)
A ( 1 , 2 , ⋯ , n ; k 1 , k 2 , ⋯ , k n ) 表示由
A
A
A 的第
k
1
,
k
2
,
⋯
,
k
n
k_1, k_2, \cdots, k_n
k 1 , k 2 , ⋯ , k n 列组成的矩阵;
B
(
k
1
,
k
2
,
⋯
,
k
n
;
1
,
2
,
⋯
,
n
)
B(k_1, k_2, \cdots, k_n; 1, 2, \cdots, n)
B ( k 1 , k 2 , ⋯ , k n ; 1 , 2 , ⋯ , n ) 表示由
B
B
B 的第
k
1
,
k
2
,
⋯
,
k
n
k_1, k_2, \cdots, k_n
k 1 , k 2 , ⋯ , k n 行组成的矩阵)
证明: 我们构造两个辅助矩阵:
M
=
(
A
0
−
I
B
)
,
N
=
(
0
A
B
−
I
B
)
M = \begin{pmatrix} A & \bold{0} \\ -I & B\end{pmatrix},\ \ N = \begin{pmatrix} \bold{0} & AB \\ -I & B\end{pmatrix}
M = ( A − I 0 B ) , N = ( 0 − I A B B ) 其中
I
I
I 是单位矩阵(“左上 - 右下”对角线为
1
1
1 的矩阵)可以发现
∣
M
∣
=
∣
N
∣
|M| = |N|
∣ M ∣ = ∣ N ∣ ,证明如下: 枚举
M
M
M 矩阵的第
i
(
n
+
1
≤
i
≤
n
+
m
)
i\ (n + 1 \leq i \leq n + m)
i ( n + 1 ≤ i ≤ n + m ) 行,然后将第
i
i
i 行乘以
a
k
1
a_{k_1}
a k 1 后加到第
1
1
1 行,乘以
a
k
2
a_{k_2}
a k 2 后加到第
2
2
2 行,……,乘以
a
k
n
a_{k_n}
a k n 后加到第
n
n
n 行。这样操作完后,根据矩阵乘法的定义,
M
M
M 变为了
N
N
N ,又因为倍加不变性,
∣
M
∣
=
∣
N
∣
|M| = |N|
∣ M ∣ = ∣ N ∣ 。 用定义式计算
∣
N
∣
|N|
∣ N ∣ ,由于只要
p
p
p 选到
0
\bold{0}
0 中的元素
λ
N
(
p
)
\lambda_N(p)
λ N ( p ) 就为
0
0
0 ,所以只考虑
p
1
,
p
2
,
⋯
,
p
n
∈
[
m
+
1
,
m
+
n
]
p_1, p_2, \cdots, p_n \in [m + 1, m + n]
p 1 , p 2 , ⋯ , p n ∈ [ m + 1 , m + n ] 的情况,又因为
A
B
AB
A B 是个
n
×
n
n \times n
n × n 的矩阵,所以
p
n
+
1
,
p
n
+
2
,
⋯
,
p
n
+
m
∈
[
1
,
m
]
p_{n + 1}, p_{n + 2}, \cdots, p_{n + m} \in [1, m]
p n + 1 , p n + 2 , ⋯ , p n + m ∈ [ 1 , m ] ,所以
∣
N
∣
=
∣
A
B
∣
⋅
∣
−
I
∣
=
(
−
1
)
m
∣
A
B
∣
|N| = |AB| \cdot |-I| = (-1)^m |AB|
∣ N ∣ = ∣ A B ∣ ⋅ ∣ − I ∣ = ( − 1 ) m ∣ A B ∣ 接下来分类计算
∣
M
∣
|M|
∣ M ∣ ,并证明该定理:
当
n
>
m
n > m
n > m 时(图中
C
=
A
B
C = AB
C = A B ,下同): 用定义式计算
M
M
M ,发现排列
p
p
p 无论如何取都会取到
0
\bold{0}
0 中的元素(原因就是
n
>
m
n > m
n > m ),因此
∣
M
∣
=
0
|M| = 0
∣ M ∣ = 0 ,即
(
−
1
)
m
∣
A
B
∣
=
0
(-1)^m |AB| = 0
( − 1 ) m ∣ A B ∣ = 0 ,即
∣
A
B
∣
=
0
|AB| = 0
∣ A B ∣ = 0 。
当
n
=
m
n = m
n = m 时: 用定义式计算
M
M
M ,显然只有
p
1
,
p
2
,
⋯
,
p
n
∈
[
1
,
n
]
p_1, p_2, \cdots, p_n \in [1, n]
p 1 , p 2 , ⋯ , p n ∈ [ 1 , n ] 且
p
n
+
1
,
p
n
+
2
,
⋯
,
p
n
+
m
∈
[
n
+
1
,
n
+
m
]
p_{n + 1}, p_{n + 2}, \cdots, p_{n + m} \in [n + 1, n + m]
p n + 1 , p n + 2 , ⋯ , p n + m ∈ [ n + 1 , n + m ] 时
λ
M
(
p
)
\lambda_M(p)
λ M ( p ) 不为
0
0
0 ,于是
∣
M
∣
=
∣
A
∣
⋅
∣
B
∣
⋅
(
−
1
)
n
2
|M| = |A| \cdot |B| \cdot (-1)^{n^2}
∣ M ∣ = ∣ A ∣ ⋅ ∣ B ∣ ⋅ ( − 1 ) n 2 其中
(
−
1
)
n
2
(-1)^{n^2}
( − 1 ) n 2 即为分开计算
A
,
B
A, B
A , B 将两者的排列合起来新形成的逆序对数。因而
∣
A
∣
⋅
∣
B
∣
⋅
(
−
1
)
n
2
=
∣
A
B
∣
⋅
(
−
1
)
m
|A| \cdot |B| \cdot (-1)^{n^2} = |AB| \cdot (-1)^m
∣ A ∣ ⋅ ∣ B ∣ ⋅ ( − 1 ) n 2 = ∣ A B ∣ ⋅ ( − 1 ) m ,于是
∣
A
∣
∣
B
∣
=
∣
A
B
∣
(
−
1
)
m
−
n
2
=
∣
A
B
∣
(
−
1
)
n
−
n
2
=
∣
A
B
∣
|A||B| = |AB|(-1)^{m - n^2} = |AB|(-1)^{n - n^2} = |AB|
∣ A ∣ ∣ B ∣ = ∣ A B ∣ ( − 1 ) m − n 2 = ∣ A B ∣ ( − 1 ) n − n 2 = ∣ A B ∣
当
n
<
m
n < m
n < m 时: 这时候我们枚举
k
1
,
k
2
,
⋯
,
k
n
∈
[
1
,
m
]
k_1, k_2, \cdots, k_n \in [1, m]
k 1 , k 2 , ⋯ , k n ∈ [ 1 , m ] (就是定理中的
k
1
,
k
2
,
⋯
,
k
n
k_1, k_2, \cdots, k_n
k 1 , k 2 , ⋯ , k n )表示在
A
A
A 的各行中选的元素。为了使
λ
M
(
p
)
≠
0
\lambda_M(p) \neq 0
λ M ( p ) = 0 ,
−
I
-I
− I 中就只能选对角线上的元素,又因为
A
A
A 中选的元素的正下方的那个
−
1
-1
− 1 肯定不能选(因为
p
p
p 是排列),所以在
B
B
B 被选了元素的行一定和
A
A
A 被选了元素的列一样。举个例子,假设
n
=
3
n = 3
n = 3 ,红色是
A
/
B
A\ /\ B
A / B 中含有被选中元素的列
/
/
/ 行。 这样一来
∣
A
(
1
,
2
,
⋯
,
n
;
k
1
,
k
2
,
⋯
,
k
n
)
∣
|A(1, 2, \cdots, n;k_1, k_2, \cdots, k_n)|
∣ A ( 1 , 2 , ⋯ , n ; k 1 , k 2 , ⋯ , k n ) ∣ 的那些排列就和
∣
B
(
k
1
,
k
2
,
⋯
,
k
n
;
1
,
2
,
⋯
,
n
)
∣
|B(k_1, k_2, \cdots, k_n; 1, 2, \cdots, n)|
∣ B ( k 1 , k 2 , ⋯ , k n ; 1 , 2 , ⋯ , n ) ∣ 的那些排列形成了一一对应的函数关系,于是
∣
M
∣
=
∑
1
≤
k
1
<
k
2
<
⋯
<
k
n
≤
m
∣
A
(
1
,
2
,
⋯
,
n
;
k
1
,
k
2
,
⋯
,
k
n
)
∣
⋅
∣
B
(
k
1
,
k
2
,
⋯
,
k
n
;
1
,
2
,
⋯
,
n
)
∣
⋅
(
−
1
)
m
−
n
+
x
|M| = \sum\limits_{1 \leq k_1 < k_2 < \cdots < k_n \leq m} |A(1, 2, \cdots, n; k_1, k_2, \cdots, k_n)| \cdot |B(k_1, k_2, \cdots, k_n; 1, 2, \cdots, n)| \cdot (-1)^{m - n + x}
∣ M ∣ = 1 ≤ k 1 < k 2 < ⋯ < k n ≤ m ∑ ∣ A ( 1 , 2 , ⋯ , n ; k 1 , k 2 , ⋯ , k n ) ∣ ⋅ ∣ B ( k 1 , k 2 , ⋯ , k n ; 1 , 2 , ⋯ , n ) ∣ ⋅ ( − 1 ) m − n + x 其中
(
−
1
)
m
−
n
(-1)^{m - n}
( − 1 ) m − n 是
−
I
-I
− I 的贡献,
x
x
x 是“新构成”的逆序对个数,所谓新构成,就是三部分的逆序对个数之和:
−
I
-I
− I 与
A
A
A 、
−
I
-I
− I 与
B
B
B 、
A
A
A 与
B
B
B 。由于枚举出的东西关于对角线对称,所以
−
I
-I
− I 与
A
A
A 之间的逆序对数等于
−
I
-I
− I 与
B
B
B 之间的逆序对数,于是
x
x
x 可以转化为
A
A
A 与
B
B
B 之间的逆序对数,即
n
2
n^2
n 2 。于是
∣
M
∣
=
∑
1
≤
k
1
<
k
2
<
⋯
<
k
n
≤
m
∣
A
(
1
,
2
,
⋯
,
n
;
k
1
,
k
2
,
⋯
,
k
n
)
∣
⋅
∣
B
(
k
1
,
k
2
,
⋯
,
k
n
;
1
,
2
,
⋯
,
n
)
∣
⋅
(
−
1
)
m
−
n
+
x
=
∑
1
≤
k
1
<
k
2
<
⋯
<
k
n
≤
m
∣
A
(
1
,
2
,
⋯
,
n
;
k
1
,
k
2
,
⋯
,
k
n
)
∣
⋅
∣
B
(
k
1
,
k
2
,
⋯
,
k
n
;
1
,
2
,
⋯
,
n
)
∣
⋅
(
−
1
)
m
−
n
+
n
2
=
∣
A
B
∣
(
−
1
)
m
\begin{aligned} |M| &= \sum\limits_{1 \leq k_1 < k_2 < \cdots < k_n \leq m} |A(1, 2, \cdots, n; k_1, k_2, \cdots, k_n)| \cdot |B(k_1, k_2, \cdots, k_n; 1, 2, \cdots, n)| \cdot (-1)^{m - n + x} \\ &= \sum\limits_{1 \leq k_1 < k_2 < \cdots < k_n \leq m} |A(1, 2, \cdots, n; k_1, k_2, \cdots, k_n)| \cdot |B(k_1, k_2, \cdots, k_n; 1, 2, \cdots, n)| \cdot (-1)^{m - n + n^2} \\ &= |AB| (-1)^m \end{aligned}
∣ M ∣ = 1 ≤ k 1 < k 2 < ⋯ < k n ≤ m ∑ ∣ A ( 1 , 2 , ⋯ , n ; k 1 , k 2 , ⋯ , k n ) ∣ ⋅ ∣ B ( k 1 , k 2 , ⋯ , k n ; 1 , 2 , ⋯ , n ) ∣ ⋅ ( − 1 ) m − n + x = 1 ≤ k 1 < k 2 < ⋯ < k n ≤ m ∑ ∣ A ( 1 , 2 , ⋯ , n ; k 1 , k 2 , ⋯ , k n ) ∣ ⋅ ∣ B ( k 1 , k 2 , ⋯ , k n ; 1 , 2 , ⋯ , n ) ∣ ⋅ ( − 1 ) m − n + n 2 = ∣ A B ∣ ( − 1 ) m 于是
∣
A
B
∣
=
∑
1
≤
k
1
<
k
2
<
⋯
<
k
n
≤
m
∣
A
(
1
,
2
,
⋯
,
n
;
k
1
,
k
2
,
⋯
,
k
n
)
∣
⋅
∣
B
(
k
1
,
k
2
,
⋯
,
k
n
;
1
,
2
,
⋯
,
n
)
∣
⋅
(
−
1
)
n
2
−
n
=
∑
1
≤
k
1
<
k
2
<
⋯
<
k
n
≤
m
∣
A
(
1
,
2
,
⋯
,
n
;
k
1
,
k
2
,
⋯
,
k
n
)
∣
⋅
∣
B
(
k
1
,
k
2
,
⋯
,
k
n
;
1
,
2
,
⋯
,
n
)
∣
\begin{aligned} |AB| &= \sum\limits_{1 \leq k_1 < k_2 < \cdots < k_n \leq m} |A(1, 2, \cdots, n; k_1, k_2, \cdots, k_n)| \cdot |B(k_1, k_2, \cdots, k_n; 1, 2, \cdots, n)| \cdot (-1)^{n^2 - n} \\ &= \sum\limits_{1 \leq k_1 < k_2 < \cdots < k_n \leq m} |A(1, 2, \cdots, n; k_1, k_2, \cdots, k_n)| \cdot |B(k_1, k_2, \cdots, k_n; 1, 2, \cdots, n)| \end{aligned}
∣ A B ∣ = 1 ≤ k 1 < k 2 < ⋯ < k n ≤ m ∑ ∣ A ( 1 , 2 , ⋯ , n ; k 1 , k 2 , ⋯ , k n ) ∣ ⋅ ∣ B ( k 1 , k 2 , ⋯ , k n ; 1 , 2 , ⋯ , n ) ∣ ⋅ ( − 1 ) n 2 − n = 1 ≤ k 1 < k 2 < ⋯ < k n ≤ m ∑ ∣ A ( 1 , 2 , ⋯ , n ; k 1 , k 2 , ⋯ , k n ) ∣ ⋅ ∣ B ( k 1 , k 2 , ⋯ , k n ; 1 , 2 , ⋯ , n ) ∣
定理得证。
该证明参考了 Freopen 大佬的博客,详见参考资料。同样百度百科上有个很线代看不懂的证明。
矩阵树定理
对于
n
n
n 个点
m
m
m 条边的无向图
G
G
G 以及任意一个
1
≤
i
≤
n
1 \leq i \leq n
1 ≤ i ≤ n ,
∣
L
i
i
∣
|L_{ii}|
∣ L i i ∣ 即为它的生成树个数。
证明: 由转置引理
∣
L
i
,
i
∣
=
∣
B
i
,
i
B
i
,
i
T
∣
|L_{i, i}| = |B_{i, i} B_{i, i}^T|
∣ L i , i ∣ = ∣ B i , i B i , i T ∣ 因为
B
i
,
i
,
B
i
,
i
T
B_{i, i}, B_{i, i}^T
B i , i , B i , i T 分别是大小为
(
n
−
1
)
×
(
m
−
1
)
,
(
m
−
1
)
×
(
n
−
1
)
(n - 1) \times (m - 1), (m - 1) \times (n - 1)
( n − 1 ) × ( m − 1 ) , ( m − 1 ) × ( n − 1 ) 的矩阵,所以由 Binet - Cauchy 定理得
∣
L
i
,
i
∣
=
∣
B
i
,
i
B
i
,
i
T
∣
=
∑
1
≤
k
1
<
k
2
<
⋯
<
k
n
−
1
≤
m
∣
B
i
,
i
(
1
,
2
,
⋯
,
n
−
1
;
k
1
,
k
2
,
⋯
,
k
n
−
1
)
∣
⋅
∣
B
i
,
i
T
(
k
1
,
k
2
,
⋯
,
k
n
−
1
;
1
,
2
,
⋯
,
n
−
1
)
∣
|L_{i, i}| = |B_{i, i} B_{i, i}^T| = \sum_{1 \leq k_1 < k_2 < \cdots < k_{n - 1} \leq m} |B_{i, i}(1, 2, \cdots, n - 1; k_1, k_2, \cdots, k_{n - 1})| \cdot |B_{i, i}^T(k_1, k_2, \cdots, k_{n - 1}; 1, 2, \cdots, n - 1)|
∣ L i , i ∣ = ∣ B i , i B i , i T ∣ = 1 ≤ k 1 < k 2 < ⋯ < k n − 1 ≤ m ∑ ∣ B i , i ( 1 , 2 , ⋯ , n − 1 ; k 1 , k 2 , ⋯ , k n − 1 ) ∣ ⋅ ∣ B i , i T ( k 1 , k 2 , ⋯ , k n − 1 ; 1 , 2 , ⋯ , n − 1 ) ∣ 由于
B
i
,
i
(
1
,
2
,
⋯
,
n
−
1
;
k
1
,
k
2
,
⋯
,
k
n
−
1
)
=
B
i
,
i
T
(
k
1
,
k
2
,
⋯
,
k
n
−
1
;
1
,
2
,
⋯
,
n
−
1
)
B_{i, i}(1, 2, \cdots, n - 1; k_1, k_2, \cdots, k_{n - 1}) = B_{i, i}^T(k_1, k_2, \cdots, k_{n - 1}; 1, 2, \cdots, n - 1)
B i , i ( 1 , 2 , ⋯ , n − 1 ; k 1 , k 2 , ⋯ , k n − 1 ) = B i , i T ( k 1 , k 2 , ⋯ , k n − 1 ; 1 , 2 , ⋯ , n − 1 ) ,所以
∣
L
i
,
i
∣
=
∣
B
i
,
i
B
i
,
i
T
∣
=
∑
1
≤
k
1
<
k
2
<
⋯
<
k
n
−
1
≤
m
∣
B
i
,
i
(
1
,
2
,
⋯
,
n
−
1
;
k
1
,
k
2
,
⋯
,
k
n
−
1
)
∣
⋅
∣
B
i
,
i
T
(
k
1
,
k
2
,
⋯
,
k
n
−
1
;
1
,
2
,
⋯
,
n
−
1
)
∣
=
∑
1
≤
k
1
<
k
2
<
⋯
<
k
n
−
1
≤
m
∣
B
i
,
i
(
1
,
2
,
⋯
,
n
−
1
;
k
1
,
k
2
,
⋯
,
k
n
−
1
)
∣
2
\begin{aligned} |L_{i, i}| = |B_{i, i} B_{i, i}^T| &= \sum_{1 \leq k_1 < k_2 < \cdots < k_{n - 1} \leq m} |B_{i, i}(1, 2, \cdots, n - 1; k_1, k_2, \cdots, k_{n - 1})| \cdot |B_{i, i}^T(k_1, k_2, \cdots, k_{n - 1}; 1, 2, \cdots, n - 1)| \\ &= \sum_{1 \leq k_1 < k_2 < \cdots < k_{n - 1} \leq m} |B_{i, i}(1, 2, \cdots, n - 1; k_1, k_2, \cdots, k_{n - 1})|^2 \end{aligned}
∣ L i , i ∣ = ∣ B i , i B i , i T ∣ = 1 ≤ k 1 < k 2 < ⋯ < k n − 1 ≤ m ∑ ∣ B i , i ( 1 , 2 , ⋯ , n − 1 ; k 1 , k 2 , ⋯ , k n − 1 ) ∣ ⋅ ∣ B i , i T ( k 1 , k 2 , ⋯ , k n − 1 ; 1 , 2 , ⋯ , n − 1 ) ∣ = 1 ≤ k 1 < k 2 < ⋯ < k n − 1 ≤ m ∑ ∣ B i , i ( 1 , 2 , ⋯ , n − 1 ; k 1 , k 2 , ⋯ , k n − 1 ) ∣ 2 由关联矩阵的定义可知,
B
′
=
B
i
,
i
(
1
,
2
,
⋯
,
n
−
1
;
k
1
,
k
2
,
⋯
,
k
n
−
1
)
B' = B_{i, i}(1, 2, \cdots, n - 1; k_1, k_2, \cdots, k_{n - 1})
B ′ = B i , i ( 1 , 2 , ⋯ , n − 1 ; k 1 , k 2 , ⋯ , k n − 1 ) 就是由图
G
G
G 的边
k
1
,
k
2
,
⋯
,
k
n
−
1
k_1, k_2, \cdots, k_{n - 1}
k 1 , k 2 , ⋯ , k n − 1 构成的子图
G
′
G'
G ′ 的关联矩阵。由连通性引理二得,当
G
′
G'
G ′ 不连通时,
∣
B
′
∣
=
0
|B'| = 0
∣ B ′ ∣ = 0 ;由连通性引理三得,当
G
′
G'
G ′ 是树时,
∣
det
B
′
∣
=
1
|\det B'| = 1
∣ det B ′ ∣ = 1 ,因此
∣
B
i
,
i
(
1
,
2
,
⋯
,
n
−
1
;
k
1
,
k
2
,
⋯
,
k
n
−
1
)
∣
2
=
1
|B_{i, i}(1, 2, \cdots, n - 1; k_1, k_2, \cdots, k_{n - 1})|^2 = 1
∣ B i , i ( 1 , 2 , ⋯ , n − 1 ; k 1 , k 2 , ⋯ , k n − 1 ) ∣ 2 = 1 当且仅当由图
G
G
G 的边
k
1
,
k
2
,
⋯
,
k
n
−
1
k_1, k_2, \cdots, k_{n - 1}
k 1 , k 2 , ⋯ , k n − 1 构成的子图是树,得证。
参考资料
Matrix - Tree 定理(生成树计数)的另类证明和简单拓展 - MoebiusMeow 矩阵树定理 - Freopen Matrix - Tree 矩阵树定理 - Lucky_Glass 拉普拉斯展开 - 百度百科 Binet - Cauchy 定理 - 百度百科