行列式與矩陣樹定理
行列式的定義
行列式(\(\mathrm{Determinant}\)) 是一個函數定義, 取值是一個標量。
對於一個 \(n \times n\) 的矩陣 \(A\), 它的行列式寫作 \(\mathrm{det}(A)\) 或 \(|A|\), 定義為 :
\(\sum\limits_{p}(-1)^{\tau(p)}\prod\limits_{i=1}^{n}a_{i,p_i}\)
\(p\) 表示一個 \(1 \dots n\) 的排列, \(\tau(p)\) 表示 \(p\) 的逆序對個數。
行列式的性質
-
互換矩陣的兩行或兩列, 行列式的值取反。
-
互換矩陣的一行和一列, 行列式的值不變。
-
矩陣某一行(一列)的值 \(\times k\), 行列式的值 \(\times k\)。
-
如果矩陣 \(A\) 的某一行(列)是另外兩個矩陣 \(B\) , \(C\) 的此行(列)的和, \(B, C\) 其他元素與 \(A\) 相同, 則 \(\mathrm{det}(A) = \mathrm{det}(B) + \mathrm{det}(C)\)。
-
如果矩陣兩行(列)互為比例關系, 則 \(\mathrm{det}(A) = 0\)。
-
把矩陣的一行全部乘上一個數再加在另一行, \(\mathrm{det}(A)\) 不變。
代數余子式
在一個 \(n\) 階行列式 \(D\) 中選出 \(k\) 行 \(k\) 列組成一個 \(k\) 階子行列式。
刪除在 \(k\) 行 \(k\) 列后剩下的行列式記作 \(n - k\) 階余子式。
設 \(A\) 在 \(D\) 中原來的元素行下標有集合\(\mathbb{I=\{i_1,i_2 ,\dots ,i_k\}}\) 列下標有集合\(\mathbb{ J=\{j_1,j_2 ,\dots ,j_k\}}\),則有 \(\displaystyle(-1)^{\displaystyle(i_1+i_2+\dots+i_k)(j_1+j_2+\dots+j_k)}\times \det(M)\) 為 \(n\) 階行列式 \(D\) 的 \(k\) 階子式 \(A\) 的代數余子式。
對於單一元素 \(a_{i, j}\), 我們令其代數余子式為 \(A_{i, j}\), 余子式為 \(M_{i, j}\)。
行列式求值
由於性質 6, 直接用高斯消元把矩陣消成只剩主對角線, 此時 \(\mathrm{det}(A)\) 等於所有元素的乘積。但由於在消元中交換了行, 由於性質 1, 還要再記錄交換的次數。
矩陣樹定理
給定一個無向無權圖 \(G\), 設 \(D\) 為度數矩陣, 當 \(i = j\) 時, $D_{i, j} $ 等於點 \(i\) 的度數, \(i \neq j\) 時, \(D_{i, j} = 0\)。
設鄰接矩陣 \(A\), \(A_{i, j}\) 表示 \(i, j\) 之間的邊的條數。
定義圖 \(G\) 的 基爾霍夫 \(\mathrm{Kirchhoff}\) 矩陣 \(C = D - A\)。
矩陣樹定理 : \(G\) 的所有不同的生成樹的個數等於 \(C\) 中任何一個 \(n - 1\) 階主子式的行列式的絕對值。
例題 :
題意 : 給定圖 \(G\), 求所有生成樹的價值, 其中價值定義為 :
\(val(T) = \sum\limits_{i=1}^{n - 1}w_i \times \gcd(\sum\limits_{i=1}^{n - 1}w_i)\)
設 \(\gcd(\sum\limits_{i=1}^{n-1}w_i) = S\)。
首先一坨 \(\gcd\) 可以歐拉反演或莫比烏斯反演掉。
\(S=\sum\limits_{d|S}\varphi(d)\), 相當於所有 \(S\) 的倍數的邊權做一次矩陣樹。
但是本題要求生成樹的權值之和, 而普通的是計算乘積。
我們把一條邊看成一個一次多項式 \(F(x) = 1 + kx\), 其中 \(k\) 是這條邊的權值。
不難發現多項式乘起來之后的一次項 \(G(x)[1] = \sum\limits_{e}w_e\)。
多項式怎么求逆 ? 設原多項式為 \(a +bx\), 則我們要求一個 \(c+dx\) 使得 \((a+bx)(c+dx) = 1 (\mod(x^2))\)
簡單拆一下可得 \(ac = 1, bc +ad = bd = 0\), 顯然 $c = a^{-1}, d = -b \cdot a^{-1} \cdot a^{-1} = -b \cdot a^{-2} $。
所以逆等於 \((a^{-1}, -ba^{-2})\)。
LGV引理
引理介紹 :