Algorithmes gloutons

Choix locaux optimaux

Se connecter pour contribuerPublié le · Dernière mise à jour le

Algorithmes gloutons

Principe

Un algorithme glouton construit une solution étape par étape, en faisant à chaque étape le choix localement optimal, sans jamais revenir en arrière. Il est rapide mais ne garantit pas toujours la solution optimale globale.

Un algorithme glouton est correct quand le problème vérifie la propriété du choix glouton (un choix optimal local conduit à une solution globale optimale) et la sous-structure optimale.

Rendu de monnaie

Rendre SS avec le moins de pièces possible parmi {1,2,5,10,20,50}\{1, 2, 5, 10, 20, 50\}. La stratégie gloutonne (prendre à chaque étape la plus grosse pièce S\le S) est optimale pour le système monétaire européen, mais pas pour tous : avec {1,3,4}\{1, 3, 4\} et S=6S = 6, le glouton donne 4+1+1=34+1+1 = 3 pièces, alors que l'optimum est 3+3=23+3 = 2 pièces.

def rendu(s, pieces=[50, 20, 10, 5, 2, 1]):
    res = []
    for p in pieces:
        while s >= p:
            res.append(p); s -= p
    return res

Sac à dos fractionnaire

On dispose d'objets (vi,pi)(v_i, p_i) et d'un sac de capacité WW. On peut prendre des fractions d'objets. Stratégie gloutonne optimale : trier les objets par valeur par unité de poids vi/piv_i / p_i décroissante, prendre chaque objet entièrement tant que possible, puis une fraction du suivant.

(Pour le sac à dos 0/1, le glouton n'est pas optimal ; il faut la programmation dynamique.)

Ordonnancement de tâches

Sélection d'activités non chevauchantes : trier par heure de fin croissante, prendre la première compatible puis itérer. Optimal.

def planning(taches):  # taches = [(debut, fin), ...]
    taches.sort(key=lambda t: t[1])
    res, fin_prec = [], -float('inf')
    for d, f in taches:
        if d >= fin_prec:
            res.append((d, f)); fin_prec = f
    return res

Complexité

Souvent dominée par un tri initial : O(nlogn)O(n \log n).

Sources et références

Ce cours est rédigé par l'équipe RévisionBac à partir du programme officiel et des sources institutionnelles ci-dessous. Elles permettent de vérifier les définitions, les chiffres et les normes citées.

  1. 1.Programmes et ressources du lycée général et technologiqueÉduscol — Ministère de l'Éducation nationale
  2. 2.Bulletin officiel de l'Éducation nationale (programmes du baccalauréat)education.gouv.fr
  3. 3.Ressources et programme de NSIÉduscol
  4. 4.Documentation du langage PythonPython Software Foundation
  5. 5.Protection des données et RGPDCNIL

Contenu vérifié et mis à jour le 08/08/2026. Les liens renvoient vers les sites officiels des éditeurs cités.

Historique éditorial

Ce chapitre est rédigé et relu par l'équipe RévisionBac, puis enrichi par les contributions validées.

  1. Dernière mise à jour du cours (relecture et enrichissement)
  2. Première publication de la fiche de cours