想象一下我有一个有顶点和边的有向无环图(DAG)。
顶点可以是以下两种类型之一:
边表示依赖性。它总是源自某个计算任务顶点T,并终止于某个资源顶点R。
图形结构的限制:
语义:
问题:
鉴于上图,我可以使用哪种算法来计算可以并行运行的所有可能任务,以使它们不会相互阻塞? 即,在任何给定的时间,我希望能够实现最大的并行化。我将使用该算法发现彼此不阻塞的所有任务,然后运行它们。每当任务完成时,我都希望重新评估图表,以查看是否可以剥离更多未被阻止的任务。
我想知道我可以用于这种计算的算法。这听起来像一个硬图问题,但是我怀疑这种问题并不完全是全新的。...
示例:
在提供的示例中,我可以先运行T1和T3。完成这些后,我可以运行T2和T4。