2011-04-21 291 views
0

在开始向我的脸上投掷链接到维基百科和博客之前,请听我说。依赖关系排序与循环依赖关系的检测

我想找到最佳的算法/函数做依赖性排序...东西。每个项目都有一个依赖关系列表。

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

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

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

+0

你想要一个完整的报告*图中的*每个*周期,或者只是它发现的第一个周期? – Beta 2011-04-21 21:44:19

+0

@Beta:第一个就足够了,但是我想要完整的循环(类似于a取决于b取决于c取决于a,而不仅仅是“找到b的循环相关性”) – rubenvb 2011-04-22 09:59:29

回答

2

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

1

我不完全明白为什么很难找到依赖周期,如果有的话!您只需检查是否有任何节点已经通过应用bfs算法找出所有依赖关系。如果存在某个节点,则只需回滚到下一个节点即可重新访问节点,并标记所有节点,直到您到达指定节点的第一次访问节点。你传球中的所有人都将被标记为一个循环。 (只是留下评论,我会给你一个代码,如果你需要的话)