2025.2.7 线性代数 讲课笔记

线性空间

定义

\(F\) 上的线性空间 \(V\) 为一个集合,定义的加法 \(+:V\times V\to V\) 和数乘 \(\cdot:F\times V\to V\),满足代数系统 \((V,+)\) 构成交换群(其中的幺元称为零元,记为 \(0\)),\(\cdot\) 存在结合律,\(\cdot\)\(F\) 中存在幺元(记为 \(1\)),且 \(\cdot\)\(+\) 有左右分配律

也称为向量空间

性质

  • 零元唯一
  • \(F\)\(V\) 中任意数乘以 \(0\)\(0\)
  • \(V\) 中任意数存在唯一逆元

例子

  • 几何空间为 \(\mathbb R\) 上的线性空间
  • 数域 \(F\) 上有序 \(n\) 元组集 \(F^n\)\(F\) 上的线性空间
  • \(\mathbb C\)\(\mathbb R\) 上的线性空间
  • \(\mathbb R\)\(\mathbb Q\) 上的线性空间
  • \(X\subseteq \mathbb R\land X\ne\emptyset\),则 \(\{f\mid f:X\to \mathbb R\}\)\(\mathbb R\) 上的线性空间(把映射关系看做一个向量)

线性子空间

\(V\)\(F\) 上的线性空间,若 \(U\subseteq V\),且 \(U\)\(V\) 的加法和数乘也构成 \(F\) 上的线性空间,则 \(U\)\(V\)线性子空间

\(U\)\(V\) 的线性子空间当且仅当 \(U\) 关于加法和数乘封闭

线性组合 与 线性表出

\(V\)\(F\) 上的线性空间,\(v_{1\sim k}\in V\)\(a_{1\sim k}\in F\),则称 \(\sum_{i=1}^k a_iv_i\)\(v_{1\sim k}\) 的一个线性组合\(a_{1\sim k}\)组合系数

\(v_{1\sim k}\) 的所有线性组合构成的集合为 \(V\) 的线性子空间,称为 \(v_{1\sim k}\)生成子空间,记为 \(\langle v_1,v_2,\cdots,v_k\rangle\)

\(u\in\langle v_1,v_2,\cdots,v_k\rangle\) 则称 \(u\) 可被 \(v_1,v_2,\cdots,v_k\) 线性表出

线性相关 与 线性无关

\(V\)\(F\) 上的线性空间,\(v_{1\sim k}\in V\),若 \(\exists a_{1\sim k}\) 满足 \(\prod a_i\ne 0\)\(\sum_{i=1}^k a_i v_i=0\),则 \(v_{1\sim k}\) 线性相关,否则线性无关

\(v_{1\sim k}\) 线性相关当且仅当 \(\exists 1\le i\le k\) 满足 \(v_i\) 可以被其他 \(v\) 线性表出

定义 \(v_{1\sim k}\) 的极大线性无关组为其极大线性无关子集

显然极大线性无关组不一定唯一,但之间一定可以互相线性表出(向量组之间可以线性表出表示其中一个向量组的任意向量可以被另一个线性表出)

原向量组和其任意极大线性无关组可以互相线性表出

称可互相线性表出的向量组等价

向量组的秩

\(u_{1\sim m}\) 能被 \(v_{1\sim k}\) 线性表出,且 \(m>k\),则 \(u_{1\sim m}\) 线性相关

\(u_{1\sim m}\) 能被 \(v_{1\sim k}\) 线性表出,且 \(u_{1\sim m}\) 线性无关,则 \(m\le k\)

同一向量组的任意极大线性无关组包含向量数量相同,称其为该向量组的秩

向量组 \(S\) 的秩记为 \(\operatorname{rank}(S)\)

若向量组 \(S_1\) 可被 \(T\) 线性表出,则 \(\operatorname{rank}(S_1)\le\operatorname{rank}(S_2)\)

等价的向量组秩相同

基 与 维数

对于 \(F\) 上的线性空间 \(V\)\(S\subseteq V\) 若满足 \(S\) 线性无关且\(V\) 中任意元素都可用 \(S\) 的有限子集线性表出,则 \(S\)\(V\) 的一组

\(S\) 为有限集,则称 \(V\)维数\(|S|\),记为 \(\dim S\)

任意线性无关集都可以扩充成 \(V\) 的一组基

线性子空间的维数不超过原线性空间的维数

线性子空间的维数和原线性空间相等当且仅当线性子空间为原线性空间

正交

定义两个向量正交当且仅当两者内积为 \(0\)

若一个内积空间的子空间 \(A\)\(B\) 满足 \(A\) 中任意元素和 \(B\) 中任意元素正交,则称两者互为正交子空间

内积子空间的正交补为所有与该子空间内元素正交的元素构成的集合

矩阵

定义

\(n\times m\) 个元素排为 \(n\) 行,每行 \(m\) 个,得到的数表称为矩阵

\(n=m\) 则称为 \(n\) 阶方阵

每个元素在 \(R\) 中的 \(n\times m\) 的矩阵的集合记为 \(R^{n\times m}\)\(\mathcal M_{n\times m}(R)\),若为方阵则记为 \(\mathcal M_{n}(R)\),默认矩阵定义在域上

默认矩阵 \(A\) 行号集合为 \(R_A=[1,n]\cap \mathbb N\),列号集合为 \(C_A=[1,m]\cap \mathbb N\)

保留 \(I\subseteq R_A\)\(J\subseteq C_A\) 的行列所得的子矩阵记为 \(A[I,J]\)

加减

按位加减,时间复杂度 \(O(nm)\)

数乘

每个位置都乘即可,时间复杂度 \(O(nm)\)

转置

即原本每个 \(A_{i,j}\) 变为 \(A_{j,i}\),记为 \(A^T\),时间复杂度 \(O(nm)\)

性质

  • \(+\)\(\mathcal M_{n\times m}(R)\) 构成交换群
  • 数乘和转置对 \(+\) 有分配律
  • \((cA)^T=c(A^T)\)

直和

矩阵 \(A\)\(B\)直和 \(\operatorname{diag}(A,B)=\begin{bmatrix}A&0\\0&B\end{bmatrix}\),此处代表拼接

多个矩阵 \(A_{1\sim k}\) 的直和记为 \(\operatorname{diag}(A_1,A_2,\cdots,A_k)\)

乘法

假设要计算 \(A:n\times m\)\(B:m\times k\) 的积

暴力实现为小常数 \(O(nmk)\)

\(n\) 阶方阵乘法可用 \(Strassen\) 算法做到 \(O(n^{\log_2 7})\),约 \(O(2^{2.807})\),理论上常数为暴力的 \(5\) 左右,因此建议 \(n\le 512\) 时使用暴力

还有 \(Coppersmith-Winograd\) 算法等更优的算法,目前理论最优时间复杂度约为 \(O(n^{2.3728596})\),但由于常数过大且过于复杂而基本没有实用价值

以下将矩阵乘法时间复杂度记为 \(O(n^{\omega})\),其中目前 \(\omega\ge 2.3728596\)(但是包含 bitset 的部分要将其理解为位宽)

方阵的为方阵主对角线的元素之和,记为 \(\operatorname{tr}(A)\)

满足:

  • \(\operatorname{tr}(A+B)=\operatorname{tr}(A)+\operatorname{tr}(B)\)
  • \(\operatorname{tr}(kA)=k\operatorname{tr}(A)\)
  • \(\operatorname{tr}(AB)=\operatorname{tr}(BA)\)

初等变换

包括交换两行(列),某一行(列)乘以给定值,某一行(列)加上另一行(列)的若干倍

称单位矩阵 \(I\) 做初等变换得到的矩阵为初等矩阵,则对矩阵 \(A\) 做初等变换等价于 \(A\) 左乘或右乘一个初等矩阵

矩阵的行秩为行向量的极大线性无关组的大小,列秩同理

可证两者相等,因此统称为矩阵的,记为 \(\operatorname{rank}(A)\)

有性质:

  • \(\operatorname{rank}(AB)\le \min(\operatorname{rank}(A),\operatorname{rank}(B))\)
  • 一个 \(n\times m\) 的矩阵 \(A\) 可表示为一个 \(n\times \operatorname{rank}(A)\) 和一个 \(\operatorname{rank}(A)\times m\) 的矩阵之积
  • 森林邻接矩阵的秩为该森林最大匹配数目的两倍

线性方程组

线性方程组可表示为 \(Ax=b\),其中 \(A\) 为系数矩阵,\(x\) 为未知元向量,\(b\) 为向量

\(b\) 为零向量则为齐次方程组,否则为非齐次方程组

\(A\)\(b\) 拼接得到的 \(n\times (n+1)\) 的矩阵称为其增广矩阵

该方程组有解当且仅当增广矩阵和 \(A\) 的秩相同

行空间 与 列空间

行向量的生成子空间为行空间,记为 \(C(A^T)\),列空间同理,记为 \(C(A)\)

对于任意矩阵 \(A\),有 \(\dim C(A^T)=\dim C(A)=\operatorname{rank} A\)

线性方程组的解的结构

齐次线性方程组的解构成一个线性空间

非齐次线性方程组 \(Ax=b\) 的解为 \(\alpha+U\),其中 \(\alpha\) 为一组特解,\(U\)\(Ax=0\) 的解的线性空间

零空间与左零空间

矩阵 \(A\)零空间\(Ax=0\) 的解集,记为 \(N(A)\)

矩阵 \(A\)左零空间\(A^Tx=0\) 的解集,记为 \(N(A^T)\)

对于任意 \(n\times m\) 的矩阵 \(A\),有

  • \(\dim N(A)=m-\operatorname{rank}(A)\)\(\dim N(A^T)=n-\operatorname{rank}(A)\)
  • \(N(A)\)\(C(A^T)\)\(N(A^T)\)\(C(A)\) 互为正交子空间和正交补

逆矩阵

对于 \(n\) 阶方阵 \(A\),若存在方阵 \(B\) 使得 \(AB=BA=I_n\),则 \(B\)\(A\)逆矩阵,记为 \(A^{-1}\)\(A\) 为可逆的

\(A\) 为不可逆的,则称为奇异矩阵

显然逆矩阵唯一,其可用于求解线性方程组

有性质:

  • \((A^{-1})^{-1}=A\)
  • \(cA^{-1}=(\frac 1cA)^{-1}\)
  • \((AB)^{-1}=B^{-1}A^{-1}\)
  • \((A^{T})^{-1}=(A^{-1})^T\)

行阶梯形矩阵 与 简化行阶梯形矩阵

假设 \(n\times m\) 的矩阵 \(A\)\(i\) 行第一个非零元素在 \(p_i\)(不存在则为 \(m+1\)),若 \(a_i\) 删去后缀的 \(m+1\) 后严格递增,则称 \(A\)行阶梯形矩阵

若在严格递增的基础上,每行仅有至多一个非 \(0\) 元素,且若存在非零元素则一定为 \(1\),称该矩阵为简化行阶梯形矩阵

任意矩阵通过有限步初等变换可变为行阶梯形矩阵和简化行阶梯形矩阵,前者不唯一,后者唯一

变换后的行列空间不变

消元

可用 高斯消元法高斯-若尔当消元法\(O(n^3)\) 求出矩阵的 简化行阶梯形矩阵,前者常数较小,一般两者统称为高斯消元法

数域一般为 \(GF(2)\)(布尔),浮点数,模域(一般为质数)

若模数不为质数,则需要通过类似辗转相除法的方式计算,时间复杂度 \(O(n^3+n^2\log V)\)

若数域为 \(GF(2)\),一般为异或方程组,可以用 bitset 做到 \(O(\frac{n^3}\omega)\)

求矩阵的秩:消元后得到简化行阶梯形矩阵,非零行的数量即为矩阵的秩

解线性方程组:对增广矩阵的左侧消元,最终的右侧即为答案

矩阵求逆:若要求方阵 \(A\) 的逆,令 \(B=[A\; I_n]\)(即将 \(A\)\(I_n\) 拼为 \(n\times 2n\) 的矩阵),对 \(B\) 的左侧消元,则最终的右侧为 \(A\) 的逆,若最终左侧不是 \(I_n\)\(A\) 不可逆

行列式

定义

\(n\) 阶方阵 \(A\) 的行列式为

\[\det(A)=\sum_{\sigma\in S_n} (-1)^{\operatorname{sgn}(\sigma)}\prod_{i=1}^n A_{i,\sigma_i} \]

其中 \(S_n\) 表示长为 \(n\) 的排列的集合,\(\operatorname{sgn}(\sigma)\) 为排列的逆序对数

性质

  • \(A\) 交换两行(列),行列式变为相反数
  • \(A\) 的某一行(列)乘以 \(k\),行列式乘以 \(k\)
  • \(A\) 的某一行(列)乘以另一行(列)的若干倍,行列式不变
  • \(A\) 的某一行(列)为两个数组之和,则 \(A\) 的行列式等于将 \(A\) 的这行(列)分别替换为这两个数组后的行列式之和
  • 若行列式某一行(列)全 \(0\),则行列式为 \(0\)
  • \(A\) 某一行(列)为另一行(列)的若干倍,则行列式为 \(0\)
  • 转置后行列式不变

根据定义即可证明

行列式和一般图最大匹配

子式与余子式

对于 \(n\) 阶方阵 \(A\),令 \(I\subseteq R_A\)\(J\subseteq C_A\),定义

  • \(\det(A[I:J])\)子式,若 \(I=J\),则为 主子式,若 \(I=J=\{1,2,\cdots,k\}\),则为 顺序主子式
  • \(\det(A[R_A/I,C_A/J])\)余子式
  • \(\operatorname{sgn}(I,J)\det(A[R_A/I,C_A/J])\)代数余子式

此处 \(\operatorname{sgn}(I,J)=\sum I+\sum J\)

拉普拉斯展开

对于 \(n\) 阶方阵 \(A\) 和任意 \(1\le i\le n\),有

\[\det(A)=\sum_{j=1}^n (-1)^{i+j} A_{i,j} \det(A[R_A/\{i\}],C_A/\{j\}]) \]

列同理

扩展形式

对于 \(n\) 阶方阵 \(A\) 和任意 \(I\subseteq R_A\),有

\[\det(A)=\sum_{J\subseteq C_A,|I|=|J|} (-1)^{\operatorname{sgn}(I,J)}\det(A[I,J])\det(A[R_A/I,C_A/J]) \]

列同理

上下三角矩阵的行列式

上下三角矩阵行列式为 \(\prod_{i=1}^n A_{i,i}\),因为 $\sigma\ne{1,2,\cdots,n} $ 时贡献一定为 \(0\)

范德蒙矩阵的行列式

范德蒙矩阵 形如

\[\begin{bmatrix} 1 & a_1 & a_1^2 & \cdots & a_1^{n-1}\\ 1 & a_2 & a_2^2 & \cdots & a_2^{n-1}\\ \vdots & \vdots & \vdots & \ddots & \vdots\\ 1 & a_n & a_n^2 & \cdots & a_n^{n-1}\\ \end{bmatrix} \]

其行列式为

\[\prod_{1\le i<j\le n}(a_j-a_i) \]

上海森堡矩阵的行列式

上海森堡矩阵定义为满足所有 \(i>j+1\) 位置的值都是 \(0\) 的矩阵

\(dp\) 求其行列式

\(f_i\) 表示 \(A[i\sim n,i\sim n]\) 的行列式,显然该范围也是一个上海森堡矩阵,最终要求的答案为 \(f_1\),令 \(f_{n+1}=1\)

转移时,枚举行列式排列中位置 \(i\) 的值,假设值为 \(j\),则 \(i+1\sim j\) 内值为 \(i\sim j-1\),为上三角矩阵,\(j+1\sim n\) 为子问题,转移方程为

\[f_i=\sum_{j=i}^n (-1)^{j-i}A_{i,j} f_{j+1} \prod_{k=i+1}^j A_{k,k-1} \]

时间复杂度 \(O(n^2)\)

西尔维斯特矩阵

对于多项式 \(f,g\),设其次数分别为 \(n\)\(m\),系数分别为 \(a_i\)\(b_i\),则两者的西尔维斯特矩阵 \(S_{f,g}\)\((n+m)\times (n+m)\) 的矩阵

\(S_{f,g}\) 第一行为 \([a_n\,\, a_{n-1}\,\, \cdots \,\, a_0\,\,0\,\,0\,\,\cdots 0]\),之后 \(m-1\) 行为前一行右移一位的结果

\(n+1\) 行为 \([b_m\,\, b_{m-1}\,\, \cdots \,\, b_0\,\,0\,\,0\,\,\cdots \,\,0]\),之后 \(n-1\) 行为前一行右移一位的结果

定义 \(f\)\(g\)结式\(\operatorname{res}(f,g)=\det(S_{f,g})\)

\(f\) 的根为 \(x_1\sim x_n\)\(g\) 的根为 \(y_1\sim y_n\),则

\[\operatorname{res}(f,g)=a_n^m b_m^n\prod_{i=1}^n\prod_{j=1}^m (x_i-y_j) \]

假定 \(f\)\(g\) 的最高次项为 \(1\),则 \(\operatorname{res}(f,g)=\prod_{i=1}^n g(x_i)=\prod_{i=1}^n (g\bmod f)(x_i)\)

因此可以辗转相除法求结式,时间复杂度 \(O(nm)\)

一般矩阵的行列式求值

根据行列式的性质,可在高斯消元的过程中计算方阵行列式,时间复杂度 \(O(n^3)\)

对于域上的矩阵,可 \(O(n^{\omega})\) 求行列式,见 \(WC2021\) 讲课

元素在交换环上的行列式

\(B(z)=I+z(A-I)\)(即 lerp(I,A)

则矩阵 \(B(z)\) 的每个元素为一个多项式

若能求出 \(B(z)\) 的行列式(显然也是多项式),则带入 \(z=1\) 可得 \(A\) 的行列式

因为 \(B(0)=I\),消元过程中对角线上元素的常数一定为 \(1\),因此一定有逆元

朴素 \(O(n^2)\) 求逆元即可,用到加法、乘法和幺元,满足交换环的性质

\(B(z)\) 每个元素对 \(z^{n+1}\) 取模

时间复杂度 \(O(n^5)\)

行列式的乘法定理

\[\det(AB)=\det(A)\det(B) \]

推论:对于任意可逆矩阵 \(A\),有 \(\det(A^{-1})=\det(A)^{-1}\)

柯西 - 比内公式

对于 \(n\times m\) 的矩阵 \(A\)\(m\times n\) 的矩阵 \(B\)\(m>n\)),有

\[\det(AB) = \sum_{S\subset C_A=R_B,|S|=n} \det(A[R_A,S])\det(B[S,C_B]) \]

克莱姆法则

对于线性非齐次方程 \(Ax=b\),若 \(A\) 可逆,令 \(D=\det(A)\),令 \(D_j\) 表示将 \(A\)\(j\) 行换为 \(b\) 后的行列式,则有 \(x_i=\frac {D_i}D\)

伴随矩阵

对于 \(n\) 阶方阵 \(A\),定义其伴随矩阵 \(\operatorname{adj}(A)\)\(n\times n\) 的方阵,满足

\[\operatorname{adj}(A)_{j,i}=(-1)^{i+j}\det(A[R_A/\{i\},C_A/\{j\}]) \]

即矩阵在 \((i,j)\) 处的代数余子式为 \(\operatorname{adj}(A)_{j,i}\)

有时也记为 \(A^\ast\)

伴随矩阵有性质

\[A\operatorname{adj}(A)=\operatorname{adj}(A)A=\det(A)I \]

由此可推出 \(A\) 存在逆当且仅当 \(\det(A)\) 存在逆

求法 1

实际上为求每个位置的代数余子式

分治,令 \(sol(l,r)\) 表示删除的行下标可能在 \([l,r]\) 内,\([l,r]\) 以外已经消元完毕,当 \(l=r\) 时枚举删除的列,剩下部分一定为上海森堡矩阵,可 \(O(n^2)\) 求,总时间复杂度 \(O(n^3\log n)\)

当模数为合数时,同样适用类似辗转相除法,时间复杂度 \(O(n^3\log n+n^2\log n\log M)\)

求法 2

由伴随矩阵的性质可得

\[\operatorname{adj}(A)=\det(A)A^{-1} \]

时间复杂度 \(O(n^{\omega})\)

但此方法需要保证 \(A\) 可逆

求法 3

考虑一般情况

\(A\) 大小为 \(n\),讨论 \(\operatorname{rank}(A)\) 的大小

\(\operatorname{rank}(A)=n\),则矩阵有逆,使用求法 \(2\)

\(\operatorname{rank}(A)\le n-2\),则伴随矩阵一定全 \(0\)

\(\operatorname{rank}(A)=n-1\)

  • 根据性质有 \(\operatorname{adj}(A)A=\det(A)=0\),可得 \(\operatorname{adj}(A)\) 秩为 \(1\)
  • 说明 \(\operatorname{adj}(A)=xy^T\),其中 \(x\)\(y\) 为两个非零向量
  • 带入 \(A\operatorname{adj}(A)=\operatorname{adj}(A)A=\det(A)=0\) 可得 \(Axy^T=xy^TA=0\),即 \(Ax=y^TA=0\)
  • 因为 \(A\) 的秩为 \(n-1\),其零空间和左零空间的维度为 \(1\),用高斯消元分别求出两者的一组基 \(\{x_0\}\)\(\{y_0\}\),则上述 \(x\)\(y\) 满足 \(x=cx_0,y=dy_0\)
  • 根据伴随矩阵的定义求出一个位置的值后可以得到 \(cd\) 的值,由此求出 \(xy^T\) 可得整个矩阵

时间复杂度 \(O(n^3)\)

模合数下可以到 \(O(n^3+n^2\log M\log\log M)\),具体可参考 \(IOI2020\) 候选队员论文

矩阵的相似

定义

对于 \(n\) 阶方阵 \(A\)\(B\),若存在可逆方阵 \(U\) 使得 \(B=U^{-1}AU\),则称 \(A\)\(B\) 相似,记为 \(A\sim B\)

\(\mathcal M_n(K)\) 上的相似关系为等价关系,可划分为若干等价类

运算

\(B=U^{-1}AU\),则 \(\forall k\in \mathbb N\),有 \(B^k=U^{-1}A^kU\)

推论:对于任意关于方阵的多项式 \(f(x)\),若 \(B=U^{-1}AU\),则 \(f(B)=U^{-1}f(A)U\)

性质

\(A\sim B\),则 \(\operatorname{tr}(A)=\operatorname{tr}(B)\)\(\det(A)=\det(B)\)\(\operatorname{rank}(A)=\operatorname{rank}(B)\)

对角化

若矩阵 \(A\) 相似于一个对角矩阵 \(D\),则称 \(A\) 可对角化,称 \(D\)\(A\)对角标准型

\(A=U^{-1}DU\),则等价于存在可逆矩阵 \(U\) 使得 \(AU=UD\)

\(U=[\vec\alpha_1 \;\;\vec\alpha_2\;\;\cdots\;\; \vec\alpha_n]\),其中 \(\vec\alpha_{1\sim n}\) 都是向量且线性无关,令 \(D\) 对角线上元素依次为 \(\lambda_{1\sim n}\)

则有 \(A\vec\alpha_i=\lambda_i\vec\alpha_i\)

特征值 与 特征向量

\(A\in\mathcal M_n(K)\)\(\lambda\in K\)\(\vec\alpha\in K^n,\alpha\ne 0\),若 \(A\vec\alpha=\lambda\vec\alpha\),则称 \(\lambda\)\(A\)特征值\(\vec\alpha\)\(A\) 属于 \(\lambda\)特征向量

\(A\) 可对角化当且仅当其存在 \(n\) 个线性无关的特征向量

\(\lambda\)\(A\) 的特征值当且仅当 \(\det(\lambda I_n-A)=0\)\(\vec\alpha\)\(A\) 属于 \(\lambda\) 的特征向量当且仅当 \(\vec\alpha\) 为方程 \((\lambda I_n-A)\vec x=0\) 的非零解

特征多项式

\(A\)特征多项式 \(p_A(x)=\det(xI_n-A)\)

满足

\[[x^n]p_A(x)=1 \]

\[[x^{n-1}]p_A(x)=-\operatorname{tr}(A)=\operatorname{tr}(-A) \]

\[[x^0]p_A(x)=(-1)^n\det(A)=\det(-A) \]

\(A\) 的特征值集合等于 \(p_A(x)\) 的根的集合(包括复数域,考虑重复),因此 \(\operatorname{tr}(A)=\sum_i \lambda_i\)\(\det(A)=\prod_i \lambda_i\)(其中 \(\lambda\) 为特征值)

相似矩阵的特征多项式相同

求特征多项式

特征多项式次数为 \(n\),因此可以求出 \(n+1\) 个点值后插值求出多项式,朴素实现为 \(O(n^4)\)

考虑找出 \(A\) 的一个相似矩阵 \(B\),满足 \(B\) 为上范德蒙德矩阵,这样可以 \(O(n^2)\) 求出一个 \(\det\),从而将时间复杂度降到 \(O(n^3)\)

问题转化为求出给定矩阵的相似上范德蒙德矩阵

考虑修改高斯消元的过程

为了保证修改后的矩阵和修改前的矩阵相似,交换 \(i\)\(j\) 两行后要同时交换 \(i\)\(j\) 两列,第 \(i\) 行减去第 \(j\) 行的 \(k\) 倍后第 \(j\) 列需要加上第 \(i\) 列的 \(k\)

因此从 \(1\)\(n\) 枚举 \(i\)

找到 \(i+1\sim n\) 中第一个第 \(i\) 列不为 \(0\) 的行并与第 \(i+1\) 行交换(同时对列操作,若第 \(i+1\) 行符合要求则不交换)

这样 \(A_{i+1,i}\ne 0\)

然后从 \(i+2\)\(n\) 枚举 \(j\),第 \(j\) 行减去 \(i+1\) 行的 \(A_{j,i}\) 倍(同时对列操作)

这样可以 \(O(n^3)\) 得到相似上范德蒙德矩阵

总时间复杂度 \(O(n^3)\)

参考

代数重数

定义方阵 \(A\) 的特征值 \(\lambda\)代数重数\(A\) 的特征多项式因式分解后 \((x-\lambda)\) 的出现次数

特征子空间 与 几何重数

\(\lambda\)\(A\) 的特征值,令方程 \((\lambda I_n-A)\vec x=0\) 的解空间为 \(\lambda\)特征子空间,特征子空间为维数称为 \(\lambda\)几何重数

几何重数 与 代数重数

\(\lambda\)\(n\) 阶方阵 \(A\) 的特征值,几何重数为 \(r\),则 \(r\) 不小于 \(\lambda\) 的代数重数,即 \((x-\lambda)^r\)\(|\lambda I_n-A|\) 的因式

推论:\(n\) 阶方阵各特征子空间维数和 \(\le\) 特征值的代数重数和 \(\le n\)

矩阵可对角化的条件

\(A\) 的不同特征子空间为 \(V_{1\sim s}\),有 \(\alpha_i\in V_i\),若 \(\sum_i \alpha_i=0\)\(\forall i,\alpha_i=0\)

推论:不同特征子空间的基之并线性无关

\(n\) 阶方阵可对角化当且仅当各特征子空间维数和等于 \(n\)

零化多项式 与 线性递推

零化多项式

对于方阵 \(A\),若非零多项式 \(f\) 满足 \(f(A)=0\),则称 \(f\)\(A\)零化多项式

卡莱 - 哈密顿定理

特征多项式是零化多项式

最小多项式

\(A\) 所有零化多项式中次数最小且最高次项系数为 \(1\) 的一个为最小多项式

显然最小多项式次数不超过 \(n\)

方阵 \(A\) 的最小多项式存在且唯一

\(A\) 的最小多项式为其任意零化多项式的因式

相似方阵的最小多项式相同

\(A\) 的最小多项式的解集与其特征多项式相同(不考虑重复)

线性递推式

对于数列 \(a_{0\sim \ast}\)(可以无限)和有限数列 \(r_{0\sim m-1}\),若 \(\forall p\ge m-1\)\(\sum_{i=0}^{m-1} r_i a_{p-i}=0\),则称 \(r\)\(a\)线性递归式

满足 \(r_0=1\)线性递归式线性递推式

定义线性递推式 \(r_{0\sim m-1}\) 的阶数为 \(m-1\),阶数最小的一个为最短线性递推式

求有限数列最短线性递推式:Berlekamp - Massey算法

暴力高斯消元为 \(O(n^3)\) 的,使用 \(BM\) 算法可以到 \(O(nm)\)(且能求出 \(a\) 每个前缀的线性递推式),其中 \(m\) 为答案长度,显然 \(m\le n\)

\(a_{0\sim i}\) 的线性递推式为 \(r^{(i)}\),其长度为 \(l_i\),假定 \(r^{(-1)}=\{1\}\)

显然 \(l_i\) 单调不降

有定理:若 \(r^{(i-1)}\) 不是 \(a_{0\sim i}\) 的线性递推式,则有 \(l_i\ge \max(l_{i-1},i+1-l_{i-1})\)

\(BM\) 算法可以令其取到等号

考虑增量法

\(r^{(i-1)}\)\(a_{0\sim i}\) 的线性递推式,则令 \(r^{(i)}=r^{(i-1)}\)

否则假设带入 \(r^{(i-1)}\) 得到的值为 \(t\),令 \(p\) 为满足 \(0\le p<i\)\(l_p>l_{p-1}\) 的最大值,假设带入 \(r^{(p-1)}\) 得到的值为 \(t'\)

\(R^i\)\(r^{(i)}\) 的生成函数,则构造

\[R^i=R^{i-1}-\frac{t}{t'}x^{i-p}R^{p-1} \]

可证其正确性

时间复杂度 \(O(nm)\)

求无限数列最短线性递推式

可证若已知长度上界为 \(s\),则取前 \(2s\) 项计算即可得到整个序列的最短线性递推式,时间复杂度 \(O(s^2)\)

常系数齐次线性递推

给定 \(a_{0\sim m-2}\) 和线性递推式 \(r_{0\sim m-1}\),求出 \(a_n\)

\(S=[a_0\;\; a_1\;\;\cdots\;\; a_{m-2}]\)\(A\) 为一般矩阵快速幂的转移矩阵,则答案为 \((S\times A^n)_0\)

\(p_A(A)\times g(A)+f(A)= A^n\),即 \(f(A)=A^n\bmod {p_A(A)}\)

\(p_A(A)=0\),因此 \(f(A)=A^n\)(不考虑无法除以 \(0\),可以解决这种情况)

\(f(x)=\sum_{i=0}^{m-2} c_ix^i\),则可得 \((S\times A^n)_0=(\sum_{i=0}^{m-2} Sc_i A^i)_0=\sum_{i=0}^{m-2} c_i (SA^i)_0=\sum_{i=0}^{m-2} c_ia_i\)

因此若得到 \(p_A(x)\),则可以多项式快速幂(\(x\)\(n\) 次幂对 \(p_A(x)\) 取模)加多项式取模 \(O(m\log m\log n)\) 求出 \(f(x)=x^n\bmod p_A(x)\),然后 \(O(m)\) 求出答案

可证 \(p_A(x)=\sum_{i=0}^{m-1}r_{m-1-i} x^i\)

因此总时间复杂度 \(O(m\log m\log n)\)

模板题(包括 \(BM\)):P5487 【模板】Berlekamp–Massey 算法

求矩阵的最小多项式

等价于求矩阵数列 \(\{I,A,A^2,\cdots\}\) 的最短线性递推式

随机向量 \(v\)\(u\),先递推出 \(\{u,uA,uA^2,\cdots\}\)(取前 \(2n\) 项即可),然后对每一项乘以 \(v\),最后求出得到数组的线性递推式,有 \(1-\frac{2n}p\) 的概率正确

时间复杂度 \(O(n^3)\),稀疏矩阵可以到 \(O(n(n+k))\),其中 \(k\) 为非 \(0\) 元素数量

解稀疏线性方程组

对于方程 \(Ax=b\),先求出 \(\{b,Ab,A^2b,\cdots\}\) 的最短线性递推式(同样左乘随机向量做)

假设求得的递推式为 \(r_{0\sim m-1}\),则按递推式求出 \(\{b,Ab,A^2b,\cdots,A^{2n-1}b\}\),有 \(A^{-1}b=-\frac1{r_{m-1}}\sum_{i=0}^{m-2} A^i br_{m-2-i}\)

时间复杂度 \(O(kn+n^2)\)(显然 \(m\le k\)

求稀疏矩阵行列式

若能快速求出矩阵的特征多项式,则多项式的常数项即为 \((-1)^n \det(A)\)

随机一个对角矩阵 \(B\),则有 \(1-\frac{n^2-n}p\) 的概率 \(AB\) 的最小多项式就是特征多项式,\(O(n(n+k))\) 求出其最小多项式,其常数项除以 \(\det(B)\) 即为 \(\det(A)\)

时间复杂度 \(O(n(n+k))\)

图论中的线性代数

\(LGV\) 引理

\(DAG\) 上:

\(w(P)\) 表示路径 \(P\) 上边权之积

\(e(u,v)\) 表示 \(u\)\(v\) 的每一条路径的 \(w(P)\) 之和

假设有 \(n\) 个起点 \(A_{1\sim n}\)\(n\) 个终点 \(B_{1\sim n}\)

\(S\) 为一组 \(n\) 条路径,其中 \(S_i\) 表示 \(A_i\)\(B_{\sigma(S)_i}\) 的路径(\(\sigma(S)\) 为排列),对于任意 \(i\ne j\) 满足 \(S_i\)\(S_j\) 不交

\[ M=\begin{bmatrix} e(A_1,B_1)& e(A_1,B_2) & \cdots & e(A_1,B_n)\\ e(A_2,B_1)& e(A_2,B_2) & \cdots & e(A_2,B_n)\\ \vdots & \vdots & \ddots &\vdots\\ e(A_n,B_1)& e(A_n,B_2) & \cdots & e(A_n,B_n)\\ \end{bmatrix} \]

则有

\[\det(M)=\sum_{S:A\to B}(-1)^{\operatorname{sgn}(\sigma(S))}\prod_{i=1}^n w(S_i) \]

\(LGV\) 引理 在网格图中的应用

\(S(n,m)\) 表示 \(n\times m\) 的网格(行为 \(1\sim n\),列为 \(1\sim m\)

网格图不交路径计数:\(S(n,n)\)\(k\) 个起点 \((1,a_i)\;(1\le i\le k)\)\(k\) 个终点 \((n,b_i)\;(1\le i\le k)\),每个起点对应一个终点,求不交路径组数量,\(n\le10^5,k\le100\)

对于不交路径组,一定有 \(\sigma(S)=\{1,2,\cdots,k\}\)

此时 \((-1)^{\operatorname{sgn}(\sigma(S))}=1\)

因此使用 \(LGV\),求出每个 \(e(A_i,B_j)\),然后计算 \(M\) 的行列式即可,时间复杂度 \(O(k^3+n)\)

无向图拉普拉斯矩阵

拉普拉斯矩阵

\[L_{i,j}=\begin{cases} \sum_{(i,k)\in E} w(i,k)&i=j\\ -w(i,j) & i\ne j \land (i,j)\in E\\ 0 & otherwise \end{cases}\]

(不需要删除自环)

拉普拉斯矩阵的最小特征值为 \(0\)

无向图矩阵树定理

拉普拉斯矩阵所有代数余子式值相等,其等于对应无向图的所有生成树的权值之和

其中生成树的权值为所有边的边权之积

k - 生成森林

定义 \(k\,-\) 生成森林为图的生成子图,使得其有 \(k\) 个联通分量且无环

令一个森林的权值为每个联通块的顶点数量之积,则 \(k\,-\) 生成森林的带权和 \(F_k\)

\[(-1)^{n-k}[x^k]p_L(x) \]

其中 \(L\) 为拉普拉斯矩阵

有向图拉普拉斯矩阵

出度拉普拉斯矩阵

\[L^{out}_{i,j}=\begin{cases} \sum_{(i,k)\in E} w(i,k)&i=j\\ -w(i,j) & i\ne j \land (i,j)\in E\\ 0 & otherwise \end{cases}\]

入度拉普拉斯矩阵

\[L^{in}_{i,j}=\begin{cases} \sum_{(k,i)\in E} w(k,i)&i=j\\ -w(i,j) & i\ne j \land (i,j)\in E\\ 0 & otherwise \end{cases}\]

有向图矩阵树定理

有向图上以 \(r\) 为根的内向生成树数量为 \(L^{out}\)\((r,r)\) 处的主子式的值

有向图上以 \(r\) 为根的外向生成树数量为 \(L^{in}\)\((r,r)\) 处的主子式的值

克罗内克积

矩阵 \(A\in\mathcal M_{n\times m}(K)\)\(B\in\mathcal M_{x\times y}(K)\) 的克罗内克积记为 \(A\otimes B\),其分为 \(n\times m\) 块,第 \((i,j)\) 块为 \(A_{i,j}B\) 为矩阵,\(A\otimes B\)\((nx)\times (my)\) 矩阵

  • \(\otimes\) 对矩阵加有左右分配律,有结合律
  • \[(kA)\otimes B=A\otimes (kB)=k(A\otimes B) \]

  • \[(A\otimes B)^T=A^T\otimes B^T \]

  • \[(A\otimes B)^{-1}=A^{-1}\otimes B^{-1} \]

  • \[(A\otimes B)(C\otimes D)=AC\otimes BD \]

\(A\)\(n\) 阶方阵,\(B\)\(m\) 阶方阵,\(A\) 的特征值为 \(\lambda_{1\sim n}\)\(B\) 特征值为 \(\mu_{1\sim m}\)\(\lambda_i\) 对应的特征向量为 \(\vec x_i\)\(\mu_i\) 对应的特征向量为 \(\vec y_i\),则 \(A\otimes B\) 的特征值为 \(\lambda_i\mu j\),对应特征向量为 \(x_i\otimes y_j\)

克罗内克和

\(n\) 阶方阵 \(A\)\(m\) 阶方阵 \(B\) 的克罗内克和 \(A\oplus B=A\otimes I_m+I_n\otimes B\)

假设 \(A\) 的特征值为 \(\lambda_{1\sim n}\)\(B\) 特征值为 \(\mu_{1\sim m}\)\(\lambda_i\) 对应的特征向量为 \(\vec x_i\)\(\mu_i\) 对应的特征向量为 \(\vec y_i\),则 \(A\oplus B\) 的特征值为 \(\lambda_i+\mu j\),对应特征向量为 \(x_i\otimes y_j\)

图的张量积

对于图 \(G_1=(V_1,E_1)\)\(G_2=(V_2,E_2)\),其张量积为图 \(G=G_1\times G_2=(V,E)\),其中

\[V=\{(u,v)\mid u\in V_1,v\in V_2\} \]

\[E=\{((u_1,u_2),(v_1,v_2))\mid (u_1,v_1)\in E_1,(u_2,v_2)\in E_2\} \]

\(G\) 的邻接矩阵为 \(G_1\) 的邻接矩阵和 \(G_2\) 的邻接矩阵的克罗内克积(假设点集安字典序排序,下同)

图的笛卡尔积

对于图 \(G_1=(V_1,E_1)\)\(G_2=(V_2,E_2)\),其笛卡尔积为图 \(G=G_1\square G_2=(V,E)\),其中

\[V=\{(u,v)\mid u\in V_1,v\in V_2\} \]

\[E=\{((u_1,v),(u_2,v))\mid (u_1,u_2)\in E_1,v\in E_2\}\cup \{((v,u_1),(v,u_2))\mid (u_1,u_2)\in E_2,v\in E_1\} \]

\(G\) 的邻接矩阵为 \(G_1\) 的邻接矩阵和 \(G_2\) 的邻接矩阵的克罗内克和

\(G\) 的拉普拉斯矩阵为 \(G_1\) 的拉普拉斯矩阵和 \(G_2\) 的拉普拉斯矩阵的克罗内克和

例题

例 1:CF1067E Random Forest Rank

\(n\) 点的树,每条边 \(\frac12\) 的概率出现,求森林的邻接矩阵的秩的期望乘以 \(2^{n-1}\)\(n\le5\times10^5\)

有结论:森林邻接矩阵的秩等于最大匹配的两倍

证明:

  • 记邻接矩阵为 \(G\)
  • 则行列式的值为 \(\sum_{\sigma\in S_n} (-1)^{\operatorname{sgn}(\sigma)}\prod_{i=1}^n G_{i,\sigma_i}\)
  • 某个 \(\sigma\) 有贡献当且仅当所有 \(G_{i,\sigma_i}\) 都不为 \(0\)
  • 显然每个 \(\sigma\) 构成若干环
  • 若存在环 \(u\to v\to \cdots\to z\),则说明 \(G\) 中存在边 \(u\to v,v\to \cdots,\cdots\to z\),由于其为森林,因此不存在长度大于等于 \(3\) 的环
  • 显然也不存在自环
  • 因此 \(\sigma\) 有贡献的必要条件为其仅含二元环
  • 二元环 \(u\to v\to u\),表示树上 \(u\)\(v\) 相邻
  • 每个 \(\sigma\) 中的二元环分别匹配,对应一组完美匹配
  • 而且完美匹配的 \(\sigma\) 的系数恒定为 \((-1)^{\frac n2}\)
  • 因此,若森林存在完美匹配,其邻接矩阵的行列式一定非零
  • 即邻接矩阵满秩
  • 若邻接矩阵不满秩,则取其极大满秩子矩阵即可,其对应森林最大匹配的导出子图

问题转化为求森林的最大匹配数的总和

\(f_i\) 表示节点 \(i\) 不与任何一个儿子匹配的概率,则答案为 \(2\times 2^{n-1}\times \sum_{i=1}^n (1-f_i)\)

初始令 \(f_u=1\),每加入一个儿子 \(v\),有 \(1-f_v\) 的概率该儿子已经匹配,此时 \(u\) 无法与之匹配,剩下 \(f_v\) 的概率中,有一半的可能两者之间没有连接,因此 \(u\)\(v\) 没有匹配的概率为 \((1-f_v)+\frac12 f_v\),令 \(f_u\gets f_u\times((1-f_v)+\frac12 f_v)\)

时间复杂度 \(O(n)\)

代码

参考

例 2:CF1344F Piet's Palette

有一个长为 \(n\) 的未知序列,每个位置为 \(W/R/Y/B\),有 \(m\) 次操作,每次给定若干位置的 \(mix\) 和,或给定若干个位置和两种非 \(W\) 的值并将这些位置的这两种值互换,判断是否存在一种合法初始序列,若存在则构造一种方案,其中 \(W\) 和其他任意的 \(mix\) 和为另一种颜色,另外三种中任意两种的 \(mix\) 和为第三种,多个位置的 \(mix\) 和为依次取两个 \(mix\) 的结果,\(n,m\le1000\)

\(W\) 记为 \(00\)\(R\) 记为 \(01\)\(Y\) 记为 \(10\)\(B\) 记为 \(11\),则 \(mix\) 等价于异或和

\(hb_i\) 表示当前为止位置 \(i\) 的高位,\(lb_i\) 表示当前为止位置 \(i\) 的低位(两者都是 \([0,4)\) 内的数,高位表示是否异或上初始的高位的值,低位表示是否异或上初始的低位的值),初始 \(hb_i=2\)\(lb_i=1\)

对于 \(mix\) 操作,值等于给定位置的异或和,因此对于高位和低位分别表示出一个 \(2n\) 元(\(1\sim n\) 表示低位,\(n+1\sim 2n\) 表示高位)的异或方程

对于 \(RG\) 操作,等价于交换 \(hb\)\(lb\)

对于 \(RB\) 操作,等价于 \(lb\) 异或上 \(hb\)

对于 \(BG\) 操作,等价于 \(hb\) 异或上 \(lb\)

于是最后得到 \(O(k)\)\(2n\) 元的方程,要求其一组可行解

高斯消元即可,时间复杂度 \(O(\frac{n^3}\omega)\)(假设 \(n,m\) 同阶)

代码

例 3:CF736D Permutations

给定一张左右各 \(n\) 点的二分图,对于每条边,求删去它后图完美匹配方案的奇偶性,保证初始方案数为奇数,没有重边,\(n\le2000,n\le m\le \min(n^2,500000)\)

\(G_{i,j}\) 表示是否存在左部 \(i\) 到右部 \(j\) 的边

则相当于对于每条边 \((u,v)\),求出 \(G_{u,v}\gets 0\) 后,以下式子的奇偶性

\[\sum_{\sigma\in S_n}\prod_{i=1}^n G_{i,\sigma_i} \]

显然在前面乘以 \(1\)\(-1\) 奇偶性不变,因此转化为求以下式子的奇偶性

\[\sum_{\sigma\in S_n}(-1)^{\operatorname{sgn}(\sigma)}\prod_{i=1}^n G_{i,\sigma_i} \]

即求 \(\det(G)\) 的奇偶性

转化为对于 \(G\) 的每个位置,求出将这个位置变为 \(0\) 后行列式的奇偶性

假设去掉的边为 \(u\to v\),由于包含 \(u\to v\) 和不包含 \(u\to v\) 的方案之和为奇数,现在要判断不包含 \(u\to v\) 的方案数是否为奇数,等价于判断包含 \(u\to v\) 的方案数是否为偶数,其等价于求 \(G\)\((u,v)\) 处的代数余子式

因此转化为对于 \(G\) 每个位置求出代数余子式的奇偶性

可以转化为求出伴随矩阵的奇偶性

而伴随矩阵等于 \(\det(A)A^{-1}\),其中 \(\det(A)\) 保证为奇数,因此相当于求 \(A^{-1}\) 每个位置的奇偶性

bitset 即可,时间复杂度 \(O(\frac{n^3}\omega)\)

代码

参考

例 4:CF917D Stranger Trees

\(n\) 个节点的无向完全图,给定其一棵生成树,对于 \(i=0\sim n-1\),分别求出该无向图有多少颗生成树满足与给定生成树恰好有 \(i\) 条边重复,\(n\le100\)

假定答案为 \(s_{0\sim n-1}\),令其生成函数 \(F(x)=\sum_{i=0}^{n-1}s_ix^i\)

其实际意义为完全图上给定生成树的边权为 \(x\),非树边边权为 \(1\),求所有生成树边权积的和

\(n\) 次矩阵树定理求出 \(F(1)\sim F(n)\),对其消元或差值求出 \(s\) 即可

时间复杂度 \(O(n^4)\)

存在 \(O(n^2)\) 的做法

代码

例 5:gym102268E Expected Value

给定一张平面图,随机选择起点开始随机游走,求第一次到 \(n\) 的期望时间,\(n\le3000\)

稀疏矩阵高斯消元,因为平面图边数为 \(O(n)\) 的,因此矩阵非 \(0\) 元素不超过 \(O(n)\) 个,时间复杂度 \(O(n^2)\)

例 6:P10775 BZOJ4162 shlw loves matrix II

给定 \(k\times k\) 的矩阵 \(M\),求 \(M^n\)\(k\le50,n\le2^{10^4}\)

暴力为 \(O(k^3\log n)\) 的,无法接受

先求出 \(M\) 的最小多项式 \(f(x)\),令 \(g(x)=x^n\bmod f(x)\),则 \(M^n=g(M)\)

\(O(k^3)\) 求出 \(f\),暴力多项式取模 \(O(k^2\log n)\) 求出 \(g\),然后 \(O(k^3)\)\(M\) 带入 \(g\) 即可,时间复杂度 \(O(k^3+k^2\log n)\)

例 7:codechef Precise Bipartite Pairing

\(n\) 点带边权二分图(\(n\) 为偶数),求其所有完美匹配的边权和的集合,\(n\le100\),边权不超过 \(20\)

对于左边 \(i\) 到右部 \(j\) 边权为 \(v\) 的点,令 \(a_{i,j}=x^v\)\(a\) 可压缩到 \(\frac n2\times\frac n2\)

则要求多项式 \(\sum_{\sigma\in S_n}\prod_{i=1}^n a_{i,\sigma(i)}\)(即 \(a\) 的积和式)系数非 \(0\) 的项集合

\(a\) 中每个值乘以随机权值,则极大概率下积和式系数非 \(0\) 的项集合等于 \(\det(a)\) 的系数非 \(0\) 的项集合

于是计算 \(\det\) 即可,时间复杂度 \(O(n^4V)\)(因为每个多项式为 \(O(nV)\) 次的),其带有 \(\frac 1{16}\) 的常数,可以通过

可用 \(Tutte\) 矩阵扩展到一般图

例 8:P7736 [NOI2021] 路径交点

有一张 \(k\) 层的分层图,第 \(i\) 层有 \(n_i\) 个点,\(n_1=n_k\),每一层只会连到下一层,定义两层之间的两条边 \((u,v),(w,x)\) 有交当且仅当 \([u>w]=[v<x]\),选择 \(n_1\) 条路径,分别从第一次的每个点到第 \(k\) 层的每个点,要求路径没有公共顶点,求交点总数为偶数的路径数减去交点总数为奇数的路径数取模,\(n_1\le n_i\le2n_1,n_1\le100,k\le100\),多测 \(t\le 5\),每个点中 \(n_1>10\) 的只有一组

\(n=n_1\)

先考虑 \(k=2\) 的情况

\(n\) 条路径分别为 \(i\to a_i(1\le i\le n)\),则交点数为 \(a\) 的逆序对数,令邻接矩阵为 \(G\),答案为

\[\sum_{\sigma\in S_n} (-1)^{\operatorname{sgn}(\sigma)}\prod_{i=1}^n G_{i,\sigma_i} \]

即答案为 \(\det(G)\)

\(k>2\),则路径 \(u_1\to v_1\to \cdots\to z_1\)\(u_2\to v_2\to\cdots\to z_2\) 的交点奇偶性和 \(z_1>z_2\) 相同(假定 \(u_1<v_1\)

因此令 \(G_{i,j}\) 表示第 \(1\) 层的第 \(i\) 个点到第 \(k\) 层的第 \(j\) 个点的方案数,其值为中间 \(k-1\) 个邻接矩阵的积

答案为 \(\det(G)\)

不需要考虑路径有公共点的情况,因为若 \(u_1\to v_1\)\(u_2\to v_2\) 有公共点 \(p\),则对于路径组 \(u_1\to p\to v_1\)\(u_2\to p\to v_2\)\(u_1\to p\to v_2\)\(u_2\to p\to v_1\),两者逆序对一奇一偶,贡献互相抵消

总时间复杂度 \(O(\sum n^3k)\)

代码

参考

例 9:AT_xmascon21_h Homework from Zhejiang

给定有向图 \(G_1,G_2\),求 \(G_1\square G_2\) 以每个点为根的外向生成树数量,\(|G_1|,|G_2|\le500\)

即求 \(L^{in}(G_1)\oplus L^{in}(G_2)\) 的伴随矩阵

例 9:LOJ #163. 高斯消元 2

稀疏矩阵高斯消元,\(n\le2500\),非零位置 \(\le2\times10^4\),对大质数取模

解稀疏线性方程组模板题

vjudge 练习

Linear Algebra,pw:HomeworkfromZhejiang

luogu 题单

25.2.7 ln alg

posted @ 2025-02-08 21:36  Hstry  阅读(29)  评论(0)    收藏  举报