edit glouton

This commit is contained in:
2024-03-23 19:42:49 +01:00
parent b171bcb6ff
commit 5a1c28d7c0

View File

@@ -16,6 +16,7 @@ Un ***algorithme glouton*** est un algorithme qui vise à optimiser la résoluti
- On procède par étapes, en effectuant à chaque fois le meilleur choix possible.
- On ne revient jamais sur un choix déjà fait.
- Répétez ces étapes jusqu'à ce qu'une solution globale soit obtenue.
Selon le problème on utilise une méthode pour résoudre ce dernier. Il peut exister plusieurs instances qui donneront lieu à des résultats différents.
@@ -24,10 +25,10 @@ Selon le problème on utilise une méthode pour résoudre ce dernier. Il peut ex
Prenons un exemple simple : la liste des 23 joueurs selectionnés pour la coupe du monde :
```
Didier Desvilles est bien embêté : il doit choisir 23 joueurs pour aller jouer au Kotor.
Didier Desvilles est bien embêté : il doit choisir 23 joueurs pour aller jouer une compétition.
Dans cette optique, il décide d'utiliser une méthode simple: choisir le meilleur joueur possible pour chaque poste, puis le deuxième meilleur comme remplaçant.
Peu importe si les joueurs selectionnés ne s'entendent pas forcément très bien, comme Olivier Gibrun et Karim Bamazette, l'important c'est de faire le meilleur choix à chaque étape.
Peu importe si les joueurs selectionnés ne s'entendent pas forcément très bien, comme Olivier Gibrun et Karim Benzemb, l'important c'est de faire le meilleur choix à chaque étape.
```
Un algorithme glouton ne renvoie pas obligatoirement un résultat optimal, dans ce cas la, on parle ***d'heuristique.*** Il renverra un résultat optimal pour chacun des sous-problèmes.
@@ -68,7 +69,12 @@ def rendu_monnaie(systeme, montant):
while reste > 0 and i >= 0:
# On trouve le nombre de pièces de la valeur courante à rendre
...
nb_pieces = reste // systeme[i]
for _ in range(nb_pieces): # Pour chaque pièce à rendre
resultat.append(systeme[i]) # On ajoute cette pièce au résultat
reste -= systeme[i] # On met à jour le reste à rendre
i -= 1 # On passe à la valeur inférieure dans le système
return resultat
# Exemples d'utilisation
@@ -77,6 +83,7 @@ systeme_2 = [1, 2, 5, 7, 10]
print(rendu_monnaie(systeme_1, 14)) # Devrait afficher [10, 2, 2] qui est optimal pour le système_1
print(rendu_monnaie(systeme_2, 14)) # Devrait afficher [10, 2, 2] qui est non optimal car [7, 7] est mieux pour le système_2
```
Force brute avec le ```system_2``` pour ```14```: