首页 > 其他分享 >行列式与矩阵树定理

行列式与矩阵树定理

时间:2023-10-15 12:33:05浏览次数:52  
标签:tau 矩阵 定理 det 行列式 sigma sum

定义

定义矩阵的行列式:

\[\det A=\sum_{\sigma}(-1)^{\tau(\sigma)}\prod_{i=1}^nA_{i\sigma_i} \]

\(\tau(\sigma)\) 是原排列的逆序对数。

性质:

  1. 若矩阵的某一行或某一列全为 \(0\),则行列式为 \(0\)。
  2. \(\det A = \det A^T\)。
  3. 交换 \(A\) 的两行或两列,行列式取反。
  4. 某一行或某一列乘上 \(k\),行列式也乘上 \(k\)。
  5. 某一行(列)乘上 \(k\) 后加到另一行上,行列式不变。
  6. 行列式不为 \(0\) 则说明其行(列)向量线性无关,即可以作为系数矩阵解出线性方程组,反之亦然。

下证明第二条性质。其他性质显然。

为此,我们先研究 \(\tau(\sigma)\) 的性质。不难证明,交换任意元素后,\(\tau(\sigma)\) 改变奇偶性。

定义 \(c(\sigma)\) 为讲排列看成置换的循环数。考虑对于每个置换环,我们可以花环长减一次交换排序环。所以 \(n-c(\sigma)\) 次即可换为恒等排列(\(1,2,\dots,n\))。即从恒等排列到此排列需要 \(n-c(\sigma)\) 次交换。

所以 \(n-c(\sigma)\) 与 \(\tau(\sigma)\) 奇偶性相同。

此时考察行列式造成贡献的条件:每一行取一个树,且取得数的列互不相同 。所以我们可以直接沿用后面的贡献。只需要考虑 \((-1)^{\tau(\sigma)}\) 的影响。

可以发现,令新的排列(置换)为 \(\sigma'\),则有:\(\sigma'(\sigma_i)=i\)。

那么 \(c(\sigma)=c(\sigma')\),那么 \(\tau(\sigma)=\tau(\sigma')\),于是两者贡献相等。

计算

对于一个除了主对角线均为零的矩阵,容易计算其行列式:即主对角线上的元素乘起来。

我们可以高斯消元计算之。对于模意义下,我们有如下方法:

使用辗转相除,我们需要将某一行下面的某一行置为 \(0\) 时,进行类似于欧几里得算法的操作。这样只会通过交换两行改变答案,而这是容易记录的。

可以证明,这样做的时间复杂度是 \(O(n^3+n^3\log p)\)。

矩阵树定理

描述

对于一个无向图,定义其度数矩阵 \(D\) 与邻接矩阵 \(A\) 为:

\(s(i,j)\) 为 \(i\) 与 \(j\) 之间的边数。

定义其基尔霍夫矩阵为 \(C=D-A\)。

则对于基尔霍夫矩阵划去第 \(r\) 行、列的余子式 \(C_r\),有 \(\det C_r\) 等于原图的生成树个数。

证明

钦定 \(r\) 为生成树的根。

那么剩下 \(n-1\) 个点都需要连出一条到父亲的边。当且仅当这 \(n-1\) 条边不形成环的时候,连出的是一棵生成树。

考虑对环数容斥。我们用 \(n-1\) 阶排列描述连边:如果 \(\sigma_i=i\),那么 \(i\) 任意连边(被认为是“根”);否则连向 \(\sigma_i\)。

设 \(C_r'=-C_r\),得到生成树数量为:

\[\sum_{\sigma}(-1)^{c(\sigma)}\prod_{i=1}^{n-1}{C_r'}_{i\sigma_i} \]

注意到 \(i=\sigma_i\) 的部分不合法。但是不要紧,这里的系数是 \(-\deg i\),正好抵消掉多余的部分。

我们已经得知 \(n-1-c(\sigma)\) 与 \(\tau(\sigma)\) 奇偶性相同。

所以原式等于

\[\sum_{\sigma}(-1)^{n-1-\tau(\sigma)}\prod_{i=1}^{n-1}{C_r'}_{i\sigma_i}\\ =\sum_{\sigma}(-1)^{n-1+\tau(\sigma)}\prod_{i=1}^{n-1}{C_r'}_{i\sigma_i}\\ \sum_{\sigma}(-1)^{\tau(\sigma)}\prod_{i=1}^{n-1}{C_r}_{i\sigma_i}\\ =\det C_r \]

证毕。

本质上,矩阵树定理求的就是所有生成树权值积的和。

考虑有根树的情形。若要求 \(r\) 为根,求根向生成树个数,我们不妨沿用上面的容斥,将 \(\deg i\) 的定义改为 \(i\) 的出度,然后计算 \(\deg C_r\),证明和上面完全一
致。
如果要求叶向生成树个数,可以直接将边反向然后求根向生成树个数。但是这样太 Naive 了,将 \(\deg i\) 的定义改为 \(i\) 的入度,然后计算 \(\det C_r\) 即可。

标签:tau,矩阵,定理,det,行列式,sigma,sum
From: https://www.cnblogs.com/british-union/p/matrix-tree-meatherm.html

相关文章

  • python_两两比较计算相似矩阵
    距离矩阵余弦距离矩阵余弦距离使用两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比欧氏距离,余弦距离更加注重两个向量在方向上的差异点集内或矩阵内两两元素之间的距离矩阵##简单使用两重循环defcompute_squared_EDM_method(X):#获得矩阵都行和列,因为是行向......
  • 代码随想录第二天|977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
    977有序数组的平方题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/思路:双指针(实际是三指针),两个找最大值,一个确定平方后的位置。209.长度最小的子数组题目链接:https://leetcode.cn/problems/minimum-size-subarray-sum/思路:很像双指针,一个指向子数组开头,一......
  • 【noip赛前20天冲刺集训 day3】矩阵挑战
    NOIP比赛前的冲刺训练-第3天:矩阵挑战问题描述您有一个n×m矩阵,行编号从0到n−1,列编号从0到m−1。最初,第i行第j列的元素是i*m+j。系统支持三种类型的操作:交换两行。交换两列。交换两个特定的元素。任务是确定执行q次操作后矩阵的状态。输入格式为了最小化输......
  • MATLAB矩阵分析
    一、矩阵的基础知识closeall;clearall;clc;%%改变矩阵尺寸a=eye(3);a(2,4)=3;%添加第四列,第二行元素为3,其余为0a(:,4)=3;%添加第四列,元素都是3a(2,:)=[];%删除第二行a(:,2)=[];%删除第二列b=a(1:end);%将矩阵变为行向量,以列为顺序,end表示最后一个元素%%改变矩阵形状......
  • 矩阵连乘问题,生成需要的矩阵
      任务是这样子的:我们先完成txt文本矩阵的准备,大概做了50个矩阵; 代码如下:#include <iostream>#include <fstream>#include <vector>#include <random>#include <string>#include <windows.h> // 包含 Windows API 头文件// 创建文件夹(仅适用于 Window......
  • 【一】行列式
       ......
  • 矩阵键盘的基本操作
    矩阵键盘的基本操作1、矩阵键盘的扫描思想与独立按键不同的是,按键的两个引脚都分别连接的单片机的I/O端口,一个作为行信号,另外一个作为列信号。我们以4X4的矩阵键盘为例,试着探讨其工作方式和扫描思路。在上面的矩阵键盘中,要识别出黄色按键的按下状态,应该怎么做呢?对于矩阵键盘,......
  • 矩阵的乘法运算与css的3d变换(transform)
    theme:qklhk-chocolate引言:你有没好奇过,在一个使用了transform变换的元素上使用window.getComputedStyle(htmlElement)['transform']查询出来的值代表什么?为什么硬件加速要使用transform,以及为什么硬件加速会快?小科普:关于矩阵的乘法 以两个二阶齐次矩阵相乘为例 [......
  • 矩阵成真!Pytorch最新工具mm,3D可视化矩阵乘法、Transformer注意力
    前言 Pytorch团队推出的最新3D可视化最新工具mm,能够将矩阵乘法模拟世界还原。本文转载自新智元仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。CV各大方向专栏与各个部署框架最全教程整理【C......
  • 点云配准算法-旋转矩阵估计-Kabsch-Umeyama algorithm
    Kabsch-Umeyamaalgorithm参考文献:https://www.wikiwand.com/en/Kabsch_algorithm面向点云配准,最小化两点集均方根误差(RMSD,rootmeansquareddeviation)来计算最佳旋转矩阵。注:该算法只能计算旋转矩阵,做点云配准还需要计算平移向量。当平移和旋转都正确计算出,该算法有......