mathématiques appliquées (ECG 1re année) · Chapitre 11 · Exercice
Trier par durée ne suffit pas
Informatique et algorithmique · Algorithmes gloutons · niveau 2
Énoncé
Pour l'allocation de salles, le glouton trie les cours par heure de fin. Donner une liste de cours pour laquelle trier par durée croissante retient moins de cours, puis une autre pour laquelle trier par heure de début en retient moins.
Corrigé
Contre-exemple au tri par durée : , , , de durées , , .
Le tri par durée place en tête ; on le retient, la salle se libère à . Ensuite commence à : refusé. Et commence à : refusé aussi. Un seul cours.
Le tri par heure de fin donne l'ordre , , : on retient , la salle se libère à ; est refusé, mais commence à et passe. Deux cours.
Contre-exemple au tri par heure de début : , , .
Le tri par début retient d'abord le cours-fleuve , qui bloque la salle jusqu'au soir : les deux autres sont refusés. Un seul cours. Le tri par heure de fin retient puis : deux cours.
Pourquoi la fin est le bon critère. Retenir un cours a un seul coût pour la suite : l'heure à laquelle la salle redevient libre. Le critère qui optimise ce coût à chaque étape est donc l'heure de fin, et rien d'autre. La durée l'ignore, l'heure de début aussi.
Le point à retenir. Un glouton est entièrement défini par son critère de choix. Changer le critère ne le rend pas seulement plus lent : cela en fait un autre algorithme, ici incorrect. C'est la même leçon que le rendu de monnaie, prise par l'autre bout — là c'était le système qui décidait, ici c'est le critère.
Exercices semblables
- Compter les tours d'une dichotomie corrigé
- Localiser avant d'affiner corrigé
- Un glouton qui se trompe de deux pièces corrigé
- Deux représentations d'un graphe corrigé
- Dijkstra qui rend les chemins corrigé