基本概念
-
局限性:
1)问题的可解性
2)可计算理论:通过建立计算的数学模型,区分哪些可计算、哪些不可计算
3)可计算函数:在抽象计算机上编出程序计算其值的函数
4)Church-Turing论题:若一个函数在某个合力的计算模型上可计算,则它在图灵机上也是可计算的
5)不可计算性:又穷描述过程无法完成的问题和函数
6)可计算问题:多项式时间内可解,上界是 O ( n k ) O(n^k) O(nk) -
不可解问题:停机问题
能否写一个程序正确判断输入给它的任何一个程序是否会停机?
diagonal(Y){
if halt(Y,Y):
goto a
else
halts
}
它停机当且仅当halt返回否,这是矛盾的,因为只有在不停机的时候才能返回值
因此,停机问题不可解
-
形式语言框架
1)判断语言L:算法A接收L中的每个串,拒绝每个不在L中的串,则称L是由A判定的语言
2)算法A判定语言L: ∀ x ∈ L , A ( x ) = 1 ; ∀ x ∉ L , A ( x ) = 0 \forall x \in L, A(x)=1; \forall x \not \in L, A(x)=0 ∀x∈L,A(x)=1;∀x∈L,A(x)=0
3)多项式时间接收的语言L:存在k,对任意长度n的串 x ∈ L x\in L x∈L都可以在 O ( n k ) O(n^k) O(nk)时间内接受x,则L是算法在多项式时间内接受的语言
4)多项式时间判定的语言L:存在k,对任意长度n的串 x ∈ 0 , 1 ∗ x\in {0,1}^* x∈0,1∗,算法可以在 O ( n k ) O(n^k) O(nk)时间内正确地判定是否有 x ∈ L x\in L x∈L,则L是算法多项式时间内可以判定的语言 -
图灵机(TM)
1)DTM(确定性图灵机):对任一个状态和符号,要执行的动作都是唯一的
2)NTM(非确定性图灵机):执行的动作是有穷多个可供选择
P、NP、NPC类问题
-
P类问题(DTM)
形式化定义:P={L:L是一个能在多项式时间内被一台DTM所接受的语言}
非形式定义:P是所有用确定性算法在多项式时间内可解(判定)的问题的集合 -
NP问题
形式化定义:NP={L:L是一个能在多项式时间内被一台NTM所接受的语言}
非形式化定义:NP是所有用非确定性算法在多项式时间内可解的(判定)问题的集合 -
NP问题的求解
1)猜测阶段:非确定性算法产生解
非确定算法有点类似之前的概率算法,通过执行choice语句
2)验证阶段:确定性算法在多项式时间内验证解
验证算法A:若 ∀ x ∈ L , ∃ y \forall x \in L, \exist y ∀x∈L,∃y使得 A ( x , y ) = 1 A(x,y)=1 A(x,y)=1,其中x是待验证的输入串,y为证书的二进制串
证书相当于证据,验证该证书是否为问题的正确答案
3)定理:语言L可在多项式时间内被非确定性地接受,当且仅当L在多项式时间内被确定性地验证(多项式时间可验证的问题就是NP问题)
等价定义:
NP={NDTM能在多项式时间内接受的语言类}
NP={DTM能在多项式时间内验证的语言类} -
NPC问题
多一归约
1)定义: ∀ I , I 是 L 1 输 出 “ y e s ” 的 实 例 < = > f ( I ) 是 L 2 输 出 “ y e s ” 的 实 例 \forall I, I是L_1输出“yes”的实例<=>f(I)是L_2输出“yes”的实例 ∀I,I是L1输出“yes”的实例<=>f(I)是L2输出“yes”的实例,则称f是从 L 1 L_1 L1到 L 2 L_2 L2的多一归约,记作: L 1 ≤ m L 2 L_1 \le _mL_2 L1≤mL2,也就是 L 2 L_2 L2至少比 L 1 L_1 L1难
2)若f是多项式时间可以计算,则上述归约称为多项式时间多一归约,也称多项式时间变换 L 1 ≤ m p L 2 L_1 \le _m^p L_2 L1≤mpL2
NPC问题:对于一个判定性问题q,若
1)
q
∈
N
P
q\in NP
q∈NP
2)NP中任一问题均可多项式时间多一归约到q
- NP-hard问题
问题q满足条件(2)不一定满足(1)
例如停机问题就无法在多项式时间内验证,不属于NP问题
对于SAT问题可以在多项式时间归约到停机问题,也就是穷举所有bool赋值情况,若赋值结果为真则停机,否则进入循环,因此可以归约到q,满足
S
A
T
≤
p
SAT \le_p
SAT≤p停机问题
最后停机问题则是NP-hard
- 关系图:
如何证明q是NP-hard:
首先找到已知的NPC或者NPH问题p,通过证明归约p到q,也就是
p
≤
q
p\le q
p≤q,可以证明问题是NP-hard的(因为
≤
p
\le p
≤p是有传递性的)
如何证明q是NPC:
首先要证明是NP-hard,然后判定q是否属于NP问题(围棋的必胜下法就是一个NP-hard问题但不是NPC问题)
三种归约策略
- 定义
独立集I:G=<V,E>,设 I ∈ V I\in V I∈V,I中任何点对之间无边
Independent-Set={ < G , k > <G,k> <G,k>:G中有一个 s i z e ≥ k size\ge k size≥k的独立集}
顶覆盖C:G=<V,E>,设
C
∈
V
C\in V
C∈V,E中每条边至少有一个端点在C中
Vertex-Cover={
<
G
,
k
>
<G,k>
<G,k>:G中有一个
s
i
z
e
≤
k
size\le k
size≤k的顶点覆盖}
集合覆盖S’:
S
j
j
∈
J
{S_j}_{j\in J}
Sjj∈J为S的一个覆盖,他们的并集等于S,子集的交并未为空
Set-Cover={
<
S
,
k
>
<S,k>
<S,k>,S有一个
s
i
z
e
≤
k
size\le k
size≤k的集合覆盖}
两个集合互补:I是一个独立集当且仅当V-I是一个顶点覆盖集,即C=V-I
3-SAT问题
-
简单等价归约
因为独立集和顶覆盖是互补集合,所以他们彼此都可以通过增加多项式的时间找到互相的解,因此 I ≤ q C I \le_q C I≤qC和 C ≤ I C \le I C≤I均成立,等价 -
从特殊到一般
对于所有顶覆盖,每个顶点的边集合放在一起,可以形成k个边集合,k个边集合的并集也就是一个完整的E集合,因此 C ≤ S ′ C \le S' C≤S′ -
通过编码
对于 φ = C 1 ∧ C 2 ∧ . . . ∧ C k \varphi=C_1 \wedge C_2 \wedge ... \wedge C_k φ=C1∧C2∧...∧Ck,构造G的独立集S,对于 C i = z i 1 ∨ z i 2 ∨ z i 3 C_i=z_{i1} \vee z_{i2} \vee z_{i3} Ci=zi1∨zi2∨zi3,在G中创建三个顶点 z i 1 、 z i 2 、 z i 3 z_{i1}、z_{i2}、z_{i3} zi1、zi2、zi3以及连接的边组成的三角形,由此形成点集V和边集E,并对其中不同的子句 x i x_i xi和 x i ˉ \bar{x_i} xiˉ连接边(为了保证之后选择独立子集的过程中不会同时选中)
描述完这个图之后我们可以看出,只要在图中的每个三角形中找到一个点并形成独立子集,则满足了3SAT的要求。也满足了独立子集的要求。
例如上图中找到
x
2
,
x
1
,
x
4
x_2,x_1,x_4
x2,x1,x4,同时为true则满足题目要求。
NP-hard求解方法
- 超多项式时间启发
1)伪多项式时间算法:背包问题、素数确认问题
为什么这些事伪多项式?
虽然这些问题可以在多项式的时间内求解,例如素数问题 O ( n ) O(\sqrt n) O(n),但是这里n并不是求解问题的规模,真正的规模应该是存储数的位数大小 l o g n log n logn,带入后是一个指数级的复杂度。
这可能会提出疑问,那所有多项式时间,我都可以把n替换成log形式的数,那岂不是都是可以是指数级表达式?Nonono,这里我们需要关注一个问题真正的规模表示,对于排序问题,问题规模就是数组大小,因此是一个真多项式;而对于素数确认问题,问题规模显然不是n大小,n并不代表规模,我们需要的是一个logn位的数来存储这个数,存储位数才是我们的规模代表
2)弱NPC问题:这样可以用伪多项式表示的称为弱NPC问题
这里注意不是所有问题的遍历都是多项式表示,例如TSP问题的求解复杂度为
O
(
n
∗
n
!
)
O(n*n!)
O(n∗n!)
-
启发式概率分析
对输入实例进行约束和要求,只求解部分特点的输入实例
缺点:选取一个特殊的输入分布往往是不易的 -
近似算法
因为输入实例本身可能也是近似的,因此我们不需要找到最优解,只需要找到次优解即可
近似算法预备知识和基本定义
-
优化问题的组成
1)实例集D:输入实例的集合
2)解集S(I):输入实例 I ∈ D I \in D I∈D的所有可行解的集合
3)解的值函数f:给每个解赋一个值,f:S(I)->R -
最大值优化问题
也就是在D中找到最优解使得对应的f最大,最优解的值记为OPT(I) -
约定
1)f的值域和I里的所有数都是整数
2)对 ∀ σ ∈ S ( I ) , f ( σ ) \forall \sigma \in S(I), f(\sigma) ∀σ∈S(I),f(σ)是一个多项式(针对size) -
定义:若一个NPH判定问题H1是多项式归约为计算一个优化问题H2的解,则H2是NPH的
-
近似算法A:是一个多项式时间求解优化问题的算法,使得对一个给定的输入实例,输出一个解 σ ∈ S ( I ) \sigma \in S(I) σ∈S(I)。通常A(I)表示算法A所获得的解值 f ( σ ) f(\sigma) f(σ)
绝对性能保证
-
定义:一个绝对近似算法是优化问题H的多项式时间近似算法,使得对某一常数k>0满足 ∀ I ∈ D , ∣ A ( I ) − O P T ( I ) ∣ ≤ k \forall I \in D, |A(I)-OPT(I)| \le k ∀I∈D,∣A(I)−OPT(I)∣≤k。对于大部分NP-hard问题,仅当P=NP,才能找到绝对近似算法
-
图的顶点着色
1)定义:使用最少的颜色数来为图G的顶点上色,使得所有相邻的顶点均有不同的颜色
2)定理:判定一个平面图是否可3着色的问题是NPC
近似算法A(G){
检验G是否可以二着色(二部图,这是多项式时间可计算);若是返回2
检验G是否可以五着色(实际上四色定理决定了必定可以4染色)
}
故有定理:近似算法A的性能满足 ∣ A ( G ) − O P T ( G ) ∣ ≤ 2 |A(G)-OPT(G)|\le 2 ∣A(G)−OPT(G)∣≤2 -
图的边着色
1)定义:使用最少的颜色为图的边上色,使得所有相邻的边有不同的颜色
2)定理1:确定一个三证则平面图所需的边着色问题是NPH
3)定理2:对于任一图,至少需要k,至多需要k+1种颜色为边着色,k是最大度数
4)定理3:可以找到一个多项式时间算法A找到k+1边着色
因此近似算法有性能保证: ∣ A ( G ) − O P T ( G ) ∣ ≤ 1 ∣ |A(G)-OPT(G)|\le 1| ∣A(G)−OPT(G)∣≤1∣
绝对近似算法之否定
-
前面的例子展示了一类特殊的优化问题,这些问题中的最优解的值或者所在的小范围都是已知的
-
定理:若 P ≠ N P P\not =NP P=NP,对任何确定的k,找不到近似算法A可解背包问题使得: ∣ A ( I ) − O P T ( I ) ∣ ≤ k |A(I)-OPT(I)|\le k ∣A(I)−OPT(I)∣≤k
证明:
对于背包问题的参数:n为物品个数,w为背包最大承重。
假设存在近似算法A使得
∣
A
(
I
)
−
O
P
T
(
I
)
∣
≤
k
|A(I)-OPT(I)|\le k
∣A(I)−OPT(I)∣≤k,则可以将利润扩大k+1倍,同样有
∣
A
(
(
k
+
1
)
I
)
−
O
P
T
(
(
k
+
1
)
I
)
∣
≤
k
|A((k+1)I)-OPT((k+1)I)|\le k
∣A((k+1)I)−OPT((k+1)I)∣≤k,并且完全对应相同的解。则就有
∣
(
k
+
1
)
A
(
I
)
−
(
k
+
1
)
O
P
T
(
I
)
∣
≤
k
=
>
∣
A
(
I
)
−
O
P
T
(
I
)
∣
≤
(
k
/
k
+
1
)
|(k+1)A(I)-(k+1)OPT(I)|\le k=>|A(I)-OPT(I)|\le (k/k+1)
∣(k+1)A(I)−(k+1)OPT(I)∣≤k=>∣A(I)−OPT(I)∣≤(k/k+1),故可以找到最优解并且是多项式时间,矛盾
- 定理:若 P ≠ N P P\not =NP P=NP,则对于团问题不存在绝对近似算法(最大团也就是最大独立集问题)
证明:定义图的m次幂 G m G^m Gm,取G的m个拷贝,连接位于不同副本的任意两顶点。其中G的最大团的size为a,当且仅当 G m G^m Gm中最大团的size为ma。
后面用反证法,也就是假设存在 ∣ A ( I ) − O P T ( I ) ∣ ≤ k |A(I)-OPT(I)|\le k ∣A(I)−OPT(I)∣≤k,也就存在 ∣ A ( G k + 1 ) − O P T ( G k + 1 ) ∣ ≤ k |A(G^{k+1})-OPT(G^{k+1})|\le k ∣A(Gk+1)−OPT(Gk+1)∣≤k=> ∣ A ( G k + 1 ) − ( k + 1 ) O P T ( G ) ∣ ≤ ( k / k + 1 ) |A(G^{k+1})-(k+1)OPT(G)|\le (k/k+1) ∣A(Gk+1)−(k+1)OPT(G)∣≤(k/k+1),其中又可以证明对于 G m G^m Gm中体积为t的团,可以在多项式时间找到t/m的团,因此后面容易得到矛盾
相对性能保证
- 多机调度
1)问题定义:
n个作业J1、J2…Jn,相应的运行时间为P1、P2、P3…Pn。将n个作业分配到m台同样的机器上,使得完成时间最短。
完成时间:是指所有机器运行总时间最长的那一台机器的运行时间
可行解集合:n个作业划分为m个子集,该问题即使在m=2也是NP-hard
2)List调度算法
n个作业依次以online的方式分配到m台机器的某一台上,规则是当前作业分配到当时负载最小的机器上,也就是当前分配的所有作业总的运行时间
有定理:对于该算法对于所有输入实例有 A ( I ) O P T ( I ) ≤ 2 − 1 m \frac{A(I)}{OPT(I)}\le 2-\frac{1}{m} OPT(I)A(I)≤2−m1,并且界是紧致的,因为存在实例使得等号成立
证明:设最后一个放工作量为 J i J_i Ji的作业,且该调度算法的最终解的值为L,则显然其他机器上的作业量都少于 L − J i L-J_i L−Ji,所以可以得到 O P T ( I ) ∗ m ≥ ( L − J i ) ∗ ( m − 1 ) + L OPT(I)*m\ge (L-J_i)*(m-1)+L OPT(I)∗m≥(L−Ji)∗(m−1)+L,故有 L ≤ O P T ( I ) + J i m − 1 m ≤ ( 2 − 1 m ) O P T ( I ) L\le OPT(I)+J_i\frac{m-1}m\le (2-\frac1 m)OPT(I) L≤OPT(I)+Jimm−1≤(2−m1)OPT(I)成立
再证明近似比的紧确界,这里用n=m(m-1)+1的例子,前n-1个作业需要单位1时长,最后一个需要m时长。也就是很明显用List调度算法需要用2m-1的时长;而这里最优解实际上是将m时长的任务单独做,则需要m时长
- 相对性能度量
算法A在一个输入实例I上的性能比 R A ( I ) R_A(I) RA(I)被定义为
R A ( I ) = { A ( I ) O P T ( I ) i f 最 小 化 问 题 O P T ( I ) A ( I ) i f 最 大 化 问 题 R_A(I)=\begin{cases} \frac{A(I)}{OPT(I)} if 最小化问题\\ \frac{OPT(I)}{A(I)} if 最大化问题 \end{cases} RA(I)={OPT(I)A(I)if最小化问题A(I)OPT(I)if最大化问题
显然 R A ( I ) ≤ 1 R_A(I)\le 1 RA(I)≤1,越接近1越好,若 R A ( I ) ≤ ( 1 + ϵ ) R_A(I)\le (1+ \epsilon) RA(I)≤(1+ϵ),则称A是 1 + ϵ 1+\epsilon 1+ϵ-近似算法
对于优化问题,近似算法A的绝对性能比RA是 R A = i n f r ∣ R A ( I ) ≤ r , ∀ I ∈ D R_A=inf{r|R_A(I)\le r, \forall I \in D} RA=infr∣RA(I)≤r,∀I∈D, R A R_A RA是性能比上界集合中的下确界(最大下界)
- LPT
将作业按其运行时间递减排序,然后用List策略调度
定理:LPT算法的性能比: R L P T = 4 3 − 1 3 m R_{LPT}=\frac4 3 - \frac 1 {3m} RLPT=34−3m1
证明:
1)当m=1时,成立
2)m>1时,假设存在一个反例I使得 R A ( I ) > 4 3 − 1 3 m R_A(I) > \frac4 3 - \frac 1 {3m} RA(I)>34−3m1,
首先证明这个反例的最后一个处理的工作一定是 P n P_n Pn
若不是 P n P_n Pn,则有一个 P k P_k Pk是最后一个处理,则序列 P 1 . . . P k P_1...P_k P1...Pk的A算法处理时间A(I_k)=A(I),且明显OPT(I_k)<OPT(I),故有更小的k个作业满足这个反例,因此矛盾,最后一个处理的工作只能是 P n P_n Pn
然后证明在这个反例的条件下每个机器上的作业最多有2个
因为最后一个是 A ( P n ) A(P_n) A(Pn),则有 A ( I ) − P n ≤ ∑ i = 1 n − 1 P i m A(I)-P_n\le \frac{\sum_{i=1}^{n-1}P_i} m A(I)−Pn≤m∑i=1n−1Pi,并且又由 O P T ( I ) ≥ ∑ i = 1 n P i m OPT(I)\ge \frac{\sum_{i=1}^{n}P_i} m OPT(I)≥m∑i=1nPi,因此有 A ( I ) ≤ O P T ( I ) + m − 1 m P n A(I)\le OPT(I)+\frac{m-1}{m}P_n A(I)≤OPT(I)+mm−1Pn,故有 4 3 − 1 3 m < A ( I ) O P T ( I ) < 1 + ( m − 1 ) P n m O P T ( I ) \frac 4 3 - \frac 1 {3m}<\frac{A(I)}{OPT(I)}<1+\frac{(m-1)P_n}{m OPT(I)} 34−3m1<OPT(I)A(I)<1+mOPT(I)(m−1)Pn,可以证得 O P T ( I ) < 3 P n OPT(I)<3P_n OPT(I)<3Pn
因此我们有结论,在这个反例下每个机器的工作作业不超过2
下面再证明至多包含2个作业时,LPT也是最优的
可以令n=2m,若n<2m,则可以对剩余的部分补工作时长为0的工作。
则对于每台机器上的作业I,j都有i<m<j,因为若不满足这个条件,也就是i<j<m,则必有s>t>m,则我们可以交换i和t,则一定能得到比原先时长更短的序列,故矛盾。
因此相当于先把所有1-m的作业分配到m个机器上,再把剩下m个作业分配到机器上,和OPT的调度结果相同,因此 A ( I ) O P T ( I ) = 1 \frac{A(I)}{OPT(I)}=1 OPT(I)A(I)=1矛盾。
最后我们还需要证明等号成立的情况
- 渐进性能比
定义: R A max = i n f { r ∣ ∃ N ∈ Z + , R A ( I ) ≤ r , ∀ I ∈ D π w i t h O P T ( I ) ≥ N } R_A^{\max}=inf\{r|\exist N \in Z^+,R_A(I)\le r, \forall I \in D_{\pi} with OPT(I)\ge N\} RAmax=inf{r∣∃N∈Z+,RA(I)≤r,∀I∈DπwithOPT(I)≥N}
只有对于scaling性质的问题,近似算法的绝对性能比和渐进性能比是相同的
- 装箱问题
1)首次适应算法(FF):对于每个物品每次从头到尾扫描箱子,若有合适的则放入
显然 R F F ( I ) ≤ 2 R_{FF}(I)\le 2 RFF(I)≤2
证明整个过程至多只有一个箱子是大于半空的。然后反证法可以证明矛盾
渐进性能比为7/4,不同
2)递减首次合适算法
R F F D ≤ 3 / 2 , R F F D m a x = 11 / 9 R_{FFD}\le 3/2, R_{FFD}^{max}=11/9 RFFD≤3/2,RFFDmax=11/9
- TSP问题
这里我们考虑的都是满足三角不等式的TSP问题
1)近邻法:从任一顶点开始,出发访问一个最近的未访问过的顶点, R N N m a x = θ ( l g n ) R_{NN}^{max}=\theta(lgn) RNNmax=θ(lgn)
2)MST启发
step1:在G中找到一条最小生成树T
step2:复制T中的所有边做一个T的多重图
step3:对于多重图做一个欧拉回路
step4:去除欧拉回路中已经访问的点
很显然对于 d ( T ) < O P T ( G ) d(T)<OPT(G) d(T)<OPT(G),则必有 A M S T ( G ) ≤ d ( E T ) = 2 d ( T ) < 2 O P T ( G ) A_{MST}(G)\le d(ET)=2d(T)<2OPT(G) AMST(G)≤d(ET)=2d(T)<2OPT(G)
3)CH启发:实际上就是做欧拉回路的时候多重图不再是对T所有边进行重复,而是仅仅对奇数点进行重复,这样使得所有点的度数为偶数
这里引入匹配集的概念:就是添加边之后使得T度数为偶数的边集合
例如图中就是可以添加{B、E},{C、D}或者{B、C},{D、E}
并且这些边共同组成了一个回路O,且很容易证明得到 d ( O ) ≤ d ( T ) ≤ O P T ( G ) d(O)\le d(T)\le OPT(G) d(O)≤d(T)≤OPT(G)
因此对于O中的最小匹配集必然满足 d ( M ) ≤ d ( O ) / 2 d(M)\le d(O)/2 d(M)≤d(O)/2成立
因此很容易证明得到最终得到的 A C H ( G ) < d ( M ) + O P T ( G ) ≤ 1.5 O P T ( G ) A_CH(G)<d(M)+OPT(G) \le 1.5OPT(G) ACH(G)<d(M)+OPT(G)≤1.5OPT(G)
但是找最小匹配集需要 O ( n 3 ) O(n^3) O(n3)的时间,而MST启发的运行时间为 O ( n ) O(n) O(n)
相对近似之否定结果
- 问题的近似算法之间无关联
例如:顶点覆盖和最大集问题,虽然他们的解互相为补集,但最优算法之间并没有关系。VC问题有一个近似比为2的算法,但实际上对于MIS问题,并不能由此推断也有近似比为常数的算法。例如VC中一个最优解为 O P T V C ( G ) = n / 2 − 1 OPT_{VC}(G)=n/2-1 OPTVC(G)=n/2−1,则近似解为 A V C ( G ) = n − 2 A_{VC}(G)=n-2 AVC(G)=n−2,由补集可得MIS的近似解为 A M I S ( G ) = 2 A_{MIS}(G)=2 AMIS(G)=2,但是最优解为 O P T M I S ( G ) = n / 2 + 1 OPT_{MIS}(G)=n/2+1 OPTMIS(G)=n/2+1,显然他们的比值并不是常数
- 近似算法不存在
也就是说有一类问题的无穷近似解就是无穷,这类解是不能称作有近似解的。这里可以用反证法证明
定理:若 P ≠ N P P\not= NP P=NP,则 R M I N ( T S P ) = 无 穷 R_{MIN}(TSP)=无穷 RMIN(TSP)=无穷
假如不为无穷为k,则对于 A ( I ) ≤ k O P T ( I ) = k n A(I)\le kOPT(I)=kn A(I)≤kOPT(I)=kn,否则 A ( I ) ≥ O P T ( I ) ≥ ( k + 1 ) n − 1 A(I)\ge OPT(I)\ge (k+1)n-1 A(I)≥OPT(I)≥(k+1)n−1,因此可以通过A找到解之值来判定G中是否存在HC。NPC问题矛盾
- 否定总结
1)绝对近似之否定:很多问题找不到绝对近似算法
2)相对近似之否定:很多问题的有界性能比近似算法不存在
3)两类近似算法之间的近似性能(相对误差): ∣ O P T ( I ) − A ( I ) ∣ ≤ f ( n ) |OPT(I)-A(I)|\le f(n) ∣OPT(I)−A(I)∣≤f(n)
这种情况下反而有空能蕴含着渐进性能比为1的情况,例如当 f ( n ) = l g 2 ( O P T ( I ) ) f(n)=lg^2(OPT(I)) f(n)=lg2(OPT(I))
其他
调度算法的近似方案,对于n个作业的前k个进行最优化寻找(可以通过穷举),对于后面的使用LPT算法
有绝对性能比为
1
+
1
−
1
/
m
1
+
[
k
/
m
]
1+\frac{1-1/m}{1+[k/m]}
1+1+[k/m]1−1/m
先证明
A
k
(
I
)
A_k(I)
Ak(I)的上界,由第j个是最后一个任务,则该机器上时间为
A
k
(
I
)
A_k(I)
Ak(I),则此时其他m-1个机器都是大于
A
k
(
I
)
−
P
j
A_k(I)-P_j
Ak(I)−Pj,则总时长
T
≥
m
(
A
k
(
I
)
−
P
j
)
+
P
j
T\ge m(A_k(I)-P_j)+P_j
T≥m(Ak(I)−Pj)+Pj,其中对于T又有
T
≤
O
P
T
(
I
)
∗
m
T\le OPT(I)*m
T≤OPT(I)∗m,故可以得到
A
k
(
I
)
≤
O
P
T
(
I
)
+
(
1
−
1
/
m
)
P
j
A_k(I)\le OPT(I)+(1-1/m)P_j
Ak(I)≤OPT(I)+(1−1/m)Pj
再证明OPT(I)的下界,则有 O P T ( I ) ≥ ( 1 + [ k / m ] ) P j OPT(I)\ge (1+[k/m])P_j OPT(I)≥(1+[k/m])Pj得证