文章目录

  • 前置技能
  • 行列式
    • 定义
    • 性质
      • 拉普拉斯展开
      • 线性性
        • 可乘性
        • 可加性
      • 不重性
      • 可倍加性
      • 转置不变性
      • 可交换性
        • 行可交换性
        • 列可交换性
    • 优化行列式的计算
  • 矩阵树定理
    • 前置定义
    • 一些引理
      • 转置引理
      • 连通性引理
        • 引理 1
        • 引理 2
        • 引理 3
      • Binet - Cauchy 定理
    • 矩阵树定理
  • 参考资料

前置技能

  • 简单的数学知识
  • 高斯消元

行列式

定义

对于一个 n×nn \times nn×n 的矩阵 AAA,记它第 iii 行第 jjj 列的元素为 ai,ja_{i, j}ai,j​,以及一个 1∼n1 \sim n1∼n 的排列 ppp,记 λA(p)=(−1)τ(p)∏i=1nai,pi\lambda_A(p) = (-1) ^ {\tau(p)} \prod_{i = 1}^{n} a_{i, p_i}λA​(p)=(−1)τ(p)i=1∏n​ai,pi​​(其中 τ(p)\tau(p)τ(p) 是 ppp 的逆序对个数)则 ∣A∣=det⁡A=∑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∣=detA=p∑​λA​(p)=p∑​((−1)τ(p)i=1∏n​ai,pi​​)(其中 ∣A∣|A|∣A∣ 和 det⁡A\det AdetA 都是 AAA 的行列式的意思,后文有时为了便于区分行列式和绝对值会使用 det⁡A\det AdetA,其余大部分时候使用 ∣A∣|A|∣A∣)显然行列式运算结果是数量。

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

性质

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

拉普拉斯展开

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

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

例如,当 n=3,i=1,j=2n = 3, i = 1, j = 2n=3,i=1,j=2 时,满足 p1=2p_1 = 2p1​=2 的 ppp 有 {2,1,3},{2,3,1}\{2, 1, 3\}, \{2, 3, 1\}{2,1,3},{2,3,1},将 222 删除,得到{1,3},{3,1}\{1, 3\}, \{3, 1\}{1,3},{3,1},然后将 333 减一,得到 qqq 为 {1,2}\{1, 2\}{1,2} 和 {2,1}\{2, 1\}{2,1};根据 n=3,i=1,j=2n = 3, i = 1, j = 2n=3,i=1,j=2,亦可将 qqq 还原为 ppp。

令 ξ(p)=q\xi(p) = qξ(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|∣∣∣∣​ai,j​∑p​λA​(p)⋅[j=pi​]​∣∣∣∣​=∣∣∣∣∣​p∑​λAi,j​​(ξ(p))⋅[j=pi​]∣∣∣∣∣​ 右边变为直接枚举 ξ(p)\xi(p)ξ(p),即 ∣∑pλA(p)⋅[j=pi]ai,j∣=∣∑qλAi,j(q)∣=∣det⁡Ai,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}|∣∣∣∣​ai,j​∑p​λA​(p)⋅[j=pi​]​∣∣∣∣​=∣∣∣∣∣​q∑​λAi,j​​(q)∣∣∣∣∣​=∣detAi,j​∣ ∣∑pλA(p)⋅[j=pi]∣=∣ai,j⋅det⁡Ai,j∣\left| \sum_{p} \lambda_A(p) \cdot [j = p_i] \right| = |a_{i, j} \cdot \det A_{i, j}|∣∣∣∣∣​p∑​λA​(p)⋅[j=pi​]∣∣∣∣∣​=∣ai,j​⋅detAi,j​∣ 再考虑正负号,即 τ(p)\tau(p)τ(p) 与 τ(ξ(p))\tau(\xi(p))τ(ξ(p)) 的奇偶性的差别,这取决于 pip_ipi​ 前面大于 jjj 的数量和 pip_ipi​ 后面小于 jjj 的数量,即 ∑k=1i−1[pk>j]+∑k=i+1n[pk<j]=∑k=1i−1[pk>j]+(j−1−∑k=1i−1[pk<j])=∑k=1i−1[pk>j]+j−1−(i−1−∑k=1i−1[pk>j])=2∑k=1i−1[pk>j]+(i+j)≡i+jmod2\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​[pk​>j]+k=i+1∑n​[pk​<j]k=1∑i−1​[pk​>j]+(j−1−k=1∑i−1​[pk​<j])k=1∑i−1​[pk​>j]+j−1−(i−1−k=1∑i−1​[pk​>j])2k=1∑i−1​[pk​>j]+(i+j)≡i+jmod2​ 于是 τ(p)=(−1)i+jτ(ξ(p))\tau(p) = (-1)^{i + j} \tau(\xi(p))τ(p)=(−1)i+jτ(ξ(p)),则∑pλA(p)⋅[j=pi]=(−1)i+j⋅ai,j⋅det⁡Ai,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=pi​]=(−1)i+j⋅ai,j​⋅detAi,j​
于是 ∣A∣=∑pλA(p)=∑j=1n∑pλA(p)⋅[j=pi]=∑j=1n(−1)i+jai,j∣Ai,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=pi​]=j=1∑n​(−1)i+jai,j​∣Ai,j​∣

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

线性性

可乘性

对于任意 1≤i≤n1 \leq i \leq n1≤i≤n 和 kkk,若 A=(a1,1a1,2⋯a1,n⋮⋮⋱⋮kai,1kai,2⋯kai,n⋮⋮⋱⋮an,1an,2⋯an,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=⎝⎜⎜⎜⎜⎜⎜⎛​a1,1​⋮kai,1​⋮an,1​​a1,2​⋮kai,2​⋮an,2​​⋯⋱⋯⋱⋯​a1,n​⋮kai,n​⋮an,n​​⎠⎟⎟⎟⎟⎟⎟⎞​,B=(a1,1a1,2⋯a1,n⋮⋮⋱⋮ai,1ai,2⋯ai,n⋮⋮⋱⋮an,1an,2⋯an,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=⎝⎜⎜⎜⎜⎜⎜⎛​a1,1​⋮ai,1​⋮an,1​​a1,2​⋮ai,2​⋮an,2​​⋯⋱⋯⋱⋯​a1,n​⋮ai,n​⋮an,n​​⎠⎟⎟⎟⎟⎟⎟⎞​,则 ∣A∣=k∣B∣|A| = k|B|∣A∣=k∣B∣。

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

可加性

对于任意 1≤i≤n1 \leq i \leq n1≤i≤n 和 kkk,∣a1,1a1,2⋯a1,n⋮⋮⋱⋮ai−1,1ai−1,2⋯ai−1,nai,1+bi,1ai,2+bi,2⋯ai,n+bi,nai+1,1ai+1,2⋯ai+1,n⋮⋮⋱⋮an,1an,2⋯an,n∣=∣a1,1a1,2⋯a1,n⋮⋮⋱⋮ai−1,1ai−1,2⋯ai−1,nai,1ai,2⋯ai,nai+1,1ai+1,2⋯ai+1,n⋮⋮⋱⋮an,1an,2⋯an,n∣+∣a1,1a1,2⋯a1,n⋮⋮⋱⋮ai−1,1ai−1,2⋯ai−1,nbi,1bi,2⋯bi,nai+1,1ai+1,2⋯ai+1,n⋮⋮⋱⋮an,1an,2⋯an,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}∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣​a1,1​⋮ai−1,1​ai,1​+bi,1​ai+1,1​⋮an,1​​a1,2​⋮ai−1,2​ai,2​+bi,2​ai+1,2​⋮an,2​​⋯⋱⋯⋯⋯⋱⋯​a1,n​⋮ai−1,n​ai,n​+bi,n​ai+1,n​⋮an,n​​∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣​=∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣​a1,1​⋮ai−1,1​ai,1​ai+1,1​⋮an,1​​a1,2​⋮ai−1,2​ai,2​ai+1,2​⋮an,2​​⋯⋱⋯⋯⋯⋱⋯​a1,n​⋮ai−1,n​ai,n​ai+1,n​⋮an,n​​∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣​+∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣​a1,1​⋮ai−1,1​bi,1​ai+1,1​⋮an,1​​a1,2​⋮ai−1,2​bi,2​ai+1,2​⋮an,2​​⋯⋱⋯⋯⋯⋱⋯​a1,n​⋮ai−1,n​bi,n​ai+1,n​⋮an,n​​∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣∣​

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

不重性

对于 n×n(n>1)n \times n (n > 1)n×n(n>1) 的矩阵 AAA,若存在 1≤i≤n,1≤j≤n,j≠j1 \leq i \leq n, 1 \leq j \leq n, j \neq j1≤i≤n,1≤j≤n,j​=j 使得对于任意 1≤k≤n1 \leq k \leq n1≤k≤n 都有 ai,k=aj,ka_{i, k} = a_{j, k}ai,k​=aj,k​,即矩阵中某两行对应相等,则 ∣A∣=0|A| = 0∣A∣=0。

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

可倍加性

对于任意 1≤i≤n,1≤j≤n,j≠j1 \leq i \leq n, 1 \leq j \leq n, j \neq j1≤i≤n,1≤j≤n,j​=j:
∣a1,1a1,2⋯a1,n⋮⋮⋱⋮ai,1ai,2⋯ai,n⋮⋮⋱⋮an,1an,2⋯an,n∣=∣a1,1a1,2⋯a1,n⋮⋮⋱⋮ai,1+kaj,1ai,2+kaj,2⋯ai,n+kaj,n⋮⋮⋱⋮an,1an,2⋯an,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,1​⋮ai,1​⋮an,1​​a1,2​⋮ai,2​⋮an,2​​⋯⋱⋯⋱⋯​a1,n​⋮ai,n​⋮an,n​​∣∣∣∣∣∣∣∣∣∣∣∣​=∣∣∣∣∣∣∣∣∣∣∣∣​a1,1​⋮ai,1​+kaj,1​⋮an,1​​a1,2​⋮ai,2​+kaj,2​⋮an,2​​⋯⋱⋯⋱⋯​a1,n​⋮ai,n​+kaj,n​⋮an,n​​∣∣∣∣∣∣∣∣∣∣∣∣​

证明:
∣a1,1a1,2⋯a1,n⋮⋮⋱⋮ai,1+kaj,1ai,2+kaj,2⋯ai,n+kaj,n⋮⋮⋱⋮an,1an,2⋯an,n∣=∣a1,1a1,2⋯a1,n⋮⋮⋱⋮ai,1ai,2⋯ai,n⋮⋮⋱⋮an,1an,2⋯an,n∣+∣a1,1a1,2⋯a1,n⋮⋮⋱⋮kaj,1kaj,2⋯kaj,n⋮⋮⋱⋮an,1an,2⋯an,n∣(可加性)=∣a1,1a1,2⋯a1,n⋮⋮⋱⋮ai,1ai,2⋯ai,n⋮⋮⋱⋮an,1an,2⋯an,n∣+k∣a1,1a1,2⋯a1,n⋮⋮⋱⋮aj,1aj,2⋯aj,n⋮⋮⋱⋮an,1an,2⋯an,n∣(线性性)=∣a1,1a1,2⋯a1,n⋮⋮⋱⋮ai,1ai,2⋯ai,n⋮⋮⋱⋮an,1an,2⋯an,n∣+0(不重性)=∣a1,1a1,2⋯a1,n⋮⋮⋱⋮ai,1ai,2⋯ai,n⋮⋮⋱⋮an,1an,2⋯an,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}====​∣∣∣∣∣∣∣∣∣∣∣∣​a1,1​⋮ai,1​+kaj,1​⋮an,1​​a1,2​⋮ai,2​+kaj,2​⋮an,2​​⋯⋱⋯⋱⋯​a1,n​⋮ai,n​+kaj,n​⋮an,n​​∣∣∣∣∣∣∣∣∣∣∣∣​∣∣∣∣∣∣∣∣∣∣∣∣​a1,1​⋮ai,1​⋮an,1​​a1,2​⋮ai,2​⋮an,2​​⋯⋱⋯⋱⋯​a1,n​⋮ai,n​⋮an,n​​∣∣∣∣∣∣∣∣∣∣∣∣​+∣∣∣∣∣∣∣∣∣∣∣∣​a1,1​⋮kaj,1​⋮an,1​​a1,2​⋮kaj,2​⋮an,2​​⋯⋱⋯⋱⋯​a1,n​⋮kaj,n​⋮an,n​​∣∣∣∣∣∣∣∣∣∣∣∣​∣∣∣∣∣∣∣∣∣∣∣∣​a1,1​⋮ai,1​⋮an,1​​a1,2​⋮ai,2​⋮an,2​​⋯⋱⋯⋱⋯​a1,n​⋮ai,n​⋮an,n​​∣∣∣∣∣∣∣∣∣∣∣∣​+k∣∣∣∣∣∣∣∣∣∣∣∣​a1,1​⋮aj,1​⋮an,1​​a1,2​⋮aj,2​⋮an,2​​⋯⋱⋯⋱⋯​a1,n​⋮aj,n​⋮an,n​​∣∣∣∣∣∣∣∣∣∣∣∣​∣∣∣∣∣∣∣∣∣∣∣∣​a1,1​⋮ai,1​⋮an,1​​a1,2​⋮ai,2​⋮an,2​​⋯⋱⋯⋱⋯​a1,n​⋮ai,n​⋮an,n​​∣∣∣∣∣∣∣∣∣∣∣∣​+0∣∣∣∣∣∣∣∣∣∣∣∣​a1,1​⋮ai,1​⋮an,1​​a1,2​⋮ai,2​⋮an,2​​⋯⋱⋯⋱⋯​a1,n​⋮ai,n​⋮an,n​​∣∣∣∣∣∣∣∣∣∣∣∣​​(可加性)(线性性)(不重性)​

转置不变性

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

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

可交换性

行可交换性

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

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

列可交换性

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

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

优化行列式的计算

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

矩阵树定理

前置定义

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

  • 给 GGG 的每条边任意分配一个方向,则它的关联矩阵(大小为 m×nm \times nm×n) BBB:bi,j={1点j是边i的起点−1点j是边i的终点0其他b_{i, j} = \begin{cases} 1 & 点\ j\ 是边\ i\ 的起点 \\ -1 & 点\ j\ 是边\ i\ 的终点 \\ 0 & 其他\end{cases}bi,j​=⎩⎪⎨⎪⎧​1−10​点 j 是边 i 的起点点 j 是边 i 的终点其他​
  • GGG 的基尔霍夫矩阵(大小为 n×nn \times nn×n)LLL:li,j={dii=j−ei,ji≠jl_{i, j} = \begin{cases} d_i & i = j \\ -e_{i, j} & i \neq j\end{cases}li,j​={di​−ei,j​​i=ji​=j​ (其中 did_idi​ 表示 iii 号点的度,ei,je_{i, j}ei,j​ 连接点 i,ji, ji,j 的边的数量)

一些引理

转置引理

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

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

连通性引理

引理 1

若 GGG 是一个连通图,那么 ∣L∣=0|L| = 0∣L∣=0。

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

引理 2

若 GGG 不连通,则对任意 1≤i≤n1 \leq i \leq n1≤i≤n,∣Li,i∣=0|L_{i, i}| = 0∣Li,i​∣=0。

证明:
根据行列可交换性,我们将同一联通块的点换到一起,得到的新矩阵 L′L'L′ 满足 ∣det⁡L′∣=∣det⁡L∣|\det L'| = |\det L|∣detL′∣=∣detL∣,并且 L′L'L′ 长这个样子:(A100⋯00A20⋯000A3⋯0⋮⋮⋮⋱⋮000⋯Ak)\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}⎝⎜⎜⎜⎜⎜⎛​A1​00⋮0​0A2​0⋮0​00A3​⋮0​⋯⋯⋯⋱⋯​000⋮Ak​​⎠⎟⎟⎟⎟⎟⎞​(0\bold{0}0 代表零矩阵,kkk 是联通块的个数)
由于 GGG 不连通,所以 k≥2k \geq 2k≥2,所以 Li,iL_{i, i}Li,i​ 至少包含一个 Ax(1≤x≤k)A_x (1 \leq x \leq k)Ax​(1≤x≤k)。因为 AxA_xAx​ 是一个独立连通子图,所以 AxA_xAx​ 可以经过适当操作使得其对角线上某个元素为 000,进而 ∣Li,i∣=0|L_{i, i}| = 0∣Li,i​∣=0。

引理 3

若 GGG 是一个树,则对任意 1≤i≤n1 \leq i \leq n1≤i≤n,∣det⁡Li,i∣=1|\det L_{i, i}| = 1∣detLi,i​∣=1。

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

Binet - Cauchy 定理

设 AAA 是一个 n×mn \times mn×m 的矩阵,BBB 是一个 m×nm \times nm×n 的矩阵,有 ∣AB∣={0n>m∣A∣⋅∣B∣n=m∑1≤k1<k2<⋯<kn≤m∣A(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}∣AB∣=⎩⎪⎪⎨⎪⎪⎧​0∣A∣⋅∣B∣1≤k1​<k2​<⋯<kn​≤m∑​∣A(1,2,⋯,n;k1​,k2​,⋯,kn​)∣⋅∣B(k1​,k2​,⋯,kn​;1,2,⋯,n)∣​n>mn=mn<m​ (A(1,2,⋯,n;k1,k2,⋯,kn)A(1, 2, \cdots, n; k_1, k_2, \cdots, k_n)A(1,2,⋯,n;k1​,k2​,⋯,kn​) 表示由 AAA 的第 k1,k2,⋯,knk_1, k_2, \cdots, k_nk1​,k2​,⋯,kn​ 列组成的矩阵;B(k1,k2,⋯,kn;1,2,⋯,n)B(k_1, k_2, \cdots, k_n; 1, 2, \cdots, n)B(k1​,k2​,⋯,kn​;1,2,⋯,n) 表示由 BBB 的第 k1,k2,⋯,knk_1, k_2, \cdots, k_nk1​,k2​,⋯,kn​ 行组成的矩阵)

证明:
我们构造两个辅助矩阵:M=(A0−IB),N=(0AB−IB)M = \begin{pmatrix} A & \bold{0} \\ -I & B\end{pmatrix},\ \ N = \begin{pmatrix} \bold{0} & AB \\ -I & B\end{pmatrix}M=(A−I​0B​),  N=(0−I​ABB​) 其中 III 是单位矩阵(“左上 - 右下”对角线为 111 的矩阵)可以发现 ∣M∣=∣N∣|M| = |N|∣M∣=∣N∣,证明如下:
枚举 MMM 矩阵的第 i(n+1≤i≤n+m)i\ (n + 1 \leq i \leq n + m)i (n+1≤i≤n+m) 行,然后将第 iii 行乘以 ak1a_{k_1}ak1​​ 后加到第 111 行,乘以 ak2a_{k_2}ak2​​ 后加到第 222 行,……,乘以 akna_{k_n}akn​​ 后加到第 nnn 行。这样操作完后,根据矩阵乘法的定义,MMM 变为了 NNN,又因为倍加不变性,∣M∣=∣N∣|M| = |N|∣M∣=∣N∣。
用定义式计算 ∣N∣|N|∣N∣,由于只要 ppp 选到 0\bold{0}0 中的元素 λN(p)\lambda_N(p)λN​(p) 就为 000,所以只考虑 p1,p2,⋯,pn∈[m+1,m+n]p_1, p_2, \cdots, p_n \in [m + 1, m + n]p1​,p2​,⋯,pn​∈[m+1,m+n] 的情况,又因为 ABABAB 是个 n×nn \times nn×n 的矩阵,所以 pn+1,pn+2,⋯,pn+m∈[1,m]p_{n + 1}, p_{n + 2}, \cdots, p_{n + m} \in [1, m]pn+1​,pn+2​,⋯,pn+m​∈[1,m],所以 ∣N∣=∣AB∣⋅∣−I∣=(−1)m∣AB∣|N| = |AB| \cdot |-I| = (-1)^m |AB|∣N∣=∣AB∣⋅∣−I∣=(−1)m∣AB∣
接下来分类计算 ∣M∣|M|∣M∣,并证明该定理:

  • 当 n>mn > mn>m 时(图中 C=ABC = ABC=AB,下同):

    用定义式计算 MMM,发现排列 ppp 无论如何取都会取到 0\bold{0}0 中的元素(原因就是 n>mn > mn>m),因此 ∣M∣=0|M| = 0∣M∣=0,即 (−1)m∣AB∣=0(-1)^m |AB| = 0(−1)m∣AB∣=0,即 ∣AB∣=0|AB| = 0∣AB∣=0。
  • 当 n=mn = mn=m 时:

    用定义式计算 MMM,显然只有 p1,p2,⋯,pn∈[1,n]p_1, p_2, \cdots, p_n \in [1, n]p1​,p2​,⋯,pn​∈[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]pn+1​,pn+2​,⋯,pn+m​∈[n+1,n+m] 时 λM(p)\lambda_M(p)λM​(p) 不为 000,于是 ∣M∣=∣A∣⋅∣B∣⋅(−1)n2|M| = |A| \cdot |B| \cdot (-1)^{n^2}∣M∣=∣A∣⋅∣B∣⋅(−1)n2 其中 (−1)n2(-1)^{n^2}(−1)n2 即为分开计算 A,BA, BA,B 将两者的排列合起来新形成的逆序对数。因而 ∣A∣⋅∣B∣⋅(−1)n2=∣AB∣⋅(−1)m|A| \cdot |B| \cdot (-1)^{n^2} = |AB| \cdot (-1)^m∣A∣⋅∣B∣⋅(−1)n2=∣AB∣⋅(−1)m,于是 ∣A∣∣B∣=∣AB∣(−1)m−n2=∣AB∣(−1)n−n2=∣AB∣|A||B| = |AB|(-1)^{m - n^2} = |AB|(-1)^{n - n^2} = |AB|∣A∣∣B∣=∣AB∣(−1)m−n2=∣AB∣(−1)n−n2=∣AB∣
  • 当 n<mn < mn<m 时:

    这时候我们枚举 k1,k2,⋯,kn∈[1,m]k_1, k_2, \cdots, k_n \in [1, m]k1​,k2​,⋯,kn​∈[1,m](就是定理中的 k1,k2,⋯,knk_1, k_2, \cdots, k_nk1​,k2​,⋯,kn​)表示在 AAA 的各行中选的元素。为了使 λM(p)≠0\lambda_M(p) \neq 0λM​(p)​=0,−I-I−I 中就只能选对角线上的元素,又因为 AAA 中选的元素的正下方的那个 −1-1−1 肯定不能选(因为ppp 是排列),所以在 BBB 被选了元素的行一定和 AAA 被选了元素的列一样。举个例子,假设 n=3n = 3n=3,红色是 A/BA\ /\ BA / B 中含有被选中元素的列 /// 行。

    这样一来 ∣A(1,2,⋯,n;k1,k2,⋯,kn)∣|A(1, 2, \cdots, n;k_1, k_2, \cdots, k_n)|∣A(1,2,⋯,n;k1​,k2​,⋯,kn​)∣ 的那些排列就和 ∣B(k1,k2,⋯,kn;1,2,⋯,n)∣|B(k_1, k_2, \cdots, k_n; 1, 2, \cdots, n)|∣B(k1​,k2​,⋯,kn​;1,2,⋯,n)∣ 的那些排列形成了一一对应的函数关系,于是∣M∣=∑1≤k1<k2<⋯<kn≤m∣A(1,2,⋯,n;k1,k2,⋯,kn)∣⋅∣B(k1,k2,⋯,kn;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≤k1​<k2​<⋯<kn​≤m∑​∣A(1,2,⋯,n;k1​,k2​,⋯,kn​)∣⋅∣B(k1​,k2​,⋯,kn​;1,2,⋯,n)∣⋅(−1)m−n+x 其中 (−1)m−n(-1)^{m - n}(−1)m−n 是 −I-I−I 的贡献, xxx 是“新构成”的逆序对个数,所谓新构成,就是三部分的逆序对个数之和:−I-I−I 与 AAA、−I-I−I 与 BBB、AAA 与 BBB。由于枚举出的东西关于对角线对称,所以−I-I−I 与 AAA 之间的逆序对数等于 −I-I−I 与 BBB 之间的逆序对数,于是 xxx 可以转化为 AAA 与 BBB 之间的逆序对数,即 n2n^2n2。于是 ∣M∣=∑1≤k1<k2<⋯<kn≤m∣A(1,2,⋯,n;k1,k2,⋯,kn)∣⋅∣B(k1,k2,⋯,kn;1,2,⋯,n)∣⋅(−1)m−n+x=∑1≤k1<k2<⋯<kn≤m∣A(1,2,⋯,n;k1,k2,⋯,kn)∣⋅∣B(k1,k2,⋯,kn;1,2,⋯,n)∣⋅(−1)m−n+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}∣M∣​=1≤k1​<k2​<⋯<kn​≤m∑​∣A(1,2,⋯,n;k1​,k2​,⋯,kn​)∣⋅∣B(k1​,k2​,⋯,kn​;1,2,⋯,n)∣⋅(−1)m−n+x=1≤k1​<k2​<⋯<kn​≤m∑​∣A(1,2,⋯,n;k1​,k2​,⋯,kn​)∣⋅∣B(k1​,k2​,⋯,kn​;1,2,⋯,n)∣⋅(−1)m−n+n2=∣AB∣(−1)m​ 于是 ∣AB∣=∑1≤k1<k2<⋯<kn≤m∣A(1,2,⋯,n;k1,k2,⋯,kn)∣⋅∣B(k1,k2,⋯,kn;1,2,⋯,n)∣⋅(−1)n2−n=∑1≤k1<k2<⋯<kn≤m∣A(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}∣AB∣​=1≤k1​<k2​<⋯<kn​≤m∑​∣A(1,2,⋯,n;k1​,k2​,⋯,kn​)∣⋅∣B(k1​,k2​,⋯,kn​;1,2,⋯,n)∣⋅(−1)n2−n=1≤k1​<k2​<⋯<kn​≤m∑​∣A(1,2,⋯,n;k1​,k2​,⋯,kn​)∣⋅∣B(k1​,k2​,⋯,kn​;1,2,⋯,n)∣​

定理得证。

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

矩阵树定理

对于 nnn 个点 mmm 条边的无向图 GGG 以及任意一个 1≤i≤n1 \leq i \leq n1≤i≤n,∣Lii∣|L_{ii}|∣Lii​∣ 即为它的生成树个数。

证明:
由转置引理 ∣Li,i∣=∣Bi,iBi,iT∣|L_{i, i}| = |B_{i, i} B_{i, i}^T|∣Li,i​∣=∣Bi,i​Bi,iT​∣ 因为 Bi,i,Bi,iTB_{i, i}, B_{i, i}^TBi,i​,Bi,iT​ 分别是大小为 (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 定理得 ∣Li,i∣=∣Bi,iBi,iT∣=∑1≤k1<k2<⋯<kn−1≤m∣Bi,i(1,2,⋯,n−1;k1,k2,⋯,kn−1)∣⋅∣Bi,iT(k1,k2,⋯,kn−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)|∣Li,i​∣=∣Bi,i​Bi,iT​∣=1≤k1​<k2​<⋯<kn−1​≤m∑​∣Bi,i​(1,2,⋯,n−1;k1​,k2​,⋯,kn−1​)∣⋅∣Bi,iT​(k1​,k2​,⋯,kn−1​;1,2,⋯,n−1)∣ 由于 Bi,i(1,2,⋯,n−1;k1,k2,⋯,kn−1)=Bi,iT(k1,k2,⋯,kn−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)Bi,i​(1,2,⋯,n−1;k1​,k2​,⋯,kn−1​)=Bi,iT​(k1​,k2​,⋯,kn−1​;1,2,⋯,n−1),所以 ∣Li,i∣=∣Bi,iBi,iT∣=∑1≤k1<k2<⋯<kn−1≤m∣Bi,i(1,2,⋯,n−1;k1,k2,⋯,kn−1)∣⋅∣Bi,iT(k1,k2,⋯,kn−1;1,2,⋯,n−1)∣=∑1≤k1<k2<⋯<kn−1≤m∣Bi,i(1,2,⋯,n−1;k1,k2,⋯,kn−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}∣Li,i​∣=∣Bi,i​Bi,iT​∣​=1≤k1​<k2​<⋯<kn−1​≤m∑​∣Bi,i​(1,2,⋯,n−1;k1​,k2​,⋯,kn−1​)∣⋅∣Bi,iT​(k1​,k2​,⋯,kn−1​;1,2,⋯,n−1)∣=1≤k1​<k2​<⋯<kn−1​≤m∑​∣Bi,i​(1,2,⋯,n−1;k1​,k2​,⋯,kn−1​)∣2​ 由关联矩阵的定义可知,B′=Bi,i(1,2,⋯,n−1;k1,k2,⋯,kn−1)B' = B_{i, i}(1, 2, \cdots, n - 1; k_1, k_2, \cdots, k_{n - 1})B′=Bi,i​(1,2,⋯,n−1;k1​,k2​,⋯,kn−1​) 就是由图 GGG 的边 k1,k2,⋯,kn−1k_1, k_2, \cdots, k_{n - 1}k1​,k2​,⋯,kn−1​ 构成的子图 G′G'G′ 的关联矩阵。由连通性引理二得,当 G′G'G′ 不连通时,∣B′∣=0|B'| = 0∣B′∣=0;由连通性引理三得,当 G′G'G′ 是树时,∣det⁡B′∣=1|\det B'| = 1∣detB′∣=1,因此 ∣Bi,i(1,2,⋯,n−1;k1,k2,⋯,kn−1)∣2=1|B_{i, i}(1, 2, \cdots, n - 1; k_1, k_2, \cdots, k_{n - 1})|^2 = 1∣Bi,i​(1,2,⋯,n−1;k1​,k2​,⋯,kn−1​)∣2=1 当且仅当由图 GGG 的边 k1,k2,⋯,kn−1k_1, k_2, \cdots, k_{n - 1}k1​,k2​,⋯,kn−1​ 构成的子图是树,得证。

参考资料

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

行列式入门与矩阵树定理完整证明相关推荐

  1. 【学习笔记】矩阵树定理(Matrix-Tree)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 一.矩阵树定理 二.常用定理 三.例题 1. Luogu P6178 [模板]Matrix-Tr ...

  2. 学习小记-----行列式矩阵树定理Kirchhoff's theorem

    为什么我的标题要加上Kirchhoff's theorem呢,是因为之前我查这个定理是用这个英文在谷歌上查的,然后,,,,我看了20多分钟的英文维基百科,然后爬墙去做别的题目了QAQ 行列式 前置知识 ...

  3. [SP104 HIGH]Highways [HEOI2015]小Z的房间——矩阵树定理入门

    矩阵树定理: 用于计算无向连通图的生成树个数. 计算出整张图的度数矩阵D(即Di,iD_{i,i}Di,i​表示i的度数),和邻接矩阵A(即Ai,jA_{i,j}Ai,j​表示i和j的连边的数量),然 ...

  4. HDU多校6 - 6836 Expectation(矩阵树定理+高斯消元求行列式)

    题目链接:点击查看 题目大意:给出一张由 n 个点和 m 条边组成的无向图,对于任意一个生成树,其权值为 n - 1 条边的边权进行二进制的 and 运算,现在需要在图中任意选择一个生成树,问期望权值 ...

  5. 图论数学:矩阵树定理

    运用矩阵树定理进行生成树计数 给定一个n个点m条边的无向图,问生成树有多少种可能 直接套用矩阵树定理计算即可 矩阵树定理的描述如下: 首先读入无向图的邻接矩阵,u-v G[u][v]++ G[v][u ...

  6. 基尔霍夫矩阵矩阵树定理学习笔记

    背景: 好多东西没学. 勇士被快船惊天大逆转!!! 快船NBNBNB. 紧接着下午打球水杯被搞烂了......... 正题: Part1Part1Part1行列式: 对于一个n∗nn*nn∗n的矩阵A ...

  7. 基尔霍夫(kirchhoff)矩阵树定理

    引入问题   给n个点m条边的图,求该图的最小生成树个数. 定理内容   我们对这个图构造两个矩阵,分别是这个图的连通矩阵和度数矩阵.连通矩阵S1S1S1的第iii行第jjj列上的数字表示原无向图中编 ...

  8. 最小生成树、矩阵树定理、Prufer序列总结

    Kruskal算法 按边权排序,从小到大合并不在同一集合两点即可 Prim算法 每次加入一个到当前已选点集最近的点 P2619 [国家集训队]Tree I 考虑二分,每次给白边加上一个mid,通过这种 ...

  9. 矩阵树定理2020HDU多校第6场j-Expectation[位运算+期望]

    矩阵树定理 用于求解图上面生成树的个数,生成树的个数等于基尔霍夫矩阵的任何一个N-1阶主子式的行列式的绝对值 矩阵树模板 struct Matrix_Tree {ll a[N][N];Matrix_T ...

最新文章

  1. mongoDB数据库操作工具库
  2. PanoNet3D:一种3D目标检测方法
  3. 记一次Oracle数据故障排除过程
  4. python csv文件创建时间_记录 python 根据csv文件自动创建表插入数据
  5. UPS蓄电池的内阻没有参考值,如何才能发现劣化蓄电池?
  6. 1.10 访问对象的属性和行为
  7. CSS中background-position详述
  8. QDir, QFileInfo 和 QDirIterator 区别
  9. PyTorch:MNIST数据集手写数字识别
  10. python输入年份月份输出天数_6.2(输入年份 月份 输出该月天数)
  11. 3、oracle数据库的语法基础
  12. 简单的Gradle Java插件自定义
  13. 论文浅尝 | 利用冻结语言模型的多模态少样本学习
  14. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 26丨餐馆营业额变化增长【难度中等】​
  15. 坑爹的公交卡充值的流程
  16. java冒泡排序法对数组进行排序
  17. 网络打印机 RPC服务器不可用
  18. Servlet--HttpSession接口,HttpSessionContext接口,Cookie类
  19. 18Python标准库系列之logging模块
  20. 数控编程球面计算机,Mastercam9.1的数控编程

热门文章

  1. 【python爬虫】Ajax英雄的皮肤进行保存及英雄基本信息保存至Excel
  2. python flask oauth_基于python flask详述 OAuth 2.0 的运作流程
  3. 不要把时间浪费在无用的社交上
  4. Fc坦克大战java_FC版BattleCity(坦克大战)的Java实现!!!!!(二) | 学步园
  5. 【Arduino 物联网云平台酒精传感器】
  6. element ui - el-select 添加可输入功能
  7. 树莓派微型计算机教程,一步即达——Lakka傻瓜教程
  8. TCP: request_sock_TCP: Possible SYN flooding on port 80. Sending cookies. Check SNMP counters
  9. 【苹果推软件】安装OS imessage和faceTime
  10. 用C语言实现介于两个数字中间的数之和