Chapitre 4: Algorithmes gloutons
Nous allons voir dans ce chapitre comment résoudre des problèmes d’optimisation à l’aide d’algorithmes.
Un problème d’optimisation consiste à minimiser ou maximiser une fonction sur un ensemble.
La particularité des algorithmes gloutons est qu’ils donnent généralement une solution assez satisfaisante relativement rapidement, mais ce n’est pas forcément la meilleure.
1 Le problème du sac à dos
Il s’agit d’un problème classique d’introduction aux algorithmes gloutons.
En algorithmique, le problème du sac à dos, noté également KP (en anglais, Knapsack problem) est un problème d’optimisation combinatoire. Il modélise une situation analogue au remplissage d’un sac à dos, ne pouvant supporter plus d’un certain poids, avec tout ou partie d’un ensemble donné d’objets ayant chacun un poids et une valeur. Les objets mis dans le sac à dos doivent maximiser la valeur totale, sans dépasser le poids maximum.
2 Exploration systématique(force brute)
L’exploration de toutes les possibilités consiste à construire un arbre d’exploration binaire.
À chaque fois qu’un objet est ajouté à la liste des objets possibles, la taille de l’arbre est multipliée par 2.
Il s’agit d’une complexité exponentielle ce qui rend cette méthode de résolution inutilisable dans la pratique(Pensez au nombre de routes entre votre maison et le lycée!).
3 Méthode approximative: l’algorithme glouton
L’algorithme le plus simple est un algorithme glouton. L’idée est d’ajouter en priorité les objets les plus efficaces, jusqu’à saturation du sac :
trier les objets par ordre décroissant d'efficacité
w_conso := 0
placer les objets dans le sac par ordre décroissant d'efficacité
pour i de 1 à n
si w[i] + w_conso ≤ W alors
x[i] := 1
w_conso := w_conso + w[i]
sinon
x[i] := 0
fin si
fin pour
On obtient ici une solution de 11$ pour 11 kg alors que la solution optimale est de 12$ et 14 kg.
4 Le problème du rendu de monnaie
Examinons un autre problème d’optimisation : le problème du rendu de monnaie
Nous sommes des commerçants, nous avons à notre disposition un nombre illimité de pièces de:
- 1 centime
- 2 centimes
- 5 centimes
- 10 centimes
- 20 centimes
- 50 centimes
- 1 €
- 2 €
Nous devons rendre la monnaie à un client à l’aide de ces pièces. La contrainte est d’utiliser le moins de pièces possible.
- Article Wikipedia
- Site interstices
- cours de NSI sur pixees.fr