订购依赖项的依赖项

时间:2014-04-16 01:40:21

标签: algorithm graph dependencies

我目前有一个拥有所谓“节点”的系统。并且每个节点都有依赖关系。 我的问题是在删除节点时,它的依赖关系必须存在,所以现在我需要弄清楚删除节点的正确顺序。 这样做的方法是什么? (最终语言实现将是PHP)

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

这实际上是找到有向图的topological ordering的问题,其中每条边表示一个依赖关系(因此您将有EA的边缘,因为{ {1}}取决于A,其余部分同样如此。

  

有向图的拓扑排序(有时缩写为topsort或toposort)或拓扑排序是其顶点的线性排序,使得对于从顶点u到顶点v的每个有向边uv,u在排序中位于v之前。 / p>

解决此问题的一种方法是重复选择没有传入边的节点,然后从该节点中删除所有传出边(有关详细信息,请参阅Wikipedia)。