Trier par durée ne suffit pas
Exercice · niveau 2 · mathématiques appliquées (ECG 1re année), chapitre 11 — Informatique et algorithmique · Algorithmes gloutons
É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.
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.