使用哪种算法来查找组件之间的依赖关系?

时间:2012-01-21 09:53:07

标签: algorithm build build-process build-automation graph-algorithm

在我们的构建脚本中,我们将应用程序拆分为组件。

场景将是这样的。

任何组件都可能依赖于一个或多个组件。

对于前。我们有组件1到组件12。

Component1依赖于component2和component3。

组件4取决于组件2和组件6

如果我在脚本中指定构建具有依赖关系的component1和component4,则应按此顺序构建Component2,component3,component1,component6和component4。

哪种算法可以更好地发现依赖关系,并确保不需要执行任何组件两次。

2 个答案:

答案 0 :(得分:3)

您可以构造依赖关系图,然后使用topological sorting来确定编译顺序。

答案 1 :(得分:1)

使用广度优先遍历遍历图形,并将每个新节点附加到列表中。如果发现当前节点已在列表中,则中止该分支。最后,以相反的顺序从列表中构建组件。

编辑:我没有适当的含咖啡因。使用拓扑排序作为灵魂检查建议。我的解决方案可能会也可能不会起作用。