关于拟阵

预备知识

向量空间:

定义 \((F, V, +, •)\) 为向量空间(也称线性空间),其中 \(F\) 为域,\(V\) 为集合,\(V\) 中元素称为向量,\(+\) 为向量加法,\(•\) 为数乘运算,且运算满足 \(8\) 条公理。

线性无关:

向量空间中,对于 \(V\) 上一组 \(n\) 个向量 \(x_i\) ,若存在不全为 \(0\) 的数 \(k_i ∈ F\) ,使得 \(\sum^n_{i=1} k_ix_i = 0\),则称这 \(n\) 个向量线性相关,否则称为线性无关。

线性表出:

向量空间中,对于 \(V\) 上一组 \(n\) 个向量 \(x_i\) 及一个向量 \(y\) ,若存在不全为 \(0\) 的数 \(k_i ∈ F\) ,使得 \(\sum^n_{i=1} k_ix_i = y\),则称 \(y\) 可被 \(x_i\) 线性表出。

一组向量线性相关 \(⇐⇒\) 存在向量可被其他向量线性表出。

基:

在向量空间中,一个极大线性无关组称为一组基。基的大小就是向量空间的维数。

拟阵定义

独立集:

一个有限拟阵是一个满足下列条件的二元组 \(M = (E, I)\) ,其中 \(E\) 是有限集,称为基础集,\(I\) 是由 \(E\) 的一些子集(称为独立集)组成的有限非空集。

  • \(\emptyset \in I\)

  • 遗传性:\(\forall A^{\prime} \subset A \subset E\),如果 \(A \in I\) 那么 \(A^{\prime} \in I\)

  • 增广性或独立集交换性:如果 \(A, B \in I,|A|>|B|\),那么 \(\exists x \in A \backslash B\)\(s.t. B \cup\{x\} \in I\)

拟阵举例:

\[E = \{1, 2, 3\} \]

\[I = \{size ≤ 2 的子集\} =\{∅, \{1\}, \{2\}, \{3\}, \{1, 2\}, \{1, 3\}, \{2, 3\}\} \]

基与回路:

  • 极大的独立集称为拟阵的基。

  • 极小的不独立集称为拟阵中的回路。

  • \(\mathcal{B}\) 表示基的集合, 则 \(\mathcal{B}\) 非空, 且满足基交换性,即如果 \(A, B \in \mathcal{B}, A \neq B, a \in A \backslash B\) ,则 \(\exists b \in B \backslash A\) \(s.t. A \backslash\{a\} \cup\{b\} \in \mathcal{B}\)

秩函数:

由交换性可证明所有基的大小相同。

就像矩阵的秩,拟阵的秩就是基的大小。

拟阵类型

组合拟阵:

如上面的例子 \(E = \{1, 2, 3\}, I = \{size ≤ 2 的子集\} = \{∅, \{1\}, \{2\}, \{3\}, \{1, 2\}, \{1, 3\}, \{2, 3\}\}\)

像这样集合 \(E\) 中有 \(n\) 个元素,\(I = \{size ≤ r 的子集\}\) 的拟阵,称为组合拟阵,记为 \(U_{r,n}\)

上例即是 \(U_{2,3}\)

分割拟阵:

如果把若干个组合拟阵拼在一起,就得到了分割拟阵。

向量拟阵:

\(E\) 为一个向量空间中的有限子集,\(I = \{E\ 中线性无关集\}\)。那么称 \(M = (E, I)\) 为向量拟阵。

\(|A| > |B| ⇒ dim A > dim B\),则 \(A\) 中必有 \(B\) 中向量组无法线性表出的向量 \(x ∈ A \ B\) ,将其加入 \(B\) 中,\(B ∪ {x}\) 仍线性无关。

如果拟阵可以用这种方式定义,那我们说 \(E\) 代表了拟阵 \(M\)

列拟阵:

用矩阵 \(A\) 的列来表示上述向量空间 \(E\) 中的向量,那么 \(A\) 称为列拟阵,我们可以说 \(A\) 代表了拟阵 \(M\)

环拟阵:

有限图 \(G(V, E)\) 中,将 \(E\) 边集作为基础集,所有森林为独立集,则 \(M(G)\) 为拟阵,称为环拟阵。

环拟阵的基为树,回路为环,这也是回路的称呼来源。

图拟阵:

像环拟阵那样从图中获得的拟阵称为图拟阵。

将每条边视为一个向量,只有边两端的点对应的值是 \(1\),其余为 \(0\)(自环均视为 \(0\) 向量)。

则图拟阵可视为一种特殊的向量拟阵。

匹配拟阵:

二分图 \(G = (U, V, E)\) 中,定义 \(U\) 的子集 \(I\) 是独立集当且仅当 \(I\) 能与 \(V\) 完美匹配,则 \(M = (U, I)\) 称为匹配拟阵。

基础操作

对偶:

\(M = (E, I)\)\(\mathcal{B}\) 为基的集合,定义 \(B^∗ = \{E − B|B ∈ \mathcal{B}\}\)\(M\) 的对偶拟阵 \(M^∗\) 的基的集合。

\(M^∗ = (E, I^∗) = \{E − I | r_M(I) = r_M(E)\}\) 秩函数为 \(r^∗(S) = |S| − r(M) + r(E \backslash S)\).

\((M^∗)^∗ = M,(U_{r,n})^∗\) 同构于 \(U_{n−r,n}\)

其他操作:

除了对偶之外,还有两个拟阵操作,\(\text{deletion}\)\(\text{contraction}\),反映在图拟阵上,\(\text{deletion}\) 是删边,而 \(\text{contraction}\) 是缩边。

并:

求若干个拟阵的并可以得到更大的拟阵。

\(M_{i}=\left(S_{i}, \mathcal{I}_{i}\right)\) 为拟阵, 拟阵并为:

\[M=M_{1} \vee M_{2} \vee \ldots \vee M_{k}=\left(\cup_{i=1}^{k} S_{i}, \mathcal{I}=\left\{\cup_{i=1}^{k} I_{i} \mid I_{i} \in \mathcal{I}\right\}\right) \]

\(M\) 仍为拟阵, 且 \(M\) 的秩函数为:

\[r_{M}(U)=\min _{T \subseteq U}\left[|U \backslash T|+\sum_{i=1}^{k} r_{M_{i}}\left(T \cap S_{i}\right)\right] \]

贪心算法

带权拟阵:

带权拟阵是给拟阵中的元素赋予一个非负实数作为权值。子集的权值定义为集合内元素权值之和。

贪心算法:

运用贪心算法,可以在带权拟阵中找出权值最大的基。

贪心算法就是先对元素按权值从大到小排序然后依次考虑每个元素,若加入当前集合后仍线性无关,则加入,否则不加入。最后得到的就是权值最大的基。

贪心算法证明:

证明每一步得到的都是某个最优解的子集。初始为空集,满足条件。

\(A\) 为当前得到的最优解的子集,若 \(A\) 无法扩展,则 \(A\) 为最优解。

否则由贪心算法,\(x\) 为能使 \(A\) 扩展权值最大的元素,则 \(A ∪ \{x\}\) 仍为最优解的子集。

反证,设 \(T\) 为包含 \(A\) 的最优解,构造 \(T′ = A′\) ,不断利用交换性以及 \(|T| > |T′|\) 增广 \(T′\) ,直到 \(|T| = |T′|\)

此时 \(T′ = T − {y} + {x}\)\(y\)\(T\) 时并没有被加入 \(T′\) 中,故 \(w(y) ≤ w(x)\) ,从而 \(w(T′) = w(T) − w(y) + w(x) ≥ w(T)\)

【例 1】最小生成树

最小生成树就是在带权的环拟阵上找权值最小的基。

取负, 加常数!

如何判断仍为独立集? 是否成环, 并查集维护。

这就是著名的 \(\text{Kruskal}\) 算法。

【例 2】任务调度问题

那些 \(\text{miss deadline}\) 的任务最后做也无所谓, 关键是其他的能否都在 \(\text{deadline}\) 前完成。

可以发现拟阵结构 \(M=(E, \mathcal{I})\) ,其中 \(I\) 是独立集当且仅当存在一种时间分配使 \(I\) 中任务都能在 \(\text{deadline}\) 前完成。

【例 3】Nikifor (ural 1041)

  • 求带权向量拟阵中的权值最小的基。

如何判断向量组线性无关?

列线性方程组, 高斯消元求矩阵的秩。

【例 4】新 Nim 游戏 (cqoi2013)

首先利用 \(\text{Nim}\) 游戏结论, 不能留下异或和为 \(0\) 的组合。

一位的异或操作可以看作是 \(GF(2)\) 下的加法操作,般异或可以看作在 \(GF\left(2^{k}\right)\) 下的加法, 其中 \(k\) 为位数。

异或的线性无关就等同于在那个有限域中加法的线性无关。

因此就是在带权向量拟阵中求一组权值最大的基。

拟阵交

\(M_{1}=\left(S, \mathcal{I}_{1}\right), M_{2}=\left(S, \mathcal{I}_{2}\right)\) 是两个在基础集 \(S\) 上的拟阵。

那么 \(\mathcal{I}_{1} \cap \mathcal{I}_{2}\) 中的元素在两个拟阵内均为独立集。如何在 \(\mathcal{I}_{1} \cap \mathcal{I}_{2}\) 内找出最大的独立集?如何找出权值最大的独立集?

【例 5】二分图匹配

\[\begin{array}{l} \mathcal{I}_{1}=\{E \subseteq E|| \delta(v) \cap E \mid \leq 1, v \in A\} \\ \mathcal{I}_{2}=\{E \subseteq E|| \delta(v) \cap E \mid \leq 1, v \in B\} \end{array} \]

其中 \(\delta(v)\) 表示一端为 \(v\) 的边的集合,这两个拟阵都是分割拟阵。

这两个拟阵条件分别保证了二分图两侧每个点都最多只在一条边上, 其交集保证了选出的是匹配。

拟阵交算法描述

二分图匹配? 匈牙利算法,增广路。

就像匈牙利算法,我们需要一个过程,输入 \(I \in \mathcal{I}_{1} \cap \mathcal{I}_{2}\) ,输出 \(J \in \mathcal{I}_{1} \cap \mathcal{I}_{2}\) 使得 \(|J|=|I|+1\)

或找到一个 \(U\) 说明 \(|I|=r_{1}(U)+r_{2}(S \backslash U)\)\(I\) 已经是最大的了。

image

posted @ 2022-07-28 11:27  一粒夸克  阅读(361)  评论(0编辑  收藏  举报