矩阵树定理整理及总结

注:本文章内容主要摘取自周冬的PPT。
解决问题:生成树计数。
图的关联矩阵

  • 对于无向图G,我们定义它的关联矩阵B是一个n*m的矩阵,并且满足:
    如果eiei=(vi,vj),那么BikBikBjkBjk一个为1,另一个为-1,而第k列的其他元素均为0。

  • 图G的关联矩阵如右下角所示:
    矩阵树定理整理及总结_第1张图片

  • 图的关联矩阵有什么特殊的性质呢?我们不妨来考察一下B和它的转置矩阵BTBT的乘积。
    根据矩阵乘法的定义,我们可以得到:
    这里写图片描述
    也就是说,BBTijBBijT是B第i行和第j行的内积。
    因此,当i=j时, BBTijBBijT的度数;而当i≠j时,如果存在边(vi,vj),那么BBTijBBijT=-1,否则BBTijBBijT=0。
    我们通常将BBTBBT称为图的Kirchhoff矩阵。
    当然 Kirchoff矩阵也可以这样计算:设A为图的邻接矩阵,D为图的度数矩阵。那么C=D-A.

图的Kirchhoff矩阵

  • 对于无向图G,它的Kirchhoff矩阵C定义为它的度数矩阵D减去它的邻接矩阵A。显然,这样的定义满足刚才描述的性质。
  • 有了Kirchhoff矩阵这个工具,我们可以引入Matrix-Tree定理:
    对于一个无向图G,它的生成树个数等于其Kirchhoff矩阵任何一个n-1阶主子式的行列式的绝对值。
    所谓n-1阶主子式,就是对于任意一个r,将C的第r行和第r列同时删去后的新矩阵,用Cr表示。

让我们通过一个例子来解释一下定理。如图所示,G是一个由5个点组成的无向图。
矩阵树定理整理及总结_第2张图片
它的Kirchhoff矩阵C为
矩阵树定理整理及总结_第3张图片
我们取r=2,根据行列式的定义易知|detC2C2 | =11,这11颗生成树如下图所示。
矩阵树定理整理及总结_第4张图片
这个定理看起来非常“神奇”,让我们尝试着去证明一下吧!

定理证明

  • 经过分析,我们可以发现图的Kirchhoff矩阵C具有一些有趣的性质:
    C的行列式总是0。
    如果图是不连通的,则C的任一个n-1阶主子式的行列式均为0。
    如果图是一颗树,那么C的任一个n-1阶主子式的行列式均为1。
    证明略。

我们知道,C=BBTBBT,因此,我们可以把C的问题转化到BBTBBT上来。
BrBr为B去掉第r行得到的矩阵,容易知道CrCr =BrBTrBrBrT。这时,根据Binet-Cauchy公式,我们可以将CrCr的行列式展开。
这里写图片描述
其中, 是把BrBr中属于x的列抽出后形成的新矩阵。
注意观察上面的式子, BxrBxTrBrxBrxT实际上是图Gx的Kirchhoff矩阵的一个n-1主子式。其中GxGx是由所有的顶点和属于x的边组成的一个G的子图。
若属于x的n-1条边形成了一颗树时,由Kirchhoff矩阵的性质可知det(BxrBxTrBrxBrxT)等于1。
若属于x的n-1条边没有形成树,则Gx中将至少含有两个连通块,这时det(BxrBxTrBrxBrxT)等于0。
因此,我们认为:每次从边集中选出n-1条边,若它们形成了生成树,则答案加1,否则不变。

定理的理解

  • 当x取遍边集所有大小为n-1的子集后,我们就可以得到原图生成树的个数。这样我们成功证明了定理!

定理的扩展

  • 利用该定理,我们可以容易得到著名的Cayley公式:完全图KnKnnn2nn−2颗生成树。
    我们刚才只对图中没有重边的情况进行了分析。实际上,图中有重边时该定理仍然成立,并且证明与没有重边的情况类似。
    该定理也可以扩展到有向图上,用来计算有向图的外向树的个数。

Cayley公式的证明
首先计算完全图KnKn的Kirchhoff矩阵的一个n-1阶主子式C1[Kn]C1[Kn]
矩阵树定理整理及总结_第5张图片
下面我们对C1[Kn]进行化简。第2至第n-1列均减掉第一列,得到如下的矩阵:
矩阵树定理整理及总结_第6张图片
我们可以发现,除了第一列以外,其他每列都在第一行上有一个-n,在对角线上有一个n,而其他位置上的元素均为0。
现在,我们把第2至第n行都加到第一行上去,可以得到如下矩阵:
矩阵树定理整理及总结_第7张图片
再次观察这个矩阵,我们可以发现:在第一行上只有一个1,剩下部分中,只有对角线上的数字为n,其他元素都是0。因此,完全图KnKn的生成树的个数为nn2nn−2

你可能感兴趣的:(算法)