4.3 Mesure de la qualité d'un ensemble dominant
4.3.2 Calcul du retard au pire d'un travail
Considérons à présent le calcul de Lmax
j . De façon symétrique au cas précédent, an de
maximiser le retard du travail j, celui-ci est supposé aecté à la pyramide d'indice v(j), c'est-à-dire le plus tard possible. D'autre part, les travaux k devant nécessairement être séquencés après j (i.e. les travaux k tels que u(k) > v(j)) ne sont pas considérés. Nous notons P redmax
j l'ensemble des travaux restants. Trouver Lmaxj consiste alors à maximiser
le makespan Cmax des travaux de P redmaxj tout en respectant le théorème des pyramides.
Comme précédemment, les retards de ces travaux n'étant pas signicatifs pour le calcul de Lmax
j , leur date d'échéance peut être xée à une valeur arbitraire. La structure d'inter-
valles ainsi obtenue étant à nouveau "en escalier", nous pourrions alors utiliser la version inversée de la règle de Jackson qui consiste à classer les travaux par ordre de ri décroissant
pour maximiser leur Cmax. Toutefois, la séquence obtenue ne respecterait alors pas le théo-
rème des pyramides. Pour pallier ce problème, nous nous proposons de considérer d'une part les travaux k tels que v(k) < v(j), (i.e. appartenant à des pyramides antérieures à celle de j) et d'autre part les travaux k tels que u(k) ≤ v(j) ≤ v(k) (i.e. pouvant être aectés à la même pyramide que celle de j).
4.3 Mesure de la qualité d'un ensemble dominant 83
An de maximiser la longueur du chemin critique associé à j, nous aectons les travaux k tels que v(k) < v(j) à la pyramide d'indice v(k), de façon à ce qu'ils soient ordonnancés le plus tard possible. Les aectations des travaux aux pyramides étant établies, le problème de maximiser le Cmax des travaux situés dans les v(j) − 1 pyramides d'indice inférieur à
v(j) se décompose alors en v(j) − 1 problèmes de maximisation indépendants. Chaque problème consiste à maximiser le makespan CPi
max des travaux aectés à la pyramide Pi. Il
peut être résolu optimalement, avec respect du théorème des pyramides, en construisant une sous-séquence dans laquelle les travaux sont séquencés par ordre de di croissant. En
eet, de cette façon, le sommet est toujours placé en tête de la sous-séquence, puisqu'il possède par dénition la date d'échéance di la plus petite. De plus, le sommet possédant
également la date de début ri la plus grande, on a CmaxPi = rs+Pj∈Pi−{s}pj et il n'existe
clairement aucune séquence produisant une valeur supérieure à celle-ci. Remarquons aussi que la sous-séquence ainsi obtenue respecte bien le théorème des pyramides.
La séquence, notée S1
j, conduisant au Cmax le plus grand sur l'ensemble des travaux
situés dans les pyramides d'indice inférieur à v(j) correspond alors à la juxtaposition des sous-séquences déduites précédemment (cf. gure 4.11).
Fig. 4.11: La sous-séquence S1
j avant la pyramide d'indice v(j)
Considérons à présent les travaux k tels que u(k) ≤ v(j) ≤ v(k). Pour maximiser le retard de j, nous aectons ces travaux k tels que u(k) ≤ v(j) ≤ v(k) à la pyramide d'indice v(j) (celle de j). En eet, plus le nombre de travaux placés avant j est important et plus ceux-ci sont ordonnancés tard, plus le retard algébrique de j sera important. Le problème est alors de déterminer, en respectant le théorème des pyramides, quelle séquence parmi celles de l'ensemble dominant plaçant j en dernier dans la pyramide v(j), possède le Cmaxle
plus grand. En cohérence avec le théorème des pyramides, il est facile de montrer que cette séquence correspond à celle où le plus de travaux possibles sont placés après le sommet, c'est-à-dire entre le sommet de la pyramide v(j) et le travail j. Pour l'obtenir, il sut de placer tous les travaux k tels que dk > dj avant le sommet et tous les travaux restants
étaient placés après le sommet, ils seraient séquencés après j (cf. théorème des pyramides). En suivant cette règle, nous pouvons donc garantir que le travail j est mis à la dernière position dans la pyramide d'indice v(j) et que le Cmax des travaux dans cette pyramide est
maximisé.
Proposition 4.3.1. Soit une structure d'intervalles caractérisée par une unique s-pyramide P de sommet s, la séquence la plus défavorable vis-à-vis du retard algébrique d'un travail j ∈ P est obtenue en plaçant tout travail k ∈ P − {s} tel que dk> dj avant s par ordre de
ri croissant, sinon après s par ordre de di croissant.
Démonstration. Selon la proposition précédente, toute séquence S obtenue est de la forme A ≺ s ≺ B ≺ j(A ≺ s dans le cas où le travail j considéré est le sommet s de la pyramide). A correspond à l'ensemble des travaux k ∈ P − {s} tels que dk > dj et B à l'ensemble
des travaux k ∈ P − {s} tels que dk ≤ dj. Le makespan de j dans cette séquence S est
CS
max(j) = max(CmaxA , rs) + ps+Pk∈Bpk+ pj. Nous montrons dans la suite de cette dé-
monstration que séquencer un travail de A (resp. de B) après (resp. avant) le sommet s peut diminuer la valeur de CS
max(j) mais jamais l'augmenter, d'où le résultat énoncé dans
la proposition 4.3.2.
Supposons qu'un travail i de A est séquencé après le sommet s. Comme di > dj, le
théorème des pyramides produit une nouvelle séquence S′ de la forme A′ ≺ s ≺ B ≺ j ≺ i,
où A′ = A − {i}. Le makespan de j dans cette nouvelle séquence S′ est CS′
max(j) =
max(CA′
max, rs) + ps+Pk∈Bpk+ pj. Comme les travaux de A et A′ sont classés par ordre
croissant des dates de début au plus tôt, on a CA
max ≥ CA
′
max et donc CmaxS (j) ≥ CS
′
max(j).
On en conclut que pour maximiser la date de n de j, aucun travail de A ne doit être placé après le sommet s.
Supposons à présent qu'un travail i de B est séquencé avant le sommet s. Le théorème des pyramides produit une nouvelle séquence S′ de la forme A′ ≺ s ≺ B′ ≺ j, où les
travaux de A′ = A + {i} sont ordonnés par ordre croissant des dates de début au plus tôt
et les travaux de B′ = B − {i} sont ordonnés par ordre croissant des dates de n au plus
tard. Le makespan de j dans cette nouvelle séquence S′ est CS′
max(j) = max(CA
′
max, rs) +
ps+Pk∈Bpk+ pj− pi. D'après l'expression de CmaxS (j), on en déduit CS
′
max(j) − CmaxS (j) =
max(CA′
max, rs) − max(CmaxA , rs) − pi. La valeur de CA
′
max étant nécessairement supérieure ou
égale à CA
max, nous considérons deux cas :
1. Si CA max≤ CA ′ max ≤ rs alors CS ′ max(j) − CmaxS (j) = −pi ≤ 0.
2. Sinon nous montrons que CA′
max−CmaxA ≤ pi et donc CS
′
max(j)−CmaxS (j) ≤ 0
est également vrai.
On a A′ = A
1 ≺ i ≺ A2 et A = A1 ≺ A2 où ∀k ∈ A1, rk ≤ ri et
∀k ∈ A1, rk > ri. Nous notons respectivement CmaxA1 , et CmaxA2 le makespan
4.3 Mesure de la qualité d'un ensemble dominant 85 plus tôt la plus petite des travaux de A2 en se souvenant que ri ≤ rA2 par
dénition. On a : CmaxA = max(CA1 max, rA2) + C A2 max et
CmaxA′ = max(Cmaxi , rA2) + C
A2
max
où
Cmaxi = max(CA1
max, ri) + pi
Intéressons nous à la valeur de Ci
max. Si CmaxA1 ≥ ri alors Cmaxi = CmaxA1 + pi
et donc CA′
max− CmaxA = max(CmaxA1 + pi, rA2) − max(C
A1 max, rA2), d'où C A′ max− CA max≤ pi. Sinon si CA1
max < ri alors Cmaxi = ri+ pi et donc CA
′
max− CmaxA = max(ri+
pi, rA2) − max(C A1 max, rA2). Comme ri ≤ rA2 et C A1 max< ri, il vient : CA ′ max− CA
max= max(ri+ pi, rA2) − rA2 = max(ri+ pi− rA2, 0) ≤ pi.
On en conclut que pour maximiser la date de n de j, aucun travail de B ne doit être placé avant le sommet s.
Soit S2
j la sous-séquence construite par application de la règle de la proposition 4.3.2
en considérant la pyramide d'indice v(j) (cf. gure 4.12).
Fig. 4.12: La sous-séquence Sj
2 de la pyramide d'indice v(j)
Notons Seqmax
j , la juxtaposition des deux sous-séquences Sj1 et Sj2 précédemment dé-
terminées (i.e. Seqmax
j = Sj1 ≺ Sj2), et C Seqmax
j
max , le makespan correspondant. Nous avons
Lmaxj = max(CSeq
max j
max , rj) + pj− dj
L'algorithme pour calculer Lmax
j est décrit sur la gure 4.13. Sa complexité temporelle
est en O(n log n).
Pour illustration, nous reprenons à nouveau l'exemple proposé dans le tableau 4.1 en nous intéressant au calcul du pire retard du travail 6, Lmax
6 . Le travail 6 appartient aux
pyramides caractérisées par les sommets 2 et 4, d'où v(6) = 2. L'ensemble P redmax
6 contient
les travaux k tels que u(k) ≤ v(6) = 2. Donc P redmax
6 = {1, 2, 3, 4}.
Pour maximiser le Cmax des travaux dans P redmax6 , nous aectons d'abord les tra-
vaux k possédant v(k) < v(6) = 2 dans les pyramides d'indice v(k). Dans cet exemple, ces travaux sont les travaux 2 et 3 puisque v(2) = v(3) = 1. La séquence Smax
1 est S1max=2 ≺ 3.
Les travaux k tels que u(k) ≤ v(6) ≤ v(k) sont aectés à la pyramide d'indice v(6) = 2, avec le travail 6. Ces travaux k sont les travaux 1 et 4. Pour maximiser le Cmax de ces
travaux, nous appliquons la règle de la proposition 4.3.2 qui produit la séquence Smax 2 =
1 ≺ 4 ≺ 6, maximisant le Cmax du travail 6.
En concaténant les deux sous-séquences S1
j et Sj2, nous obtenons la séquence 2 ≺ 3 ≺
1 ≺ 4 ≺ 6, qui produit le plus grand retard pour le travail 6, et Lmax6 = 7.