依赖排序检测循环依赖

时间:2011-04-21 20:57:56

标签: c++ sorting graph-algorithm

在你开始向我的脸上扔维基百科和博客的链接之前,请听我说。

我正在尝试找到最佳算法/函数来对...进行依赖排序。每个项目都有一个依赖项列表。

我想要基于迭代器的东西,但这不是很重要。

重要的是该算法指出完全哪些项是依赖循环的一部分。在这种情况下,我想提供详细的错误信息。

实际上,我正在考虑从“依赖节点”类继承我的项目,该类具有必要的布尔/函数来完成工作。欢迎使用酷(但描述性)名称:)

2 个答案:

答案 0 :(得分:2)

通常称为拓扑排序。大多数书籍/ papers /覆盖拓扑排序的任何内容也将涵盖循环检测。

答案 1 :(得分:1)

我不确切地知道为什么如果有的话,很难找到依赖周期!您只需检查是否有任何节点已经通过,同时应用bfs算法来查找所有依赖项。如果有一个,你只需回滚你下来的方式重新访问一个节点,然后标记所有节点,直到你到达指定节点的第一次访问。你传球中的所有牌都会被标记为一个循环。 (只需留下评论,如果需要,我会给出一个代码来执行此操作)