朱 - 刘算法

Posted colythme

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了朱 - 刘算法相关的知识,希望对你有一定的参考价值。

· 定义

  对于有向无环图G (V, E),类似最小生成树的定义,有向图最小树形图即在有向图上查找总权值和最小的树形图(即有向边的树)。

· 朱 - 刘算法

  对于每个点先选取到达它的最小的边,这样可组成一个边集E1,显然,该边集权值和最小,但不一定是树。

  在该边集上进行缩点,并判断是否有解(是否有点无入度),在融会G中,记为G1

  当然,若此时没有找到有向环且有解,说明在当前图上已找到最小树形图,那么将原来的缩点解开,即除了当前树形图上的弧之外,将缩点内没有与已知弧有相同终点的边选出,如此构成了G的最小树形图。

  反之,则进行改边:先省去缩点内边;对于由缩点内出去的边,保持原权值即可;对于进入缩点的边,令Vs表示缩点点集,对于v ∈ Vs,u ∉ Vs,有<u, V> = <u, v> - v的最小入权边,是因为这样将权值相加的话,就相当于删去了缩点中拥有相同终点的边。

  这样更改完点集与边集,进行重复运算即可。

  其中,复杂度O (nm)。

· 代码

  (改代码仅求最小权值总和,这样是不需解开缩点的)

 

  

以上是关于朱 - 刘算法的主要内容,如果未能解决你的问题,请参考以下文章

poj3164最小树形图模板题

codeforce 240E 最小树形图+路径记录更新

Directed_MST 最小树形图

刘老师讲堂|常用算法

刘老师讲堂|常用算法

同济大学刘儿兀教授揭秘室内定位大赛夺冠独家算法