Voici une solution dite optimale.
On choisit :
- L'objet de $\rm 11~kg$ d'une valeur de $70 €$
- L'objet de $\rm 6~kg$ d'une valeur de $80 €$
- L'objet de $\rm 8 kg$ d'une valeur de $90 €$
On obtient alors une masse totale de $\rm 25 kg$ pour une valeur totale de $240 €$.
Quel est l'algorithme qui permet de trouver la solution optimale ?
C'est un algorithme qui teste toutes les possibilités de choix des différents objets.
On décide pour chaque objet si on le prend ou non.
On peut représenter toutes les possibilités à partir d'un arbre binaire.
Voici cet arbre binaire représenter en partie (pour les 3 premiers niveaux : objets $\rm A$, $\rm B$ et $\rm C$).
Une fois cet arbre construit, on cherche une branche de l'arbre qui respecte la contrainte du poids et qui maximise la valeur des objets.
Dans notre exemple, nous avons 5 objets.
Le nombre de chemins possibles dans l'arbre binaire est égal à $2^5 = 32$.
Imaginons, un exemple avec $100$ ou $1~000$ objets, alors le nombre de cas à analyser serait respectivement de $2^{100}$ ou $2^{1000}$.
Ces nombres sont gigantesques et même un ordinateur très puissant ne serait pas capable d'analyser tous les cas en une durée raisonnable.
Ce type de problème est qualifié de problème $\rm NP$, $\rm NP$ signifiant Non Polynomial.
En effet, la complexité algorithmique du problème du sac à dos croit de manière exponentielle par rapport au nombre d'objets.
C'est pour cela que l'on peut classer la recherche optimale du problème du sac à dos comme un problème non polynomial $\rm (NP)$.
Par contre, la durée d'exécution de l'algorithme glouton (qui ne donne pas toujours la solution optimale) croit linéairement avec le nombre d'objets.
On peut classer donc cet algorithme glouton dans la classe dite P (pour polynomiale).
On peut citer d'autres exemples pour lesquels on peut appliquer un algorithme glouton :
- Le problème du rendu de monnaie
On doit rendre une somme donnée en utilisant un minimum de pièces/billets. - Des problèmes de coloration de graphes
- Décomposition d'une fraction en somme de fractions égyptiennes.
- Une fraction égyptienne a toujours un numérateur égal à $1$.