线性代数听课笔记
基本定义
- 线性空间
- 线性相关、线性无关
- 基
- 矩阵的秩
- 像空间与核空间(im,ker)
- 线性代数基本定理
高斯消元
初等行变换相当于左乘一个特殊矩阵。
求逆:对
PLU 分解:
-
初等行变换里,『一行加到零一行』、『一行乘 k』都可以表示为下三角矩阵,消出来的结果是上三角矩阵。
-
注意边做边交换和先交换再做本质相同,于是
,其中分别是排列 Permutation、下三角 Lower、上三角 Upper。 -
实际写代码时不能模拟 L 上的乘积,但是可以边消元边一列一列算。
-
应用:多组询问解方程
,其中 A 不变,先 n^3 算出 ,然后有 从而预处理矩阵逆之后可以 n^2 回答一次。
关于有限域:
-
mod 2(异或方程组):bitset 优化。
-
mod p:直接做。
-
mod 合数:辗转相除。
这里还应该有一个主元法的例题,但是我觉得我会。没啥好写的。
线性基
『动态维护极大线性无关向量组』
每次插入一个向量都依次被主元对应位消元,直到对应位空或消空。类比高斯消元。
一个扩展是类比高斯-约旦消元,找到空位后先用其下方的向量消元、再消元其上方的向量。好处是每个主元只会在线性基里出现一次。
一些简单应用是最大权线性基,第 k 大 xor(这个就是那个扩展),是否包含于线性空间,线性基合并(启发式合并)。
可删线性基:本质还是离线算法(需要知道删除时间),但是比线段树分治少个 log。
- 插入的时候带上删除时间。每次两个向量消元的时候都判一下、用删除时间更早的往下插入。
线性基求交:转化为核空间的并的核空间,难点在于建出核空间对应的线性基。
-
大致描述过程:往基向量下方贴一个单位矩阵,将上面的线性基按列变换消元,下面的 I 的后若干列向量就是核空间的一组基。
-
Quack 的课件里还有一种神秘的凑系数方法,但是复杂度一样的。
-
注意对压位异或线性基可以位运算加速。
翻维基的时候注意到了一个有趣的结论,不知道有没有用,总之先甩在这里:计算机科学里的浮点数矩阵一定满秩。
Schwartz–Zippel Lemma
对有限域
一个经典的应用是给出
- 做法是随机一个向量
并判定模意义下 。判断错 iff 对于非零矩阵 。 - 这里相当于是有
个 元一次多项式,每一个他等于零的概率都是 ,所以这个的错误率看似是 。 - 但是这
个随机事件他不独立,直接 xjb 放缩能拿到一个极松的上界 。
行列式
快速过一下:
- 逆序对形式定义
- 余子式,Laplace 展开
- 高斯消元求行列式
- 积和式(NP)
。
记一个问题:矩阵里都是一次函数,需要选常数项非零的作为代表元,选不出来怎么办?
- 有一个想法是整列除以
,这样就把一次项拿成常数项了。 - 但是有个问题:已经被消元过的行里可能会有带常数的项,怎么办?
- 注意我们只需要知道最后的主对角线,那么更上面的行都可以直接忽略。
- 于是直接把下面的除了,上面的不管他。
Cauthy-Binet Formula
(
可以看作是行列式的一个组合意义:对于
例一
用线性代数知识判断一给定 n,n 二分图是否存在完美匹配。
根据定义,能发现完美匹配数量就是邻接矩阵(好像不能叫这个名字?)的积和式。
判定积和式非零,只需要给矩阵里所有非零位随机赋权求行列式,行列式为零则积和式几乎一定为零,错误率依然可以用 Schwartz–Zippel Lemma 捏出来。
例二
有点垃圾。跳了。
例三 LOJ 3409
两个小问。
- mod 3 意义下,给
个 维向量,保证其张成空间 也是 维,从中选 个向量是 的一组基的方案数。 - mod 2 意义下,给
个 维向量,每个向量有颜色,保证其张成空间 也是 维,每种颜色选一个向量、是 的一组基的方案数。
考虑 Cauthy-Binet formula。设这
对于一个集合
对于第二问,设颜色矩阵
于是都直接跑行列式即可。
例四
求矩阵的伴随矩阵。定义是
一个性质是
于是若
如果
否则就是
- 矩阵非空,所以
。 ,所以 的每个列向量都包含于 的核空间。所以 。
所以
LGV 引理
其中
证明就是行列式的定义。能不交是因为相交的情况会算重并自己抵消。
权值设成路径条数即可计数。
例零
网格图,求路径不交方案数。起点在一排;终点在一排。
注意此时不交 iff 按顺序对应。所以带符号和就是直接路径计数。
后面两个例题有点板??不放上来了。
关于 Menger 定理
Menger 定理:DAG 中不相邻顶点
设
可以类比最大流最小割定理。
考虑这样一个问题:给定集合
-
建源点连向所有
,建汇点被所有 连。应用 Menger 定理,转化为 出发 结束的不交路径数量最值。 -
考虑确定了起点终点集合的情况改判定性问题。是否存在解,能不能直接跑 LGV 呢?不太能。有可能两个不交路径正负抵消了。
-
于是直接给边随机赋权算系数矩阵,这样 Schwartz–Zippel Lemma(并非)易知错误率不大。只要行列式非零就是一组合法的起点终点集合。
-
最大的行列式非零子集大小,就是矩阵的秩。
用这个也能跑(容量为 1 的)最大流,只需要把边点对偶,转化成
两个例题没啥好放的??本关考验你 DS 功夫。
矩阵树定理
懒得写了。ly 学长的博客写的很通透啊!
仔细研读了。这写的也太不清楚了。按他的顺序用人话说一遍。
定理本身(证明)
有利用关联矩阵 + Cauchy-Binet 公式的证明。但是这里介绍容斥的方法。
考虑任意删掉一个点
容斥:任选出边 - 钦定一个环剩下任选 + 钦定两个环剩下任选 ……
思考这和行列式有什么关系:枚举排列
考虑凑容斥系数:一个经典结论是排列逆序对数 模二同余 n-置换环数量,这也等于 置换环大小减一求和。发现只需要给每个
上面的证明可以套到内向树上。外向树反过来即可。
推广
比如这么一道题:每个点选一条出边,问形成的基环树森林的权值和,其中若有一个偶环则权值是零,否则是二的环数次方。
还是考虑钦定环的方法、把有偶环的都容斥掉,于是一组钦定的系数就是
逆用
题一:给你一个点仙人掌,无重边自环,求其邻接矩阵的行列式。
- 也就是求每个排列贡献的符号之和。先看一个确定排列的贡献:
- 不存在自环,则若
就贡献零了。 - 本质上就两种情况:
,相当于一条无向边做贡献;置换环 ,相当于选了仙人掌上的一整个环。 - 而一个排列的逆序数同余于偶环数量。直接往仙人掌(圆方树)上 DP 即可,转移比较简单?
- 一个要注意的地方是一个大环可以顺着反着贡献两次。
题二:给你一棵树,构造矩阵
- 先考虑
怎么做?发现这就是只能选单点贡献 和选无向边贡献 的情况。于是可以简单树 DP。 - 发现
的难点是可能选择 使 在树上没边。 - 你设
,其中 ,行列式可以拆成 。 - 考虑拆括号,如果一项有因子
,那么可以对于 ,发现他们拆出来的这一项权值相同、符号相反,直接抵消了。(Quack PPT 里这里写错了,他写成一对排列的全部贡献都能抵掉。) - 你考虑这意味着什么:如果一个
的选法里有 使 (即选到两条不存在的边),那么任一拆到 侧都没贡献、均拆到 侧也没贡献。 - 于是也就是至多选一条不存在的边贡献
,或选边全在树上、选零或一条边贡献 。 - 可树 DP 解决。
BEST 定理
Quack 说没用?之后再学吧。
本文作者:PrimalAspid
本文链接:https://www.cnblogs.com/hagasei/p/18648836
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步