我目前有一个拥有所谓“节点”的系统。并且每个节点都有依赖关系。 我的问题是在删除节点时,它的依赖关系必须存在,所以现在我需要弄清楚删除节点的正确顺序。 这样做的方法是什么? (最终语言实现将是PHP)
答案 0 :(得分:1)
这实际上是找到有向图的topological ordering的问题,其中每条边表示一个依赖关系(因此您将有E
到A
的边缘,因为{ {1}}取决于A
,其余部分同样如此。
有向图的拓扑排序(有时缩写为topsort或toposort)或拓扑排序是其顶点的线性排序,使得对于从顶点u到顶点v的每个有向边uv,u在排序中位于v之前。 / p>
解决此问题的一种方法是重复选择没有传入边的节点,然后从该节点中删除所有传出边(有关详细信息,请参阅Wikipedia)。