生成樹計數的MatrixTree定理

2021-08-08 15:54:54 字數 486 閱讀 6318

在省選級別的題目裡面,我們會發現有一類生成樹計數的題目。就是給定乙個圖g=

,問這個圖生成樹有多少棵(節點和邊都不同)。

這裡我們可以用基爾霍夫矩陣做。我們定義乙個圖有度數矩陣

a ,有鄰接矩陣

b,其中ai

i 表示節點

i 的度數,其餘為0,bi

j=1表示有邊(i,j),反之為

0 。那麼基爾霍夫矩陣就是c=

a−b這裡先給出結論,生成樹的數量就是將

c 任意扔掉第r行第

r 列強行當做行列式求出來的值。

怎麼求行列式的值呢?強行展開o(

n!)?我們有更簡單的方法。考慮乙個上三角形式的行列式,其的值就是對角線乘積,那麼這和高斯消元過程很像,我們同時還有乙個性質,就是行列式裡面某一行乘常數加到其他行上行列式的值是不變的,所以可以直接高斯消元成上三角形式,然後乘起來,時間複雜度o(

n3) 。

證明可以參照原**。

生成樹計數

考慮簡單帶權無向圖的情況。約定這張圖為 g v,e n v m e e i u i,v i,w i 表示第 i 條邊,deg u 表示 u 所連邊的邊權和。mathbf a 滿足 mathbf a w i,j mathbf d 滿足 mathbf d i j deg i mathbf b 滿足 ma...

內向樹的生成樹計數

所謂內向樹,就是樹上的邊是由兒子指向父親 來看乙個題 元首把花園分為 nn n 行 mm m 列的網格。每個格仔中都可以放置乙個標識,指向上 下 左 右四個方向中的任意乙個。元首位於乙個格仔時,會按照其中標識所指的方向進入周圍的格仔,或者走出花園 即目的格仔不在網格之內 舉個例子 對於下面的放置方式...

Lightning(生成樹計數)

原題 題意 n個點,任意兩個點之間可以連邊當且僅當距離不大於r,並且中間沒有其他邊。求生成樹個數。解析 判斷中間有沒有點可以直接n3for,也可以n2log,列舉每個點為起點,其他的點與之形成的向量用map比較是否存在即可。連完邊就用矩陣樹進行n3做就行了。include using namespa...