基于交换论证的 Johnson 法则证明

问题描述

某工厂有 n n n 件物品需要进行加工,并且每件物品都需要先在 A A A 工厂加工 a i a_i ai 分钟,然后在 B B B 工厂加工 b i b_i bi分钟, A A A B B B 工厂每次分别只能加工一件物品,问你最少需要多少时间能够加工完全部 n n n 件物品

交换论证

假设有 n n n 件待完成事件,当前完成了 k k k 件,所花时间为 T T T,设当前先完成 i i i 事件再完成 j j j 事件的总时间代价为 T + T i , j T + T_{i,j} T+Ti,j,先完成 j j j 事件再完成 i i i 事件的总时间代价为 T + T j , i T + T_{j,i} T+Tj,i,那么若能够找到关于 T i , j < T j , i T_{i,j} < T_{j,i} Ti,j<Tj,i 的满足条件,那么该条件即为贪心法则的完备条件

Johnson 法则

  1. N 1 = { i   ∣   a i < b i } N_1=\{i\ |\ a_i < b_i\} N1={ i  ai<bi} , N 2 = { i   ∣   a i ≥ b i } N_2=\{i\ |\ a_i \geq b_i\} N2={ i  aibi}
  2. N 1 N_1 N1 中作业依照 a i a_i ai 增序排列, N 2 N_2 N2 中作业依 b i b_i bi 减序排列
  3. N 1 N_1 N1 中作业接 N 2 N_2 N2 中作业构成满足 Johnson 法则的最优调度

基于交换论证的 Johnson 法则证明

假设当前已完成了 k k k 件物品的加工,其序列如下:

a 1 , a 2 , a 3 , . . . a k a_1, a_2, a_3, ... a_k a1,a2,a3,...ak
b 1 , b 2 , b 3 , . . . b k b_1, b_2, b_3, ... b_k b1,b2,b3,...bk

定义 A i = ∑ i = 1 i a i A_{i} = \sum_{i=1}^ia_i Ai=i=1iai为工厂 A A A 加工完前 i i i 件物品所花时间, B i = m a x ( A i , B i − 1 ) + b i B_{i}=max(A_i,B_{i-1})+b_{i} Bi=max(Ai,Bi1)+bi 为工厂 B B B 加工完成前 i i i 件物品所花时间,那么此时有 A k = ∑ i = 1 k a i A_{k}=\sum_{i=1}^{k}a_{i} Ak=i=1kai B k = m a x ( A i , B i − 1 ) + b k B_{k}=max(A_{i},B_{i-1})+b_{k} Bk=max(Ai,Bi1)+bk

根据交换论证的步骤,接下来需要讨论加工顺序为 x , y x,y x,y y , x y, x y,x 所花时间的大小关系

设此时先加工第 x x x 件物品所花时间为 B x = m a x ( A k + a x , B k ) + b x B_{x} = max(A_{k}+a_{x},B_{k})+b_{x} Bx=max(Ak+ax,Bk)+bx,先加工第 y y y 件物品所花时间为 B y = m a x ( A k + a y , B k ) + b y B_{y} = max(A_{k}+a_{y},B_{k})+b_{y} By=max(Ak+ay,Bk)+by,则有:

B x , y = m a x ( A k + a x + a y , m a x ( A k + a x , B k ) + b x ) + b y B_{x,y}=max(A_{k}+a_{x}+a_{y},max(A_{k}+a_{x}, B_{k})+b_{x}) + b_{y} Bx,y=max(Ak+ax+ay,max(Ak+ax,Bk)+bx)+by
B y , x = m a x ( A k + a x + a y , m a x ( A k + a y , B k ) + b y ) + b x B_{y,x}=max(A_{k}+a_{x}+a_{y},max(A_{k}+a_{y}, B_{k})+b_{y}) + b_{x} By,x=max(Ak+ax+ay,max(Ak+ay,Bk)+by)+bx

将上式中的 b x b_x bx b y b_{y} by 移入 m a x max max 内部,得:

B x , y = m a x ( A k + a x + a y + b y , A k + a x + b x + b y , B k + b x + b y ) B_{x,y}=max(A_{k}+a_{x}+a_{y}+ b_{y},A_{k}+a_{x}+b_{x}+ b_{y}, B_{k}+b_{x}+ b_{y}) Bx,y=max(Ak+ax+ay+by,Ak+ax+bx+by,Bk+bx+by)
B y , x = m a x ( A k + a x + a y + b x , A k + a y + b x + b y , B k + b x + b y ) B_{y,x}=max(A_{k}+a_{x}+a_{y}+ b_{x},A_{k}+a_{y}+b_{x}+ b_{y}, B_{k}+b_{x}+ b_{y}) By,x=max(Ak+ax+ay+bx,Ak+ay+bx+by,Bk+bx+by)

显然当 B k + b x + b y B_{k}+b_{x}+ b_{y} Bk+bx+by 为最大值时对答案没有影响,故将其剔除

B x , y = m a x ( A k + a x + a y + b y , A k + a x + b x + b y ) = A k + a x + b y + m a x ( a y , b x ) B_{x,y}=max(A_{k}+a_{x}+a_{y}+ b_{y},A_{k}+a_{x}+b_{x}+ b_{y})=A_{k}+a_{x}+b_{y}+max(a_{y}, b_{x}) Bx,y=max(Ak+ax+ay+by,Ak+ax+bx+by)=Ak+ax+by+max(ay,bx)
B y , x = m a x ( A k + a x + a y + b x , A k + a y + b x + b y ) = A k + a y + b x + m a x ( a x , b y ) B_{y,x}=max(A_{k}+a_{x}+a_{y}+ b_{x},A_{k}+a_{y}+b_{x}+ b_{y})=A_{k}+a_{y}+b_{x}+max(a_{x}, b_{y}) By,x=max(Ak+ax+ay+bx,Ak+ay+bx+by)=Ak+ay+bx+max(ax,by)

不妨设 B x , y < B y , x B_{x,y} < B_{y, x} Bx,y<By,x,则有:
A k + a x + b y + m a x ( a y , b x ) < A k + a y + b x + m a x ( a x , b y ) A_{k}+a_{x}+b_{y}+max(a_{y}, b_{x}) < A_{k}+a_{y}+b_{x}+max(a_{x}, b_{y}) Ak+ax+by+max(ay,bx)<Ak+ay+bx+max(ax,by)
a x + b y + m a x ( a y , b x ) < a y + b x + m a x ( a x , b y ) a_{x}+b_{y}+max(a_{y}, b_{x})ax+by+max(ay,bx)<ay+bx+max(ax,by)
m a x ( − b x , − a y ) < m a x ( − b y , − a x ) max(-b_{x}, -a_{y})max(bx,ay)<max(by,ax)
m i n ( b x , a y ) > m i n ( b y , a x ) min(b_{x}, a_{y})>min(b_{y}, a_{x}) min(bx,ay)>min(by,ax)

即当物品 x x x 和物品 y y y 满足 m i n ( b x , a y ) > m i n ( b y , a x ) min(b_{x}, a_{y})>min(b_{y}, a_{x}) min(bx,ay)>min(by,ax) 条件时, B x , y < B y , x B_{x,y} < B_{y,x} Bx,y<By,x

但是该条件是不完备的,即该条件不满足传递性,若此时 m i n ( b x , a y ) = m i n ( b y , a x ) min(b_{x}, a_{y})=min(b_{y}, a_{x}) min(bx,ay)=min(by,ax),则理论上 B x , y = B y , x B_{x,y}=B_{y,x} Bx,y=By,x,事实上也确实如此,但是由于 B i = m a x ( A i , B i − 1 ) + b i B_{i}=max(A_i,B_{i-1})+b_{i} Bi=max(Ai,Bi1)+bi,所以 a i a_{i} ai 的前缀和 A i A_{i} Ai 对于后续答案的统计是有影响的,出现这种情况的根源在于推导式子时正确的传递条件应当在 m i n ( b x , a y ) = m i n ( b y , a x ) min(b_{x}, a_{y})=min(b_{y}, a_{x}) min(bx,ay)=min(by,ax) 的条件下继续判断 a i a_{i} ai 的大小,以满足排序条件的传递性

下面这组例子可以帮助理解:

3
2 100 3
1 1 1

这三件物品根据判断条件来看是等价的,但是其加工顺序不一样会导致结果不一样

再举一个例子,假设此时 ∀ i ∈ [ 1 , n ] , b i = c ,   a i ≥ c \forall i \in [1, n],b_{i}=c,\ a_{i}\geq c i[1,n],bi=c, aic,理论上来说总时间 B n = A n + c B_{n}=A_{n}+c Bn=An+c 并且有 B i = A i + c B_{i}=A_{i}+c Bi=Ai+c,但若此时 a i a_{i} ai 为无穷大,则会导致 A A A 工厂流水线阻塞,为了避免这种情况或者说为了使得对于 ∀ i ∈ [ 1 , n ] , B i = A i + c \forall i \in [1, n],B_{i}=A_{i}+c i[1,n],Bi=Ai+c,我们显然需要将 a i a_{i} ai 小的先行加工

那么问题究竟出在了哪里呢?

在上述推导中显然我们只考虑了两件物品的先后关系,若每两件物品均满足 B x , y < B y , x B_{x,y} < B_{y,x} Bx,y<By,x 的优先关系,称任意两件物品具有可比性,若 ∃ x , y , B x , y = B y , x \exists x,y,B_{x,y} = B_{y,x} x,y,Bx,y=By,x,则需要考虑其顺序的后效性,或者说是排序条件的传递性

你可能感兴趣的:(信息学奥赛一本通)