拟阵学习笔记
拟阵
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\):
根据 rank function 的定义,给定一个拟阵的 rank function 可以反推出 \(\mathcal I\):
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\)。算法如下:
复杂度为 \(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\)。
那么完整的算法流程:
时间复杂度 \(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)\)。
具体的证明需要用到线性对偶,非常复杂,就不放了。


浙公网安备 33010602011771号