关键路径与最长路径的关系

时间:2013-11-09 05:28:05

标签: algorithm graph directed-acyclic-graphs

关键路径是解决parallel precedence-constrained scheduling问题的本质。

问题:给定一组指定持续时间的作业要完成,优先约束指定必须在某些其他作业开始之前完成某些作业,我们如何在相同的处理器上安排作业(多达需要)这样他们都在最短的时间内完成,同时仍然尊重约束?

我很难理解这个与图表中最长路径之间的联系,这显然是解决方案。我认为答案是最短的时间,因为我们想要最少的时间。为什么这与最长路径有关,而不是最短路径?

2 个答案:

答案 0 :(得分:1)

最短时间表的长度与最长路径有关,因为无论您拥有多少台处理器,您都无法做到完成工作,而不是最长路径。在上一个作业完成之前,最长路径上的作业都不能开始,所以你必须一个接一个地完成它们。

如果您的处理器从未耗尽,您可以在所有依赖的作业完成后立即开始工作,因此每个作业在到达其终点的最长路径完成后立即完成,并完成整个工作完成最长路径后即可完成。

答案 1 :(得分:0)

  1. 创建一个表示结束状态的顶点。
  2. 为每个任务创建一个顶点。
  3. 对于每项任务T.
    1. 对于每个依赖于T的任务T2(以及对于最终状态)
      1. 从T的顶点到T2的顶点创建有向边E
      2. 将E的重量设为T。
      3. 所需的时间
  4. 然后,关键路径是图表中最长的路径。想一想,并说服这是真的。

    这一系列思路对我有所帮助:

    关键路径必须以没有依赖关系的任务开始,并以最终状态结束。在满足所有依赖关系之前,任何任务都无法完成。

    如果任务A必须在B之前完成,并且B必须在C之前完成,则从任务A到任务C的时间至少为A-> B + B-> C.

    如果C具有依赖性A的另一依赖性B',则从A到C的时间至少为A-> B'+ B' - > C。

    因此,从A到C的最长的路径才是最重要的。

    如果必须满足某个依赖关系,那么最短路径将解决问题。当所有依赖关系都必须得到满足时,最长的路径解决了这个问题。