树有很多种形态,给定结点个数,求生成不同形态二叉树的个数,显然要用到Catalan数列. 那如果给定一个图(Graph)\(G=(V,E)\),要求其最小生成树G',最好的方法莫过于Prim或Kruskal了. 上图就是一种求最小生成树的方法. 可要求图G中不同生成树的总个数呢? 这里要用到Kirchhoff's theoreom,一个神奇的定理. 这里只做简单的介绍,并不给出严格的证明. 详细内容请参见Wikipedia::Kirchhoff's theorem 以及芜湖一中 周冬さん的生成树…
目录 @0 - 参考资料@ @0.5 - 你所需要了解的线性代数知识@ @1 - 矩阵树定理主体@ @证明 part - 1@ @证明 part - 2@ @证明 part - 3@ @证明 part - 4@ @2 - 一些简单的推广@ @3 - 例题与应用@ @4 - prüfer 序列@ @0 - 参考资料@ MoebiusMeow 的讲解(超喜欢这个博主的!) 网上找的另外一篇讲解 @0.5 - 你所需要了解的线性代数知识@ 什么是矩阵? 什么是高斯消元?这个虽然与主题无关,但是求解行列…
题目链接 \(Description\) 一个国家有1~n座城市,其中一些城市之间可以修建高速公路(无自环和重边). 求有多少种方案,选择修建一些高速公路,组成一个交通网络,使得任意两座城市之间恰好只有一条路径. \(Solution\) 生成树计数 直接上Matrix Tree 无解情况别忘了判 MatrixTree定理大体见这吧,证明别的应用什么的先不管了. 基尔霍夫矩阵=度数矩阵-边矩阵. #include <cmath> #include <cstdio> #include…
如果不谈证明,稍微有点线代基础的人都可以在两分钟内学完所有相关内容.. 行列式随便找本线代书看一下基本性质就好了. 学习资源: https://www.cnblogs.com/candy99/p/6420935.html http://blog.csdn.net/Marco_L_T/article/details/72888138 首先是行列式对几个性质(基本上都是用数学归纳法证): 1.交换两行(列),行列式取相反数 2.由1.得若存在两行(列)完全相同则行列式为0 3.上(下)三角行列式即主…
Description 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的).由于不同的最小生成树可能很多,所以你只需要输出方案数对31011的模就可以了. Input 第 一行包含两个数,n和m,其中1<=n<=100; 1<=m<=1000; 表示该无向图的节点数和边数.每个节点用1~n的整数编号.接下来的m行,每行包含两个整数:a, b, c,表示节点…
[背诵手记]Matrix Tree定理和一些推广 结论 对于一个无向图\(G=(V,E)\),暂时钦定他是简单图,定义以下矩阵: (入)度数矩阵\(D\),其中\(D_{ii}=deg_i\).其他=0 邻接矩阵\(A\),其中\(A_{ij}=[\exist e=(i,j)]\).其他=0 (*******wait!*******) 关联矩阵\(B\),其中\(B_{ij}=[\exist e_i=(a,b)](-1)^{[a>b]}\).其他=0(后面会用到) 拉普拉斯矩阵\(L=D-A\)…
老久没更了,冬令营也延期了(延期后岂不是志愿者得上学了?) 最近把之前欠了好久的债,诸如FFT和Matrix-Tree等的搞清楚了(啊我承认之前只会用,没有理解证明--),FFT老多人写,而MatrixTree没人证我就写一下吧-- Matrix Tree结论 Matrix Tree的结论网上可多,大概一条主要的就是,图中生成树的数量等于 \(V-E\) 的任一余子式,其中: \(V\) 为对角阵,第 \(i\) 个元素为点 \(i\) 的度数 \(E\) 为对称阵,对角线为零且 \(E_{i,…
Matrix tree定理用于连通图生成树计数,由于博主太菜看不懂定理证明,所以本篇博客不提供\(Matrix\ tree\)定理的证明内容(反正这个东西背结论就可以了是吧) 理解\(Matrix\ tree\)定理需要一定的线性代数知识(当然不会也没关系) a.前置芝士--行列式 稍微费点笔墨写写行列式 行列式是一个\(N \times N\)的方阵,比如说下面就是一个\(3 \times 3\)的行列式 \(\left|\begin{array}{cccc} 1 & 6 & 9 \\…
题目链接:https://vjudge.net/problem/HDU-4305 解法:首先是根据两点的距离不大于R,而且中间没有点建立一个图.之后就是求生成树计数了. Matrix-Tree定理(Kirchhoff矩阵-树定理).Matrix-Tree定理是解决生成树计数问题最有力的武器之一.它首先于1847年被Kirchhoff证明.在介绍定理之前,我们首先明确几个概念: 1.G的度数矩阵D[G]是一个n*n的矩阵,并且满足:当i≠j时,dij=0:当i=j时,dij等于vi的度数. 2.G…
[题目链接] http://poj.org/problem?id=3532 [题目大意] 给出n个点,一些点之间有电阻相连,求1~n的等效电阻 [题解] 有基尔霍夫定理:任何一个点(除起点和终点)发出的电流和与接收的电流和相等. 由ΣAi=0可以得到Σ(Ui-Uj)/Rij=0,Σ(U1-Uj)/R1j=1,Σ(Un-Uj)/Rnj=-1 我们设电流为1A,终点电势为0列关于电势的方程组,最后的等效电阻就是起点和终点的电势差除以总电流 [代码] #include <cstdio> #inclu…