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

Algorithm 要使用哪种算法来查找组件之间的依赖关系?,algorithm,build,build-process,build-automation,graph-algorithm,Algorithm,Build,Build Process,Build Automation,Graph Algorithm,在构建脚本中,我们将应用程序拆分为组件 情况是这样的 任何组件都可能依赖于一个或多个组件 例如,我们有组件1到组件12 组件1依赖于组件2和组件3 组件4依赖于组件2和组件6 如果我在脚本中指定使用依赖项构建component1和component4,那么应该按照以下顺序构建Component2、component3、component1、component6和component4 哪种算法有助于更好地找到依赖关系并确保不需要执行两次组件。只需使用广度优先遍历遍历图,并将每个新节点附加到列表中即

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

情况是这样的

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

例如,我们有组件1到组件12

组件1依赖于组件2和组件3

组件4依赖于组件2和组件6

如果我在脚本中指定使用依赖项构建component1和component4,那么应该按照以下顺序构建Component2、component3、component1、component6和component4


哪种算法有助于更好地找到依赖关系并确保不需要执行两次组件。

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


编辑:我没有适当的咖啡因。使用soulcheck建议的拓扑排序。我的解决方案可能有效,也可能无效。

只需使用宽度优先遍历遍历图,并将每个新节点附加到列表中即可。如果发现当前节点已在列表中,请中止该分支。最后,按相反顺序从列表中构建组件


编辑:我没有适当的咖啡因。使用soulcheck建议的拓扑排序。我的解决方案可能有效,也可能无效。

您可以构建依赖关系图,然后使用确定编译顺序

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

这将满足要求。如果你最终得到了循环依赖,其中一个链接的算法在描述循环依赖方面会做得稍微好一点——它们将是强连接的组件。这将完成所要求的。如果您最终得到循环依赖,那么其中一个链接的算法将更好地描述循环依赖是什么-它们将是强连接的组件。