local search 是 2 近似
将任务任意放进机器中, 如果最晚完成的任务的起始时间可以提前, 即某个机器在这个任务开始前已经空闲, 就将这个任务挪到空闲机器中
这是一个 local search
并且每个任务最多挪动一次, 即 local search 可停止
不严格证明近似比了, 给个例子: 构造一个
其中
那么如果有
而 local search 可能得到
那么这个解为
所以近似比是
LSA (List Scheduling Algorithm) 是 2 近似
LSA 是贪心算法, 将任务任意排序, 然后按照机器空闲时间最早的顺序放入任务
那么这个贪心得到的解就是 local search 停止时的情况
所以他也是
LPT (Load Processing Time) 是 4/3 近似
就是将 LSA 的任务从大到小排序, 之后再按机器空闲时间最早的顺序放入任务
这个算法是
具体地, 我们要证明如下定理:
有 个任务, 台机器. 如果 LPT 算法给出的处理时间为 , 最优解为 , 那么
并且这个界是紧的
反证
所有任务从大到小依次为
假设
如果我们在处理到
同时由于任务变少, 最优解不会比之前差, 即
那么由
所以
所以我们不妨找一个最小的输入, 即
于是我们有不等式:
这是因为最优解不会比所有任务平均执行时间短
并且如果记
即在
所以有
由
这说明在
接下来定义两种 local search 的调整策略
: 操作后 不增当
此时调换
, 那么解不会变差当
被放在了处理时间更长的机器此时将
放入更早完成的机器, 解不会变差
: 操作后 不变只有交换同一列的两个任务
才保证了
不变
此时假设第
那么
所以这个 local search 可以结束在某个状态
并且这个
这种情况得到的解是最优的
所以
并且可以写成
由
可以看出这个解的形式与 LPT 得出的解的形式一模一样
唯一可能的区别在于, 如果存在某个
那么可以将
所以我们之前得到了
但是这与
所以反证得到
为了说明这个界是紧的, 给出一个例子:
即
那么
即
对于上述证明中使用策略
的 local search 方法, 如果用在一般的 SPT 问题中 (即机器可以处理超过 任务), 他是多项式时间的最优算法吗?: 最优应该可以保证, 因为这种 search 在一般的
问题中也可以遍历每一种布局但是多项式时间好像不行,
的第一种情况不像是多项式的
更一般的算法
我们可以按照之前的算法排序, 将前
定 理 证明这个算法得到的解
满足:
并且在
时是最优的界 (紧的)
令
那么对于最后的解
即所有的任务时间加和要大于所有机器取这个下界
并且
所以
由于一共至少有
所以
所以
即定理中的不等式成立
对于在
假设算法选出的分配顺序是
所以算法得到的解为
所以
由这个定理, 可以得出前一个定理的结论: 对于全排序的情况, 得出的解
以及不排序的近似比:
参考: