初等线性代数

矩阵基本操作

将一些元素排列成若干行,每行放上相同数量的元素,就是一个矩阵 (Matrix) 。一个矩阵 \(A\) 从左上角数的第 \(i\) 行第 \(j\) 列的数称作第 \(i , j\) 项,记作 \(A_{i, j}\)\(A_{i j}\) 。对于 \(m = n\) 的矩阵我们称之为方阵。

  • 加法:对于矩阵 \(A_{m \times n}\), \(B_{m \times n}\), 定义矩阵加法为 \(A\)\(B\) 对应位置上的元素相加。即 \(A + B = [A_{i,j} + B_{i,j}]_{m \times n}\)
  • 标量乘法 (Scalar multiplication):对于矩阵 \(A_{m \times n}\) 和标量 \(c\), 他们相乘的结果 是 \(A c = [A_{i,j} \cdot c]_{m \times n}\)
  • 转置 (Transposition):对于矩阵 \(A_{m \times n}\), 其转置矩阵记作 \(A^{T}\), 且 \(A^{T} = [A_{j,i}]_{n \times m}\) 。即横竖翻转。
  • 矩阵的拼接:对于矩阵 \(A_{m \times n_{1}}\), \(B_{m \times n_{2}}\), 记 \((A | B)\) 表示把 \(A\), \(B\) 并排放在一起的 \(m \times (n_{1} + n_{2})\) 矩阵。

矩阵乘法: 定义 \(A_{n \times m}\)\(B_{m \times k}\) 的矩阵乘法为

\(\text { AB } \stackrel{\text { def }}{=}\left[\sum_{x=1}^{m} A_{i, x} B_{x, j}\right]_{n \times k} .\)

其中 \(i \in[1, n], j \in[1, k]\)

\(1.\) 分配律: \((A+B) C=A \mathrm{C}+B \mathrm{C}\)

\(2.\) 结合律: \(A(B C)=(A B) C\)

\(3.\) 矩阵乘法不具备交换律。

矩阵初等变换有三种,分行操作和列操作。不过行和列是对称的。

\(1.\) 行交换:将矩阵 \(A_{n\times m}\) 的第 \(i\) 行和第 \(j\) (\(i\neq j\)) 行交换。记作 \(R_{i} \leftrightarrow R_{j}\)

\(2.\) 行数乘:将第 \(i\) 行的每个元素都乘上一个常数 \(k\) (\(k\neq 0\)),记作 \(kR_{i} \rightarrow R_{i}\)

\(3.\) 行加法:第 \(j\) 行的 \(k\) (\(k\neq 0\)) 倍加到第 \(i\) (\(i\neq j\)) 行上,记作 \(R_{i}+kR_{j} \rightarrow R_{i}\)

矩阵与线性方程组

定义 关于 \(n\) 个 变元 \(x_{1}, x_{2}, \ldots, x_{n}\) 的 线性方程组为

\(\left\{\begin{array}{l}a_{11} x_{1}+a_{12} x_{2}+\cdots+a_{1 n} x_{n}=b_{1} \\ a_{21} x_{1}+a_{22} x_{2}+\cdots+a_{2 n} x_{n}=b_{2} \\ \vdots \\ a_{m 1} x_{1}+a_{m 2} x_{2}+\cdots+a_{m n} x_{n}=b_{m}\end{array}\right .\)

其中 \(a_{i j}, b_{i}\) 均为 系数 。

这个方程组可以使用矩阵的形式表达:记 \(A_{m \times n} \stackrel{\text { def }}{=}\left[a_{i j}\right], \quad B_{m \times 1} \stackrel{\text { def }}{=}\left[b_{1}, b_{2}, \ldots, b_{m}\right]^{T}, \quad X_{n \times 1} \stackrel{\text { def }}{=}\) \(\left[x_{1}, x_{2}, \ldots, x_{n}\right]^{T}\), 则上面的方程组可以表示为矩阵方程 \(A X=B\)

方程组的高斯消元

高斯消元可以视为对矩阵 \(M=(A|B)\) 进行列初等变换,因为行初等变换不改变方程的解。高斯消元的第一阶段是将 \(M_{m\times(n+1)}\) 变换为上三角矩阵。

具体过程为: 枚举 \(i\in n\)

找到任意 \(j\in[i,m]\) 使得 \(a_{ji}\neq 0\) 。如果找到了,进行行交换 \(M_{i}\leftrightarrow M_{j}\)

如果 \(a_{ii}\neq 0\) ,则用第 \(i\) 行给满足 \(j\in[i+1,m]\) 的第 \(j\) 行消元(把 \(a_{ji}\) 变成 \(0\) )。具体操作是 \(M_{j}-\frac{a_{ji}}{a_{ii}}M_{i}\to M_{j}\)

如果 \(a_{ii}=0\),说明 \(a_{ji}=0 j>i\),不用消元了。

消元之后,如果出现某一行 \(a_{ij}\) 全是 \(0\)\(b_{i}\neq 0\) 的情况,说明方程无解。

行列式

行列式通常是对于方阵定义的。

方阵 \(A_{n \times n} = [a_{ij}]\) 的行列式 (Determinant) 是一个将其映射到标量的函数 ,记作 \(\det(A)\) 或者 \(| A |\) 。 通常可以将其理解为是高维空间的欧氏 体积 。

e.g. 二维平面叉积 。

定义 \(P_{n}\) 表示 所有 \(n!\) 个 长度 为 \(n\) 的 排列 \(p\) 构成 的 集合。矩阵的行列式定义为:
\(| A | = \sum_{p \in P_{n}} \operatorname{sgn}(p) \prod_{i=1}^{n} a_{i,p_{i}}\)

其中 \(\operatorname{sgn}\) 表示 \(( -1 )\) 排列 的 逆序 对 个数 。 即设 \(N(p)\) 表示 \(p\) 的 逆序 对 个数 , 则 \(\operatorname{sgn}(p) = ( -1 )^{N(p)}\)

根据行列式的公式,易得

  • 对方阵做行(列)交换 ,行列式反号;
  • 对方阵做行(列)数乘 ,行列式乘上同样的常数。
  • 对方阵做行(列)加法 ,行列式不变;

证明:

  • 第二条较为简单,设对第 \(j\) 行进行数乘 \(k\)

\[\begin{aligned}| A | &= \sum_{p \in P_{n}} \operatorname{sgn}(p) \prod_{i=1 \land i \ne j}^{n} a_{i,p_{i}} \times a_{j,p_{j}} \times k \\&= \sum_{p \in P_{n}} \operatorname{sgn}(p) \prod_{i=1}^{n} a_{i,p_{i}} \times k\end{aligned} \]

  • 接着证明第一条,设交换了 \(i1,i2\) 两行,\(p_{i,j}\) 代表排列 \(p\) 交换了第 \(i\) 行与第 \(j\) 行:

\[\begin{aligned} | A | &= \sum_{p \in P_{n}} \operatorname{sgn}(p) \prod_{i=1 \land i \ne i1 \land i \ne i2}^{n} a_{i,p_i} \times a_{i1,p_{i2}} \times a_{i2,p_{i1}} \\&=\sum_{p \in P_{n}} \operatorname{sgn}(p_{i1,i2}) \prod_{i=1}^n a_{i,{p_{i1,i2}}_i} \end{aligned} \]

由于 \(p_{i1,i2}\)\(p\) 构成双射,所以只需证 \(\operatorname{sgn}(p_{i1,i2})=-\operatorname{sgn}(p)\) 即可。

由于 \(i1,i2\) 交换不影响小于 \(i1\) 的位置与大于 \(i2\) 的位置所构成的逆序对个数,所以只需考虑 \(i1,i2\) 之间的数即可,不妨设 \(a_{i1}<a_{i2}\),然后分类讨论:

  • \(a_{i1} < a_j(i1 < j < i2) < a_{i2}\),更改过后除去 \({i1,i2}\) 这一对之外,会多生成两个逆序对。
  • \(a_j < a_{i1} < a_{i2}\),此时不会更改。
  • \(a_j>a_{i2}>a_{i1}\),此时依旧不会更改。

综上,上边的情况都为偶数变化,加上 \({i1,i2}\) 本身产生的逆序对,一定会增加或减少奇数个逆序对,证毕。

  • 最后证明第三条,设将第 \(i\) 行的 \(k1\) 倍加上第 \(j\) 行,枚举 \(p_j\) 则式子变为:

\[\begin{aligned} | A | &= \sum_{k=1}^n \sum_{p \in P_{n} \land p_j=k} \operatorname{sgn}(p) \prod_{l=1 \land l \ne j}^{n} a_{l,p_{l}} \times (a_{l,p_{j}}+k1 \times a_{i,p_{l}})\\&=\sum_{k=1}^n \sum_{p \in P_{n} \land p_j = k} \operatorname{sgn}(p) \prod_{l=1}^n a_{l,p_{l}} + \operatorname{sgn}(p) \times k1\times a_{i,p_{j}} \times \prod_{l=1 \land l\ne j}^n a_{l,p_{l}} \\&= \sum_{p \in P_n} \operatorname{sgn}(p) \prod_{l=1}^n a_{l,p_l} + \sum_{k=1}^n k1 \times a_{i,k} \times \sum_{p \in P_{n} \land p_j = k} \operatorname{sgn}(p) \prod_{l=1 \land l \ne j} a_{l,p_l} \ \end{aligned} \]

对于上 \((下)\) 三角矩阵,其行列式为主对角线上元素的积。

因此 可以简单地使用高斯消元在 \(O(n^{3})\) 的时间内求出行列式。

矩阵的逆

定 义单位矩阵(Identity Matrix)为主对线上元素为 \(1\),其他元素为 \(0\) 的方阵 ,记作 \(I\)(乘法单位元 )。

定 义 \(A\) 矩 阵的 逆 矩 阵 \(B\) 为 使 得 \(A B = I\) 的 矩 阵 。 若 存 在 这 样 的 \(B\) 矩 阵 , 称 \(A\) 可 逆 。 \(A\) 的 逆 矩 阵 记 作 \(A^{-1} = B\)

矩 阵 求 逆 : 使 用 高 斯 消 元 将 \((A | I)\) 中 的 \(A\) 消 成 \(I\) , 得 到 \((I | B)\) , 那 么 这 里 的 \(B\) 就 是 \(A^{-1}\) 。 若 \(A\) 消 不 成 \(I\)\(A\) 不 可 逆 。

可 逆 矩 阵 关 于 加 法 和 乘 法 构 成 一 个 环 。

矩阵树定理

矩阵树定理 Matrix-tree Theorem 是把图的生成树个数和矩阵行列式联系起来的一个定理。

有向图内向生成树计数

对于无自环 允许有重边 的有向图 \(G=(V,E)\) 。设出度矩阵 \(D(G)\) 表示每个点的出度的对角矩阵 \(d_{ii}\) 表示结点 \(i\) 的出度,其余位置均为 0 。而 \(A(G)=a_{ij}\) 表示邻接矩阵, \(a_{ij}\) 表示 \(\left(i\to j\right)\) 的边数。那么可得到对应的拉普拉斯矩阵 Laplacian Matrix \(L(G)=D(G)-A(G)\)

\(L(G)\) 关于 \(L(G)_{k,k}\) 的余子式 主子式 是以 \(k\) 为根的内向生成树的个数。

余子式:对于矩阵 \(A\)\(A_{ij}\) 的余子式定义为 \(A\) 去掉第 \(i\) 行第 \(j\) 列的矩阵的行列式。

矩阵树定理:证明

$ L(G) = D(G) - A(G)$.

我们要证明两件事:

  1. \(|L(G)|\) 的组合意义是通过容斥计算 \(G\) 的只有平凡环的基环内向生成森林个数。

  2. \(|L(G)_{k,k}|\) 的组合意义是通过容斥计算 \(G\) 的以 \(k\) 为根的内向生成树的个数。

称自环是平凡的环。

注:如果一个图中没有自环,那么它是不存在只有平凡环的基环内向生成森林的。也就是说对于简单有向图,\(|L(G)| = 0\)

核心思路:将行列式的计算过程理解为一个容斥。

问题 1: 如何通过容斥统计 只有平凡环的基环内向生成森林的个数?

定义 \(U = \text{{所有 n 个点的基环内向森林}}\) 作为容斥的全集。P.S. \(|U| = \prod_{i = 1}^{n} \text{结点 i 的出度}\)\(n\) 个点中 选 出 若 干 个 点 , 可 以 构 成 多 少 个 不 同 的 非 平 凡 环 ?

枚 举 环 长 , 再 枚 举 排 列 数 , 每 个 环 被 算 重 了 \(k\) 次 , 所 以 得 到 \(\sum_{k = 2}^{n} \frac{n!}{k(n - k)!}\) 。 假 设 这 些 非 平 凡 环 构 成 集 合 \(S\) , 则 我 们 可 以 得 到 这 样 的 一 个 容 斥 :

所 有 环 均 平 凡 的 基 环 内 向 森 林

\[\begin{aligned}&=|U| - \sum_{i}|\text{钦 定 r_i 出 现 了 的 基 环 内 向 森 林}| \\&+\sum_{i < j}|\text{钦 定 r_i , r_j 同 时 出 现 了 的 基 环 内 向 森 林}|\\&-\sum_{i < j < k}|\text{钦 定 r_i , r_j , r_k 同 时 出 现 了 的 基 环 内 向 森 林}| \end{aligned} \]

我们 无法 直接 按照 \(式子\) 去 计算 这个 \(容斥\) , 因为 \(非平凡环\) 的 总数 太 多 了 。

但是 这个 式子 告诉 我们 : 在 \(容斥过程\) 中 , 如果 钦定 了 \(t\)\(非平凡环\) 要 出现 , 那么 这部分 贡献 的 \(容斥系数\) 就 是 \((-1)^{t}\)

回顾行列式的 定义 :

\(|L(G)|=\sum_{p\in P_{n}}\operatorname{sgn}(p)\prod_{i=1}^{n}a_{i,p_{i}}\)

思考:这个行列式的计算过程是如何表达上述的容斥过程的?

\(|L(G)| = \sum_{p \in P_{n}} \operatorname{sgn}(p) \prod_{i=1}^{n} a_{i,p_{i}}\)

在 行 列 式 中 , 我 们 枚 举 了 一 个 排 列 \(p\)

首 先 分 析 排 列 的 组 合 意 义 。

如 果 我 们 让 \(i\)\(p_{i}\) 连 边 , 那 么 我 们 会 得 到 若 干 个 环 ( 每 个 点 有 恰 好 一 条 出 边 , 恰 好 一 条 入 边 ) 。 也 就 是 说 枚 举 排 列 的 组 合 意 义 是 枚 举 \(n\) 个 点 的 环 覆 盖 。

P . S. 环 覆 盖 是 指 将 \(n\) 个 数 划 分 为 若 干 个 环 排 列 ( 单 独 的 数 视 为 长 度 为 \(1\) 的 环 , 即 自 环 , 平 凡 环 ) 。

拆成两 部分考虑:

$ \operatorname{sgn}(p) \prod_{i=1}^{n} a_{i , p_i} = \operatorname{sgn}(p) \prod_{i \neq p_i}^{n} a_{i , p_i} \times \prod_{i = p_i}^{n} a_{i , p_i} = \operatorname{sgn}(p) \prod_{i \not= p_i}^{n} - (i \rightarrow p_i \text{ 的 边 数 } ) \times \prod_{i = p_i}^{n} i \text{ 的 出 度 。} $

注意到 ,所有 \(i \not= p_i\) 的 边 会 构成 若干 个 非 平 凡 环 。 故 前半部分 的 组合 意义 是 钦定 这些 非 平 凡 环 的 方案 数 (原图 可能 有 重边 ) , 乘上 \((-1)^{\text{钦定的 非 平 凡 环 的 环 长 之 和 }}\) ( 排列 上 的 非 平 凡 环 就是 图上 钦定 的 非 平 凡 环 ) 。

后半部分 意义 : 所有 \(i = p_i\) 的 点 任意 选择 一 条 出边 的 方案 数 。

两 部分 的 组合 意义 合并 , $ \prod_{i=1}^{n} a_{i , p_i} $ 表达 的 含义 是 , 钦定 所有 \(i \not= p_i\) 的 边 构成 的 非 平 凡 环 必须 出现 , 其他 边 随便 连 的 基 环 内 向 森林 方案 数 , 乘上 \((-1)^{p}\) 中 非 平 凡 环 的 环 长 之 和 。

"在容斥过程中,如果钦定了 \(t\) 个非平凡环要出现,那 么 这 部 分 贡 献 的 容斥系数就是 \((-1)^{t}\)"。

问题:这 部 分 的 系 数,即 \({(-1)}^{p}\) 中 非平凡环的环长之和 \(\times\) \(sgn(p)\),是不是 \((-1)^{t}\)

\(sgn(p) = (-1)^{N(p)}\)\(N(p)\) 表示排列 \(p\) 中 逆 序 对 的 个 数。

注意:对于排列中的一个非平凡环,我们 可 以 通 过 一 次 交 换 操 作 把 这 个 环 拆 成 一 个 平 凡 环(自环)和 一 个 长 度 减 \(1\) 的环。而 一 次 交 换 操 作 会 导 致 逆 序 对 的 奇 偶 性 发 生 变 化。也 就 是 说,交换操作数和 逆 序 对 变 化 量 的 奇 偶 性 相 同。

\(p\) 的 非平凡环的环长之和为 \(l\),且 \(p\)\(t\) 个 非平凡环,则 执 行 \(l - t\) 次 交 换 操 作,就 可 以 把 所 有 的 非平凡环都消除,而 此 时 我 们 会 得 到 单 位 排 列,其 逆 序 对 数 量 为 \(0\)(偶数)。

因此 \((-1)^{N(p)}\) = \((-1)^{l - t}\)。左 边 是 逆 序 对 变 化 量 的 奇 偶 性,右 边 是 交 换 操 作 的 奇 偶 性。于 是 \({(-1)}^{p}\) 中 非平凡环的环长之和 \(\times\) \(sgn(p)\) = \((-1)^{l}\) \(\times\) \((-1)^{l - t}\) = \((-1)^{t}\)

回顾:\(|L(G)|= \sum_{p \in P_{n}}\) sgn \((p) \prod_{i=1}^{n} a_{i, p_{i}}\)

综上,\(|L(G)|\) 的组合意义是通过容斥 计算 \(G\) 的所以环均为平凡环 的基环内向生成森林个数。

如何理解 \(|L(G)_{k, k}|\) ?

删掉了第 \(k\) 行 第 \(k\) 列,意味着其容斥 的过程是:在 \(\{1,2, \ldots, n\} \backslash\{k\}\) 中钦定若干个非平凡环 出现,其他点随便连边(可连到 \(k\) ,因为其他点的出度包含到 \(k\) 的边)的方案数, 乘上一个系数。那么这个容斥 的结果将会是:\(\{1,2, \ldots, n\} \backslash\{k\}\) 不存在非平凡环,\(\{1,2, \ldots, n\} \backslash\{k\}\) 每个点都要连出去一条边的方案数。

删掉了第 \(k\) 行 第 \(k\) 列,则容斥 过程中不会考虑 从 \(k\) 出发的边,即 \(k\) 被视为根节点,没有出边。其他每个点都要连出去一条边,且不能出现非平凡环。若原图没有自环,那么这样构造出来的必然是一个内向生成树。

posted @ 2025-07-21 16:31  ask_silently  阅读(14)  评论(0)    收藏  举报