Qu'est-ce qu'un algorithme glouton et dans quels cas est-il utilisé?
sobes.tech IA
Réponse de l'IA
L'algorithme glouton est une approche pour résoudre des problèmes d'optimisation qui, à chaque étape, choisit la meilleure solution locale (l'option la plus avantageuse du point de vue du moment actuel) dans l'espoir que cette séquence de solutions locales optimales conduise à une solution globalement optimale. Il ne considère pas les conséquences possibles du choix actuel sur les étapes futures.
Caractéristiques :
- Simplicité : Généralement plus facile à implémenter que la programmation dynamique ou d'autres méthodes d'optimisation.
- Vitesse : A souvent une complexité de calcul inférieure.
- Garantie d'optimalité : Ne garantit pas toujours la trouvaille de la solution globalement optimale. La garantie ne s'applique qu'à certains types de problèmes.
Il s'applique dans les problèmes où il a été démontré que le choix localement optimal à chaque étape conduit à une solution globalement optimale. Exemples :
- Problème de sélection d'activités : Choisir le maximum d'activités non se chevauchant dans le temps.
- Problème du sac à dos (avec fractionnement des objets) : Lorsque les objets peuvent être divisés. Sinon, c'est un problème de programmation dynamique.
- Algorithme de Prim et Kruskal : Pour trouver l'arbre couvrant minimal dans un graphe.
- Algorithme de Dijkstra : Pour trouver le plus court chemin dans un graphe avec des poids d'arête non négatifs.
- Codage de Huffman : Pour construire un code préfixe optimal.
Exemple de pseudocode pour l'algorithme de sélection d'activités :
Fonction SélectionnerActivités(activités):
Trier les activités par heure de fin
activités_sélectionnées = liste vide
dernière_heure_de_fin = 0
Pour chaque activité dans activités:
Si activité.heure_de_début >= dernière_heure_de_fin:
Ajouter activité à activités_sélectionnées
dernière_heure_de_fin = activité.heure_de_fin
Retourner activités_sélectionnées
Il est important de vérifier si l'algorithme glouton est applicable à un problème donné, car sinon il peut donner une solution sous-optimale.
# Exemple simple où l'algorithme glouton n'est pas optimal
# Problème de rendu de monnaie : donner le moins de pièces
# Pièces disponibles : [1, 5, 10, 25] USD
# Par exemple, pour 30 cents
# Algorithme glouton :
# Prendre la plus grande pièce <= 30 (25) -> reste 5
# Prendre la plus grande pièce <= 5 (5) -> reste 0
# Résultat : 2 pièces (25 + 5). Ici, c'est optimal.
# Pièces disponibles : [1, 6, 10]
# Pour 12 cents
# Algorithme glouton :
# Prendre la plus grande pièce <= 12 (10) -> reste 2
# Prendre la plus grande pièce <= 2 (1) -> reste 1
# Prendre la plus grande pièce <= 1 (1) -> reste 0
# Résultat : 3 pièces (10 + 1 + 1).
# La solution optimale serait 2 pièces (6 + 6).
# Cet exemple montre que l'algorithme glouton ne conduit pas toujours à la solution globale optimale,
# si les propriétés du problème ne sont pas compatibles avec son application (par exemple,
# les dénominations de monnaie standard permettent souvent l'utilisation du glouton,
# mais des dénominations arbitraires non).