Les bidons d'essence
Exercice · informatique (tronc commun des prépas scientifiques), chapitre 7 — Algorithmes gloutons
Énoncé
Une voiture disposant d'une autonomie de km se déplace le long d'une route comportant des stations aux positions . Proposer une méthode gloutonne pour minimiser le nombre d'arrêts de ravitaillement et en prouver l'optimalité.
Corrigé
L'algorithme glouton consiste à s'arrêter à la station accessible la plus lointaine à chaque étape.
def arrets(p: list, K: int) -> list:
stops, position = [], 0
i = 0
while p[i] != p[-1]:
# Rechercher la station la plus lointaine à portée d'autonomie
while i + 1 < len(p) and p[i + 1] - position <= K:
i += 1
stops.append(p[i])
position = p[i]
return stops[:-1] if stops and stops[-1] == p[-1] else stops
Preuve (le glouton reste devant) : Notons les positions des arrêts choisis par le glouton, et ceux d'une planification optimale. Montrons par récurrence que .
- Pour : le glouton choisit la station maximale accessible depuis le départ , donc .
- Si : la station est à une distance maximale de de , et donc à fort fortiori à une distance inférieure ou égale à du point . L'autonomie de la voiture permet de franchir l'intervalle depuis . Le choix du glouton étant maximal sur cet intervalle, on a . Par conséquent, le glouton atteint l'arrivée avec un nombre d'arrêts .
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.