日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[学习笔记] Matrix tree定理

發布時間:2024/1/1 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [学习笔记] Matrix tree定理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

為了回歸算法本身,為了搞懂算法,我參考了不同博客,并將他們做出整合和補充:

  • https://www.luogu.com.cn/blog/tanrui-2960967961/matrix-tree-ding-li-ji-ji-ying-yong#
  • https://blog.csdn.net/a_crazy_czy/article/details/72971868
  • https://www.cnblogs.com/zj75211/p/8039443.html
  • https://www.cnblogs.com/lishuyu2003/p/12093947.html

本文將分成333個部分:行列式的性質,定理的證明,定理的應用和擴展。標記的即為暫時不懂的地方,會漸漸完善

UPD 2020/9/27:增加了一些證明,修改了一些錯誤之處

行列式的性質

det(A)=∑p(?1)r(p)×A1,p1×......×An,pndet(A)=\sum_{p}(-1)^{r(p)}\times A_{1,p_1}\times ......\times A_{n,p_n}det(A)=p?(?1)r(p)×A1,p1??×......×An,pn??

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

可以看如下示例(盜個圖)

對于后面乘積相同的兩項,我們只用考慮前面系數變化的情況,即行列式的變化情況。

此處引出一個結論,對于一個排列,交換其中兩個元素,行列式變化為奇數:

那么后面的乘積不改變,而前面的系數是一定要變號的,所以行列式變號。

性質2:如果有兩行完全相同,行列式為0

交換這兩行,得到的矩陣相同,行列式不變,但由(1)(1)(1)得行列式變號,所以行列式一定為000

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

提公因數即可

類似地,如果矩陣的某一行(列)中的所有元素都有一個公因子k,則可以把這個公因子k提到行列式求和式的外面。

性質4 如果矩陣有兩行(列)成比例(比例系數k),則行列式的值為 0

先把這個比例系數提出去,然后可以運用性質2

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

考慮行列式的計算,我們把它拆成兩部分,分別是原來的部分和新加的部分(因為每一行只會選一個,看做特殊的分配率),新加的部分一定滿足性質4,加上的部分行列式為000,所以行列式不變。

優化行列式求法

綜上,我們可以把矩陣消成上三角矩陣,求對角線乘積即為行列式的值,時間復雜度O(n3)O(n^3)O(n3)

標記1:如果要求的矩陣不允許出現實數,且需要取模,可以看看給出的博客,我不會。

Matrix Tree定理的證明

內容

Kirchhoff\text{Kirchhoff}Kirchhoff 矩陣是指的對于一個圖構造出來的一個矩陣,具體定義為度數矩陣減去鄰接矩陣,度數矩陣指:
Ai,j={degii=j0otherwiseA_{i,j}=\begin{cases}deg_i&i=j\\0&otherwise\\\end{cases}Ai,j?={degi?0?i=jotherwise?定理:一個圖中的生成樹個數等于其 Kirchhoff\text {Kirchhoff}Kirchhoff 矩陣的任意一個代數余子式的行列式。

性質1

一個圖的 Kirchhoff\text{Kirchhoff}Kirchhoff 矩陣行列式為零。

可以考慮高斯消元的過程,一開始每一行的和為000,而消元過程中每一行的和保持是000,最后我們要消成上三角矩陣,最后一行只有最邊上元素可能有值,而行和為000,這個值也是000,所以行列式為000

性質2

一個圖的 Kirchhoff\text{Kirchhoff}Kirchhoff 矩陣的任一代數余子式的行列式相同。

標記2:yysy,這個性質我證不來

2020/9/27更新:這個結論好像并不需要證明,證明出矩陣樹定理之后可以反推這個結論。

前置定義

我們定義一個圖的關聯矩陣BBB為:對于第kkk條邊(u,v)(u,v)(u,v)Bk,u=1,Bk,v=?1B_{k,u}=1,B_{k,v}=-1Bk,u?=1,Bk,v?=?1

一個矩陣的轉置矩陣為:Ai,jT=Aj,iA_{i,j}^T=A_{j,i}Ai,jT?=Aj,i?

有一個性質,設這個圖的 Kirchhoff\text{Kirchhoff}KirchhoffLLL
L=BBTL=BB^TL=BBT

標記3:yysy,這個性質我證不來

2020/9/27更新:其實這個證明還是比較容易的,就用矩陣乘法的定義,這次乘法bu,ib_{u,i}bu,i?bi,v′b'_{i,v}bi,v?會對au,va_{u,v}au,v?產生?1-1?1的貢獻,會對bu,i,bi,u′b_{u,i},b'_{i,u}bu,i?,bi,u?會對au,ua_{u,u}au,u?產生111的貢獻,就變成了原圖的矩陣。

Part 1

對于一個非聯通圖GGG∣L∣=0|L|=0L=0

MiM_iMi?LLL 刪去第iii行第iii列后得到的矩陣,設 GiG_iGi? 為第iii個強聯通分量,我們把同一個強聯通分量的結點通過交換行換到一起(雖然會變號,但如果行列式為000就沒關系),Kirchhoff\text{Kirchhoff}Kirchhoff 矩陣變為這樣:
G10......00G2......0..............000Gk\begin{matrix}G_1&0&......&0\\0&G_2&......&0\\...&...&......&..\\0&0&0&G_k\end{matrix}G1?0...0?0G2?...0?..................0?00..Gk??其中∣Gi∣=0|G_i|=0Gi?=0Kirchhoff\text{Kirchhoff}Kirchhoff 矩陣的性質111),我們可以看出:
∣L∣=∣G1∣×.....×∣Gk∣|L|=|G_1|\times .....\times |G_k|L=G1?×.....×Gk?所以∣L∣=0|L|=0L=0,也不難推知∣Mi∣=0|M_i|=0Mi?=0

Part 2

對于一棵樹GGG∣Mi∣=1|M_i|=1Mi?=1

標記4:yysy,我不會證

2020/9/27更新:補充這個結論的證明,主要是運用巧妙的消元。

首先我們定根為111,把其他點按照到111的距離排序,我們按這個順序對點重新編號,這樣構成的矩陣是按深度排了序且和原來的矩陣等效(因為每一對交換都要換行和換列,行列式不變號),我們先把根所在的一行一列刪去,然后看圖:


我們先從右下角的位置考慮,他的值一定是111(是葉子),進行上述操作之后往上訪問的時候又可以得到一個值為111的點(都被他的兒子消掉了),整個過程之后會變成一個對角線全為111的上三角矩陣,所以行列式為111

Part 3

標記5:yysy,這個定理不會證明

UPD 2021/2/6:居然有巨佬硬剛這個定理,有時間我去康康

首先要知道Binet-Cauthy\text{Binet-Cauthy}Binet-Cauthy定理,內容大致如下:
∣AB∣=∑∣S∣=n∣Ap∣×∣Bp∣|AB|=\sum_{|S|=n}|A_p|\times |B_p|AB=S=n?Ap?×Bp?其中A是一個m×nm×nm×n的矩陣,B是一個n×mn×mn×m的矩陣,ApA_pAp?是把AAA的一些行刪去(剩下的行集合為SSS)使之成為n×nn\times nn×n的矩陣,BpB_pBp?類似地刪去它的列。

套用這個定理,我們可以推倒:
∣Mi∣=∣Bi∣×∣BiT∣=∑∣S∣=n?1∣Bi,p∣×∣Bi,pT∣|M_i|=|B_{i}|\times|B_{i}^T|=\sum_{|S|=n-1}|B_{i,p}|\times |B_{i,p}^T|Mi?=Bi?×BiT?=S=n?1?Bi,p?×Bi,pT?結合part?1\text{part 1}part?1part?2\text{part 2}part?2,我們可以知道當是一棵樹的時候會產生111的貢獻,其余情況為000,所以∣Mi∣|M_i|Mi?即為生成樹個數。

應用及擴展

板題

點此看題

我因為輸出格式卡了很久,我好像是sb(自信點,把好像去掉)

板題2

點此看題解(一站式服務)

矩陣樹定理的擴展

這是對于更寬泛的問題,做做這道題吧

有向擴展

什么?矩陣樹還能有向擴展?

比較基礎的是這道題

綜合應用

點此看題

總結

以上是生活随笔為你收集整理的[学习笔记] Matrix tree定理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。