ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

矩阵树定理(Matrix-tree Theorem)

2021-05-08 09:03:13  阅读:257  来源: 互联网

标签:... Matrix det 定理 矩阵 tree times ij Theorem


矩阵数定理就是把图的生成树个数与矩阵行列式联系起来的一个定理

前置知识矩阵行列式

定义

假设有一个无向图 \(G=(V,E)\) 有 \(p\) 个顶点 \(q\) 条边

对于 \(G\) 中每一条边,我们任意指定一个方向,这样我们就可以定义 \(G\) 的关联矩阵 \(M(G)\), 它是一个 \(p\times q\) 的矩阵

\[M_{ij}=\begin{cases}-1&v_i是e_i的起点\\1&v_i是e_i的终点\\0&otherwise\end{cases} \]

然后定义拉普拉斯矩阵 \(L(G)\), 它是一个 \(p\times p\) 的矩阵

\[L_{ij}=\begin{cases}-m_{ij}&i\ne j,v_i与v_j之前有m_{ij}条边\\d(v_i)&i=j\end{cases} \]

\(d(i)\) 为点 \(i\) 的度数,可以看出 \(M\) 与指定的边的方向有关,而 \(L\) 无光

几条引理

引理1

\(MM^T=L\)

证明

\((MM^T)_{ij}=\sum\limits_{e_k\in E}M_{ik}M^T_{kj}=\sum\limits_{e_k\in E}M_{ik}M_{jk}\)

分类讨论,当 \(i\ne j\) 时,当且仅当存在 \(e_k\in E\) 把 \(v_i,v_j\) 连起来时,\(M_{ik}M_{jk}=-1\),否则 \(M_{ik}M_{jk}=0\),因此结果就是 \(v_i,v_j\) 之间的边数。

当 \(i=j\) 时,当且仅当存在 \(e_k\in E\) 的一个端点为 \(v_i\) 时,\(M_{ik}M_{jk}=1\),因此结果就是 \(v_i\) 的度数

证毕

我们先定义一些 \(M\) 的子矩阵,方便接下来的证明,定义 \(M_0\) 表示 \(M\) 去掉最后一行得到的 \((p-1)\times q\) 的矩阵

定义一个矩阵 \(M_0[S]\),其中 \(S={i_1,i_2,...,i_{p- 1}}\cap {1,2,...,q}\),表示从矩阵 \(M_0\) 中选取 \(p-1\) 列得到的一个方阵

引理2

令 \(S\) 是边集 \(E\) 的一个大小为 \(p-1\) 的子集,若 \(G'=(V,S)\) 构成生成树,则 \(det~M_0[S]=\pm1\),否则,\(det~M_0[S]=0\)

证明

若 \(G'\) 不构成生成树,则说明 \(G'\) 中存在环 \(C\).假设 \(C\) 由 \(e_1,e_2...e_k\),共 \(k\) 条边构成,那么在矩阵 \(M_0[S]\) 中一定存在某两行互为相反数,根据行列式的性质,就可以得到 \(det~M_0[S]=0\)

若 \(G'\) 构成生成树,我们将 \(G'\) 中的点按照拓扑关系排序,得到 \(u_1,u_2...,u_k\) 即叶子节点总是在前面。

然后对 \(M_0[S]\) 的列进行重新排序,排完序过后与 \(u_1\) 只有 \(e_1\),因为它是叶子节点,同理,与\(u_i\) 相连的边也只可能有 \(e_1,e_2...e_i\),那么排完序后的矩阵就成了一个下三角矩阵,主对角线上只为 \(\pm 1\),,所以 \(det M_0[S]=\pm 1\)

证毕

Binet-Cauchy Theorem定理

设 \(A=(a_{ij})_{m\times n},B=(b_{ij})_{n\times m}\), 则有 \(det AB=\sum\limits_S (det A[S])(det B[S])\),其中 \(S\) 大小为 \(m\),且 \(S\subseteq \{1,2,...,n\}\)。\(A[S]\) 的记号与上面类似,是取 \(A\) 中任意 \(m\) 列得到的 \(m\times m\) 的方阵

证明放这了

矩阵树定理

设图 \(G=(V,E)\),拉普拉斯矩阵 \(L\)。则 \(G\) 的生成树个数等于 \(det L_0\),\(L_0\) 是去掉第 \(i\) 行第 \(i\) 列得到的子矩阵( \(i\) 任意)

证明

不妨设去掉最后一行最后一列。

由引理1,得到 \(M_0M_0^T=L_0\)

由Binet-Cauchy Theorem定理

得 \(det L_0= \sum\limits_S(det M_0[S])(detM_0^T[S])=\sum\limits_S(detM_0[S])^2\)

由引理2得若 \(S\) 构成生成树,则 \(detM_0[S]=\pm1\),否则为0,因此 \(detL_0\) 就为生成树个数

至此,矩阵树定理就证明完了,然后我们就可以将求生成树的数量转化为行列式求值了

参考矩阵树定理(Matrix-tree Theorem)笔记

标签:...,Matrix,det,定理,矩阵,tree,times,ij,Theorem
来源: https://www.cnblogs.com/A2484337545/p/14743462.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有