线性代数听课笔记

基本定义

  • 线性空间
  • 线性相关、线性无关
  • 矩阵的秩
  • 像空间与核空间(im,ker)
  • 线性代数基本定理

高斯消元

初等行变换相当于左乘一个特殊矩阵。

求逆:对 \((A|I)\) 跑高斯-约旦,即可拿到 \((I|A^{-1})\)

PLU 分解

  • 初等行变换里,『一行加到零一行』、『一行乘 k』都可以表示为下三角矩阵,消出来的结果是上三角矩阵。

  • 注意边做边交换和先交换再做本质相同,于是 \(A=PLU\),其中分别是排列 Permutation、下三角 Lower、上三角 Upper。

  • 实际写代码时不能模拟 L 上的乘积,但是可以边消元边一列一列算。

  • 应用:多组询问解方程 \(Ax=b\),其中 A 不变,先 n^3 算出 \(A=PLU\),然后有 \(PLUx=b\Rightarrow Ux=L^{-1}P^{-1}b\) 从而预处理矩阵逆之后可以 n^2 回答一次。

关于有限域

  • mod 2(异或方程组):bitset 优化。

  • mod p:直接做。

  • mod 合数:辗转相除。

这里还应该有一个主元法的例题,但是我觉得我会。没啥好写的。

线性基

『动态维护极大线性无关向量组』

每次插入一个向量都依次被主元对应位消元,直到对应位空或消空。类比高斯消元。

一个扩展是类比高斯-约旦消元,找到空位后先用其下方的向量消元、再消元其上方的向量。好处是每个主元只会在线性基里出现一次。

一些简单应用是最大权线性基,第 k 大 xor(这个就是那个扩展),是否包含于线性空间,线性基合并(启发式合并)。

可删线性基:本质还是离线算法(需要知道删除时间),但是比线段树分治少个 log。

  • 插入的时候带上删除时间。每次两个向量消元的时候都判一下、用删除时间更早的往下插入。

线性基求交:转化为核空间的并的核空间,难点在于建出核空间对应的线性基。

  • 贴两张图片,图源维基百科。 pic1 pic2

  • 大致描述过程:往基向量下方贴一个单位矩阵,将上面的线性基按列变换消元,下面的 I 的后若干列向量就是核空间的一组基。

  • Quack 的课件里还有一种神秘的凑系数方法,但是复杂度一样的。

  • 注意对压位异或线性基可以位运算加速。

翻维基的时候注意到了一个有趣的结论,不知道有没有用,总之先甩在这里:计算机科学里的浮点数矩阵一定满秩。

Schwartz–Zippel Lemma

对有限域 \(F\) 内的 \(m\)\(n\) 次多项式 \(f(x_1,\dots,x_m)\),若 \(\forall i,x_i\)\(F\) 内均匀随机取值,则 \(f(x_1,\dots,x_m)=0\) 的概率是 \(n/|F|\)(甚至与 \(m\) 无关)。因为 OI 里的应用一般都取 \(|F|>10^8\),所以可以直接看作一定非零。

一个经典的应用是给出 \(n\) 阶矩阵 \(A,B,C\),判断是否有 \(AB=C\)

  • 做法是随机一个向量 \(x\) 并判定模意义下 \(ABx=Cx\)。判断错 iff 对于非零矩阵 \(M=AB-C,Mx=0\)
  • 这里相当于是有 \(n\)\(n\) 元一次多项式,每一个他等于零的概率都是 \(1/P\),所以这个的错误率看似是 \(P^{-n}\)
  • 但是这 \(n\) 个随机事件他不独立,直接 xjb 放缩能拿到一个极松的上界 \(n/P\)

行列式

快速过一下:

  • 逆序对形式定义
  • 余子式,Laplace 展开
  • 高斯消元求行列式
  • 积和式(NP)
  • \(\det A=\det A^T,\det(AB)=\det A\det B\)

记一个问题:矩阵里都是一次函数,需要选常数项非零的作为代表元,选不出来怎么办?

  • 有一个想法是整列除以 \(x\),这样就把一次项拿成常数项了。
  • 但是有个问题:已经被消元过的行里可能会有带常数的项,怎么办?
  • 注意我们只需要知道最后的主对角线,那么更上面的行都可以直接忽略。
  • 于是直接把下面的除了,上面的不管他。

Cauthy-Binet Formula

\[\det(AB)=\sum_{S\in\binom{[n]}{m}}\det(A_{[m],S})\det(B_{S,[m]}) \]

\([n]\) 表示集合 \([1,n]\cap\mathbb Z\)

可以看作是行列式的一个组合意义:对于 \(m\times n\) 矩阵 \(A\)\(n\times m\) 矩阵 \(B\),得到的 \(m\times m\) 矩阵 \(AB\) 的行列式等于对应下标集合的【 \(A\) 的若干列、\(B\) 的若干行的行列式的乘积】求和。

例一

用线性代数知识判断一给定 n,n 二分图是否存在完美匹配。

根据定义,能发现完美匹配数量就是邻接矩阵(好像不能叫这个名字?)的积和式。

判定积和式非零,只需要给矩阵里所有非零位随机赋权求行列式,行列式为零则积和式几乎一定为零,错误率依然可以用 Schwartz–Zippel Lemma 捏出来。

例二

有点垃圾。跳了。

例三 LOJ 3409

两个小问。

  • mod 3 意义下,给 \(n\)\(m\) 维向量,保证其张成空间 \(V\) 也是 \(m\) 维,从中选 \(m\) 个向量是 \(V\) 的一组基的方案数。
  • mod 2 意义下,给 \(n\)\(m\) 维向量,每个向量有颜色,保证其张成空间 \(V\) 也是 \(m\) 维,每种颜色选一个向量、是 \(V\) 的一组基的方案数。

考虑 Cauthy-Binet formula。设这 \(n\) 个行向量的堆叠是 \(A\),考察 \(\det(A^TA)\) 的组合意义。

对于一个集合 \(S\),其对行列式的贡献是 \(\det(A^T_{[m],S})\det(A_{S,[m]})=\det(A_{[m],S})^2\)。发现 mod 3 意义下 \(1^2\equiv 2^2\equiv 1\)?于是有值的集合都恰好贡献 1。

对于第二问,设颜色矩阵 \(C\)\(C_{ij}\) 表示第 \(i\) 个向量的颜色是不是 \(j\)\(\det(A^TC)\) 的组合意义类比。发现 mod 2 意义下 \(-1\equiv 1\),于是有值的集合都恰好贡献 1。

于是都直接跑行列式即可。

例四

求矩阵的伴随矩阵。定义是 \(\text{adj}(A)_{ij}\) 表示 A 的在 \(j,i\) 处的代数余子式。

一个性质是 \(A\cdot \text{adj}(A)=\det A\cdot I_n\)

于是若 \(A\) 满秩可以直接求逆。

如果 \(\text{rk}(A)\leq n-2\),那么 \(A\) 的任意余子式都不满秩,显然伴随矩阵是 \(0_n\)

否则就是 \(\text{rk}(A)=n-1\),此时:

  • 矩阵非空,所以 \(\text{rk(adj}(A))\ge 1\)
  • \(A\text{adj}(A)=0_n\),所以 \(\text{adj}(A)\) 的每个列向量都包含于 \(A\) 的核空间。所以 \(\text{rk(adj}(A))\le 1\)

所以 \(\text{rk(adj}(A))=1\),于是 \(\text{adj}(A)\) 的任两行成倍数、任两列成倍数。求出一个 \(pA=0,Aq=0\),搭配一个 \(\text{adj}(A)\) 的非零位,即可凑出 \(\text{adj}(A)\),理解一下。

LGV 引理

\(\det E=\) DAG 上 \(n\) 个起点 \(n\) 个终点,所有 \(n\) 条路径不在点上相交时的权值积的带符号和。

其中 \(E_{ij}\) 表示从起点 \(i\) 到终点 \(j\) 的路径权值。

证明就是行列式的定义。能不交是因为相交的情况会算重并自己抵消。

权值设成路径条数即可计数。

例零

网格图,求路径不交方案数。起点在一排;终点在一排。

注意此时不交 iff 按顺序对应。所以带符号和就是直接路径计数。

后面两个例题有点板??不放上来了。

关于 Menger 定理

Menger 定理:DAG 中不相邻顶点 \(x,y\)\(P\) 是一些 \(x\rightsquigarrow y\) 路径的集合,满足路径只在 \(x,y\) 处相交。

\(f(x,y)=|P|_{\max}\)\(g(x,y)\) 表示让 \(x,y\) 不联通至少需要删除几个点,则 \(f(x,y)=g(x,y)\)

可以类比最大流最小割定理。

考虑这样一个问题:给定集合 \(A,B\),求 \(g(A,B)\)(这个记号显然地不严谨,但是应该能懂)。

  • 建源点连向所有 \(A\),建汇点被所有 \(B\) 连。应用 Menger 定理,转化为 \(A\) 出发 \(B\) 结束的不交路径数量最值。

  • 考虑确定了起点终点集合的情况改判定性问题。是否存在解,能不能直接跑 LGV 呢?不太能。有可能两个不交路径正负抵消了。

  • 于是直接给边随机赋权算系数矩阵,这样 Schwartz–Zippel Lemma(并非)易知错误率不大。只要行列式非零就是一组合法的起点终点集合。

  • 最大的行列式非零子集大小,就是矩阵的秩。

用这个也能跑(容量为 1 的)最大流,只需要把边点对偶,转化成 \(A\) 是源点的出边、\(B\) 是汇点的入边。容量为一正好限制了每一条流都不在(旧)边上相交。

两个例题没啥好放的??本关考验你 DS 功夫。

矩阵树定理

懒得写了。ly 学长的博客写的很通透啊!

仔细研读了。这写的也太不清楚了。按他的顺序用人话说一遍。

定理本身(证明)

有利用关联矩阵 + Cauchy-Binet 公式的证明。但是这里介绍容斥的方法。

考虑任意删掉一个点 \(r\),任意钦定剩下点的出边使不成环的方案数。

容斥:任选出边 - 钦定一个环剩下任选 + 钦定两个环剩下任选 ……

思考这和行列式有什么关系:枚举排列 \(p_i\),若 \(p_i=i\) 则这是任选的点,对方案数的贡献是 \(D_i\);否则 \(p_i\neq i\) 这就是钦定的环,对方案数的贡献是 \(G_{i,p_i}\)。也就是每个 \(\geq2\) 的置换环是钦定环,\(1\) 的自环是任选。

考虑凑容斥系数:一个经典结论是排列逆序对数 模二同余 n-置换环数量,这也等于 置换环大小减一求和。发现只需要给每个 \(\geq2\) 的置换环里的所有贡献取负,那么:\(1\) 的置换环贡献仍是 0,每个 \(\geq2\) 的置换环贡献都为 \(-1\),这正好是我们容斥的系数。

\(\geq2\) 的置换环里的所有贡献就是所有的 \(G\)。于是 \(\det(D-G)\) 即为答案。

上面的证明可以套到内向树上。外向树反过来即可。

推广

比如这么一道题:每个点选一条出边,问形成的基环树森林的权值和,其中若有一个偶环则权值是零,否则是二的环数次方。

还是考虑钦定环的方法、把有偶环的都容斥掉,于是一组钦定的系数就是 \((-1)^{\text{偶环数}}\)。仍然利用上面逆序对数的结论,随便捏一下能知道答案就是 \(\det(D+G)\)

逆用

题一:给你一个点仙人掌,无重边自环,求其邻接矩阵的行列式。

  • 也就是求每个排列贡献的符号之和。先看一个确定排列的贡献:
  • 不存在自环,则若 \(p_i=i\) 就贡献零了。
  • 本质上就两种情况:\(p_i=j,p_j=i\),相当于一条无向边做贡献;置换环 \(\geq3\),相当于选了仙人掌上的一整个环。
  • 而一个排列的逆序数同余于偶环数量。直接往仙人掌(圆方树)上 DP 即可,转移比较简单?
  • 一个要注意的地方是一个大环可以顺着反着贡献两次。

题二:给你一棵树,构造矩阵 \(M\),满足 \(M_{fa_i,i}=a_i,M_{i,fa_i}=b_i,M_{i,i}=c_i\),剩下位置都是 \(x\),求 \(M\) 的行列式。(qoj7408)

  • 先考虑 \(x=0\) 怎么做?发现这就是只能选单点贡献 \(c_u\) 和选无向边贡献 \(a_ub_v\) 的情况。于是可以简单树 DP。
  • 发现 \(x>0\) 的难点是可能选择 \(p_u=v\) 使 \(u,v\) 在树上没边。
  • 你设 \(M=P+X\),其中 \(X=x_{nn}\),行列式可以拆成 \(\sum_p(-1)^{inv(p)}\prod_{i\in p}(P_{i,p_i}+x)\)
  • 考虑拆括号,如果一项有因子 \(x^2\),那么可以对于 \(p^\prime_i=p_j,p^\prime_j=p_i\),发现他们拆出来的这一项权值相同、符号相反,直接抵消了。(Quack PPT 里这里写错了,他写成一对排列的全部贡献都能抵掉。)
  • 你考虑这意味着什么:如果一个 \(p\) 的选法里有 \(i,j\) 使 \(P_{i,p_i}=P_{j,p_j}=0\)(即选到两条不存在的边),那么任一拆到 \(P\) 侧都没贡献、均拆到 \(x\) 侧也没贡献。
  • 于是也就是至多选一条不存在的边贡献 \(x\),或选边全在树上、选零或一条边贡献 \(x\)
  • 可树 DP 解决。

BEST 定理

Quack 说没用?之后再学吧。

posted @ 2025-01-02 22:10  PrimalAspid  阅读(261)  评论(0)    收藏  举报