找到使用两台机器执行工作的最短时间

时间:2013-03-04 14:03:25

标签: algorithm dynamic-programming

我正在处理一些问题,我发现了一个问题here。它需要动态编程算法。我试图想出一个复发,但我认为它不会总是给出正确的结果。如果我们没有考虑到限制K那么,很容易发现找到最短时间的复发,我认为可以使用贪婪的方法来完成,如果我错了请纠正我。但是对于极限K,我们需要考虑到在后期我们可能会考虑使用机器A的值i,但它可能已经完成了K限制。所以这需要回溯。我认为我们可能需要再考虑一个维度。但我无法想到如何利用额外的维度来涵盖这种情况。请提供一些帮助。

  

你有两台机器。你必须完成N个工作。作业i需要Ai时间在机器A和Bi时间执行以在机器B上执行。每个作业应在机器A或B上完成。作业应按顺序执行。给定阵列A和B以及整数K,找到完成作业所需的最短时间,因为您不能在同一台机器上连续执行多个K作业。这可以在O(N K)空间和时间内完成。这可以改善为O(N K)时间和O(N)空间并且进一步改善为O(N logN)时间。

1 个答案:

答案 0 :(得分:0)

这是双向作业车间调度问题,可以使用Johnson's algorithm以最佳方式解决。