拟阵学习笔记

拟阵

Part 1 拟阵的定义

基础定义

对于一个集合 \(M\),定义子集族为其若干个子集构成的集合,一般用花体字表示。对于 \(M\) 的一个子集族 \(\mathcal{I}\),若满足:

  • (含空性:)\(\varnothing \in \mathcal I\)
  • 继承性:若 \(B \sub A \in \mathcal I\),则 \(B \in \mathcal I\)
  • 交换性:若 \(A, B \in \mathcal I\)\(|A| \lt |B|\),那么 \(\exists b \in B \setminus A\) 满足 \((A \cup \{b\}) \in \mathcal I\)

则称 \((M, \mathcal I)\) 是一个拟阵(matroid)。定义 \(\mathcal I\) 中的所有元素为独立集(independent set)\(M\)ground set

例子

  • Uniform matroid:\(\mathcal I = \{A \sube M : |A| \le k\}\)
  • Colorful matroid:给定一个集合 \(E\),每个元素有一个颜色,\(\mathcal I = \{A \sube E : A\) 中颜色互不相同 \(\}\)
  • Linear matroid:设 \(E = \{\boldsymbol u_1, \dots, \boldsymbol u_k\}\),其中 \(\boldsymbol u_i\) 为域 \(F^n\) 上的向量,\(\mathcal I = \{A \sube E: A\)\(F^n\) 上线性独立 \(\}\)
  • Graph matroid:给定一个无向图,\(\mathcal I = \{A \sube E: A\) 为一个生成森林(无环)\(\}\)

基集(basis set)

对于拟阵 \((M, \mathcal I)\),定义其极大独立集基集(basis set)。即,所有独立的 \(A \in \mathcal{I}\),且对于任意 \(a \notin A\)\(A \cup \{a\} \notin \mathcal I\)\(A\) 为基集。一般将基集构成的集族记作 \(\mathcal B\)

例如 uniform matroid 的基集为 \(\{A \sube M : |A| = k\}\);Graph matroid 的基集为 \(\{A \sube E : A\) 为一棵生成树 \(\}\)

基集有几个性质:

  • 所有基集的大小相等。

    \(X, Y \in \mathcal B\)\(|X| \lt |Y|\),由交换性得 \(\exists y \in Y \setminus X\) 满足 \((X \cup \{y\}) \in \mathcal B\),与 \(X\) 是基集矛盾。

  • 对于所有 \(A \in \mathcal I\)\(\exists B \in \mathcal B\) 满足 \(A \sube B\)

对于一个拟阵,其独立集族 \(\mathcal I\) 和基集族 \(\mathcal B\) 存在以下关系:

  • \(\mathcal B\) 为所有 \(\mathcal I\) 中大小最大的元素组成的集族;
  • \(\mathcal I\)\(\mathcal B\) 中所有元素的所有子集组成的集族;

对于一个集族 \(\mathcal B\),其能作为拟阵的基集当且仅当满足两条性质:

  • 非空;
  • 基集交换性:对于任意 \(X, Y \in \mathcal B\)\(\forall x \in X \setminus Y, \exists y \in Y \setminus x\),满足 \(X - \{x\} + \{y\} \in \mathcal B\)

注意“\(\mathcal B\) 所有元素大小相等”可由上面的性质推导出来。

拟阵的基集 \(\mathcal B\) 满足第二个性质的证明:

\(A = X - \{x\}\),由交换性知 \(\exists y \in Y \setminus A\) 满足 \(A + \{y\} \in \mathcal I\)。因为 \(|A + \{y\}| = |X|\),所以 \(A + \{y\} \in \mathcal B\)。另一方面,\(y \in Y\)\(x \notin Y\),所以 \(x \ne y\);又 \(y \notin A\),所以综合 \(y \notin A\)\(y \ne x\) 可得 \(y \notin X\)\(\square\)

所有元素大小相等的证明:

\(X, Y \in \mathcal B\)\(|X| \lt |Y|\),那么不断运用基集交换性,每次运用之后 \(|X \cap Y|\) 会严格变大,因此有限次操作之后 \(X \sub Y\)。这与 \(X \in \mathcal B\) 矛盾。\(\square\)

满足两个性质的 \(\mathcal B\) 可以作为拟阵基集的证明:

\(\mathcal I = \{A : \exists B, A \sube B \in \mathcal B\}\),则我们只需证明 \((M, \mathcal I)\) 具有交换性。(其他性质不难证明)

考虑反证法,设 \(\exists A, B \in \mathcal I\)\(|A| \lt |B|\),且满足条件 \((a)\):对任意 \(b \in B \setminus A\)\(A \cup \{b\} \notin \mathcal I\)。令对称的条件 \((b)\):对任意 \(a \in A \setminus B\)\(B \cup \{a\} \notin \mathcal I\)。若当前不满足条件 \((b)\),则进行若干次调整,每次将对应的 \(a\) 加入到 \(B\) 中。容易发现此时仍然满足条件 \((a)\)。因为 \(B\) 的大小是有限的,所以这样的调整一定会在有限步内停止。

接下来若 \(B \notin \mathcal B\),我们继续进行调整。设 \(B \cup \{x\} \in \mathcal{I}\),则 \(x \notin A\)。将 \(x\) 加入 \(B\),并且若 \(A \cup \{x\} \in \mathcal{I}\),也将 \(x\) 加入 \(A\)。探究 \(A \setminus B\)\(B \setminus A\) 的关系可得仍然满足条件 \((a), (b)\)

设集合 \(C\) 满足 \(A \sqcup C \in \mathcal B\)\(\sqcup\) 表示不交并),容易得到 \(C \cap B = \varnothing\)。此时根据基集交换性质,\(\forall c \in C, \exists b \in B\) 满足 \((A + C) - \{c\} + \{b\} \in \mathcal B\)。而 \(A + \{b\}\)\((A + C) - \{c\} + \{b\}\) 的子集,矛盾。\(\square\)

rank function

对于一个拟阵 \((M, \mathcal I)\),定义其 rank function \(r: 2^M \to \Z\)

\[\forall A \sube M, r(A) = \max_{B \sube A, B \in \mathcal I} |B| \]

根据 rank function 的定义,给定一个拟阵的 rank function 可以反推出 \(\mathcal I\)

\[\mathcal I = \{A \sube M: r(A) = |A|\} \]

rank function 具有两条性质:

  • binary marginal:\(r(\varnothing) = 0\)\(r(A + \{x\}) - r(A) \in \{0, 1\}\)。证明比较容易。

  • submodular:\(\forall A \sub B, (r(B + \{x\}) - r(B)) \le (r(A + \{x\}) - r(A))\)

    假设 \(r(B + \{x\}) = r(B) + 1\),对于任意独立集 \(A \sub B\),若其不是极大独立集,那么由拟阵交换性可以不断往 \(A\) 中加数,直到得到极大独立集 \(C\)。由于 \(r(B + \{x\}) = r(B) + 1\),所以 \(C\) 并不是 \(B + \{x\}\) 的极大独立集,因此 \(C\) 可以扩充。又 \(B\) 中的元素不能加进 \(C\),所以只能将 \(x\) 扩充进去,即 \(C + \{x\} \in \mathcal I\)。所以 \(A + \{x\} \in \mathcal I\)

    因此对于任意 \(A \sub B\),设其极大独立子集为 \(C\),则 \(C + \{x\} \in \mathcal I\),所以 \(r(A + \{x\}) = r(A) + 1\)

更进一步,我们可以证明满足上面两条性质的函数 \(r\) 可以作为一个拟阵的 rank function。这个拟阵的独立集族即 \(\mathcal I = \{A \sube M: r(A) = |A|\}\)

这个拟阵的含空性和继承性都是容易证明的。先证明它的 rank function \(r'\) 就是 \(r\)

对于 \(B \sube M\),设 \(A \sube B\) 为其最大独立集,则 \(r'(B) = |A| = r(A)\)。设 \(B = A + \{x_1, \dots, x_t\}\),则有 \(r(A + \{x_i\}) \lt |A| + 1\)(因为 \(A\) 是最大独立集)。

由 submodular 性质,\(r(A + \{x_1\}) = r(A)\)\(r(A + \{x_2\}) = r(A)\) 可推导出 \(r(A + \{x_1, x_2\}) = r(A + \{x_1\})\)。继续递推,即可得到 \(r(A) = r(B)\)。因此 \(r'(B) = r(B)\)\(r\) 为这个拟阵的 rank function。

交换性证明其实非常类似。设 \(A, B \in \mathcal I\)\(|B| \gt |A|\)。若不存在 \(x \in B \setminus A\)\(r(A + \{x\}) = r(A) + 1\),设 \(B \setminus A = \{x_1, \dots, x_t\}\),则 \(r(A + \{x_i\}) = r(A)\)。由 submodular 性质可递推得到 \(r(A) = r(A \cup B)\),因此 \(|A| = r(A) = r(A \cup B) \ge r(B) = |B|\),矛盾。

圈(circuit)

定义 \((M, \mathcal I)\) 的一个极小非独立集为圈(circuit)。即本身 \(\notin \mathcal I\),但所有真子集都 \(\in \mathcal I\)。Circuit 具有以下性质:

  • 所有 circuit 互不包含。

  • 所有独立集不包含 circuit。

  • 所有非独立集都至少包含一个 circuit。

    \(A\) 为一个非独立集。若其本身就是 circuit,则显然成立。否则,存在 \(A_1 \sub A\) 为非独立集。若 \(A_1\) 仍不为 circuit,则可以继续找 \(A_2 \sub A_1\)。因为 \(A\) 大小有限,所以递归总能结束。即 \(A\) 含有 circuit。

由此可以推出:

  • \(A \in \mathcal I\)\(A + \{e\} \notin \mathcal I\),则 \(A + \{e\}\) 恰好存在一个 circuit,记作 \(C(A, e)\)

    反证法。假设 \(A + \{e\}\) 存在两个 circuit \(C, C'\)。设 \(f \in C \setminus C'\),则 \(C \setminus \{f\} \in \mathcal I\)。又 \((C \setminus \{f\}) \sube (A + \{e\})\),而 \(A + \{e\}\) 存在大小为 \(|A|\) 的独立集。由交换性可得每次可以往 \(C \setminus \{f\}\) 加入一个 \(A + \{e\}\) 中的元素,那么最终可以得到一个包含 \(C \setminus \{f\}\) 的独立集 \(X \sube A + \{e\}\)。因为 \(f \notin X\),所以 \(X = A + \{e\} - \{f\}\),因此 \(X\) 包含了 \(C'\)\(C'\) 不是 circuit。\(\square\)

  • \(\forall a \in C(A, e)\)\(A + \{e\} - \{a\} \in \mathcal I\)

    \(A + \{e\} - \{a\}\) 使唯一的 circuit \(C(A, e)\) 被破坏了,所以不再有 circuit。

Part 2 贪心法

通常情况下,\(\mathcal I\) 的大小比较大,但我们可以在较短时间内判断一个集合 \(A\) 是否 \(\in \mathcal I\)。或者说,我们通常可以在较短时间内判断 \(A + \{x\}\) 是否仍属于 \(\mathcal I\)

对于一个拟阵 \((M, \mathcal I)\),我们为所有 \(x \in M\) 设置非负权值 \(w_x\)。我们需要找到集合 \(A \in \mathcal I\),且最大化 \(\sum_{x \in A} w_x\)。算法如下:

\[\begin{array}{c|l} 1& \text{sort } M \text{ as }\{ x_1, \dots, x_m \} \text{ s.t. } w_{x_i} \ge w_{x_{i + 1}}\\ 2& A \gets \varnothing\\ 3& \text{for } i \text{ from } 1 \text{ to } m:\\ 4& \quad \text{if } A + \{x_i\} \in \mathcal I:\\ 5& \qquad A \gets A + \{x_i\}\\ 6& \text{return } A \end{array} \]

复杂度为 \(O(m(\log m + T))\),其中 \(T\) 为判定 \(A\) 是否 \(\in \mathcal I\) 的复杂度。

\(A\) 是最优解的证明:

\(A\) 中元素按权值从大到小为 \(a_1, a_2, \dots, a_k\),最优解为 \(B = \{b_1, \dots, b_k\}\)。我们只需证明 \(w_{a_i} \ge w_{b_i}\)

考虑集合 \(A_{r - 1} = \{a_1, \dots, a_{r - 1}\}\)\(B_r = \{b_1, \dots, b_r\}\)。由交换性可得 \(\exists b_j \in B_r \setminus A_{r - 1}\) 满足 \(A_{r - 1} \cup \{b_j\} \in \mathcal I\)。因此,\(w_{a_r} \ge w_{b_j} \ge w_{b_r}\)\(\square\)

最终得到的 \(A\) 一定 \(\in \mathcal B\)。因为 \(\mathcal B\) 中所有元素大小相等,所以若要找到 \(A \in \mathcal B\) 且最\(\sum_{x \in A} w_x\) 也是可以做到的。将上述过程的第一步改为从小到大排序即可。在 graph matroid 中这个算法就是 Kruskal 最小生成树算法。

Part 3 拟阵交

对于两个定义在同一个 ground set 的拟阵 \((M, \mathcal I_1), (M, \mathcal I_2)\),我们要找到元素个数最多的 \(E \sube M\),使得 \(E \in \mathcal I_1 \cap \mathcal I_2\)。这个问题被称为拟阵交。

注意三个及以上的拟阵交是 NPC。

算法流程

对于 \(A \in \mathcal I_1 \cap \mathcal I_2\),定义交换图 \(G_{\mathcal I_1, \mathcal I_2}(A)\) 为一个有向二分图 \((A, \complement A)\)

  • \(x \in A\)\(y \in \complement A\);若 \(A - \{x\} + \{y\} \in \mathcal I_1\),则连边 \(x \to y\)
  • \(A - \{x\} + \{y\} \in \mathcal I_2\),则连边 \(y \to x\)

令所有满足 \(A + \{y\} \in \mathcal I_1\)\(y\) 组成的集合为 \(I_1\)\(A + \{y\} \in \mathcal I_2\)\(y\) 组成 \(I_2\)

那么完整的算法流程:

\[\begin{array}{c|l} 1& A \gets \varnothing\\ 2& \text{if } \exists \text{ a path from } I_1 \text{ to } I_2 \text{ in }G_{\mathcal I_1, \mathcal I_2}(A):\\ 3& \quad \text{let the shortest such path be } \{y_0, x_1, y_1, \dots, x_k, y_k\}\\ 4& \quad A \gets A + \{y_0, \dots, y_k\} - \{x_1, \dots, x_k\}\\ 5& \quad \text{back to step }2\\ 6& \text{return } A \end{array} \]

时间复杂度 \(O(m^2r(\mathcal I)T)\),其中 \(T\) 为判定 \(A\) 是否 \(\in \mathcal I\) 的复杂度。

正确性证明

我们需要证明两个性质:

  • 进行更新以后,\(A\) 仍然属于 \(\mathcal I_1 \cap \mathcal I_2\)
  • 若不存在 \(I_1\)\(I_2\) 的路径,则 \(A\)\(\mathcal I_1 \cap \mathcal I_2\) 的最大元素。(显然若 \(A\) 为最大元素,不存在 \(I_1\)\(I_2\) 的路径)

对于第一条:

我们只需证明 \(A + \{y_0, \dots, y_k\} - \{x_1, \dots, x_k\} \in \mathcal I_1\),另一侧对称。

首先 \(\forall i \in [k]\)\(A + \{y_i\} \notin \mathcal I_1\)。否则,存在更短的路径 \(\{y_i, x_{i + 1}, y_{i + 1}, \dots, x_k, y_k\}\)

由交换图定义知 \(x_i \in C(A, y_i)\)。我们只需证明 \(x_{1}, \dots, x_{i - 1}\) 不会破坏 \(C(A, y_i)\)。事实上这是显然的,因为若 \(x_j, j \lt i\) 破坏了 \(C(A, y_i)\),则存在更短的路径 \(\{y_0, \dots, x_j, y_i, \dots, y_k\}\)

对于第二条:

\(R\) 表示 \(G_{\mathcal I_1, \mathcal I_2}(A)\)\(I_1\) 可到达的点集。令 \(r_1, r_2\) 表示 \(\mathcal I_1, \mathcal I_2\) 的 rank function,则我们有以下结论:

  • \(\forall U \in \mathcal I_1 \cap \mathcal I_2\)\(\forall X \in M\)\(|U| \le r_2(X) + r_1(\complement X)\)

    这是因为 \(|U| = |U \cap X| + |U \cap \complement X| \le r_2(X) + r_1(\complement X)\)

  • \(|A| \ge r_2(R) + r_1(\complement R)\)

    我们只需证明 \(|A \cap R| \ge r_2(R)\)\(|A \cap \complement R| \ge r_1(\complement R)\)

    对于左侧,反证法。若 \(r_2(R) \gt |A \cap R|\),则(在 \((M, \mathcal I_2)\) 上)\(R\) 存在一个比 \(A \cap R\) 更大的独立集。设这个独立集中一个 \(\notin (A \cap R)\) 的元素为 \(y\),则 \(y \notin I_2\)。因为 \((A \cap R) + \{y\} \in \mathcal I_2\)\(A + \{y\} \notin \mathcal I_2\),所以 \(\exists x \in (A \setminus R)\) 满足 \(x \in C(A, y)\),即存在边 \(y \to x\)\(x \in R\),矛盾。

    右侧同理。\(\square\)

由前者可得 \(\max_U |U| \le \min_X r_2(X) + r_1(\complement X)\),由后者可得其中的取等情况。因此 \(|A| = \max_U |U|\)\(\square\)

那么我们就得证了这个算法的正确性。

带权形式

我们要求出最大的 \(\max_{x \in A} w(x)\) 使得 \(A \in \mathcal I_1 \cap \mathcal I_2\)\(|A| = k\)。这里 \(k\) 是一个固定的大小,类似在 MCMF 问题中我们在固定流量的前提下求费用最值。

过程和不带权的形式基本一致,也是每次对 \(A\) 进行调整,使其大小 \(+1\)

带权版本交换图 \(G_{\mathcal I_1, \mathcal I_2}(A)\) 与非带权版本类似,不过点有点权。对于 \(x \in A\),其点权为 \(-w(x)\);对于 \(x \notin A\),其点权为 \(w(x)\)。那么在算法过程中,我们找到最短路就是在权值和最小的情况下,经过的边最少的那一条路径。

这个过程可以用 SPFA 等算法实现,复杂度 \(O(m^3r(\mathcal I)T)\)

具体的证明需要用到线性对偶,非常复杂,就不放了。

posted @ 2026-01-22 10:13  cosf  阅读(12)  评论(0)    收藏  举报