Skip to content

算法Algorithm

Edmonds blossom 算法

施工中 · 内容逐步修订

Edmonds' blossom algorithm · Blossom algorithm

通过识别并收缩奇交替环,在一般图中保持增广路存在性并求最大匹配的算法。

形式陈述 ​

输入是有限简单无向图 G=(V,E) 与当前匹配 M;一个阶段要么找到一条 M-增广路,要么证明不存在。算法从所有未匹配顶点建立交替森林:根为 outer 顶点;从 outer 顶点只沿非匹配边扩展,首次到达的新顶点成为 inner,再沿其唯一匹配边把 mate 加为 outer。若非匹配边连接两棵不同树中的 outer 顶点,两条根路径与该边组成增广路。

若非匹配边连接同一棵树中的两个 outer 顶点 u,v,令 b 为它们到根路径的最低公共祖先。从 b 到 u、边 uv、再从 v 回到 b 形成奇数长度的交替环 B,称为 blossom,b 是 base;根到 b 的交替路径是 stem。环上除 base 外的顶点由 M 成对匹配,故把整个 B 收缩为超级点 β 后,当前匹配在外部仍合法。

收缩不变量是

G 中存在相对 M 的增广路⟺G/B 中存在相对 M/B 的增广路.

先看从收缩图到原图的 lift。若增广路不含 β,原样保留。若包含它,路径在 β 的一条外边非匹配,记其原端点为 v∈B。环上从 base b 到 v 有唯一的偶长度交替路线,非空时首边非匹配、末边匹配;v=b 时取空路线。若 β 是未匹配端点,则 b 也未匹配,直接从 b 沿这条路线接出去;若 β 位于路径内部,其另一条外边必为匹配边,并且只能接在 b,仍能交替接合。收缩图中的路径简单,所以外部部分不会与环内顶点重复。

反方向的存在性证明还要处理 stem,不能只把任意路径的所有进出压成一个点。沿偶长度 stem 翻转得到 M′=M△E(stem),匹配大小不变,base 变为未匹配点;环内匹配保持,故 |M′/B|=|M/B|。若 M 非最大,则 M′ 也非最大,由 Berge 定理有一条 M′-增广路。若它不碰 B,可直接留在收缩图;若碰到 B,从一个位于 B 外的未匹配端点走到第一次进入 B 为止,便得到通向未匹配超级点的增广路。进入边非匹配,因为 M′ 中的环内顶点只在环内匹配,base 则未匹配。于是 M′/B 非最大,同大小的 M/B 也非最大,再由 Berge 定理得到所需的收缩图增广路。

算法在收缩图继续搜索,按收缩的逆序 lift,再沿原图增广路翻转;每次匹配大小增加一,至多增广 ⌊n/2⌋ 次。经典 O(n3) 实现隐式维护 blossom 的 base 代表、交替父链与待扫描顶点:一次搜索扫描 O(n2) 对端点,至多 O(n) 次收缩各花 O(n) 更新代表与父链,从而每阶段为 O(n2)。每次收缩都复制并重新搜索整张图的朴素递归版本,不能直接继承这个实现界。上述隐式稠密实现保存 O(n2) 个邻接项,以及共 O(n) 个 base、parent、match 和队列记录;顶点标识与索引各占一个机器字时,这也给出相应的字空间界,无需另存逐层复制的收缩图。

直觉

二分图的交替 BFS 可以给顶点稳定标出奇偶层;一般图中的奇环会让两个 outer 顶点突然相连,同一个区域似乎同时要求两种层次。Blossom 收缩把这段局部奇偶冲突暂时封装成一个点,继续寻找全局出口;找到路线后再按入口位置展开。

不是任意奇环都能收缩。它必须相对于当前匹配和交替森林形成上述 blossom,base、stem 与环上匹配模式共同保证收缩前后增广路等价。

Blossom 收缩与 lift
例子与边界

设未匹配根为 s,stem 为非匹配边 s−a、匹配边 a−b。从 outer 顶点 b 沿五环依次走

b−c−d−e−f−b,

其中 (c,d),(e,f)∈M,其余环边不在 M。边 fb 连接同树 outer 顶点 f,b,形成 base 为 b 的 blossom。若另有未匹配顶点 t 与 f 以非匹配边相连,收缩图中路径 s−a−β−t 是增广路;lift 时选择 b−c−d−e−f 这条交替路线,得到 s−a−b−c−d−e−f−t。

若从 b 到出口沿错误的短边 bf 展开,bf 与出口边 ft 连续两条都非匹配,路径不再交替;stem 的末边 ab 实际是匹配边。Lift 不是任意把超级点换回一圈,而要由入口、出口和 base 的奇偶关系选路。

若原始输入带自环或平行边,可先删自环、对每对不同端点保留一条代表边,再求无权顶点匹配。收缩内部仍可能产生平行记录和嵌套 blossom,必须保留足够的原边身份及展开信息。每次增广后交替森林和 blossom 结构依赖新匹配,必须重建或等价更新,不能沿用旧层次标签。

推论与应用

由 Berge 定理,某阶段若在所有合法收缩后仍找不到增广路,当前匹配即为最大匹配。算法因此把“寻找一般图增广路”的困难全部集中在 blossom contraction 与 lifting 证书上。

二分图没有奇环,outer–outer 同树边不会形成 blossom,算法退化为普通交替森林搜索。一般匹配多胞形的奇集不等式给出另一种完整性证明:度约束之外还要限制奇数顶点集的内部匹配量,紧奇割允许递归收缩并拼接凸组合。加权一般匹配还需要这些约束对应的对偶变量和紧边维护;它不是在本页算法上给边排序即可得到。

参考资料
  • Jack Edmonds, “Paths, Trees, and Flowers,” Canadian Journal of Mathematics 17, 1965, pp. 449–467.
  • Norbert Zeh,Algorithms II,§7.7.1.2 Expanding Blossoms,Lemmas7.33–7.34:偶路 lift 与先翻转 stem 的双向存在性证明。
  • Katta G. Murty,Network Programming,Chapter10,§10.1.1,pp.714–717:保留交替森林和收缩记录的最大基数版本及每阶段二次工作界。
  • Alexander Schrijver, Combinatorial Optimization, Springer, 2003, Chs. 24–25.
关系图谱6 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

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