贪婪算法:分配作业以最小化成本

时间:2017-10-27 02:50:08

标签: algorithm

如果我想在按序列分配给他们的人员中分配n个作业时,如果我想找到最低总成本,那么最佳方法是什么?例如。我有2个工作,分别为4和5。这两项工作分别需要6分钟和10分钟。因此,第二份工作的完成时间将是第一份工作的完成时间+此工作所用的时间。因此,总成本将是每个工作的完成时间乘以其成本。

2 个答案:

答案 0 :(得分:0)

如果你看看交换两个相邻值会发生什么,你最终会比较像(A + c)m +(A + c + d)l和(A + d)l +(A + c +)这样的术语d)m,其中A是早期工作消耗的时间,c和d是时间,l和m是成本。通过一些代数和重新排列,您可以看到,如果c / m <1,则第一个版本更小。 d /升。因此,您可以为每项工作计算出该工作所花费的时间除以成本,并首先完成每单位成本时间最短的工作。 - 检查:如果你的工作需要10年并且费用为1美分,那么你最后要这样做,以便10年的等待不会乘以任何其他费用。

答案 1 :(得分:0)

如果您必须在计划文献术语中为一个人(或一台机器)分配n个作业,那么您希望最小化加权流动时间。问题是多项式可解决的。

最短加权处理时间序列是最佳的。

对作业进行排序和重新索引,使p_1 / w_1&lt; = p_2 / w_2&lt; = ...&lt; = p_n / w_n,

其中,p_i是第i个工作的处理时间,w_i是其权重或成本。

然后,首先分配作业1,然后分配2,依此类推,直到n。