Skip to content

算法Algorithm

拟阵交算法

施工中 · 内容逐步修订

Matroid intersection algorithm · Unweighted matroid intersection

在两个有限拟阵的交换有向图中寻找最短增广路,以独立性 oracle 构造最大公共独立集并在无路时输出秩和证书。

形式陈述 ​

Oracle 模型与目标 ​

给定同一有限底集 E 上的两个拟阵

M1=(E,I1),M2=(E,I2),

以及独立性 oracle:输入 X⊆E,返回 X∈Ij 与否。无权拟阵交要找最大公共独立集;其最优性证书最终以两个拟阵的秩与闭包刻画。目标写为

max{|I|:I∈I1∩I2}.

算法从 I=∅ 开始,每轮构造交换图并增广一次;至多增广 r≤|E| 次,其中 r 是最优公共独立集大小。记 N=|E|。若当前 |I|=k,朴素实现枚举 I×(E∖I) 中的交换对,并询问每个外部元素能否直接加入两侧拟阵。因此一轮需要 O((k+1)N) 次 oracle 调用;其中的 N 项也覆盖初始空集的源、汇判定。计入最终找不到增广路的证书搜索,对 k=0,1,…,r 求和,得到

O((r+1)2N)

次独立性查询和同阶的附加图搜索工作。这里可用成员位数组表示查询集合,临时改动至多两个位置、查询后恢复;若接口要求每次显式复制整个集合,还须另计复制成本。若一次 oracle 成本至多为 Tind,总时间为 O((r+1)2N(Tind+1))。N=0 时直接返回空集。基本回路、rank oracle 与 Cunningham 型算法能改善查询界,本页固定可直接核验的朴素实现。若元素标识和图索引各占一个机器字,以邻接表显式保存当前交换图需要 O((r+1)N) 个存储字,BFS、成员数组及源汇标记另需 O(N) 个字;每轮可复用这些空间,oracle 自身的工作空间另计。

交换有向图的方向 ​

固定当前公共独立集 I。交换图 DI 的顶点是底集 E,并在 I 与 E∖I 之间加两类方向相反的弧。对 a∈I,b∉I:

a→b⟺I−a+b∈I1,b→a⟺I−a+b∈I2.

源集合与汇集合为

SI={b∉I:I+b∈I1},TI={b∉I:I+b∈I2}.

因此一条 SI 到 TI 的路从外部元素开始,先沿 M2 弧进入 I,再沿 M1 弧离开,如此交替。交换图弧方向只是约定,但 sources、sinks 和后续证明必须与约定一致;交换其中一类方向却不交换端点集合会破坏增广语义。

最短增广路与对称差 ​

若 b∈SI∩TI,长度零的路径直接把 b 加入 I。否则从全部 SI 顶点同时启动广度优先搜索,在 DI 中找一条最短的 SI–TI 路

P=(b0,a1,b1,…,ak,bk),

其中 bj∉I,aj∈I。令

I′=I△V(P)=(I∖{a1,…,ak})∪{b0,…,bk}.

外部顶点比内部顶点多一个,所以 |I′|=|I|+1。真正需要证明的是 I′ 同时属于 I1,I2。

最短性使这些单元素交换能够按次序合并。先用一个基本回路事实:若 I 独立而 I+b 依赖,其中有唯一回路 C(b,I);否则消去两条回路共有的 b,会在 I 内产生回路。且 I−a+b 独立恰当且仅当 a∈C(b,I)∖{b}。

在 M1 中,I+b0 独立。对 j≥1,bj 不是源,否则从它开始的路径更短;故 I+bj 有基本回路 Cj。弧 aj→bj 保证 aj∈Cj。若 Cj 含某个 ai,i<j,就有弧 ai→bj 跳过路径的一段,与最短性矛盾。因此 Cj 避开此前的 a1,…,aj−1。

从独立集 I+b0 出发,依次对 j=1,…,k 加入 bj、删去 aj。归纳假设当前集合独立;原来的 Cj 仍包含在当前集合加 bj 中,因此正是这次加入产生的唯一回路。删去其中的 aj 即恢复独立。最后得到 I′。在 M2 中反向进行:先加入可直接加入的 bk,再按 j=k,…,1 加入 bj−1、删去 aj;最短性排除弧 bj−1→ai(i>j),同一论证成立。故 I′ 在两个拟阵中都独立。

无增广路时的最优性证书 ​

若从 SI 无法到达 TI,令 R 为交换图中从 SI 可达的全部元素。交换闭包性质推出

r1(E∖R)=|I∖R|,r2(R)=|I∩R|.

具体地,对 b∈(E∖I)∖R,它不是 M1 的源,所以有基本回路 C1(b,I)。该回路不含 I∩R 中的元素,否则相应弧 a→b 会使 b 可达。因此 b 属于 I∖R 在 M1 中的闭包,给出第一式。

对 b∈R∖I,它不是 M2 的汇,所以有基本回路 C2(b,I)。回路中的每个旧元素 a 都有弧 b→a,因而属于 I∩R。于是整个 R 包含于 I∩R 在 M2 中的闭包,给出第二式。两式的反向秩不等式则来自相应的独立子集。

取 U=E∖R,得到

r1(U)+r2(E∖U)=|I∖R|+|I∩R|=|I|.

另一方面,任意公共独立集 J 都满足

|J|≤r1(U)+r2(E∖U).

所以当前 I 已最优,U 同时给出 拟阵交 min–max 定理的等值证书。算法不是在“找不到路”时凭经验停止,而是产出可验证上界。

直觉

交换图把“加入一个外部元素会破坏哪套独立性”拆成交替方向:沿路径依次移出旧元素、放入新元素,最终外部元素多一个。最短性阻止局部交换之间产生回路冲突;若再无增广路,可达集又把当前解切成两侧秩和恰等于其大小的上界证书。

拟阵交的交换图增广
例子与边界

具体例子:二分匹配 ​

给二分图 G=(L⊔R,E),在边集上定义两个 partition matroids:

  • M1 要求每个左端点至多关联一条已选边;
  • M2 要求每个右端点至多关联一条已选边。

公共独立集恰是匹配。交换图中的外部边若能替换一条冲突的已匹配边,就对应沿交替路翻转端点占用;源表示左端未被占用的外部边,汇表示右端未被占用的外部边;二者之间的交换路径恢复普通 匹配增广路。交换图中的长度零路径是一条两端均空闲的边,在原图中对应长度一的匹配增广路。拟阵交算法把“端点冲突”推广成任意两套拟阵独立性 oracle。

推论与应用

失败边界与近邻算法 ​

单拟阵最大权基由贪心解决;两个拟阵的无权公共独立集需要交换图增广。加权拟阵交还必须给弧赋 reduced cost、维护势并找最短路径,不能把本页 BFS 中的“最短”简单改成按元素权排序。

三个 partition matroid 的交已经能表达三维匹配,一般为 NP-hard;“两个”是该多项式算法的结构边界。共同独立集族自身通常不是拟阵,因此不能对 I1∩I2 再运行普通拟阵贪心。

参考资料
  • Michel X. Goemans, Lecture Notes on Matroid Intersection, MIT 18.433, 2015-04-08,§6.2(Largest Common Independent Set):交换图方向、最短路径增广与可达集秩证书。
  • Jack Edmonds, “Matroid Intersection,” Annals of Discrete Mathematics 4, 1979, 39–49.
  • William H. Cunningham, “Improved Bounds for Matroid Partition and Intersection Algorithms,” SIAM Journal on Computing 15(4), 1986.
  • Alexander Schrijver, Combinatorial Optimization: Polyhedra and Efficiency, Springer, 2003, chapters 39–41.
关系图谱9 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系