我遇到的问题如下:
我们有n个任务,其中l_i
和w_i
是任务i
的完成时间和权重。提出一种最小化sum for all i of f_i * w_i
的算法,其中f_i
是任务i
完成时的时间。例如,如果某个任务i先安排f_i = t_i
,然后安排第二个f_i = t_i + t_(first task)
。
我花了一些时间在这上面,我首先想到的是,通过选择从最高权重到最低权重的任务来简单地创建任务列表就足够了,但是意识到这是错误的,例如,如果我们有2个任务:
1个任务:w_i = 10, l_i = 100
2任务:w_i = 9, l_i = 1
如果我们先用w_i 10选择那个,那么我们会得到10 * 100 + 9 * 101 = 1909但是如果我们选择第二个,我们会得到9 * 1 + 10 * 101 = 1019。
现在我认为最佳算法是从w_i / l_i的最高比率调度任务到最低算法,但我不知道如何证明它。任何人都可以帮忙吗?