Skip to content

算法Algorithm

最小树形图与 Chu–Liu–Edmonds 算法

施工中 · 内容逐步修订

Chu-Liu-Edmonds algorithm · minimum rooted arborescence

选择每个非根顶点的最小入边,并以缩环修复有向环,求根可达的最小树形图。

形式陈述 ​

问题与局部选择 ​

采用有限有向图的独立弧记录变体 D=(V,A,s,t),每条弧带有限实权 c(a),并指定根 r∈V。允许原始输入有平行弧和自环,但先丢弃自环及指向根的弧;二者都不可能进入本页所求的结构。出树形图(out-arborescence)是从 r 向外到达全部顶点的有向生成结构:每个 v≠r 恰有一条选中入弧,r 没有选中入弧,并且从 r 可沿选中弧到达所有顶点。目标是使选中弧总权最小。先检查根可达性;若某个顶点从 r 不可达,则实例无解。单顶点实例返回空弧集,权重为零。

Chu–Liu–Edmonds 先选取各点的局部最小入弧:对每个 v≠r 选一条最轻入弧 ev,并排除指向根的弧。若这些弧没有形成有向圈,它们已经让每个非根顶点恰有一个父弧,并且根可达所有顶点;每个顶点都达到独立的最轻入弧下界,所以所得树形图最优。

缩环、重赋权与展开 ​

若选中弧形成有向圈 C,根不在 C 中,任何根树形图都必须有至少一条外部弧进入 C。下面的交换证明保证存在最优解只保留一个入口 (u,v),并以它替换圈中指向 v 的 ev。把 C 收缩为超点,对每条进入 v∈C 的外部弧定义

c′(u,C)=c(u,v)−c(ev).

圈内基准成本 ∑x∈Cc(ex) 已经统一支付,c(u,v)−c(ev) 正是选择外部弧、替换 ev 所增加的成本。离开 C 的弧和圈外弧保持原权;圈内弧在缩图中删除,收缩产生的平行弧保留各自原弧身份。递归求缩图的最优树形图后,若递归解选择了原终点为 v 的进入超点弧,就保留该外部弧、删除 ev,并保留圈中其余选中弧。

正确性不变量 ​

一般可行树形图可以多次进入 C,所以不能直接把所有原解与缩图解声称为一一对应。正确的比较先将任意原树形图 T 改成一种成本不增的规范形式。

从 T 中取一条根到 C 的路径,保留其第一次进入 C 的弧 a=(u,v);根到 u 的这段路径完全在 C 外。对每个 x∈C∖{v},把 T 中原来进入 x 的弧替换为选定的最轻入弧 ex,其余终点在圈外的弧保持不动。每次替换都不增加费用。得到的 T0 仍让每个非根点恰有一条入弧;从根先沿保留路径进入 v,再沿 C∖{ev} 到达全部圈点。任何圈外点也仍可达:沿它在原 T 中的根路径,圈外终点的弧都保留,而遇到的圈点已经可达。因此 T0 是根树形图,且仅由 a 从外部进入 C。

令 BC=∑x∈Cc(ex)。上述规范树收缩后得到合法缩图树 T′,满足

c(T0)=BC+c′(T′).

反过来,任意缩图根树形图在非根超点 C 恰有一个入口;按记录的原终点 v 展开,并补上所有 ex(x∈C∖{v}),就得到同样成本等式的合法原树。因而

OPT(D)=BC+OPT(D/C).

一边使用任意最优原解的成本不增规范化,另一边使用缩图最优解的精确展开;这里需要的是两个方向的最优值比较,而非每个原解的双射。每次收缩至少两个顶点,按顶点数作数学归纳即可证明递归算法正确并终止。

多层收缩时,这个对应关系逐层嵌套。实现必须为每层保存圈成员、各顶点选中的 ev、重赋权弧对应的原弧及其原终点,并按收缩的逆序展开;只保存新端点与新费用无法恢复原始弧集合。

直觉

“每个顶点各取最便宜入弧”给出了一个可加的局部下界,却可能把若干顶点锁成没有根入口的圈。收缩不把这个失败藏起来,而是先把圈内已经支付的最低成本打包,再让所有外部入口在同一超点上比较“为了从哪个顶点破圈,需要额外多付多少”。递归只选择这笔替换代价,展开时再把局部下界与替换决定拼回完整树形图。

它不是 Prim 或 Kruskal 加上箭头。无向生成树的割性质选择连接两个分量的边;树形图还要求每个非根顶点恰有一条入弧,并从指定根沿方向可达。方向与根改变了可行集,缩环才是这里的核心修复动作。

最小树形图缩环示意图

图中圈为 a→b→c→a,三条圈弧各重 1,外部入口 r→a 重 2、r→c 重 5。圈基准为 3,减权后两个入口分别为 1,4;选前者并删除圈弧 c→a,展开树的总权为 3+1=4。

例子与边界

最小的多入口反例只需根 r 和两个圈点 a,b:取 a→b,b→a 权重各为 1,r→a,r→b 各为 2。后两弧组成的可行树形图有两个圈入口、成本 4;保留 r→a 并用 a→b 替换另一个入口,得到成本 3 的规范树。缩圈基准为 2,两个候选入口的减权都是 1,恰好恢复最优值 3。

三个非根顶点的最轻入弧也可能形成 a→b→c→a。直接任选一弧删除,可能迫使使用一条极贵的外部入口;重赋权则分别计算外弧进入 a,b,c 时替换对应最轻入弧的增量,让递归选择真正便宜的破圈位置。

本页始终采用从根向外的出树形图:非根入度为一。若改为每点能沿弧走向根的入树形图,就应反转全部方向;最大权版本则相应改变目标。负权不妨碍“相对基准成本”的推导;平行弧也可处理,但端点相同不代表身份相同。若收缩超点不含根,却没有任何可选外部入弧,则原图中该圈所在部分从根不可达,实例无解。未指定根的 optimum branching 又是不同问题。

推论与应用

记 n=|V|≥1,m=|A| 为原始弧记录数。根可达性与无效弧预处理需 O(n+m);经典朴素实现每层扫描顶点和弧、至多收缩 n−1 次,完整上界可写为 O(n(m+1)) 次基本操作。对可行且 n≥2 的实例,m≥n−1,通常简写为 O(nm);更快版本使用可合并堆等结构维护重赋权候选。无论追求哪一复杂度,都必须排除根的入弧,保存原弧身份,并在返回答案时给出一组真实原弧而非只有收缩图上的超点边。

这些是精确加减、比较与弧记录访问的次数;有理权重实现还须计入重赋权的位长和算术成本。初选弧在展开时可能被替换,因此它与不可撤销的贪心选择具有不同的状态承诺。

最小树形图用于有向网络设计、依赖选择和根可达结构优化。它与最小生成树共享“生成结构”一词,但可行性、交换论证和算法状态均不同;与一般最短路树相比,它优化所有选中弧的总权,而不是逐顶点的根到点距离。

参考资料
  • Yoeng-Jin Chu, Tseng-Hong Liu, On the Shortest Arborescence of a Directed Graph, 1965.

  • Jack Edmonds, Optimum Branchings, J. Research NBS, 1967.

  • Robert Tarjan, Finding Optimum Branchings, Networks, 1977.

  • Princeton COS423,Greedy Algorithms II,2013,slides 58–62:多入口反例、保留首次入口的交换引理和缩圈归纳。该讲义先把圈弧减为零;本页以基准成本加回的等价方式记账。

关系图谱14 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

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

使用的工具