Un glouton exact que le cours ne traite pas : minimiser la somme des temps d'attente
Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 16 — Algorithmes gloutons
Énoncé
tâches de durées sur une machine unique. Le temps d'achèvement d'une tâche est l'instant où elle finit. Minimiser la somme des temps d'achèvement. Trouver le glouton, le démontrer, le vérifier.
Corrigé
Le glouton : la plus courte d'abord (règle spt, shortest processing time).
(* Somme minimale des temps d'achèvement. Précondition : durées > 0.
Complexité : Theta(n log n). *)
let spt durees =
let n = Array.length durees in
let ordre = List.sort (fun i j -> compare durees.(i) durees.(j))
(List.init n (fun i -> i)) in
let t = ref 0 and total = ref 0 in
List.iter (fun i -> t := !t + durees.(i); total := !total + !t) ordre;
!total
La démonstration, et elle tient en une ligne de calcul. Si l'ordre choisi est , la somme des temps d'achèvement vaut
La durée placée en -ième position est donc comptée fois : la première tâche est comptée fois, la dernière une seule. Pour minimiser une somme de produits où les coefficients décroissent, il faut apparier les plus grands coefficients aux plus petites durées : c'est l'inégalité de réarrangement, et c'est exactement la règle spt.
Par échange, pour les mêmes raisons : si deux tâches consécutives puis vérifient , les intervertir change la somme de — les autres tâches ne sont pas affectées, puisque la somme occupée est la même. Toute solution optimale est donc triée.
La vérification. Sur instances tirées au hasard (jusqu'à six tâches), spt a été confronté à l'optimum obtenu en énumérant les ordres : égal à chaque fois. Sur les durées :
| Ordre | somme des temps d'achèvement |
|---|---|
| ordre donné | 69 |
| spt | 51 |
| plus longue d'abord | 93 |
| optimum | 51 |
Le glouton inverse coûte de plus que le bon.
Ce que cet exemple ajoute aux trois du cours. Il montre qu'un glouton se démontre parfois sans argument d'échange : ici, réécrire la fonction de coût sous la forme rend l'optimalité évidente. Le premier réflexe, devant un glouton à démontrer, est de réécrire le coût — et l'échange n'est que le recours quand cette réécriture n'existe pas.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.