矩阵树定理是把图的生成树个数和矩阵行列式联系起来的一个定理。此处试图整理它的一种证明方式。
- 定义
- 几条引理
- 矩阵树定理
一. 定义
首先设我们讨论的无向图
有
个顶点,
条边。
然后我们把
的每条边任意指定一个方向,这样我们就可以定义
的关联矩阵(Incidence matrix)
,它是一个
矩阵。
然后定义
的拉普拉斯矩阵(Laplacian matrix)
,它是一个
矩阵
注意到
和
任意指定的方向相关,而
与之无关,不过这不影响我们接下来的证明。
举一个例子。
上图的关联矩阵
和拉普拉斯矩阵
分别是:
,
容易发现
是对称的。实际上非主对角线上的元素也可以不是-1,因为图
允许重边存在。
二. 几条引理
Lemma 1,其中表示的转置
证明:很容易就可以从定义中得出。
然后分情况讨论。
时,当且仅当存在一条边
把
连起来时,
,其余情况
,因此结果就是
之间的边数。
时,当且仅当存在一条边
的一端是
时,
,因此结果就是它的度。这就证明了引理1。
然后我们定义一些
的子矩阵,它们是证明的关键。
Def 1 定义reduced incidence matrix(减关联矩阵??我不会翻译啊)是去掉最后一行得到的矩阵。
Def 2 在此基础上,定义一个矩阵,其中集合。它的意思是,抽出矩阵的第列,得到一个新的矩阵,称之为
中的每个元素
都和一条边
对应,所以为了方便,以下不区分
和它所一一对应的边集。
然后我们证明引理2
Lemma 2 令是边集的一个大小为的子集,若不构成生成树,则;若构成树,则。其中表示矩阵的行列式
若
不构成生成树,则
包含圈
。假设
是由
共
条边构成的圈,那么容易证明矩阵
中,
这
列线性相关(证明的过程有点类似于向量合成的感觉,就矩阵而言比较直观),故
若
构成生成树,则我们可以把
中的点进行排序(实际是拓扑排序),排成
。其中
是任意的叶结点,
是
删除
后的任意的叶结点,……以此类推。排序不一定唯一,但是总是叶结点在前。叶结点总存在,所以排序总能进行。
然后我们把
的行重新排序,第一行对应
,第二行对应
……这样。之后我们对
的列重新排序。排序后,
是唯一与
关联的边(因为它是叶结点),……,
是删除
后唯一与
关联的边。边的另一端在矩阵中的编号总大于这个结点,因此我们发现,
已经被变成了一个下三角矩阵(我说清楚了么……?)。主对角线元总是
,因此我们得到
。这个引理也就证明完了。
至此,我们已经几乎做完了所有准备工作。不过还要提到一条线性代数的定理。
Binet-Cauchy Theorem 设是一个矩阵,是一个矩阵。则有 L,其中大小为,且是的子集。的记号和上面的类似,是取中,与中元素对应的列得到的新矩阵;则改为取行,也得到了一个新矩阵。
它是
(其中
是同阶方阵)的扩展形式,此处不证明(因为我的线性代数实在是太差了)
三. 矩阵树定理
现在我们完成最后的部分。
Matrix-tree Theorem 设图,拉普拉斯矩阵。则的生成树的个数等于,其中是去掉第列第行得到的子矩阵(任意)。
不妨设去掉最后一行最后一列。
与引理1类似,我们很容易可以得到
,这样,由Binet-Cauchy Theorem可以得到:
而引理2告诉我们,在
构成生成树时,
;否则等于0。因此
就等于生成树的个数,证明完毕。
四. ?
没想到吧,还有。
Thm 有p个顶点的完全图,生成树的个数为个
这个可以用矩阵树定理证明,读者自证不难(逃
不过还有一种很有意思的办法:用Prüfer编码证明。证明过程清晰且简单。
五. 最后
之所以学了矩阵树定理,是因为假期看图论的MOOC,姜守旭老师说“课后自己了解”。结果就了解出来这些(吐血)。实际上矩阵树定理还有其他的证明方式(比如不借助
的),还适用于有向图,还有其他的扩展(比如可以和特征值关联起来)。但是我线代实在太差,搞不了那么多,就先写到这。
上面的证明过程来自于Richard P. Stanley的 topics in algebraic combinatorics 的Chapter9,里面有更多的内容,能看英文的可以去看看!