學習筆記 生成樹計數 矩陣樹定理

2021-08-15 14:29:30 字數 1043 閱讀 3218

問題描述:給定n階無向圖求其生成樹個數。

引入:行列式

乙個n*n的矩陣a的行列式det(a)或者|a|定義為: ∑p

∈p(n

)(−1

)f(p

)πni

=1ai

,pi ∑p∈

p(n)

(−1)

f(p)

πi=1

nai,

pi

其中p(n)表示長度為n的排列的集合,f(p)表示排列p的逆序對個數。

行列式具有以下性質:

1. |a|

=|at

| |a|=

|at|

,即a的行列式等於其轉置矩陣的行列式。

2. |ab|=|a||b|。

3. 將a任意兩行交換得到b,則|b|=-|a|。

4. 將a任意一行同時乘上x得到b,則|b|=x|a|。

5. 將a任意一行乘上x再加到另一行上,行列式不變。

考慮一幫情況下如何求行列式,樸素的方法是列舉排列;但是根據上述性質,若能將矩陣消成只有對角線有值的情形,那麼此時行列式的值等於對角線的乘積,這樣紀錄此時和原來的行列式的比值即可。特殊的,如果對角線上有0,那麼行列式=0.

6. 每行每列和=0的矩陣行列式=0.由於高斯消元的時候該性質不變因而最終最後一行前n-1個數字=0,有一位和=0故最後一行全0,行列式=0.

矩陣樹定理:

先討論簡單圖。

定義度數矩陣d滿足d(i,i)=(點i的度數),d(i,j)=0(對於i≠

j i≠j

)。 定義鄰接矩陣a滿足若(i,j)間有連邊則a(i,j)=1,否則a(i,j)=0。

定義霍爾基弗矩陣c=d-a,即c(i,i)=(點i的度數),d(i,j)=-1當且僅當i和j間有連邊(i≠

j i≠j

) 定義乙個矩陣a的余子式m(i,j)表示a去掉第i行第j列後的行列式。

矩陣樹定理:基爾霍夫矩陣c的余子式m(i,i)的行列式(1≤

i≤n 1≤i

≤n

)就是圖g的生成樹數量。

矩陣樹定理 生成樹計數 學習筆記

對於乙個圖g gg,定義其度數矩陣為d g d g d g d g d g d g 是乙個n n n nn n大小的對角線矩陣.對角線上元素d i i d d i,i 為頂點i ii的度數。非對角線上的元素d i j d d i,j 為0 對於乙個圖g gg,定義其臨接矩陣為a g a g a g ...

學習筆記 矩陣樹定理

因為在臨時抱佛腳,所以是沒有證明的 對於行列式 d 任意第 i 行 列同理 按下式展開的值與行列式值相等 text sum n 1 cdot a cdot m 其中 m 是 a 的余子式。一些閒話 這個可以用來推導 輪狀病毒 一題中的遞推式。構造連通矩陣和度數矩陣。連通矩陣 a 的第 i 行第 j ...

BZOJ 1016 最小生成樹計數(矩陣樹定理)

我們把邊從小到大排序,然後依次插入一種權值的邊,然後把每乙個聯通塊合併。然後當一次插入的邊不止一條時做矩陣樹定理就行了。算出有多少種生成樹就行了。剩下的交給乘法原理。實現一不小心就會讓程式變得很醜 include include include include includeusing namesp...