生成树相关

矩阵树定理

概述

\(O(n^3)\)时间内解决无向图最小生成树问题

关联矩阵

对无向图\(G\),其关联矩阵\(B\)\(n*m\)矩阵其中若\(e_k=(i,j)\)\(B_{i,k},B_{j,k}\)\(1\)\(1\),\(1\)\(-1\),第\(k\)列其余为\(0\)2

\(e.g\)生成树相关_第1张图片

【性质】:引入\(B\)的转置\(B^T\)则有\(\displaystyle BB^T_{i,j}=\sum_{k=1}^mB_{i,k}B^T_{k,j}=\sum_{k=1}^mB_{i,k}B_{j,k}\)

也就是\(B\)\(i\)行和\(j\)行的内积

  • \(i=j\),\(BB^T_{i,j}=deg_i\)
  • \(i\ne j\)
    • 若存在\((i,j),BB^T_{i,j}=-1\)
    • 否则\(BB^T_{i,j}=0\)

Kirchhoff矩阵

考虑更更显然的构造满足上面\(BB^T\)性质的矩阵\(C\)

\(C=\text{度数矩阵-邻接矩阵}\)

Matrix-tree定理

对任意无向图\(G\),其生成树个数等于其Kirchhoff矩阵的任意\(n-1\)阶主子式的行列式绝对值

证明

留坑

最小生成树计数

考虑模拟\(\mathtt{Kruskal}\)的过程

考虑从小到大加入边的过程,把每一种相同的权值的边与比之小的边当成一个阶段\(G_0\)对新加入的这些可形成联通块分别求Kirchhoff矩阵

例题

最小树形图

概述

\(O(nm)\)时间内解决有向图最小树形图问题

有向图以\(rt\)为根,最小树形图定义为:以\(rt\)为根可以到达其余所有点的权值和最小有向树

朱刘算法

  • 1.求最短弧集合:在当前图上求出除\(rt\)外每个点权值最小的入边\(in_i\),这\(n-1\)必定是权值和最小的子图,但并非树
  • 2.检查有环否,有转3,没有转4
  • 3.缩环,对\(x\)在环\(now\)上若存在\((i,x,v)\)\((i,now,v-in_x)\),若存在\((x,i,v)\)\((now,i,v)\)
  • 4.展开收缩点

第三条的边权改变是后悔法贪心

例题

其他

动态维护MST

直接\(LCT\)消圈,离线改用并查集暴力即可

(严格)次小生成树

定理:无向图存在一个次小生成树是任意最小生成树的临集

考虑枚举每一条不在最小生成树上的边,删去环上的最大边(要么就是严格次大边)中取最小即可

实现上使用倍增

最小度限制生成树

考虑从\(k\)度向\(k+1\)度扩展过程

留坑

你可能感兴趣的:(生成树相关)