edit glouton
This commit is contained in:
@@ -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```:
|
||||
|
||||
Reference in New Issue
Block a user