矩阵树定理

luogu & cnblogs

矩阵树定理

给定带权无向图 G,求出 TeTwe 的值。

定义

  • 定义 [n]={1,2,3,,n}

  • 对于无向图,定义 D(G) 为其度数矩阵,有:D(G)ij={degii=j0ij.

  • 对于有向图,定义 Din(G)Dout(G) 分别表示其入度矩阵和出度矩阵,有:Din(G)ij={degiini=j0ij,Dout(G)ij={degiouti=j0ij.

  • 定义 A(G) 为图的邻接矩阵。A(G)ij 表示 i 连向 j 的边的数量。

  • 定义无向图的 Laplace 矩阵 LL(G)=D(G)A(G)。有向图的情况可以类似的定义 LinLout.

  • 定义图 Gu 为根的根向树和叶向树的数量分别为 troot(G,u)tleaf(G,u)

  • 定义矩阵 A 的子矩阵 AS,T 为选取 iSjT 构成的元素。

  • 定义有向图 G 的关联矩阵为 M(G)(无向图可以随便定方向),有 Min(G)ij={w(ej)i is the starting point of edge j0otherwise.,Mout(G)ij={w(ej)i is the end of edge j0otherwise.,令 M(G)=Min(G)Mout(G)

不难发现

Din=Min(Min)T,Dout=Mout(Mout)T,A(G)=Min(Mout)T.

进而有

Lin(G)=Min(MinMout)T,Lout(G)=(MoutMin)(Mout)T.

对于无向图有

L(G)=MMT

定理

  • 对于无向图 G 和任意的 k,有 t(G)=detL(G)[n]{k},[n]{k}
  • 对于有向图 G 和根 u,有 troot(G)=detLout(G)[n]{u},[n]{u}tleaf(G)=detLin(G)[n]{u},[n]{u}

证明

引理 1(Cauthy-Binet):

对于 n×m 的矩阵 Am×n 的矩阵 B,有

det(AB)=S{1,2,,m}|S|=ndetA[n],SdetBS,[n]

如果 n>m,则必有 det(AB)=0

证明咕了。

引理 2:

对于图 G 的子图 (V,E),若 |E||V|,则子图 T 是一棵以 VV 为根的根向生成树当且仅当

det(MV,Eout)det(MV,EoutMV,Ein)0

且该式的值在不为 0 时,恰好为 eEwe

证明:

w(T)=eTwe。先把行列式中每行的 we 提出来,最后的答案再乘上一个 w(E) 就行了。

先考虑第一个行列式。如果 MV,Eout 存在某行全是 0(该点集中存在点没有在边集中出现),那么 det(MV,Eout) 就是 0。然后又由于每条边只有一个出点,所以每行恰好有一个 1。所以这个式子保证了就有 |V|=|E|,但是没有保证 T 是一棵根向生成树。

现在考虑第二个行列式:MV,EoutMV,Ein。这个矩阵中每行只有一个 1,零个或一个 1。若 T 中存在环,这些边为 e1e2em。则行列式会长成形如这样的东西:

[010010001000010000100100001000010100000110001000]

记从第 i 行的 1 处进入点 i+1 处离开点 i。回顾消元求解行列式的过程,最后一定会消出一行 0。不存在环,那么就可以从叶子处开始消(叶子的那一行有且仅有一个 1,其余的都是 0),可以把它的父亲所在行的 1 消掉。最后消出来的结果其实就是 det(MV,Eout)

所以当且仅当 T 是一棵以 VV 为根的根向生成树时 det(MV,Eout)det(MV,EoutMV,Ein)=det(MV,Eout)2=w(T)0

根据刚刚的证明,有更通用的结论:

Tτ(G,u)eTwe=detLout(G)[n]{u},[n]{u}

这里的 τ(G,u) 表示图 Gu 为根的根向生成树集合。

时间复杂度是求行列式的 O(n3)

例题先咕了。

posted @   Pengzt  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示