Adloun

informatique (tronc commun des prépas scientifiques) · Chapitre 18 · Exercice de TD

L'ordonnancement de tâches pondérées

La programmation dynamique · niveau 2

É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 compatibles , 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 .

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre