· 定义
对于有向无环图G (V, E),类似最小生成树的定义,有向图最小树形图即在有向图上查找总权值和最小的树形图(即有向边的树)。
· 朱 - 刘算法
对于每个点先选取到达它的最小的边,这样可组成一个边集E1,显然,该边集权值和最小,但不一定是树。
在该边集上进行缩点,并判断是否有解(是否有点无入度),在融会G中,记为G1。
当然,若此时没有找到有向环且有解,说明在当前图上已找到最小树形图,那么将原来的缩点解开,即除了当前树形图上的弧之外,将缩点内没有与已知弧有相同终点的边选出,如此构成了G的最小树形图。
反之,则进行改边:先省去缩点内边;对于由缩点内出去的边,保持原权值即可;对于进入缩点的边,令Vs表示缩点点集,对于∀v ∈ Vs,∀u ∉ Vs,有<u, V> = <u, v> - v的最小入权边,是因为这样将权值相加的话,就相当于删去了缩点中拥有相同终点的边。
这样更改完点集与边集,进行重复运算即可。
其中,复杂度O (nm)。
· 代码
(改代码仅求最小权值总和,这样是不需解开缩点的)
原文地址:https://www.cnblogs.com/Colythme/p/9710789.html
时间: 2024-11-01 13:06:56