L'ordonnancement de tâches pondérées
Exercice · informatique (tronc commun des prépas scientifiques), chapitre 18 — La programmation dynamique
Énoncé
Soit un ensemble de tâches définies par (début, fin, gain) : , , , . (a) Montrer que l'algorithme glouton par temps de fin croissant échoue lorsque les tâches ont des gains différents. (b) Concevoir une programmation dynamique : trier par temps de fin, déterminer pour chaque tâche sa dernière tâche compatible , formuler la récurrence du gain maximal , puis dérouler et reconstruire la solution. (c) Évaluer la complexité globale de l'algorithme.
Corrigé
(a) Le glouton par fin croissante sélectionne successivement les tâches incompatibles , puis , puis , obtenant un gain cumulé de . Ce choix bloque la tâche qui offrait à elle seule un gain supérieur de . L'optimalité locale gloutonne ne fonctionne plus. (b) Classons les tâches par fin croissante : , , , . Les prédécesseurs compatibles sont : , , , . Calculons la table des gains optimaux :
- Le gain optimal est de . Reconstruction :
- la tâche n'est pas retenue.
- la tâche est sélectionnée. On passe à son prédécesseur . La solution optimale est donc l'ensemble de tâches . (c) Complexité : Le tri initial prend . La recherche des prédécesseurs compatibles par recherche dichotomique prend . Le calcul de la table prend . Le coût total est donc dominé par le tri et la dichotomie, soit .
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.