1. 引言
向量调度问题是经典的完工时间最小化问题的推广。一般来说,向量调度问题是将n个d-维向量分配给m台机器以使得所有机器、所有维数的最大负载尽可能小。在文 [1] 中,由于Graham创造性的工作,单维负载均衡问题被广泛的研究。然而在许多问题中,一项任务可能需要不同的资源来完成,因此任务就无法用单一的量来度量。例如,如果一项任务同时需要CPU和内存,任务的需求最好用一个2-维向量来刻画,向量的每个分量对应一种资源的数目。
Chekuri和Khanna [2] 首次提出向量调度问题,算法调度d-维工件给机器加工以使得所有机器、所有维数的最大负载尽可能小。当d是任意常数时,除非
,Chekuri和Khanna证明向量调度问题不能在常数因子内近似。此外,他们 [2] 设计了一个
-近似算法。当d是固定常数时,他们提出了一个运行时间为
的多项式时间近似方案(PTAS)。最近,Bansal等人 [3] 在
时间内设计了一个有效的多项式时间近似方案(EPTAS)。
对于在线向量调度问题,Zhu等人 [4] 提出了一个竞争比为
的在线算法。Meyerson等人 [5] 改进了文 [4] 中的算法,而且得到了一个
-近似算法。通过给出一个在线下界,Im等人 [6] 证明
是在线向量调度问题的最优竞争比。
对于经典的带等级约束的离线调度问题,当机器台数m为固定常数时,Hwang等人在文 [7] 证明了LG-LPT算法的近似比:当
时为5/4,当
时为
。在2007年,Glass和Kellerer在文 [8] 对离线排序问题的特殊情形:当任务的加工时间只能是1或者
时,证明了近似比趋于。当任务的加工时间无限制时,他们给出了一个3/2-近似算法。Ou等人在文 [9] 给出了一个4/3-近似算法同时设计了一个多项式时间近似方案。Li等人在文 [10] 中对
范数下具有等级约束的问题进行研究,并给出了一个基于线性规划解的全范数2-近似算法。
近年来,许多研究人员开始关注云计算中的资源分配问题。Liu等人在文 [11] 研究了异构物理机环境下的资源管理问题。云供应商给物理机提供异构资源,资源种类分别为CPU,存储,硬盘大小等。在实际问题中,为了提高异构资源的利用效率,一些异构资源只能分配给一些特定的物理机。受Liu等人的启发,结合文 [2] 和 [7] 的创作思想,我们提出一种新的调度模型:带等级约束的多维任务调度问题。在这里,每个多维任务和每台机器都有一个等级,我们需要把每个多维任务调度到等级不高于它的机器上加工。目标是最小化所有机器、所有维数的最大负载。明显地,当
时,带等级约束的多维任务调度问题就是经典的带等级约束的平行机调度问题。在本文,我们研究两台平行机上带等级约束的多维任务调度问题。为了便于分析,我们把这个问题简记为
。
2. 预备知识
对于
问题,给定实例
。集合
包含两台平行机。集合
包含n项任务。每一项任务
对应一个d-维向量
。在这里,我们要求
是整数。
是任务
的等级,机器
也有一个等级
。当
时,任务
可以在机器
上加工。任务
到达后即可开始加工,加工过程不可中断而且每项任务只需加工一次。把n项任务分配给两台机器加工,我们可以得到任务集J的一个划分
。在这里,我们令
。对于
问题,我们的目标是使
最小,也就是使所有机器、所有维数的最大负载尽可能小。
为了理解问题
。我们给出一个例子:给定两台机器M1和M2,它们的等级分别为1和2。3个任务
、
、
,工件的等级分别是1,2,2。对于这个实例,最优的分配方案是把任务
和
分配给机器M1,任务
分配给机器M2,最优方案对应的最优值是5。
在实例I的基础上,我们构造实例
。实例I与实例
的差别是特征p与
:在实例I中,任务
对应一个d-维向量
。在实例
中,任务
对应一个1维向量
。对应于实例I的目标函数,因为实例
的每项任务对应一个1维向量,所以实例
的目标是使
最小。
3.
-近似算法
对于实例
,调用文 [7] 的LG-LPT算法,我们可以得到任务集J的一个调度方案
。由实例
和实例I的关系,
也是实例
的一个调度方案。对于调度方案
,我们假设实例
和实例I的目标值分别是
和
。我们令
和
分别表示实例
和实例I的最优值。
对与实例I,我们设计了一个近似比为
-近似算法。
算法1:近似算法
步骤1:根据实例I,构造实例
;
步骤2:对于实例
,调用LG-LPT算法,我们得到调度方案
;
步骤3:对于调度方案
,实例I和实例
的目标值分别是
和
;
步骤4:返回
。
定理1:对于问题
,算法1是一个
-近似算法。
证明:根据文 [7] 的结论可知,当机器台数
时,对于实例
,我们有
(1)
对于某个
,我们假设
。根据实例I的目标函数值的定义,我们有
。再根据实例
的目标函数值的定义,我们有
。因此,我们有
(2)
我们用反证法证明
,假设
。我们设
是实例I的一个最优调度方案。根据实例I的目标函数值的定义,对于任意的
,我们有
。结合假设
,我们有
上式说明,如果用调度方案
求解实例
,我们可以得到一个比
更小的目标值,这与
的最优性矛盾,所以我们有
(3)
联立(1)式、(2)式、(3)式,我们可以得到
因此对于
问题,算法1是一个
-近似算法。
4. 动态规划算法
在这一部分,我们将给出问题
的动态规划算法。对于问题
,动态规划算法的设计策略是把n项任务所有可能的调度方案遍历一次,因此我们可以得到问题的最优解。
我们令
表示第i列元素全为1,其余元素全为0的
维矩阵。
表示任务
对应的向量,
。
表示向量
与矩阵
的第i列元素对应相乘。
比如
。
我们用空间
表示分配完前k个任务后所有可能的负载矩阵集,而且空间
可由空间
拓展得到。
的元素都是
维负载矩阵,负载矩阵的第j列,第i行表示第j台机器的第i个负载分量。
表示能加工任务
的下标最大的机器的下标。
我们假设负载空间
。
我们下面定义
。
如果
,我们有
。
如果
,我们有
如果B是一个负载矩阵,我们定义B的最大元素是B中所有元素的最大值。
例如负载矩阵
,则B的最大元素为
。
动态规划算法
步骤1:我们将机器和任务都按等级从低到高的顺序重新标号,使得
且
;
步骤2:令
;
步骤3:对于
,做如下循环
;
步骤4:对于
中的每个矩阵,我们分别提取最大元素得到集合
然后返回集合
中的最小值。
根据动态规划算法可知,负载空间
包含了所有可能的负载矩阵,自然也包含对应于最优解的负载矩阵,所有动态规划算法可以得到问题
的最优解。
定理2 当d为固定常数时,动态规划算法的运行时间为
,其中
。
证明:由于
,则任意机器、任意维数的负载不超过
。当任务
被调度后,因为负载矩阵中的每个元素在集合
内取值,所以我们可以在
时间内得到当前的负载矩阵。又因为一共有n项任务,所以动态规划算法的运行时间为
。
5. 完全多项式时间近似方案
在这一部分,对于问题
,当任务维数d为固定常数时,我们用动态规划算法设计了一个完全多项式时间近似方案。
定理3 当d是固定常数时,问题
在
时间内存在一个完全多项式时间近似方案。
证明:我们用L表示算法1求解实例I得到的目标值。根据定理1,我们有
在实例
的基础上,我们构造实例
。实例I与实例
的差别是特征p与
:在实例I中,任务
对应一个d-维向量
。在实例
中,任务
对应一个d-维向量
。在这里,我们有
。因为
,所以
。因为动态规划可以得到实例
的最优方案
,我们假设最优值
。假设实例I的最优方案是
,则实例I的最优值
。
用实例
的最优调度方案
求解实例I,我们可以得到下面的链式不等式
当动态规划算法求解实例
时,由于
,我们只需要考虑负载不超过L的调度方案。因为任意机器的负载分量都是
的整数倍,而且一共有n项任务,因此实例
可以在
时间内得到最优方案。
6. 结论
在本文,对于两台平行机上的
问题,我们首先设计了一个5 d/4-近似算法。然后,我们给出了一个求最优解的动态规划算法和一个完全时间多项式近似方案。对于带等级约束的多维向量调度问题,当机器台数为
时,我们以后将设计一个近似算法而且给出一个完全多项式时间近似方案。