代码之家  ›  专栏  ›  技术社区  ›  user1008636

拓扑排序,受节点的“值”约束?

  •  0
  • user1008636  · 技术社区  · 6 年前

    例如:

    Task C depends on Task B1's completion
    
    Task C also depends on Task B2' completion
    
    Task B1 depends on A's completion
    
    Task B2 depends on A's completion, B2 also has a value of 1600(4pm), which means it can only start at or after 1600
    
    Task A depends on nothing, A also has a value of 1500 (3pm), which means it can only start at or after 1500. 
    

    这将是一个具有4个顶点(任务)的图:a、B1、B2、C。作业B1或B2只能在a完成时运行,作业C只能在B1和B2都完成时运行。

    A->B1->B2->C
    A->B2->B1->C
    

    但序列1的时间优化程度更高,因为在序列2中,我们必须等到1600点才能运行B2,其他的都要等待。在序列1中,我们可以先运行B1,然后等到1600。虽然总的完成时间可能不会有所不同,但优化意味着“尽可能早地运行每个作业”。同样为了简单起见,让我们不要考虑作业持续时间:假设每个作业在运行后立即完成。

    所以问题是,什么是一个明智的算法来输出这样一个时间优化序列?我知道,如果不考虑时间优化,这只是一个拓扑排序,但如何增强该算法以实现时间优化?

    0 回复  |  直到 6 年前