Algorithme GLOUTON

Algorithme glouton :

Principe :

Le principe de l’algorithme glouton (greedy algorithm) :

 faire toujours un choix localement optimal dans l’espoir que ce choix mènera à une solution globalement optimale.

Exercice :

 Comment rendre la monnaie. Nous considérons des pièces de monnaie de 1, 2, et 5 centimes. Notons\(N\left( x \right)\)  le nombre minimum de pièces pour obtenir\(x\) centimes.

 Question 1 :

Quelle est la valeur de\(N\left( 0 \right),\ N\left( 1 \right),\ N\left( 2 \right),\ N\left( 3 \right),\ N\left( 4 \right),\ N\left( 5 \right)\)  ?

Correction

\(~N\left( 0 \right)\ = \ 0,\ N\left( 1 \right)\ = \ 1,\ N\left( 2 \right)\ = \ 2,\ N\left( 3 \right)\ = \ 2,\ N\left( 4 \right)\ = \ 2,\ N\left( 5 \right)\ = \ 1\)

Question 2 :

Donner un algorithme qui calcule\(N\left( x \right)\)  et sa complexité en termes d’opérations.

** Correction Algorithme Glouton :**

·        Trier les types de pièces par valeur décroissante.

·        Pour chaque valeur de pièce, maximiser le nombre de pièces choisies.

Plus formellement, soit  \(R\)  la somme restante, initialisé à\(S\) .

 Pour chaque valeur\(~v_{i}\)  ,\(c_{i} = \frac{\left( {R - R{mod}\,\,\, v_{i}} \right)}{v_{i}}\) , on prend \(c_{i}\) pièces\(v_{i}\)

Et on pose   \(\left. R\leftarrow R - v_{i} \times c_{i} \right.\)

Pour prouver l’optimalité de l’algorithme glouton avec les valeurs\(5,2\)  et\(1\) :

·        Au plus une pièce de\(1\)  (sinon une de\(2\) )

·        Au plus deux pièces de\(2\)  (sinon une de\(5\)  et une de\(1\) )

·        Le nombre de pièces de\(5\) est donc\(\frac{x - x{mod}5}{x}\)

·        Conclure avec ce qui précède

Question 3 :

 Appliquer cet algorithme qui calcule\(N\left( 14 \right)\)  en considérant maintenant qu’on dispose des pièces de monnaies de\(1,\text{~5}\)  et\(10\)  centimes. Que constatez-vous ?

Correction :

Si on utilise l’algorithme précédent, alors on utilise une pièce de\(10\)  et quatre pièces de\(1\) .