线性代数

线性代数

1. 群、环、域

1. 群: 集合 \(G\) 上的二元运算 \(*\)\(G\times G \rightarrow G\) 满足

  • 封闭性:\(\forall a,b\in G, a*b\in G\)
  • 结合律:\(\forall a,b,c\in G,(a*b)*c=a*(b*c)\)
  • 存在单位元:\(\exists e\in G,\forall a\in G \text{ s.t. } e * a = a\)
  • 存在逆元:\(\forall a\in G,\exists a^{-1}\in G \text{ s.t. } a^{-1} * a = e\)

则称 \((G,*)\),一般写作 \(G\)

存在单位元的等价定义有 \(\exists e\in G,\forall a\in G \text{ s.t. } a * e = a\)

存在逆元的等价定义有 \(\exists e\in G,\forall a\in G \text{ s.t. } a * a^{-1} = e\)

若群 \((G,*)\) 还满足:

  • 交换律:\(\forall a,b\in G, a*b=b*a\)

则称群 \((G, *)\)交换群\(\text{Abel}\)

基本性质:一个群中的每个元素逆元唯一;一个群的单位元唯一。

2. 环: 集合 \(R\) 上的二元运算 \(+:R\times R\rightarrow R\)\(*:R\times R\rightarrow R\) 满足

  • \((R, +)\) 是交换群。
  • \(*\) 封闭:\(\forall a,b \in R,a*b\in R\)
  • \(*\) 满足结合律:\(\forall a,b,c\in R, (a*b)*c=a*(b*c)\)
  • \(*\) 存在单位元:\(\exists 1_R\in R, \forall a\in R \text{ s.t. } 1_R * a = a\)
  • \(*\) 对于 \(+\) 满足分配律:\(\forall a,b,c\in R,a*(b+c)=a*c+b*c,(a+b)*c=a*c+b*c\)

则称 \((R,+,*)\),一般写作 \(R\)

3. 域: 集合 \(F\) 上的二元运算 \(+:R\times R\rightarrow R\)\(*:R\times R\rightarrow R\) 满足

  • \((F, +)\) 为交换群,其单位元为 \(0_F\)
  • \((F - \{0_F\}, *)\) 为交换群。
  • \(*\) 对于 \(+\) 满足分配律:\(\forall a,b,c\in F,a*(b+c)=a*c+b*c,(a+b)*c=a*c+b*c\)

则称 \((F, +, *)\),一般写作 \(F\)

2. 向量空间、向量、标量

\((F,+,*)\) 和集合 \(V\) 有二元运算:

  • 向量加法 \(\oplus:V \times V \rightarrow V\)
  • 标量乘法 \(\cdot: F \times V \rightarrow V\)

且满足

  • \((V, \oplus)\) 为交换群。
  • \(\cdot\) 单位元:\(1_F \in F\)\(1_F\)\(F\)\(*\) 的单位元,\(\forall v\in V,1_F \cdot v = v\)
  • \(\cdot\)\(\oplus\) 满足分配律:\(\forall x\in F, u,v\in V \text{ s.t. } x \cdot (u \oplus v)=x\cdot u \oplus x \cdot v\)
  • \(\cdot\)\(+\) 满足分配律:\(\forall x,y\in F, v\in V \text{ s.t. } (x + y) \cdot v = x \cdot v \oplus y \cdot v\)
  • \(\cdot\)\(*\)\(\forall x,y\in F, v\in V \text{ s.t. } x \cdot (y \cdot v) = (x * y) \cdot v\)

则称 \(V\) 为定义在域 \(F\) 上的向量空间,也称线性空间。对于 \(v\in V\),称 \(v\)向量。对于 \(x \in F\),称 \(x\)标量

若将 \(+\)\(\oplus\) 统一简写为 \(+\),将 \(\cdot\)\(*\) 省略,则上叙条件为

  • \((V, \oplus)\) 为交换群。
  • \(1_F \in F\)\(1_F\)\(F\)\(*\) 的单位元,\(\forall v\in V,1_F \cdot v = v\)
  • \(\forall x\in F, u,v\in V \text{ s.t. } x(u+v)=xu+xv\)
  • \(\forall x,y\in F, v\in V \text{ s.t. } (x + y)v = xv + yv\)
  • \(\forall x,y\in F, v\in V \text{ s.t. } x(yv) = (xy)v\)

基本性质:

  • \(0_F \cdot v_V = x_F\cdot 0_V =0_V\)
  • \(-1_F \cdot v_V = -v_V\)

3. 有限维向量空间

3.1. 基本概念

\(V\) 为定义在域 \(F\) 的向量空间。

1. 线性组合: 对于向量组 \(\{\mathbf{v_1,v_2,\cdots, v_n}\} \subseteq V\),任取一组 \(\{a_1,a_2,\cdots,a_n\} \subseteq F\)\(\mathbf{u} = a_1\mathbf{v_1} + a_2\mathbf{v_2} + \cdots + a_n\mathbf{v_n}\) 为该向量组的一个线性组合。

2. 张成空间: \(\text{span}\{\mathbf{v_1,v_2,\cdots,v_n}\} = \{a_1\mathbf{v_1} + a_2\mathbf{v_2} + \cdots + a_n\mathbf{v_n} | \{a_1,a_2,\cdots,a_3\}\subseteq F\}\) 为该向量组的张成空间。

3. 线性相关、线性无关

有向量组 \(S = \{\mathbf{v_1, v_2, \cdots, v_n}\} \subseteq V\)

\(\exists \mathbf{v_i}\in S,\mathbf{v_i}\in \text{span}(S - \{\mathbf{v_i}\})\),则 \(S\) 是线性相关的。

\(\forall \mathbf{v_i}\in S,\mathbf{v_i}\notin \text{span}(S - \{\mathbf{v_i}\})\),则 \(S\) 是线性无关的。

4. 线性映射

\(V\)\(W\) 都是定义在域 \(F\) 上的向量空间,映射 \(f:V\rightarrow W\) 满足:

  • \(\forall \mathbf{x,y}\in V,f(\mathbf{x+y})=f(\mathbf{x})+f(\mathbf{y})\)
  • \(\forall \mathbf{x} \in V, a\in F,f(a\cdot \mathbf{x}) = a\cdot f(\mathbf{x})\)

则称 \(f\) 是一个 \(K\)-线性映射,简称线性映射

5. 基

若向量组 \(S = \{\mathbf{v_1,v_2,\cdots, v_n}\} \subseteq V\)\(V\) 的基,当且仅当以下两个条件均成立:

  • \(\text{span}(S) = V\)
  • \(S\) 线性无关

\(\dim V = |S|\)\(V\)维度

性质:

  • \(V\) 的基总是存在。
  • \(V\) 有多种基,每组基的大小一样。
  • \(V\) 的基是 \(V\) 的极大线性无关集。
  • \(V\) 的基是 \(V\) 的最小张成空间。
  • \(V\) 中每个向量可被一组基唯一表示。

6. 基表示

选定 \(V\) 的一组基 \(\mathbf{\{e_1,e_2,\cdots,e_n\}}\),对于任意一个 \(\mathbf{v}\in V\),有 \(\mathbf{v} = a_1\mathbf{e_1} + a_2\mathbf{e_2} + \cdots + a_n\mathbf{e_n}\),根据基的最后一条性质可得 \((a_1, a_2, \cdots, a_n)\) 唯一,则 \((a_1, a_2, \cdots, a_n)\)\(\mathbf v\) 的基表示。

3.2. 内积、角度、正交性

考虑内积时,一般考虑 \(F = \mathbb R\)\(F = \mathbb C\),其余情况都极为少见。

对于高维,先定义内积 \(\cdot:V \times V \rightarrow F\),之后根据内积得出以下定义:

  • 向量的模长\(||\mathbf{v}|| = \sqrt{\mathbf{v \cdot v}}\)
  • 向量的夹角\(\left<\mathbf{a,b}\right> =\arccos\left(\mathbf{\frac{a\cdot b}{||a|| \cdot ||b||}}\right)\)
  • 向量 \(\mathbf{a, b}\) 正交(垂直)当且仅当 \(\mathbf{a \cdot b} = 0\)

内积需满足:

  • 正定性:\(\forall \mathbf{v}\in V, \mathbf{v\cdot v}\ge0\),当且仅当 \(\mathbf{v = 0}\)\(\mathbf{v \cdot v} = 0\)
  • (共轭)对称性
    • \(F = \mathbb{C}\),则需满足共轭对称性:\(\forall \mathbf{x,y}\in V, \mathbf{x \cdot y}=\overline{\mathbf{y \cdot x}}\)
    • \(F = \mathbb{R}\),则需满足对称性:\(\forall \mathbf{x,y}\in V, \mathbf{x \cdot y}=\mathbf{y \cdot x}\)
  • 半/双线性性映射
    • \(F =\mathbb{C}\),则需满足半线性性映射:
      • \(\forall a,b\in\mathbb{C},\mathbf{x,y,z}\in V \text{ s.t. } (a\mathbf{x}+b\mathbf{y}) \cdot \mathbf{z} = \overline{a}(\mathbf{x}\cdot \mathbf{z})+\overline{b}(\mathbf{y \cdot z})\)
      • \(\forall a,b\in\mathbb{C},\mathbf{x,y,z}\in V \text{ s.t. } \mathbf{x} \cdot (a\mathbf{y}+b\mathbf{z}) = a(\mathbf{x}\cdot \mathbf{y})+b(\mathbf{x \cdot z})\)
    • \(F =\mathbb{R}\),则需满足双线性性映射:
      • \(\forall a,b\in\mathbb{R},\mathbf{x,y,z}\in V \text{ s.t. } (a\mathbf{x}+b\mathbf{y}) \cdot \mathbf{z} = a(\mathbf{x}\cdot \mathbf{z})+b(\mathbf{y \cdot z})\)
      • \(\forall a,b\in\mathbb{R},\mathbf{x,y,z}\in V \text{ s.t. } \mathbf{x} \cdot (a\mathbf{y}+b\mathbf{z}) = a(\mathbf{x}\cdot \mathbf{y})+b(\mathbf{x \cdot z})\)

并非所有线性空间都有内积。

内积的定义并不唯一,常见的定义有:

\((a_1,a_2,\cdots,a_n),(b_1,b_2,\cdots,b_n)\) 分别为 \(\mathbf{a,b}\) 的基表示,定义 \(\mathbf{a\cdot b} = \sum\limits_{i=1}^{n}a_ib_i\)

在这个定义下,基为单位正交基:\(V\) 中任意一组基 \(\{\mathbf{e_1,e_2,\cdots,e_n}\}\),满足
\( \mathbf{e_i \cdot e_j}= \begin{cases} 0 &,i \neq j\\ 1 &,i = j \end{cases} \)

3.3. 矩阵

3.3.1. 基本概念

1. 定义

\(n\)\(m\) 是非负整数,\(F\) 是域,映射 \(A:\{1,2,\cdots,n\}\times\{1,2,\cdots,m\} \rightarrow F\) 被称为定义在 \(F\) 上的矩阵。

一般写做:

\[A_{n\times m} = A = \begin{bmatrix} A_{1,1} & \cdots & A_{1,m} \\ \vdots & \ddots & \vdots \\ A_{n, 1} & \cdots & A_{n, m} \end{bmatrix} \]

其中 \(A_{x,y} = A(x,y)\)

2. 特殊的矩阵

\(n = m\) 则称 \(A\)方阵

\((F,+)\) 的单位元为 \(0\)\((F,*)\) 的单位元为 \(1\)

  • \(n\) 阶单位矩阵\(E_{n\times n}\) 为方阵,且主对角线为 \(1\),其余全为 \(0\),简称单位矩阵\(0\) 一般不写)

\[E_{n\times n} = E_{n} = \begin{bmatrix} 1 & & \\ & 1 & \\ & & \ddots \\ & & & 1 \end{bmatrix} \]

  • 零矩阵:矩阵 \(O_{n\times m}\) 的元素全为 \(0\)

  • 上三角矩阵:方阵 \(A_n\) 为上三角矩阵,满足对于 \(A_{i,j}\),若 \(i > j\),则 \(A_{i,j} = 0\)。下三角矩阵同理。

  • 行阶梯型矩阵:矩阵 \(A_{n\times m}\) 满足,对于第 \(i\) 行,其从此行第一个非 \(0\) 的下标 \(j\) 记为 \(p_i\),有 \(p_1<p_2<\cdots<p_n\)

  • 逆矩阵:对于方阵 \(A_n\),若方阵 \(B_n\) 满足 \(BA=AB=E_n\),则称 \(B\)\(A\) 的逆矩阵,记作 \(A^{-1}\)

  • 行向量、列向量:对于矩阵 \(A_{n\times m}\),若 \(n = 1\) 则称为行向量列向量同理。可以看做是向量的基表示。

3. 秩

行秩:将矩阵 \(A_{n\times m}\) 的每行看做行向量,得到 \(n\) 个向量,其基的大小为行秩。

列秩:与行秩同理。

:事实上总有 行秩 \(=\) 列秩,则行秩即为矩阵的。矩阵 \(A\) 的秩记作 \(\text{rank}(A)\)

3.3.2. 基本运算

1. 加法:

\[\begin{aligned} A_{n\times m} + B_{n\times m} = C_{n\times m} \\ c_{i,j} = a_{i,j} + b_{i,j} \end{aligned} \]

2. 数乘:

\[\begin{aligned} x\in F\\ x\cdot A_{n \times m} = B_{n\times m} \\ x\cdot b_{i,j}=a_{i,j} \end{aligned} \]

3. 乘法:

\[\begin{aligned} A_{n\times m} \cdot B_{m \times p} = C_{n\times p} \\ c_{i,j}=\sum\limits^{m}_{k=1}{a_{i,k} \cdot b_{k,j}} \end{aligned} \]

4. 幂:

\[A_{n\times n}^k = \begin{cases} E_{n\times n} &, k = 0\\ A_{n \times n}^{k-1} \cdot A_{n\times n} &, k \in[1,+\infty)\cap \mathbb{Z} \end{cases} \]

5. 转置:

\[\begin{aligned} (A_{n\times m})^T = B_{m\times n}\\ B_{i,j} = A_{j, i} \end{aligned} \]

6. 性质:

  • 加法有交换律:\(\forall A,B, \text{ s.t. } A+B=B+A\)
  • 乘法无交换律:\(\exists A,B, \text{ s.t. } AB \neq BA\)
  • 乘法有结合律:\(\forall A,B,C \text{ s.t. } (AB)C = A(BC)\)
  • 乘法对加法有分配律:\(\forall A,B,C \text{ s.t. }, (A + B)C = AC + BC, A(B + C)=AB+AC\)
  • 加法单位元:\(\forall A \text{ s.t. } O+A,A+O=A\)
  • 乘法单位元:\(\forall A_{n\times n} \text{ s.t. } EA=AE=A\)
  • \((AB)^T = B^TA^T\)
  • \((A+B)^T = A^T + B^T\)

3.3.3. 初等变换

1. 将第 \(i\) 行的每个数乘以 \(k\)\(k\neq0\)

2. 交换第 \(i\) 行和第 \(j\) 行(\(i \neq j\)

3. 将第 \(i\) 行的每个数的 \(k\) 倍加到第 \(j\) 行(\(i\neq j\)

以上三条为初等行变换,初等列变换同理。

性质:

  • 初等变换不改变矩阵的秩。
  • 初等变换不改变矩阵的行列式的值。
  • 初等变换后的矩阵与原矩阵等价,即初等变换后的矩阵每行(列)视为行(列)向量的张成空间与原矩阵的相同。

矩阵乘法实现初等变换:(以下是初等行变换,初等列变换同理)

对矩阵 \(A_{n\times m}\) 做一次初等行变换,\(F_{n\times n} A_{n\times m}\) 为一次初等行变换后的矩阵。

\(F_n = E_n\)

对于 1.,令 \(F_{i,i} = k\)

对于 2.,交换 \(F\) 的第 \(i\) 行和第 \(j\) 行。

对于 3.,令 \(F_{j,i} = k\)

3.3.4. 高斯消元法

对于 \(n\)\(n\) 元一次方程组成的方程组,可用高斯消元法求其解。

1.将方程

\[\begin{cases} \sum\limits_{i=1}^na_{1,i}x_i=b_1\\ \sum\limits_{i=1}^na_{2,i}x_i=b_2\\ \cdots\\ \sum\limits_{i=1}^na_{n,i}x_i=b_n\\ \end{cases} \]

记作

\[\begin{bmatrix} a_{1,1} & \cdots & a_{1,m} & b_1 \\ \vdots & \ddots & \vdots & \vdots \\ a_{n, 1} & \cdots & a_{n, m} & b_n \end{bmatrix} \]

其被称之为增广矩阵

2.重复操作 \(n\) 次:现已进行到第 \(i\) 次,若 \(a_{p,i} \neq 0\),则运用第 \(p\) 行和初等行变换将 \(a_{q,i}(q\neq p)\) 变为 \(0\),将 \(a_{p,i}\) 变为 \(1\)

3.交换行使矩阵变为行阶梯形矩阵:

\[\begin{bmatrix} 1 & & & & c_1\\ & 1 & & & c_2\\ & & \ddots & & \vdots\\ & & & 1 & c_n \end{bmatrix} \]

此时 \(x_i = c_i, i = 1,2,\cdots,n\)

最终矩阵也可能为:

\[\begin{bmatrix} 1 & *_1 & 0 & *_2 & *_3 & 0 & c_1 \\ 0 & 0 & 1 & *_4 & *_5 & 0 & c_2 \\ 0 & 0 & 0 & 0 & 0 & 1 & c_3 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ \end{bmatrix} \]

\[\begin{cases} x_1 = c_1-*_1x_2-*_2x_4-*_3x_5\\ x_3=c_2-*_4x_4-*_5x_5\\ x_6=c_3 \end{cases} \]

\(x_1,x_3,x_6\)主元\(x_2,x_4,x_5\)自由元

若矩阵的某行最后一个数非 \(0\),且此行其余数都为 \(0\),则此方程组无解。

代码实现:时间复杂度 \(O(n^3)\)、空间复杂度 \(O(n^2)\)

int gauss() {
	int r = 0;
	rep(i, 1, n)
	{
		int t = i;

		rep(j, r + 1, n)
			if(fabsl(a[j][i]) > fabsl(a[t][i])) // 找 abs 最大的数,减少误差
				t = j;

		if(fabsl(a[t][i]) <= eps) continue;
		r++;
		rep(j, i, n + 1) ::std::swap(a[t][j], a[r][j]);
		per(j, i, n + 1) a[r][j] /= a[r][i];
		rep(j, r + 1, n)
			per(k, i, n + 1)
				a[j][k] -= a[j][i] * a[r][k];
	}
	if(r < n) {
		rep(i, r + 1, n) if(fabsl(a[i][n + 1]) > eps) return -1; // 无解
		return 0; // 有自由元
	}
	per(i, 1, n)
		rep(j, 1, i - 1)
			a[j][n + 1] -= a[j][i] * a[i][n + 1], a[j][i] = 0;
	return 1; // 有解
}

线性基:因为高斯消元只用到了线性变换,再结合线性变换的性质,则所求出的非 \(0\) 行为此矩阵行向量的线性空间的基。可以借此求一组向量基,称之为线性基算法。一般求的是异或线性基,异或可以看做是不进位的加法,可以一边插入一个向量一边求出基。代码实现:时间复杂度 \(O(qn^2)\)\(q\) 是插入的向量的个数。

const int N = 50;
ll s[N + 1];
void add(ll x) {
	per(i, 0, N) if((x >> i) & 1)
	{
		if(s[i]) x ^= s[i];
		else {
			rep(j, i + 1, N) if((s[j] >> i) & 1) s[j] ^= x;
			rep(j, 0, i - 1) if((x >> j) & 1) x ^= s[j];
			s[i] = x;
			return;
		}
	}
}

求逆矩阵:将方阵 \(A_n\) 和单位矩阵 \(E_n\) 拼接一起得到一个新矩阵 \([A_n \space E_n]\),对左边进行高斯消元得到 \([E_n \space B_n]\)\(B_n\) 即为 \(A^{-1}_n\),若无法将 \(A_n\) 变为 \(E_n\),则 \(A_n\) 行向量线性相关,则 \(A_n\) 无逆矩阵。

3.3.5. 广义矩阵乘法

\((\circ, \oplus)\) 的矩阵乘法:

\[A_{n\times m} * B_{m\times p} = C_{n \times p} \\ c_{i,j} = \bigoplus_{k=1}^{m}{a_{i,k}\circ b_{k,j}} \]

若要 \(*\) 运算满足结合律 \((A_{n\times m} * B_{m \times p}) * C_{p\times q} = A_{n\times m} * (B_{m \times p} * C_{p\times q})\),则需以下条件:

  1. \(\oplus\) 交换律:\(a \oplus b = b \oplus a\)
  2. \(\circ\) 结合律:\((a \circ b) \circ c = a \circ (b \circ c)\)
  3. \(\circ\)\(\oplus\) 的左分配律:\((a \oplus b) \circ c = (a \circ c) \oplus (b \circ c)\)
  4. \(\circ\)\(\oplus\) 的右分配律:\(c \circ (a \oplus b) = (c\circ a) \oplus (c\circ b)\)

证明:

\[(A_{n\times m} * B_{m \times p}) * C_{p\times q} = X_{n\times q} \]

\[A_{n\times m} * (B_{m \times p} * C_{p\times q}) = Y_{n\times q} \]

\[\begin{aligned} x_{i,j} &= \bigoplus_{k_2=1}^{p} (\bigoplus_{k_1=1}^{m}a_{i,k_1}\circ b_{k_1,k_2}) \circ c_{k_2, j}\\ &= \bigoplus_{k_2=1}^{p}\bigoplus_{k_1=1}^{m}a_{i,k_1}\circ b_{k_1,k_2}\circ c_{k_2, j} & 3. \\ &= \bigoplus_{k_1=1}^{m}\bigoplus_{k_2=1}^{p}a_{i,k_1}\circ b_{k_1,k_2}\circ c_{k_2, j} & 1. \\ y_{i,j} &= \bigoplus_{k_1=1}^{m}a_{i,k_1}\circ (\bigoplus_{k_2=1}^{p}b_{k_1,k_2}\circ c_{k_2,j}) \\ &= \bigoplus_{k_1=1}^{m}\bigoplus_{k_2=1}^{p}a_{i,k_1}\circ(b_{k_1,k_2}\circ c_{k_2,j}) & 4. \\ &= \bigoplus_{k_1=1}^{m}\bigoplus_{k_2=1}^{p}a_{i,k_1}\circ b_{k_1,k_2}\circ c_{k_2,j} & 2. \\ \end{aligned} \]

则原命题得证。

常见的满足结合律的有 \((+,min),(+,max),(\times, +)\)

对于矩阵,也满足上述 \(4\) 个条件,所以元素是矩阵的矩阵也满足普通矩阵乘法的结合律!也就是矩阵套矩阵符合乘法结合律

一旦满足乘法结合律,就可用快速幂在 \(O(n^3\log m)\) 时间复杂度内求出类似 \(A_{1,n}\cdot B_{n,n}^m\) 的值。

广义矩阵乘法可以用来做动态 DP(DDP)。

3.4. 行列式

3.4.1 基本概念

方阵

\[A_n = \begin{bmatrix} a_{1,1} & \cdots & a_{1,m} \\ \vdots & \ddots & \vdots \\ a_{n, 1} & \cdots & a_{n, m} \end{bmatrix} \]

的行列式为

\[\det(A) \\= \begin{vmatrix} a_{1,1} & \cdots & a_{1,m} \\ \vdots & \ddots & \vdots \\ a_{n, 1} & \cdots & a_{n, m} \end{vmatrix} \\=\sum\limits_{\sigma\in S_n}\text{sgn}(\sigma)\prod\limits_{i=1}^na_{i,\sigma(i)} \]

其中 \(S_n\) 表示 \(1,2,\cdots, n\) 的全排列。

若排列 \(\sigma\) 的逆序对个数为奇数,则 \(\text{sgn}(\sigma) = -1\)

若排列 \(\sigma\) 的逆序对个数为偶数,则 \(\text{sgn}(\sigma) = 1\)

行列式是一个线性变换后的“体积”伸缩比。

3.4.2. 性质

  • \(\det(A_n) = 0 \Leftrightarrow \text{rank}(A_n) < n\)
  • \(\det(A) = \det(A^T)\)
  • \(\det(kA_n)=k^n\det(A_n)\)
  • \(\det(AB)=\det(A)\det(B)\)
  • \(A'\)\(A\) 交换某两行(列)后的矩阵,\(\det(A)+\det(A')=0\)
  • \(A'\)\(A\) 某行(列)乘以 \(k\) 后的矩阵,\(\det(A')=k\det(A)\)
  • \(A'\)\(A\) 某行(列)乘以 \(k\) 加到另一行(列)后的矩阵,\(\det(A')=\det(A)\)
  • 上三角矩阵的行列式为主对角线的乘积。

最后一条性质可以结合高斯消元在 \(O(n^3)\) 的时间复杂度内求出 \(n \times n\) 的行列式。

3.4.3. 应用

3.4.3.1. 叉积

\(V\) 为定义在 \(\mathbb{R}\) 上的线性空间。

1. 二维叉积

\((x_1,y_1),(x_2,y_2)\) 为二维向量 \(\mathbf{v_1,v_2}\in V\) 的基表示。

定义点积 \(\mathbf{v_1 \cdot v_2} = x_1x_2+y_1y_2\)

定义叉积 \(\times:V\times V\rightarrow \mathbb{R}, \mathbf{v_1 \times v_2} = x_1y_2-x_2y_1= \begin{vmatrix} x_1 & y_1\\ x_2 & y_2 \end{vmatrix}\)

根据定义,\(\mathbf{v_1} \times \mathbf{v_2}\)\(\mathbf{v_1, v_2}\) 张成的有向面积,则

  • \(\forall \mathbf{v_1, v_2} \in V,|\mathbf{v_1 \times v_2}| = ||\mathbf{v_1}||\cdot ||\mathbf{v_2}||\cdot \sin\left<\mathbf{v_1,v_2}\right>\)
  • \(\forall \mathbf{v_1, v_2} \in V,\mathbf{v_1\times v_2 = -(v_2\times v_1)}\)

应用:计算面积;判断向量的相对位置;获得向量夹角大小

2. 三维叉积

\((x_1,y_1,z_1),(x_2,y_2,z_2)\) 为三维向量 \(\mathbf{v_1,v_2}\in V\) 的基表示。

定义点积 \(\mathbf{v_1 \cdot v_2} = x_1x_2+y_1y_2+z_1z_2\)

定义叉积 \(\times:V\times V\rightarrow V\)

  • \(||\mathbf{v_1 \times v_2}|| = ||\mathbf{v_1}|| \cdot ||\mathbf{v_2}|| \cdot \sin\left<\mathbf{v_1,v_2}\right>\)
  • \(\mathbf{v_1 \times v_2}\) 垂直于 \(\mathbf{v1, v2}\),且指向遵循右手定则

Right_hand_rule_cross_product.png

\(\mathbf{a\times b}\) 可以看做是,\(\mathbf{a}\)\(\mathbf{b}\) 的垂直面的投影,从 \(\mathbf{b}\) 的角度看将 \(\mathbf{a}\) 的投影顺时针旋转 \(90\) 度后的向量。

叉积有以下性质

  • 线性性:\(\forall n,m\in\mathbb R, \mathbf{a,b,c} \in V, (n\mathbf{a}+m\mathbf{b})\times \mathbf{c}=n(\mathbf{a\times c}) + m(\mathbf{b\times c}),\mathbf{a}\times(n\mathbf{b} + m\mathbf{c})=n(\mathbf{a \times b}) + m(\mathbf{a\times c})\)
  • \(\forall \mathbf{v_1, v_2} \in V,\mathbf{v_1 \times v_2 = -(v_2\times v_1)}\)
  • 三个单位向量的运算结果如下:
    • \(\mathbf{i\times j = k}\)
    • \(\mathbf{j\times k = i}\)
    • \(\mathbf{k\times i = j}\)

根据线性性可得:

\[\begin{aligned} &(x_1\mathbf i+y_1\mathbf j + z_1\mathbf k) \times (x_2\mathbf i+y_2\mathbf j + z_2\mathbf k)\\ &= \begin{vmatrix} x_1 & y_1 \\ x_2 & y_2 \end{vmatrix}\mathbf{k} + \begin{vmatrix} y_1 & z_1 \\ y_2 & z_2 \end{vmatrix} \mathbf i - \begin{vmatrix} x_1 & z_1 \\ x_2 & z_2 \end{vmatrix}\mathbf j \\ &= \begin{vmatrix} \mathbf{i} & \mathbf{j} & \mathbf{k} \\ x_1 & y_1 & z_1 \\ x_2 & y_2 & z_2 \end{vmatrix} \end{aligned} \]

应用:求面积、夹角、法向量

3.4.3.2. 矩阵树定理(基尔霍夫定理)

定义有向图 \(G\) 的拉普拉斯矩阵 \(L = D − A\),其中

\[D_{i,j} = \begin{cases} outdeg_i &,i=j\\ 0 &,i\neq j \end{cases} \]

\(A\)\(G\) 的邻接矩阵(\(A\)\(01\) 矩阵且 \(A_{i,j}\)\(1\) 当且仅当 \(G\) 中存在一条从 \(i\)\(j\) 的边)。

\(L_r\) 为去掉 \(L\) 的第 \(r\) 行、第 \(r\) 列之后得到的 \((n − 1)\times(n − 1)\) 的矩阵。

矩阵树定理:\(G\) 的以 \(r\) 为根的内向生成树个数为 \(\det(L_r)\)

求一个 \(\det(L_r)\) 的时间复杂度为 \(O(n^3)\)

矩阵树定理的实例

证明:略。

3.4.3.3. BEST 定理

一个有向图的本质不同的欧拉回路个数为

\[T\cdot\prod\limits_{i=1}^{n}(outdeg_i-1)! \]

其中 \(T\) 为图中一任一点为根的内向生成树的个数。

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

证明:略。

posted @ 2025-09-01 16:28  kuailedetongnian  阅读(16)  评论(0)    收藏  举报