矩陣樹Matrix-Tree定理與行列式


簡單入門一下矩陣樹Matrix-Tree定理。(本篇目不涉及矩陣樹相關證明)

一些定義與定理

  • 對於一個無向圖 G ,它的生成樹個數等於其基爾霍夫Kirchhoff矩陣任何一個N-1階主子式行列式絕對值。
  • 所謂的N-1階主子式就是對於一個任意的一個 r ,將矩陣的第 r 行和第 r 列同時刪去得到的新矩陣。
  • 基爾霍夫Kirchhoff矩陣的一種求法:

    基爾霍夫Kirchhoff矩陣 K =度數矩陣 D - 鄰接矩陣 A

基爾霍夫Kirchhoff矩陣的具體構造

  • 度數矩陣D:是一個 ${N}\times{N}$ 的矩陣,其中

    $D[i][j]=0\;{(i}\neq{j)}$,$D[i][i]=i號點的度數$

  • 鄰接矩陣A:是一個 ${N}\times{N}$ 的矩陣,其中

    ${A[i][i]=0}\;{,}\;{A[i][j]=A[j][i]=i,j之間的邊數}$

  • 然后基爾霍夫Kirchhoff矩陣K=D-A
  • 舉個例子,對於如下的無向圖,三個矩陣分別為

    image

行列式det(K)求法

  • 已經得出了基爾霍夫Kirchhoff矩陣,那么隨便去掉某一行一列並計算出新矩陣的行列式,其絕對值即為生成樹個數。
  • ${det(K)=}\sum_{P}^{ }\;{(}{(-1)}^{\tau{(P)}}\times{K}_{1,p1}\times{K}_{2,p2}\times{K}_{3,p3}\times\cdots\times{K}_{N,pN}{)}$
  • 上面的式子中的 P 為 1~N 的任意一個排列。$\tau{(P)}$表示排列 P 的逆序對數。而那個求和式的每一項可以看做是在矩陣中選出N個數,使得他們的行列都不重合。
  • 求和式共有$N!$項,暴力求法的復雜度 ${O(N!)}\times{N}$
  • 這個復雜度過高了,看完了下面的行列式性質,然后引出優化求解方法。

行列式的性質

  • 性質.1  互換矩陣的兩行(列),行列式變號。

    這個需要簡單說明一下。

    考慮對於原矩陣 K,我們可以得到其行列式的求和式:

    ${det(K)=}\sum_{P}^{ }\;{(}{(-1)}^{\tau{(P)}}\times{K}_{1,p1}\times{K}_{2,p2}\times{K}_{3,p3}\times\cdots\times{K}_{N,pN}{)}$

    若交換某兩行的位置后得到了 K' 矩陣,若寫出其行列式的求和式,不難發現,如果不看符號位的變化,只看每一個乘積項,那么這兩個的矩陣的行列式的求和式是完全相同的。我們把相同的乘積項移到對應的位置,如圖示:

    image

    但是很顯然,兩個矩陣的這一項對應的排列 P 和 P' 不同:

    P :1 2 4 3

    P':3 2 4 1

    那這個符號位的變化是什么呢?

    從例子看得出來,τ(P) = 1 ,符號位為 –1;τ(P')=4,符號位為 1。

    那是不是都是這樣的呢?

    即原來是 -1,現在就是 1;即原來是 1,現在就是 -1?逆序對變化量為奇數?

    答案是肯定的,證明如下:

    image

    由此可知,逆序對數的變化量為奇數,即兩個det()求和式的對應的每一項的符號位都相反,所以互換矩陣的兩行(列),行列式變號

    (有了這個性質,下面的就比較簡單了。)

  • 性質.2  如果矩陣有兩行(列)完全相同,則行列式為 0

    證明,由性質.1可知:因為交換這兩行,得到的矩陣和原來相同,但是又要變號,則行列式的值只能為 0。

  • 性質.3  如果矩陣的某一行(列)中的所有元素都乘以同一個數k,新行列式的值等於原行列式的值乘上數k。

    這個的證明就是把那個求和式的每一項都提出一個公因子k就好了。

  • 推論  如果矩陣的某一行(列)中的所有元素都有一個公因子k,則可以把這個公因子k提到行列式求和式的外面。
  • 性質.3  如果矩陣有兩行(列)成比例(比例系數k),則行列式的值為 0

    證明:也是把其中一行提出一個公因數k,那么剩下的det( )求和式所代表的矩陣中存在一行或一列完全相同,則值為 0。

  • 性質.4  如果把矩陣的某一行(列)加上另一行(列)的k倍,則行列式的值不變。

    證明:可以從求和式子的每一項的那一行的那個元素下手,

    把det( )求和式拆成兩個 det( )求和式:

    det1( )與原矩陣的行列式求法相同

    det2( )所代表的矩陣中有兩行成比例,比例系數為k,值為0 。

    所以相比原來的行列式,值不變。

優化行列式的求法

  • 首先對於這樣一個矩陣:

    image

    注意到了么,是一個上三角矩陣(左下半部分的元素值為 0)。

    其行列式的值為對角線的乘積,(同理下三角矩陣)

    因為只有 P = 1 2 3 4 時,乘積項中才沒有 0出現。

  • 同時注意到性質.4,所以采用高斯消元的方法,把矩陣消為一個上三角矩陣后,然后求出對角線的積,便是該矩陣的行列式的值。
  • 復雜度 O(N3),快了很多。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM