Algorithmes Gloutons
Solution = \sum_{i=1}^{n} choix_{local}(i)
Optimisation locale à chaque étape
Définition :
Algorithme glouton : stratégie algorithmique qui consiste à prendre la meilleure décision locale à chaque étape dans l'espoir d'obtenir une solution globale optimale.
Principe :
🎯 Choix local optimal
🔄 Pas de retour en arrière
⚡ Décision irréversible
📊 Optimisation séquentielle
🔄 Pas de retour en arrière
⚡ Décision irréversible
📊 Optimisation séquentielle
Caractéristiques :
✅ Simple à implémenter
❌ Pas toujours optimal
⚡ Efficace en temps
📋 Difficile à justifier
❌ Pas toujours optimal
⚡ Efficace en temps
📋 Difficile à justifier
Exemples classiques
Monnaie : rendu optimal
Sac à dos : version fractionnaire
Intervalle : couverture optimale
Arbre : arbre couvrant minimal
Problèmes typiques
Rendu de monnaie
Sac à dos fractionnaire
Sélection d'activités
Implémentation
Étape de choix
Critère de sélection
Mise à jour de l'état
Condition d'arrêt
Exemple : Rendu de monnaie
def rendu_monnaie_glouton(somme, systeme):
"""
Rendu de monnaie avec algorithme glouton
"""
systeme = sorted(systeme, reverse=True) # Tri décroissant
pieces = []
for piece in systeme:
while somme >= piece:
pieces.append(piece)
somme -= piece
return pieces
# Exemple
pieces_disponibles = [1, 2, 5, 10, 20]
rendu = rendu_monnaie_glouton(37, pieces_disponibles)
# [20, 10, 5, 2] (optimal pour ce système)
Avantages et limites
Avantages : simplicité
Performance : temps linéaire
Limites : pas toujours optimal
Erreurs fréquentes
Erreur 1 :
Confusion avec méthode optimale
Glouton ≠ Optimal
Besoin de preuve mathématique
Glouton ≠ Optimal
Besoin de preuve mathématique
Erreur 2 :
Critère de choix inadéquat
Tri incorrect
Priorité mal choisie
Tri incorrect
Priorité mal choisie
Erreur 3 :
Oubli de la vérification de la solution
Algorithme ≠ preuve
Tester les cas limites
Algorithme ≠ preuve
Tester les cas limites