Adloun

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 .

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.