Algorithme glouton : Stratégie qui fait le meilleur choix local à chaque étape.
Rendu de monnaie : Donné un montant, rendre la monnaie avec le minimum de pièces/billets.
- Trier les pièces/billets par valeur décroissante
- À chaque étape, prendre la pièce/billet de plus grande valeur possible
- Répéter jusqu'à ce que le montant soit complètement rendu
- Ne jamais revenir en arrière sur les choix faits
Montant à rendre : 67€
Pièces disponibles : [50, 20, 10, 5, 2, 1] (triées par ordre décroissant)
Prendre la plus grande pièce ≤ 67 : 50€
Reste à rendre : 67 - 50 = 17€
Pièces rendues : [50]
Prendre la plus grande pièce ≤ 17 : 10€
Reste à rendre : 17 - 10 = 7€
Pièces rendues : [50, 10]
Prendre la plus grande pièce ≤ 7 : 5€
Reste à rendre : 7 - 5 = 2€
Pièces rendues : [50, 10, 5]
Prendre la plus grande pièce ≤ 2 : 2€
Reste à rendre : 2 - 2 = 0€
Pièces rendues : [50, 10, 5, 2]
| Étape | Pièce choisie | Valeur | Reste à rendre |
|---|---|---|---|
| 1 | 50€ | 50 | 17€ |
| 2 | 10€ | 10 | 7€ |
| 3 | 5€ | 5 | 2€ |
| 4 | 2€ | 2 | 0€ |
Pour 67€, le rendu optimal glouton est 50€ + 10€ + 5€ + 2€ = 67€ avec 4 pièces.
• Glouton : Choisir la plus grande pièce/billet possible à chaque étape
• Système monétaire : Fonctionne bien avec les systèmes standards (comme l'euro)
• Optimalité locale : Chaque choix semble optimal au moment de la décision
Sac à dos fractionnaire : Version du problème où on peut prendre des fractions d'objets.
Stratégie gloutonne : Prendre les objets avec le meilleur rapport valeur/masse.
Objet A: valeur=6, masse=1 → rapport=6/1=6
Objet B: valeur=10, masse=2 → rapport=10/2=5
Objet C: valeur=12, masse=3 → rapport=12/3=4
Ordre de sélection: A(rapport=6), B(rapport=5), C(rapport=4)
Sélectionner objet A: masse=1, valeur=6, reste=14kg
Sélectionner objet B: masse=2, valeur=10, reste=12kg
Sélectionner objet C: masse=3, valeur=12, reste=9kg
Valeur totale = 6 + 10 + 12 = 28
Masse totale = 1 + 2 + 3 = 6kg (inférieur à la capacité de 15kg)
| Objet | Valeur | Masse | Rapport | Sélectionné |
|---|---|---|---|---|
| A | 6 | 1 | 6.0 | ✓ |
| B | 10 | 2 | 5.0 | ✓ |
| C | 12 | 3 | 4.0 | ✓ |
La valeur maximale obtenue est 28 avec les objets A, B et C.
• Rapport valeur/masse : Critère de choix optimal pour le sac à dos fractionnaire
• Tri préalable : Essentiel pour la stratégie gloutonne
• Optimalité : La solution gloutonne est optimale pour cette version du problème
Problème d'intervalle : Sélectionner le maximum d'activités sans chevauchement.
Stratégie gloutonne : Sélectionner l'activité qui se termine le plus tôt.
Activités: [(1,4), (3,5), (0,6), (5,7), (8,9), (5,9)]
Objectif: Sélectionner le maximum d'activités sans conflit
(1,4), (3,5), (5,7), (8,9), (0,6), (5,9)
Trié: (1,4), (3,5), (5,7), (8,9), (0,6), (5,9)
Sélectionner (1,4) - fin à 4
Prochaine activité compatible: (5,7) - commence à 5 ≥ 4
Sélectionner (5,7) - fin à 7
Prochaine activité compatible: (8,9) - commence à 8 ≥ 7
Sélectionner (8,9) - fin à 9
Activités sélectionnées: (1,4), (5,7), (8,9)
Aucun chevauchement: 4≤5, 7≤8 - Solution optimale!
| Activité | Début | Fin | Sélectionnée | Compatibilité |
|---|---|---|---|---|
| A1 | 1 | 4 | ✓ | Début=1 |
| A2 | 3 | 5 | ✗ | 3<4 (conflict) |
| A3 | 0 | 6 | ✗ | 0<4 (conflict) |
| A4 | 5 | 7 | ✓ | 5≥4 |
| A5 | 8 | 9 | ✓ | 8≥7 |
| A6 | 5 | 9 | ✗ | 5<7 (conflict) |
Les activités optimales sont (1,4), (5,7), (8,9) - total de 3 activités.
• Heure de fin : Critère de sélection optimal pour ce problème
• Tri préalable : Nécessaire pour la stratégie gloutonne
• Optimalité : La solution gloutonne est optimale pour ce problème
Complexité algorithmique : Mesure de la performance en fonction de la taille des données.
Algorithmes gloutons : Généralement O(n log n) à cause du tri, O(n) sans tri.
Tri des pièces: O(n log n) où n = nombre de types de pièces
Itération sur les pièces: O(n) dans le pire cas
Complexité totale: O(n log n)
Tri des objets: O(n log n) où n = nombre d'objets
Itération sur les objets: O(n)
Complexité totale: O(n log n)
Tri des activités: O(n log n) où n = nombre d'activités
Itération sur les activités: O(n)
Complexité totale: O(n log n)
Algorithmes dynamiques: souvent O(n²) ou O(n³)
Algorithmes gloutons: plus rapides mais pas toujours optimaux
| Problème | Glouton | Dynamique | Optimalité |
|---|---|---|---|
| Rendu monnaie | O(n log n) | O(n × montant) | ✓ pour systèmes canoniques |
| Sac à dos frac. | O(n log n) | O(n log n) | ✓ |
| Intervalle | O(n log n) | O(n²) | ✓ |
| Sac à dos 0/1 | O(n log n) | O(n × W) | ✗ (glouton) |
La complexité des algorithmes gloutons est généralement O(n log n) à cause du tri.
• Complexité : Dépend du tri et des itérations postérieures
• Avantage : Plus rapides que les algorithmes dynamiques
• Inconvénient : Ne garantissent pas toujours l'optimalité
Comparaison d'algorithmes : Analyse de la qualité des solutions produites.
Systèmes monétaires : Certains systèmes rendent l'algorithme glouton optimal.
Système de pièces: [1, 3, 4] euros
Montant à rendre: 6 euros
Prendre la plus grande pièce ≤ 6: 4€ → reste 2€
Prendre la plus grande pièce ≤ 2: 1€ → reste 1€
Prendre la plus grande pièce ≤ 1: 1€ → reste 0€
Solution gloutonne: 4 + 1 + 1 = 6 (3 pièces)
Meilleure combinaison: 3 + 3 = 6 (2 pièces)
L'algorithme glouton n'est pas optimal!
Pour que l'algorithme glouton soit optimal:
• Le système monétaire doit être canonique (comme l'euro)
• Chaque pièce doit être multiple de la suivante (dans une certaine mesure)
| Système | Montant | Glouton | Optimal | Optimalité |
|---|---|---|---|---|
| [1, 3, 4] | 6 | 4+1+1 (3) | 3+3 (2) | ✗ |
| [1, 2, 5] | 6 | 5+1 (2) | 5+1 (2) | ✓ |
| [1, 5, 10] | 8 | 5+1+1+1 (4) | 5+1+1+1 (4) | ✓ |
| [1, 5, 12, 15] | 20 | 15+5 (2) | 15+5 (2) | ✓ |
Les algorithmes gloutons ne garantissent pas toujours la solution optimale globale.
• Limitation : Les algorithmes gloutons ne sont pas toujours optimaux
• Conditions : Dépendent du problème et des propriétés structurelles
• Vérification : Tester avec des contre-exemples pour prouver non-optimalité
- Propriété de choix glouton : Une solution globalement optimale peut être obtenue en faisant un choix localement optimal
- Sous-structure optimale : Une solution optimale contient des sous-solutions optimales
- Irreversibilité : Les choix faits ne sont jamais révisés
- Efficacité : Le choix optimal local est facile à déterminer
- Les algorithmes gloutons sont simples mais ne garantissent pas toujours l'optimalité
- Ils sont efficaces en temps (généralement O(n log n))
- Le tri préalable est souvent nécessaire pour la stratégie gloutonne
- La preuve de correction est essentielle pour valider un algorithme glouton
- • Les algorithmes gloutons font des choix optimaux locaux sans révision future
- • Ils sont efficaces mais ne garantissent pas toujours la solution optimale globale
- • Le tri est souvent une étape cruciale dans la stratégie gloutonne
- • La preuve de correction est nécessaire pour valider l'approche gloutonne
- • Ils sont utiles pour des problèmes avec propriétés de choix glouton et sous-structure optimale