NSI (terminale) · Chapitre 8 · Application directe du cours
Problème — Optimisation du temps de salle
Les algorithmes gloutons · niveau 2
Énoncé
Problème — Optimisation du temps de salle.
Une salle de conférence reçoit des demandes de réservation, chacune avec une heure de début et de fin. On veut accepter le maximum de réunions sans chevauchement, puis afficher le planning retenu et le taux d'occupation (durée totale occupée sur l'amplitude totale).
Corrigé
On applique le glouton de sélection d'activités (tri par fin), puis on calcule les durées.
def planning_salle(reunions):
reunions = sorted(reunions, key=lambda r: r[1])
retenues = []
fin_courante = float("-inf")
for debut, fin in reunions:
if debut >= fin_courante:
retenues.append((debut, fin))
fin_courante = fin
if not retenues:
return [], 0.0
duree_occupee = sum(fin - debut for debut, fin in retenues)
amplitude = retenues[-1][1] - retenues[0][0]
taux = duree_occupee / amplitude
return retenues, taux
demandes = [(9, 11), (10, 12), (11, 13), (13, 14), (12, 15)]
planning, taux = planning_salle(demandes)
print(planning) # [(9, 11), (11, 13), (13, 14)]
print(round(taux, 2)) # 1.0
Le glouton sélectionne , , : trois réunions enchaînées sans temps mort, d'où un taux d'occupation de . La complexité reste .
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 8 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
Sans compte : le cours, le premier QCM, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.