1. 程式人生 > 其它 >淺談矩陣樹定理及其應用(Matrix-Tree)

淺談矩陣樹定理及其應用(Matrix-Tree)

矩陣樹定理

用途:解決生成樹(樹形圖)計數問題。

前置知識

矩陣初等變換

  1. 交換兩行/兩列,\(Det\)\(-1\)
  2. 某一行乘\(c\)\(Det\)\(c\)

行列式

高斯消元求行列式

柯西-比內公式

有一個\(n\cdot m\)的矩陣\(A\)\(m\cdot n\)的矩陣\(B\),令\(n\le m\)
\(Det(AB)=\sum\limits_{S}Det(A_S)\cdot Det(B_S)\),其中\(S\)表示集合{1,2,3...m}的一個大小為\(n\)的子集合,\(A_S\)表示\(A\)保留\(S\)中的\(n\)列的子矩陣,\(B_S\)表示保留\(S\)

中的\(n\)行的子矩陣

結論

無向圖,度數矩陣-鄰接矩陣,隨便求一個主子式
外向樹,入度-鄰,去掉根所在的那一行一列
內向樹,出度-鄰,去掉根所在的那一行一列
\(K\) 為度數矩陣 \(-\) 鄰接矩陣,

\[Det(K)=\sum\limits_{T}\prod_{e_i\in T} w_{e_i} \]

無向無邊權圖的矩陣樹證明

\(L\) 為基爾霍夫矩陣(拉普拉斯矩陣):無向圖的度數矩陣\(-\)鄰接矩陣

  1. \(L\)中行的和為\(0\),列的和為\(0\)
  2. \(Det(L)\)\(0\)(高斯消元到最後一行只有一個數可以非零,並且這一行和為 \(0\) )

\(L_{1,1}\)

\(L\)去掉第\(1\)行第\(1\)列的主子式,\(Det(L_{1,1})\)就是生成樹個數
下面的大點、小點均表示這條邊連線的兩個點的標號大小
構造關係矩陣\(B\):

\[ B_{i,j}=\left\{ \begin{aligned} 1 & &{v_i\ 與\ e_j\ 相連,v_i\ 標號比\ e_j連線的另一點小}\\ -1 & &{v_i\ 與\ e_j\ 相連,v_i\ 標號比\ e_j連線的另一點大}\\ 0 & &{otherwise}\\ \end{aligned} \right. \]