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

Algorithm 关键路径与最长路径的关系,algorithm,graph,directed-acyclic-graphs,Algorithm,Graph,Directed Acyclic Graphs,关键路径是解决并行优先约束调度问题的本质 问题是:给定一组要完成的指定持续时间的作业,以及指定某些作业必须在某些其他作业开始之前完成的优先级约束,我们如何在相同的处理器上调度作业(根据需要而定)在遵守约束条件的情况下,在最短的时间内完成所有任务 我很难理解这与通过图形的最长路径之间的联系,这显然是解决方案。我会假设答案是最短的时间,因为我们需要最短的时间。为什么这与最长路径有关,而不是最短路径?最短计划的长度与最长路径有关,因为无论有多少处理器,都无法比最长路径更快完成作业。在上一个作业完成之前

关键路径是解决
并行优先约束调度问题的本质

问题是:给定一组要完成的指定持续时间的作业,以及指定某些作业必须在某些其他作业开始之前完成的优先级约束,我们如何在相同的处理器上调度作业(根据需要而定)在遵守约束条件的情况下,在最短的时间内完成所有任务


我很难理解这与通过图形的最长路径之间的联系,这显然是解决方案。我会假设答案是最短的时间,因为我们需要最短的时间。为什么这与最长路径有关,而不是最短路径?

最短计划的长度与最长路径有关,因为无论有多少处理器,都无法比最长路径更快完成作业。在上一个作业完成之前,最长路径上的任何作业都无法启动,因此您必须一个接一个地执行这些作业


如果处理器从未用完,则始终可以在所依赖的所有作业完成后立即启动作业,因此每个作业都会在到达其终点的最长路径完成后立即完成,完成最长路径后,整个作业完成。

最短日程的长度与最长路径相关,因为无论有多少处理器,都无法比最长路径更快完成作业。在上一个作业完成之前,最长路径上的任何作业都无法启动,因此您必须一个接一个地执行这些作业

如果处理器从未用完,则始终可以在作业所依赖的所有作业完成后立即启动作业,因此每个作业在到达其终点的最长路径完成后立即完成,并且在完成最长路径后整个作业完成

  • 创建表示结束状态的顶点
  • 为每个任务创建一个顶点
  • 对于每个任务T
  • 对于依赖于T的每个任务T2(以及对于结束状态)
  • 创建从T的顶点到T2的顶点的有向边E
  • 将E的重量设置为T所需的时间
  • 然后,关键路径是通过图的最长路径。想一想,并确信这是真的

    这一思路帮助我:

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

    如果任务A必须在B之前完成,而B必须在C之前完成,那么从任务A到任务C的时间至少为A->B+B->C

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

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

    如果必须满足任务的某些依赖性,则最短路径可以解决问题。当必须满足所有依赖项时,最长路径可以解决问题

  • 创建表示结束状态的顶点
  • 为每个任务创建一个顶点
  • 对于每个任务T
  • 对于依赖于T的每个任务T2(以及对于结束状态)
  • 创建从T的顶点到T2的顶点的有向边E
  • 将E的重量设置为T所需的时间
  • 然后,关键路径是通过图的最长路径。想一想,并确信这是真的

    这一思路帮助我:

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

    如果任务A必须在B之前完成,而B必须在C之前完成,那么从任务A到任务C的时间至少为A->B+B->C

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

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


    如果必须满足任务的某些依赖性,则最短路径可以解决问题。当必须满足所有依赖项时,最长路径可以解决问题。

    但最短路径也可以吗?只要它通过所有顶点并遵循优先约束,我不明白为什么它不起作用。“在上一个作业完成之前,最长路径上的任何作业都不能启动”,这不是在尽可能减少时间的情况下让它们同时运行的全部要点吗?最长路径是一组非常精选的路径中的最长路径,这些路径是通过链接具有优先关系的任务而形成的。路径无法加入此子集,除非其中的每个任务必须等待前一个任务结束后才能开始。排除具有两个可并行执行的任务的路径。所有这些路径都提供了执行作业的潜在最短时间,因为作业的完成速度不可能快于路径中任务时间的总和。最长的路径更有趣,因为至少一个小时比至少五分钟更有力。但是最短的路径不是也有效吗?只要它通过所有顶点并遵循优先约束,我不明白为什么它不起作用。“在上一个作业完成之前,最长路径上的任何作业都不能启动”,这不是在尽可能减少时间的情况下让它们同时运行的全部要点吗?最长路径是一组非常精选的路径中的最长路径,这些路径是通过链接具有优先关系的任务而形成的。路径无法加入此子集,除非其中的每个任务必须等待前一个任务结束后才能开始。排除具有两个可并行执行的任务的路径。所有这些路径都提供了执行作业的潜在最短时间,因为作业的完成速度不可能快于任务中任务时间的总和