线性代数基础和矩阵树定理
【定义】
-
向量:每个向量由若干个标量(数)组成,每个标量都来自同一个域
。若一个向量包含 个标量,称其为 维向量。 -
向量空间
:由若干个向量组成。需要满足以下条件:-
中的向量满足加法交换律和加法结合律。 -
中存在 向量, 。 -
若
,则 。 -
记
为标量, 。 -
记
为标量, 。
-
-
线性表示:若有向量
,且存在一组标量 使得 ,则 可被 线性表示。 -
线性相关:对于一个向量空间
内的 个向量 ,若存在一组标量 满足 不全为 且 ,则称 线性相关。线性相关还有另外一个表述方式:
不可被 线性表示。 -
生成空间:对于一组向量
,定义其生成空间 : , 。可以看出, 是一个向量空间。 -
基:对于一个向量空间
,若能找出若干个向量,使它们的生成空间等于 ,称这些向量为 的一组基。基可能不唯一。定理:不论怎么找基,基中向量个数都等于
中向量的维度。 -
奇排列和偶排列:对于排列
,记其逆序对个数为 。如果 为奇数,称为奇排列;否则称为偶排列。 -
矩阵的转置。对于一个
的矩阵 ,定义其转置矩阵 : 为 的矩阵, 。
【矩阵乘法】
【向量】
向量:一个有方向的量。
如果没有方向,称为 “标量”;有方向,就是 “向量”。
平面向量:就是
维度:如果一个向量是
例如
此时,终点落在平面上的一个点
同理,在
所以,维度就是表示我们用多少个数就可以确定平面上的点。
【矩阵的理解】
矩阵乘法,就是一个线性变换。
什么叫线性变换?
我们看一个函数:
类推:
这样我们通过
观察矩阵乘法的运算法则:
把
再回过头看我们的矩阵乘法:
向量乘以矩阵,得出的向量就是经过线性变换后得出的向量。
两个矩阵相乘,既可以视作很多个向量存在矩阵里,依次进行线性变换;也可以视为得出一个先做第一个变换,再做第二个变换的等价变换。
【用矩阵处理问题】
我们说到,矩阵可以视作一个线性变换。
那么,如果我们的答案是一个经过若干次线性变换得出的,就可以考虑编成一个矩阵,然后利用快速幂在
例题:斐波那契数列,这题可谓相当经典。
我们看这个递推式:
所以我们可以考虑用矩阵乘法。
研究矩阵乘法的递推,我们从起点开始。
上面提到过,系数
所以把
我们往后推一步:
我们只要恰好一个
同理得:
所以:
同时,为了好写,我们可以把初始的一行矩阵也写成
【高斯消元】
高斯消元用来解决线性方程组的问题。
例如:
得出
这就是线性方程组。
高斯消元法给出了一个普遍性的解决这种问题的方法。
假设我们要解决一个
我们建立一个
例如:
我们的目标是得出一个矩阵,这个矩阵左边的
例如:
这样,第
回到一开始的矩阵,我们考虑考虑怎么做。
我们希望最后第一行第一列的是
所以我们先让第一行第一列变成
然后我们用第一行 “消” 掉其他行的
然后到
因此我们让第二行的第二列变成
这个时候再用第二行消去其他行的
最后到
这样我们就得出了解。
但是!还有情况!无解或者无穷多解怎么办?
考虑一个无解的情况:
消去
发现,这个时候的最后一行,前面都是
这表示
因此,只要我们做完高斯消元,发现有一行前面都是
再看看无穷多解。
消去。
这个时候最后一行全都是
高斯消元总结:
-
构建矩阵。
-
第
次操作,从 行中找出一个第 列非 的行,把这个行换到第 行的位置,用这个行消去其他行。注意:如果找不到非
的行,说明无穷多组解。 -
结束后判断有没有全
的行或者前面全 但最后不是 的行。
【行列式】
行列式定义在一个矩阵
其中
行列式有一些性质。
-
将矩阵的某一列乘以一个标量
加到另一列上,行列式不变。 -
交换矩阵的两列,行列式符号取反。
-
将某列整体乘以一个标量
,行列式也乘以 。 -
由于矩阵是对称的,上面关于 "列" 的性质,对 "行" 也同样成立。
【求行列式】
怎么求一个矩阵的行列式?根据这三条性质,有一个
首先考虑一个下(上)三角矩阵:对角线下方的位置都是
根据性质 "某行加减另一行若干倍,行列式不变" 可以用类似高斯消元的方式把原来的矩阵等价到一个下三角矩阵。
同时,高斯消元法里面会有交换两行的操作。在求行列式的时候,累计交换两行的次数,判断奇偶性,最后再取反即可。
这里可以延伸出一个行列式的性质。
-
如果矩阵存在一些列或行(列向量的集合),它们线性相关,则这个矩阵的行列式为
。证明:如果这个矩阵有一些列或行线性相关,则我们用上面的变换,使矩阵的某一行(列)全为
,显然可得行列式为 。
【柯西-宾内 公式】
Cauchy-Binet 公式可以把两矩阵相乘的行列式拆成两个矩阵分别的行列式。
介绍一下上面式子里的元素。
【矩阵树定理】
矩阵树定理能在
对于一张图
-
为 。 -
,即 点的度数。 -
令
证明:
考虑构造一个
可以发现,
观察:
考虑
对于
观察证毕。
令
这两个矩阵都一样,行列式自然也一样。所以
运用柯西-宾内(Cauchy-Binet)公式:
根据柯西宾内公式的定义,这里枚举的
同时注意
所以
接下来我们要证明:
先证明
由于
取出这
再证明
(这里严格证明不会…… 咕一下)
总之,我们证明了矩阵树定理。
这里再回顾一下矩阵树定理的原本内容:矩阵树定理表明
【矩阵树定理的拓展】
矩阵树定理的问题主要有两个方向:改造问题,变成生成树计数相关的问题;或者改造矩阵树定理的矩阵
-
非简单图的矩阵树定理。
在构造
的时候, 不再等于 ,而是等于 。发现这个改动实际上只影响了对于
的证明,而 的第 行的乘积,还是等于 。 -
边带权的矩阵树定理。
发现,矩阵树定理实际上是计算了
,其中 是一颗生成树。如果给每条边带上权,怎么做?也就是求
。回想我们矩阵树定理最重要的一步:
,我们由此推出当 的生成树的时候,答案会贡献 。具体的做法是证明可以构造一个等价的下三角矩阵。对角线的乘积为 ,进而 。现在我们想要让生成树贡献
,也就是让 ,也就是 ,也就是我们要构造一个下三角矩阵,对角线上都是 。我们知道了
怎么构造(注意这里不是 的构造):对于第 条边 ,让第 列的第 行分别等于 。但是我们要求的是
,要求的是 啊?这里有两种办法: ,和 。
【矩阵树定理的相关题目】
题意:每条边有
的概率是好的。求图中有且仅有一颗生成树上的边是好边的概率。 。
这里就相当于求
我们知道矩阵树定理可以求
所以
令
题意:给定一张图,每条边为黑白色。求恰好有
条黑边的生成树个数。 。
借助多项式的系数表示方案数。
考虑重新构造矩阵
如果边
可能这里会疑惑为什么一定要一正一负:这是为了保证当
为什么要这样做?
首先,
注意
于是只要我们求出
但是这还不够,因为在求
我们其实只关心最后每一项的系数。而且因为生成树黑边数量显然
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!