矩阵求逆和整数逆元比较类似,是通过高斯消元的思路实现的。
思路
求 $n$ 阶矩阵 $A$ 的逆矩阵,也就是 $A^{-1}$,$\frac{1}{A}$,求出一个 $n$ 阶矩阵 $B$ 使得 $AB=E$(其中 $E$ 表示单位矩阵)。
先回顾一下矩阵的三种初等行变换(具体内容详见 「算法笔记」矩阵入门):
- 交换某两行。
- 将某一行的所有元素乘上 $k$(其中 $k\neq 0$)。
- 将某一行的所有元素乘上 $k$ 后加到另一行上去。
假设我们通过 $P_1,P_2,P_3,\dots,P_k$ 等初等矩阵分别左乘 $A$,即 $P_1P_2P_3\cdots P_kA=PA$,其中的 $P$ 为 $P_1$ 到 $P_k$ 的乘积。我们想让 $A$ 变为 $P$ 非常简单,只需要使用高斯消元先变成上三角矩阵,然后变成对角矩阵。
考虑如何求出这个 $P$,我们首先有 $PA=E$,$PE=P$,如果我们同时维护两个矩阵 $A$ 和 $B$ 并使得 $B$ 一开始等于 $E$,在对 $A$ 进行初等行变换变为 $E$ 的过程中也对 $B$ 进行相同的初等行变换。由于初等行变换等价于被对应的初等矩阵左乘,所以当 $A$ 变成 $P$ 后,$B$ 也就从 $E$ 变成了 $P$。
对于无解情况,如果在高斯消元的过程中发现 $A$ 无法变成 $E$ 就说明无解。
时间复杂度:$O(n^3)$
代码
1 |
|