Lycée   >   Premiere   >   NSI   >   Résoudre un problème avec un algorithme glouton

Résoudre un problème avec un algorithme glouton

  • Fiche de cours
  • Quiz
  • Profs en ligne
Objectifs
  • Définir la stratégie gloutonne.
  • Appliquer la méthode gloutonne au problème de rendu de monnaie.
Point clé

Un algorithme glouton choisit à chaque étape la solution qui lui semble optimale à l’instant du choix. On obtiendra au final une solution qu’on espère optimale.

Pour bien comprendre
  • Définir une fonction en Python.
  • Utiliser les structures conditionnelles.
1. La notion d’algorithme glouton
Les algorithmes glouton sont des algorithmes qui permettent de résoudre des problèmes d’optimisation.
Il s’agit de choisir une solution en plusieurs étapes : l’algorithme choisit à chaque étape une solution qui est optimale à l’instant du choix, mais qui peut ne pas être optimale par rapport au résultat final.
Un algorithme permet d’obtenir rapidement une solution convenable, mais pas forcément la meilleure.
Exemples de programme d’algorithmique
  • Le problème du voyageur de commerce est un problème où l’on recherche un itinéraire qui minimise la distance totale parcourue. Une recherche exhaustive fonctionnerait mais cela prendrait trop de temps.
    On préfère une méthode gloutonne, en cherchant à chaque étape à optimiser cette distance sans jamais remettre en cause le choix précédent.
  • • Le problème du rendu de monnaie est un problème où l’on cherche à rendre la monnaie en utilisant le minimum de pièces possible.
2. Le problème du rendu de monnaie
a. Présentation de l’algorithme

Le problème du rendu de monnaie est un problème d’algorithmique. Dans un système donné de monnaie, le but est de rendre la monnaie en utilisant le minimum de pièces et de billets possible.

L’approche gloutonne de ce problème consiste à choisir à chaque étape la pièce ou le billet de plus grande valeur qui ne dépasse pas la somme restant à rendre.

On se place ici dans le système de pièces et de billets européens en centimes.
La liste de monnaie possible est la suivante.

{1,2,5,10,20,50,100,200,500,1000,2000,5000,10000,20000,50000}

Exemple
Pour rendre 8 €, on convertit d’abord en centimes.
On doit donc rendre 800 centimes : 800 = 500 + 200 + 100.
On donnera donc un billet de 5 €, une pièce de 2 € et une pièce de 1 €.
b. Programmation en Python 3

Voici le programme Python associé à ce problème du rendu de monnaie. On donne l’explication ligne à ligne.

liste=[1,2,5,10,20,50, 100,200,500,1000,2000, 5000,10000,20000,50000] On définit la liste possible des valeurs pour la monnaie.
def renduMonnaie(s): On définit la fonction rendu de monnaie.
  n=len(liste) n est la longueur de la liste.
  rendu=[0]*n On crée une liste remplie de n zéros.
  while s>0: Tant que s>0 :
    if s>=liste[n-1]: Si s est supérieur ou égal à liste[n-1],
      s=s-liste[n-1] on enlève à s la valeur liste[n-1],
      rendu[n-1]=rendu[n-1]+1 on ajoute alors 1 au (n-1)ème élément de rendu.
    else: Sinon,
      n=n-1 on décrémente n de 1.
  return rendu On retourne la valeur de rendu.
Exemple
On applique l’algorithme pour rendre 15,45 €, soit 1545 centimes.
Pour rappel, on utilise ici la liste de monnaie suivante.
{1,2,5,10,20,50,100,200,500,1000,2000,5000,10000,20000,50000}

On doit prendre 15,45 € avec le minimum de pièces possible, on doit donc rendre 1 pièce de 0,05 €, 2 pièces de 0,20 €, 1 billet de 5 € et 1 billet de 10 €.

On peut démontrer qu’avec les euros, cet algorithme donne toujours une réponse optimale, on dit donc qu’il est canonique.

Comment as-tu trouvé ce cours ?

Évalue ce cours !

 

Question 1/5

La médiane de 6 notes est 13. Cela signifie que :

Question 2/5

On a obtenu la série statistique suivante :

Combien vaut la médiane ?

Question 3/5

On a obtenu la série ci-dessous :

Quelle est la médiane de cette série ?

Question 4/5

On a relevé les tailles en cm des élèves d’une classe :

 

Parmi les propositions suivantes, laquelle est vraie ?

Question 5/5

Les notes en français de deux classes littéraires sont données dans le tableau suivant :

Quelle est la note médiane ?

Vous avez obtenu75%de bonnes réponses !

Reçois l’intégralité des bonnes réponses ainsi que les rappels de cours associés

Une erreur s'est produite, veuillez ré-essayer

Consultez votre boite email, vous y trouverez vos résultats de quiz!

Découvrez le soutien scolaire en ligne avec myMaxicours

Le service propose une plateforme de contenus interactifs, ludiques et variés pour les élèves du CP à la Terminale. Nous proposons des univers adaptés aux tranches d'âge afin de favoriser la concentration, encourager et motiver quel que soit le niveau. Nous souhaitons que chacun se sente bien pour apprendre et progresser en toute sérénité ! 

Fiches de cours les plus recherchées

NSI

Écrire un entier positif dans une base donnée

NSI

Passer de la représentation d'une base à une autre

NSI

Comprendre les bases de la représentation binaire

NSI

Effectuer des opérations en binaire

NSI

Utiliser la méthode du complément à 2 en binaire

NSI

Représenter les nombres réels en binaire

NSI

Comprendre les booléens

NSI

Utiliser les opérateurs booléens élémentaires

NSI

Obtenir une table de vérité d'une expression booléenne complexe

NSI

Représenter un texte en utilisant différents encodages