行列式入门与矩阵树定理完整证明

前置技能

行列式

定义

对于一个 n×nn \times n 的矩阵 AA,记它第 ii 行第 jj 列的元素为 ai,ja_{i, j},以及一个 1n1 \sim n 的排列 pp,记 λA(p)=(1)τ(p)i=1nai,pi\lambda_A(p) = (-1) ^ {\tau(p)} \prod_{i = 1}^{n} a_{i, p_i}(其中 τ(p)\tau(p)pp 的逆序对个数)则 A=detA=pλA(p)=p((1)τ(p)i=1nai,pi)|A| = \det A = \sum_{p} \lambda_A(p) = \sum_{p} \left( (-1) ^ {\tau(p)} \prod_{i = 1}^{n} a_{i, p_i} \right)(其中 A|A|detA\det A 都是 AA 的行列式的意思,后文有时为了便于区分行列式和绝对值会使用 detA\det A,其余大部分时候使用 A|A|)显然行列式运算结果是数量。

简单理解一下发现这样的计算方法的时间复杂度是 O(nlognn!)O(n \cdot \log n \cdot n!)因此这个定义没什么用

性质

除了少数几个,名字基本都是乱编的

拉普拉斯展开

对于一个 n×nn \times n 的矩阵 AA 和任意一个 1in1 \leq i \leq n,有 A=j=1n(1)i+jai,jAi,j|A| = \sum_{j = 1}^{n} (-1)^{i + j} a_{i, j} |A_{i, j}| 其中 Ai,jA_{i, j} 指矩阵 AA 删去第 ii 行和第 jj 列的所有元素后形成的一个 (n1)×(n1)(n - 1) \times (n - 1) 的矩阵。这个计算式称为对第 ii 行进行拉普拉斯展开。

证明:
根据定义每个 λA(p)\lambda_A(p) 一定有一个因子 xx 满足 x{ai,1,ai,2,,ai,n}x \in \{a_{i, 1}, a_{i, 2}, \cdots, a_{i, n}\},枚举 jj 得到这个因子 ai,ja_{i, j} 和满足 pi=jp_i = j 的排列 pp,然后将这个 pip_i 删除,并把 pp 中所有大于 jj 的元素减一得到 qqqq1n11 \sim n-1 的排列),于是在 n,i,jn, i, j 确定时有了一个 ppqq 之间的一一对应的函数关系。

例如,当 n=3,i=1,j=2n = 3, i = 1, j = 2 时,满足 p1=2p_1 = 2pp{2,1,3},{2,3,1}\{2, 1, 3\}, \{2, 3, 1\},将 22 删除,得到{1,3},{3,1}\{1, 3\}, \{3, 1\},然后将 33 减一,得到 qq{1,2}\{1, 2\}{2,1}\{2, 1\};根据 n=3,i=1,j=2n = 3, i = 1, j = 2,亦可将 qq 还原为 pp

ξ(p)=q\xi(p) = q,那么 pλA(p)[j=pi]ai,j=pλAi,j(ξ(p))[j=pi]\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| 右边变为直接枚举 ξ(p)\xi(p),即 pλA(p)[j=pi]ai,j=qλAi,j(q)=detAi,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}| pλA(p)[j=pi]=ai,jdetAi,j\left| \sum_{p} \lambda_A(p) \cdot [j = p_i] \right| = |a_{i, j} \cdot \det A_{i, j}| 再考虑正负号,即 τ(p)\tau(p)τ(ξ(p))\tau(\xi(p)) 的奇偶性的差别,这取决于 pip_i 前面大于 jj 的数量和 pip_i 后面小于 jj 的数量,即 k=1i1[pk>j]+k=i+1n[pk<j]=k=1i1[pk>j]+(j1k=1i1[pk<j])=k=1i1[pk>j]+j1(i1k=1i1[pk>j])=2k=1i1[pk>j]+(i+j)i+jmod  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} 于是 τ(p)=(1)i+jτ(ξ(p))\tau(p) = (-1)^{i + j} \tau(\xi(p)),则pλA(p)[j=pi]=(1)i+jai,jdetAi,j\sum_{p} \lambda_A(p) \cdot [j = p_i] = (-1)^{i + j} \cdot a_{i, j} \cdot \det A_{i, j}
于是 A=pλA(p)=j=1npλA(p)[j=pi]=j=1n(1)i+jai,jAi,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}|

(百度百科“拉普拉斯展开”中有一个看不怎么懂的高端证明,但比较简洁,emmm 感觉上跟我这个自己 yy 的证明可能差不多)

线性性

可乘性

对于任意 1in1 \leq i \leq nkk,若 A=(a1,1a1,2a1,nkai,1kai,2kai,nan,1an,2an,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}B=(a1,1a1,2a1,nai,1ai,2ai,nan,1an,2an,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},则 A=kB|A| = k|B|

证明:
根据定义,对于每个 ppλA(p)=kλB(p)\lambda_A(p) = k \cdot \lambda_B(p),得证。

可加性

对于任意 1in1 \leq i \leq nkka1,1a1,2a1,nai1,1ai1,2ai1,nai,1+bi,1ai,2+bi,2ai,n+bi,nai+1,1ai+1,2ai+1,nan,1an,2an,n=a1,1a1,2a1,nai1,1ai1,2ai1,nai,1ai,2ai,nai+1,1ai+1,2ai+1,nan,1an,2an,n+a1,1a1,2a1,nai1,1ai1,2ai1,nbi,1bi,2bi,nai+1,1ai+1,2ai+1,nan,1an,2an,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}

证明:
对第 ii 行拉普拉斯展开即证。

不重性

对于 n×n(n>1)n \times n (n > 1) 的矩阵 AA,若存在 1in,1jn,jj1 \leq i \leq n, 1 \leq j \leq n, j \neq j 使得对于任意 1kn1 \leq k \leq n 都有 ai,k=aj,ka_{i, k} = a_{j, k},即矩阵中某两行对应相等,则 A=0|A| = 0

证明:
若某排列 pp 满足 px=i,py=j(x<y)p_x = i, p_y = j (x < y),记 qqpp 交换第 x,yx, y 个元素后得到的排列,即 qy=i,qx=j(x<y)q_y = i, q_x = j (x < y),那么 λA(p)=λA(q)\lambda_A(p) = -\lambda_A(q),因为两者逆序对个数相差 11
于是将所有 1n1 \sim n 的排列这样两两配对,即可使所有 λA(p)\lambda_A(p) 抵消为 00,得证。

可倍加性

对于任意 1in,1jn,jj1 \leq i \leq n, 1 \leq j \leq n, j \neq j
a1,1a1,2a1,nai,1ai,2ai,nan,1an,2an,n=a1,1a1,2a1,nai,1+kaj,1ai,2+kaj,2ai,n+kaj,nan,1an,2an,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}

证明:
a1,1a1,2a1,nai,1+kaj,1ai,2+kaj,2ai,n+kaj,nan,1an,2an,n=a1,1a1,2a1,nai,1ai,2ai,nan,1an,2an,n+a1,1a1,2a1,nkaj,1kaj,2kaj,nan,1an,2an,n()=a1,1a1,2a1,nai,1ai,2ai,nan,1an,2an,n+ka1,1a1,2a1,naj,1aj,2aj,nan,1an,2an,n(线)=a1,1a1,2a1,nai,1ai,2ai,nan,1an,2an,n+0()=a1,1a1,2a1,nai,1ai,2ai,nan,1an,2an,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}

转置不变性

任意一个 n×nn \times n 的矩阵 AA,满足 AT=A|A^T| = |A|ATA^T 表示矩阵 AA 的转置,即 ai,jaj,ia_{i, j} \to a_{j, i}(换句话说,将 AA 沿“左上 - 右下”对角线翻折即得到 ATA^T),下同。

证明:
对于一个排列 pp,根据转置的定义,令 ξ(p)=q (qpi=i)\xi(p) = q\ (q_{p_i} = i),那么 λA(p)=λAT(ξ(p))\lambda_A(p) = \lambda_{A^T}(\xi(p))。考虑 τ(p)\tau(p)τ(ξ(p))\tau(\xi(p)) 的关系:
Ai,pi (1in)A_{i, p_i}\ (1 \leq i \leq n) 记做特殊点,令 Tp(i)\Tau_p(i) 表示 Ai,piA_{i, p_i} 的左下方的特殊点数量,Tp(i)\Tau'_p(i) 表示Ai,piA_{i, p_i} 的右上方的特殊点数量,则 τ(p)=i=1nTp(i)=i=1nTp(i)\tau(p) = \sum_{i = 1}^{n} \Tau_p(i) = \sum_{i = 1}^{n} \Tau'_p(i),由于是沿对角线翻折,所以显然 Tp(i)=Tq(i)\Tau_p(i) = \Tau'_q(i)(事实上只是把“左下方”的特殊点变到“右上方”,“右上方”变到“左下方”),于是 τ(p)=τ(q)\tau(p) = \tau(q)
因此 λA(p)=λAT(ξ(p))\lambda_A(p) = \lambda_{A^T}(\xi(p)),得证。

可交换性

行可交换性

矩阵两行交换,矩阵的行列式值反号。

证明:
交换 AA 的两行 u,vu, v 可视为将 vv 行加到 uu 行上(①)得到一个新矩阵 AA',再从 AA'vv 行上减去 AA'uu 行(②),再将 AA'uu 行全部取反(③)。根据可倍加性,① 和 ② 均不改变行列式的值,根据可乘性,③ 操作使行列式的值反号,得证。

列可交换性

矩阵两列交换,矩阵行列式值反号。

证明:
根据转置不变性,先转置再用行可交换性交换两行,再转置回来即证。

优化行列式的计算

对矩阵 AA 的第一行进行拉普拉斯展开可以证明:当 AA 为一个上三角矩阵(即任意 i>ji > j,满足 ai,j=0a_{i, j} = 0)时:A=i=1nai,i|A| = \prod_{i = 1}^{n} a_{i, i} 发现高斯消元用到的是可倍加性、可交换性,于是我们对 AA 高斯消元,可以得到一个上三角矩阵,这个矩阵的对角线乘积即为 AA 的行列式的绝对值(可交换性会使其反号)!于是我们做到了 O(n3)O(n^3) 求行列式的值。

矩阵树定理

前置定义

对于一个无向图 G=(V,E)G = (V, E),其中 V=n|V| = n(点数),E=m|E| = m(边数):

  • GG 的每条边任意分配一个方向,则它的关联矩阵(大小为 m×nm \times nBBbi,j={1 j  i 1 j  i 0b_{i, j} = \begin{cases} 1 & 点\ j\ 是边\ i\ 的起点 \\ -1 & 点\ j\ 是边\ i\ 的终点 \\ 0 & 其他\end{cases}
  • GG 的基尔霍夫矩阵(大小为 n×nn \times nLLli,j={dii=jei,jijl_{i, j} = \begin{cases} d_i & i = j \\ -e_{i, j} & i \neq j\end{cases} (其中 did_i 表示 ii 号点的度,ei,je_{i, j} 连接点 i,ji, j 的边的数量)

一些引理

转置引理

L=BBTL = BB^T L,B,BTL, B, B^T 定义如上,乘法是矩阵乘法。

证明:
按照矩阵乘法的规则展开即证。
事实上如果定义两个序列相乘的结果是对应位置的乘积之和的话,矩阵乘法将 BB 的列两两相乘得到了一个新矩阵,这个矩阵就是 LL

连通性引理

引理 1

GG 是一个连通图,那么 L=0|L| = 0

证明:
GG 是连通图,那么根据定义 LL 的每一列的元素之和都为 00,再根据可倍加性,将其他所有行加到某一行上,这一行的元素就全部为零,再对这一行进行拉普拉斯展开,得到 L=0|L| = 0

引理 2

GG 不连通,则对任意 1in1 \leq i \leq nLi,i=0|L_{i, i}| = 0

证明:
根据行列可交换性,我们将同一联通块的点换到一起,得到的新矩阵 LL' 满足 detL=detL|\det L'| = |\det L|,并且 LL' 长这个样子:(A10000A20000A30000Ak)\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}0\bold{0} 代表零矩阵,kk 是联通块的个数)
由于 GG 不连通,所以 k2k \geq 2,所以 Li,iL_{i, i} 至少包含一个 Ax(1xk)A_x (1 \leq x \leq k)。因为 AxA_x 是一个独立连通子图,所以 AxA_x 可以经过适当操作使得其对角线上某个元素为 00,进而 Li,i=0|L_{i, i}| = 0

引理 3

GG 是一个树,则对任意 1in1 \leq i \leq ndetLi,i=1|\det L_{i, i}| = 1

证明:
将这个树的结点拓扑排序,使得对于任意点 ii,去除掉所有 1i11 \sim i - 1 的点后 ii 的度数为 11,这可以通过不断“摘掉”叶子结点实现。然后以这个顺序整理矩阵 LL 的各行得到 LL',我们对 LL' 模拟高斯消元的过程:
假设当前到了第 ii 行。没有消元时,由于我们拓扑排序了,那么 li,il'_{i, i} 右边(“右边”指所有 li,j (j>i)l'_{i, j}\ (j > i),“左边”“上面”“下面”同理)和下面有且仅有 111-1,左边和上面有且仅有 li,i1l'_{i, i} - 11-1;由于我们用前 i1i - 1 行消掉了 li,il'_{i, i} 前面的 li,i1l'_{i, i} - 11-1, 并且 li,il'_{i, i} 上面有 li,i1l'_{i, i} - 11-1,于是 li,il'_{i, i} 被加了 li,i1l'_{i, i} - 11-1,就变成了 11
按这样高斯消元下去,最后一个元素(ln,nl'_{n, n}) 肯定是 00。但我们要求的是 Li,i=Li,i|L_{i, i}| = |L'_{i, i}|,它是 LL' 删去了一行一列,因此 Li,iL'_{i, i} 消元过后的最后一个(ln1,n1l''_{n - 1, n - 1})是 11。于是对角线上的元素全部是 11,得证。

Binet - Cauchy 定理

AA 是一个 n×mn \times m 的矩阵,BB 是一个 m×nm \times n 的矩阵,有 AB={0n>mABn=m1k1<k2<<knmA(1,2,,n;k1,k2,,kn)B(k1,k2,,kn;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(1,2,,n;k1,k2,,kn)A(1, 2, \cdots, n; k_1, k_2, \cdots, k_n) 表示由 AA 的第 k1,k2,,knk_1, k_2, \cdots, k_n 列组成的矩阵;B(k1,k2,,kn;1,2,,n)B(k_1, k_2, \cdots, k_n; 1, 2, \cdots, n) 表示由 BB 的第 k1,k2,,knk_1, k_2, \cdots, k_n 行组成的矩阵)

证明:
我们构造两个辅助矩阵:M=(A0IB),  N=(0ABIB)M = \begin{pmatrix} A & \bold{0} \\ -I & B\end{pmatrix},\ \ N = \begin{pmatrix} \bold{0} & AB \\ -I & B\end{pmatrix} 其中 II 是单位矩阵(“左上 - 右下”对角线为 11 的矩阵)可以发现 M=N|M| = |N|,证明如下:
枚举 MM 矩阵的第 i (n+1in+m)i\ (n + 1 \leq i \leq n + m) 行,然后将第 ii 行乘以 ak1a_{k_1} 后加到第 11 行,乘以 ak2a_{k_2} 后加到第 22 行,……,乘以 akna_{k_n} 后加到第 nn 行。这样操作完后,根据矩阵乘法的定义,MM 变为了 NN,又因为倍加不变性,M=N|M| = |N|
用定义式计算 N|N|,由于只要 pp 选到 0\bold{0} 中的元素 λN(p)\lambda_N(p) 就为 00,所以只考虑 p1,p2,,pn[m+1,m+n]p_1, p_2, \cdots, p_n \in [m + 1, m + n] 的情况,又因为 ABAB 是个 n×nn \times n 的矩阵,所以 pn+1,pn+2,,pn+m[1,m]p_{n + 1}, p_{n + 2}, \cdots, p_{n + m} \in [1, m],所以 N=ABI=(1)mAB|N| = |AB| \cdot |-I| = (-1)^m |AB|
接下来分类计算 M|M|,并证明该定理:

  • n>mn > m 时(图中 C=ABC = AB,下同):
    n > m
    用定义式计算 MM,发现排列 pp 无论如何取都会取到 0\bold{0} 中的元素(原因就是 n>mn > m),因此 M=0|M| = 0,即 (1)mAB=0(-1)^m |AB| = 0,即 AB=0|AB| = 0
  • n=mn = m 时:
    n = m
    用定义式计算 MM,显然只有 p1,p2,,pn[1,n]p_1, p_2, \cdots, p_n \in [1, n]pn+1,pn+2,,pn+m[n+1,n+m]p_{n + 1}, p_{n + 2}, \cdots, p_{n + m} \in [n + 1, n + m]λM(p)\lambda_M(p) 不为 00,于是 M=AB(1)n2|M| = |A| \cdot |B| \cdot (-1)^{n^2} 其中 (1)n2(-1)^{n^2} 即为分开计算 A,BA, B 将两者的排列合起来新形成的逆序对数。因而 AB(1)n2=AB(1)m|A| \cdot |B| \cdot (-1)^{n^2} = |AB| \cdot (-1)^m,于是 AB=AB(1)mn2=AB(1)nn2=AB|A||B| = |AB|(-1)^{m - n^2} = |AB|(-1)^{n - n^2} = |AB|
  • n<mn < m 时:
    n < m
    这时候我们枚举 k1,k2,,kn[1,m]k_1, k_2, \cdots, k_n \in [1, m](就是定理中的 k1,k2,,knk_1, k_2, \cdots, k_n)表示在 AA 的各行中选的元素。为了使 λM(p)0\lambda_M(p) \neq 0I-I 中就只能选对角线上的元素,又因为 AA 中选的元素的正下方的那个 1-1 肯定不能选(因为pp 是排列),所以在 BB 被选了元素的行一定和 AA 被选了元素的列一样。举个例子,假设 n=3n = 3,红色是 A / BA\ /\ B 中含有被选中元素的列 // 行。
    例子
    这样一来 A(1,2,,n;k1,k2,,kn)|A(1, 2, \cdots, n;k_1, k_2, \cdots, k_n)| 的那些排列就和 B(k1,k2,,kn;1,2,,n)|B(k_1, k_2, \cdots, k_n; 1, 2, \cdots, n)| 的那些排列形成了一一对应的函数关系,于是M=1k1<k2<<knmA(1,2,,n;k1,k2,,kn)B(k1,k2,,kn;1,2,,n)(1)mn+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} 其中 (1)mn(-1)^{m - n}I-I 的贡献, xx 是“新构成”的逆序对个数,所谓新构成,就是三部分的逆序对个数之和:I-IAAI-IBBAABB。由于枚举出的东西关于对角线对称,所以I-IAA 之间的逆序对数等于 I-IBB 之间的逆序对数,于是 xx 可以转化为 AABB 之间的逆序对数,即 n2n^2。于是 M=1k1<k2<<knmA(1,2,,n;k1,k2,,kn)B(k1,k2,,kn;1,2,,n)(1)mn+x=1k1<k2<<knmA(1,2,,n;k1,k2,,kn)B(k1,k2,,kn;1,2,,n)(1)mn+n2=AB(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} 于是 AB=1k1<k2<<knmA(1,2,,n;k1,k2,,kn)B(k1,k2,,kn;1,2,,n)(1)n2n=1k1<k2<<knmA(1,2,,n;k1,k2,,kn)B(k1,k2,,kn;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}

定理得证。

该证明参考了 Freopen 大佬的博客,详见参考资料。同样百度百科上有个很线代看不懂的证明。

矩阵树定理

对于 nn 个点 mm 条边的无向图 GG 以及任意一个 1in1 \leq i \leq nLii|L_{ii}| 即为它的生成树个数。

证明:
由转置引理 Li,i=Bi,iBi,iT|L_{i, i}| = |B_{i, i} B_{i, i}^T| 因为 Bi,i,Bi,iTB_{i, i}, B_{i, i}^T 分别是大小为 (n1)×(m1),(m1)×(n1)(n - 1) \times (m - 1), (m - 1) \times (n - 1) 的矩阵,所以由 Binet - Cauchy 定理得 Li,i=Bi,iBi,iT=1k1<k2<<kn1mBi,i(1,2,,n1;k1,k2,,kn1)Bi,iT(k1,k2,,kn1;1,2,,n1)|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)| 由于 Bi,i(1,2,,n1;k1,k2,,kn1)=Bi,iT(k1,k2,,kn1;1,2,,n1)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),所以 Li,i=Bi,iBi,iT=1k1<k2<<kn1mBi,i(1,2,,n1;k1,k2,,kn1)Bi,iT(k1,k2,,kn1;1,2,,n1)=1k1<k2<<kn1mBi,i(1,2,,n1;k1,k2,,kn1)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} 由关联矩阵的定义可知,B=Bi,i(1,2,,n1;k1,k2,,kn1)B' = B_{i, i}(1, 2, \cdots, n - 1; k_1, k_2, \cdots, k_{n - 1}) 就是由图 GG 的边 k1,k2,,kn1k_1, k_2, \cdots, k_{n - 1} 构成的子图 GG' 的关联矩阵。由连通性引理二得,当 GG' 不连通时,B=0|B'| = 0;由连通性引理三得,当 GG' 是树时,detB=1|\det B'| = 1,因此 Bi,i(1,2,,n1;k1,k2,,kn1)2=1|B_{i, i}(1, 2, \cdots, n - 1; k_1, k_2, \cdots, k_{n - 1})|^2 = 1 当且仅当由图 GG 的边 k1,k2,,kn1k_1, k_2, \cdots, k_{n - 1} 构成的子图是树,得证。

参考资料

Matrix - Tree 定理(生成树计数)的另类证明和简单拓展 - MoebiusMeow
矩阵树定理 - Freopen
Matrix - Tree 矩阵树定理 - Lucky_Glass
拉普拉斯展开 - 百度百科
Binet - Cauchy 定理 - 百度百科

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章