形式陈述
问题与局部选择
采用有限有向图的独立弧记录变体 理路 有向图 Directed graph · Digraph 以顶点有序对为弧、能够保留连接方向的有限简单图结构。 D = ( V , A , s , t ) ,每条弧带有限实权 理路 实数系 Real number system · Ordered complete field 满足序域公理与上确界完备性的数系。 c ( a ) ,并指定根 r ∈ V 。允许原始输入有平行弧和自环,但先丢弃自环及指向根的弧;二者都不可能进入本页所求的结构。出树形图(out-arborescence)是从 r 向外到达全部顶点的有向生成结构:每个 v ≠ r 恰有一条选中入弧,r 没有选中入弧,并且从 r 可沿选中弧到达所有顶点。目标是使选中弧总权最小。先检查根可达性;若某个顶点从 r 不可达,则实例无解。单顶点实例返回空弧集,权重为零。
Chu–Liu–Edmonds 先选取各点的局部最小入弧:对每个 v ≠ r 选一条最轻入弧 e v ,并排除指向根的弧。若这些弧没有形成有向圈,它们已经让每个非根顶点恰有一个父弧,并且根可达所有顶点;每个顶点都达到独立的最轻入弧下界,所以所得树形图最优。
缩环、重赋权与展开
若选中弧形成有向圈 C ,根不在 C 中,任何根树形图都必须有至少一条外部弧进入 C 。下面的交换证明保证存在最优解只保留一个入口 ( u , v ) ,并以它替换圈中指向 v 的 e v 。把 C 收缩为超点,对每条进入 v ∈ C 的外部弧定义
c ′ ( u , C ) = c ( u , v ) − c ( e v ) . 圈内基准成本 ∑ x ∈ C c ( e x ) 已经统一支付,c ( u , v ) − c ( e v ) 正是选择外部弧、替换 e v 所增加的成本。离开 C 的弧和圈外弧保持原权;圈内弧在缩图中删除,收缩产生的平行弧保留各自原弧身份。递归求缩图的最优树形图后,若递归解选择了原终点为 v 的进入超点弧,就保留该外部弧、删除 e v ,并保留圈中其余选中弧。
正确性不变量
一般可行树形图可以多次进入 C ,所以不能直接把所有原解与缩图解声称为一一对应。正确的比较先将任意原树形图 T 改成一种成本不增的规范形式。
从 T 中取一条根到 C 的路径,保留其第一次进入 C 的弧 a = ( u , v ) ;根到 u 的这段路径完全在 C 外。对每个 x ∈ C ∖ { v } ,把 T 中原来进入 x 的弧替换为选定的最轻入弧 e x ,其余终点在圈外的弧保持不动。每次替换都不增加费用。得到的 T 0 仍让每个非根点恰有一条入弧;从根先沿保留路径进入 v ,再沿 C ∖ { e v } 到达全部圈点。任何圈外点也仍可达:沿它在原 T 中的根路径,圈外终点的弧都保留,而遇到的圈点已经可达。因此 T 0 是根树形图,且仅由 a 从外部进入 C 。
令 B C = ∑ x ∈ C c ( e x ) 。上述规范树收缩后得到合法缩图树 T ′ ,满足
c ( T 0 ) = B C + c ′ ( T ′ ) . 反过来,任意缩图根树形图在非根超点 C 恰有一个入口;按记录的原终点 v 展开,并补上所有 e x (x ∈ C ∖ { v } ),就得到同样成本等式的合法原树。因而
OPT ( D ) = B C + OPT ( D / C ) . 一边使用任意最优原解的成本不增规范化,另一边使用缩图最优解的精确展开;这里需要的是两个方向的最优值比较,而非每个原解的双射。每次收缩至少两个顶点,按顶点数作数学归纳 理路 数学归纳法 Mathematical induction · Weak induction 由基例和从 n 到 n+1 的归纳步推出性质对全部自然数成立。 即可证明递归算法正确并终止。
多层收缩时,这个对应关系逐层嵌套。实现必须为每层保存圈成员、各顶点选中的 e v 、重赋权弧对应的原弧及其原终点,并按收缩的逆序展开;只保存新端点与新费用无法恢复原始弧集合。
直觉
“每个顶点各取最便宜入弧”给出了一个可加的局部下界,却可能把若干顶点锁成没有根入口的圈。收缩不把这个失败藏起来,而是先把圈内已经支付的最低成本打包,再让所有外部入口在同一超点上比较“为了从哪个顶点破圈,需要额外多付多少”。递归只选择这笔替换代价,展开时再把局部下界与替换决定拼回完整树形图。
它不是 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 ( n m ) ;更快版本使用可合并堆等结构维护重赋权候选。无论追求哪一复杂度,都必须排除根的入弧,保存原弧身份,并在返回答案时给出一组真实原弧而非只有收缩图上的超点边。
这些是精确加减、比较与弧记录访问的次数;有理权重实现还须计入重赋权的位长和算术成本。初选弧在展开时可能被替换,因此它与不可撤销的贪心选择 理路 贪心算法 Greedy algorithm 每一步作局部最优且不回溯选择的算法设计范式。 具有不同的状态承诺。
最小树形图用于有向网络设计、依赖选择和根可达结构优化。它与最小生成树 理路 最小生成树 Minimum spanning tree · MST 连通加权图中总边权最小的生成树及其算法问题。 共享“生成结构”一词,但可行性、交换论证和算法状态均不同;与一般最短路树相比,它优化所有选中弧的总权,而不是逐顶点的根到点距离。
参考资料
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:多入口反例、保留首次入口的交换引理和缩圈归纳。该讲义先把圈弧减为零;本页以基准成本加回的等价方式记账。