把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

LU 分解及 Matrix determinant lemma

LU 分解

对于一个矩阵 \(\mathbf A\),求出 \(\mathbf A=\mathbf {LU}\),其中 \(\mathbf L\) 是下三角矩阵,\(\mathbf U\) 是上三角矩阵的过程称为 LU 分解。

一般矩阵的 LU 分解可以消成行列式的同时记录逆矩阵,复杂度同高斯消元。

一个比较好的性质是 \(|\mathbf A|=|\mathbf L||\mathbf U|\),如果能利用 \(\mathbf A\) 的特殊性质快速分解出来,因为 \(|\mathbf L|,|\mathbf U|\) 就是对角线乘积,所以 \(|\mathbf A|\) 可以快速计算。

比如 \(\mathbf A_{i,j}=\gcd(i,j)\)

对其施以欧拉反演,可以得到 \(\mathbf A_{i,j}=\sum\limits_{d\mid \gcd(i,j)}\varphi(d)\)

则可以拆成两个矩阵:\(\mathbf L_{i,j}=[j\mid i]\varphi(j),\mathbf U_{i,j}=[i\mid j]\),则容易验证 \(\mathbf A=\mathbf L\mathbf U\),且 \(\mathbf L,\mathbf U\) 满足三角矩阵条件。因此 \(|\mathbf A|=\prod\limits_{i=1}^{n}\varphi(i)\)

进一步的,如果 \(\mathbf A_{i,j}=f(\gcd(i,j))\),则对于满足 \(f_i=\sum\limits_{j\mid i}g_j\),即 \(g\)\(f\) 的高维差分,\(|\mathbf A|=\prod\limits_{i=1}^{n}g(i)\)

一个可能有用的论文

Matrix determinant lemma

\(\mathbf{U}\)\(n\times m\) 的矩阵,\(\mathbf{V}\)\(m\times n\) 的矩阵,\(\mathbf{I}_x\)\(x\) 阶单位矩阵。

主要定理是:

\[|\mathbf{I}_n+\mathbf{U}\mathbf{V}|=|\mathbf{I}_m+\mathbf{VU}| \]

证明可以考虑构造矩阵相乘:

\[\begin{pmatrix}\mathbf{I}_n & \\ \mathbf{V} & \mathbf{I_m}\end{pmatrix} \begin{pmatrix}\mathbf{I}_n+\mathbf{UV} & \mathbf{U}\\ & \mathbf{I_m}\end{pmatrix} \begin{pmatrix}\mathbf{I}_n & \\ \mathbf{-V} & \mathbf{I_m}\end{pmatrix} = \begin{pmatrix}\mathbf{I}_n & \mathbf{U}\\ & \mathbf{VU}+\mathbf{I_m}\end{pmatrix} \]

对两边取行列式即可。

将其扩展到一般的情况,令 \(A\)\(n\times n\) 矩阵,则有

\[|\mathbf{A}+\mathbf{UV}|=|\mathbf A||\mathbf{I}_n+\mathbf{UVA}^{-1}|=|\mathbf{A}||\mathbf{I}_n+\mathbf{V}\mathbf{A}^{-1}\mathbf{U}| \]

假设我们要求的是一个形如 \(|\mathbf{D}-\mathbf{G}|\) 的行列式,且 \(\mathbf{G}=\mathbf{UV}\)\(\mathbf D\) 易求行列式和逆,则 MDL 的最大作用是将 \(\mathbf{G}\) 原本隐藏在这个乘法里的性质显露出来。一个简单的应用例子:如果 \(m\) 远小于 \(n\),则现在只需要做一次 \(m\times n\times m\) 的矩阵乘法并对一个阶为 \(m\) 的矩阵求行列式,而不是原来的 \(n\times m\times n\) 的矩阵乘法以及阶为 \(n\) 的矩阵求行列式。

其相比于 LU 分解来说不要求分解出来的一定是两个对角矩阵,适用性更加广泛,但是性质要弱一点。

PA 2022 Drzewa rozpinające

使用矩阵树定理,我们要求的值即为 \(|\mathbf{D}-\mathbf{G}|\),其中 \(\mathbf D\) 为度数矩阵,\(\mathbf G\) 为邻接矩阵。

\(\mathbf D\) 容易计算,并且由于其为对角矩阵,逆和行列式都容易计算。考虑仍然对 \(\mathbf G\) 施以欧拉反演,可以构造出两个 \(n\times m\) 的矩阵 \(\mathbf U_{i,j}=[j\mid a_i]\varphi(j),\mathbf V_{i,j}=[i\mid a_j]\),满足 \(\mathbf G=\mathbf U \mathbf V\)

使用 MDL,可以得到我们要求的就是 \(|\mathbf D||\mathbf I_n+\mathbf V\mathbf A^{-1}\mathbf U|\)

你说得对,但是这看上去还是要求阶为 \(5000\) 矩阵的行列式啊?

考虑矩阵 \(\mathbf V\mathbf A^{-1}\mathbf U\) 的实际意义,会发现只有 \(\operatorname{lcm}(i,j)\leq m\) 的位置有值,因此这个矩阵非常稀疏,且值主要集中在上方的一个类似于反比例函数的区域,所以从下到上消元速度非常快。时间复杂度可以(?)看作 \(O(n^2)\) 的。

submission

AGC060F Spanning Trees of Interval Graph

使用矩阵树定理,直接求行列式需要对一个很大的矩阵消元,爆了。

发现可以使用点减边容斥计算这个 \(\mathbf G\),这样的话使用 MDL 之后就只需要对一个阶 \(2n-1\) 的矩阵求行列式,于是就对完了。

\(\mathbf D,\mathbf V\mathbf A^{-1}\mathbf U\) 均容易根据实际意义二维前缀和求得,时间复杂度 \(O(n^3)\)

submission

posted @ 2024-10-18 09:59  275307894a  阅读(70)  评论(2编辑  收藏  举报
浏览器标题切换
浏览器标题切换end