【发布时间】:2016-08-02 20:54:00
【问题描述】:
我正在尝试创建一个工作流管理,我用图表来表示工作流。该图是一个简单的有向图,其中节点表示一些任务,边缘指向依赖于该任务且具有父->子关系的任务。现在,我想要实现的是,在所有父项都完成之前,任何任务都不应该开始。
假设我将以下图表表示为 python 字典:
graph = {'A': ['B', 'D'], 'B': ['D', 'C'], 'C': ['D', 'E'],
'D': ['E'], 'E': []}
在这种情况下,A 应该首先执行,然后是 B,然后是 C。之后D 被执行,最后任务E 完成,这取决于D。
我可以设想这样做的一种方法是使用广度或深度优先搜索来访问所有节点,然后检查每个节点是否已完成所有父节点。如果是,我开始该任务,并一直这样做,直到所有任务都已开始。
我想知道是否有任何更复杂/有效的解决方案来解决这个问题,而不是多次遍历图表?
【问题讨论】:
-
我认为你描述的问题是topological sorting的问题。
-
是图遍历还是树遍历?
C_3的预期输出是什么?
标签: algorithm graph graph-algorithm