Aller au contenu

Le problème du sac à dos

Supposons que vous souhaitiez emporter des objets ayant chacun une certaine valeur mais que vous n'ayez à votre disposition qu'un sac ne pouvant supporter que 15 kg maximum. Quels objets faut-il emmener pour que la valeur du sac soit maximale ?

En vérité, ceci s'étant à des problématiques plus "concrètes", comme la finance, le chargement d'un cargo, etc. mais restons sur le sac à dos.


Sac à dos, méthode naïve (ou exhaustive)⚓︎

Une première méthode consiste à lister toutes les combinaisons possibles d'objets puis de regarder lesquelles ne dépassent pas 15 kg et enfin de regarder laquelle permet d'avoir une somme maximale.

Combien y a-t-il de telles combinaisons ?

Considérons chaque objet : nous pouvons soit le prendre, soit le laisser donc il y a 2 choix. S'il y a 5 objets, cela donne donc 25 = 32 combinaisons possibles à examiner, ce qui reste raisonnable.

Par contre, avec 100 objets, il y aura 2100 = 1267650600228229401496703205376 combinaisons, ce qui est nettement moins gérable.

Le coût de la méthode naïve est donc en O(2n), c'est un coût exponentiel.


Sac à dos, méthode glouton⚓︎

Si l'on ne veut pas passer trop de temps pour remplir son sac à dos, il va falloir trouver une autre méthode !

Dans tous les cas, nous pouvons considérer que nous allons mettre un seul objet à la fois dans le sac. Un algorithme glouton consiste à faire le meilleur choix possible pour chaque objet, sans s'occuper de la suite et sans possibilité de revenir en arrière.

Ok, mais c'est quoi le meilleur choix ?


Exercice 1

Voici cinq objets, leur poids et leur valeur. Vous disposez d'un sac de capacité maximale de 32 kg.

Objet Poids (kg) Valeur (euros)
A 16 512
B 15 495
C 19 950
D 14 280
E 14 420
  1. Choisissons un critère de choix d'un objet à mettre dans le sac : il faut qu'il ait le plus petit poids (sans dépasser la capacité restante bien sûr). Quelle est la valeur du sac si on applique ce critère à chaque choix d'un objet ?
  2. Définissez un autre critère de choix. Appliquez-le à chaque choix d'objet et donnez la valeur ainsi obtenue.
  3. Mêmes questions avec un troisième critère de choix.
  4. Y a-t-il une meilleure valeur totale que celles obtenues dans les trois questions précédentes ?

Remarques

  • en fonction des valeurs, certains critères de choix fonctionneront mieux que d'autres ; ainsi le choix d'un ratio valeur/poids maximal semble le plus pertinent (et le sera la plupart du temps) ;
  • dans les trois premières questions, nous avons utilisé une méthode gloutonne et nous voyons que celles-ci ne donnent pas forcément la réponse optimale. En ce sens, une méthode gloutonne est une heuristique, c'est-à-dire une méthode qui permet de trouver une solution convenable mais non forcément optimale à un problème mais en un temps raisonnable en évitant une analyse complète de ce problème.
  • la programmation dynamique, étudiée en Terminale, est une technique appliquable ici.

Algorithme glouton

Type d'algorithme dans lequel, à chaque étape, un choix optimal local est fait, sans tenir compte de la suite et sans possibilité de retour en arrière (pensez à un glouton qui avale un objet, impossible de revenir en arrière...).


Comparez donc :

  • la méthode exhaustive (étude de tous les cas ou force brute) : permet de trouver la meilleure solution à un problème mais en un temps qui peut être considérable ;
  • une méthode gloutonne : ne donne pas forcément la solution optimale à un problème mais donne souvent une solution acceptable en un temps limité.

Par exemple, lors du chargement d'un cargo, vaut-il mieux tester toutes les combinaisons et bloquer le cargo pendant une semaine ou avoir une cargaison de valeur un peu inférieure à la cargaison optimale... ?

Problème

Il arrive parfois qu'une méthode gloutonne ne donne pas de solution du tout, comme nous le verrons ensuite.


TP sur le problème du sac à dos.

Retour en haut de la page