• Aucun résultat trouvé

Probl` eme du sac ` a dos

N/A
N/A
Protected

Academic year: 2022

Partager "Probl` eme du sac ` a dos"

Copied!
3
0
0
En savoir plus ( Page)

Texte intégral

(1)

TD d’algorithmique avanc´ee

Corrig´e du TD 6 : Algorithmes gloutons

Jean-Michel Dischler et Fr´ ed´ eric Vivien

Le coˆ ut de la non panne s` eche

Le professeur Bell conduit une voiture entre Amsterdam et Lisbonne sur l’autoroute E10. Son r´eservoir, quand il est plein, contient assez d’essence pour faire nkilom`etres, et sa carte lui donne les distances entre les stations-service sur la route.

1. Donnez une m´ethode efficace grˆace `a laquelle Joseph Bell pourra d´eterminer les stations-service o`u il peut s’arrˆeter, sachant qu’il souhaite faire le moins d’arrˆets possible.

La solution consiste `a s’arrˆeter le plus tard possible, c’est-`a-dire `a la station la plus ´eloign´ee du dernier point d’arrˆet parmi celles `a moins de nkilom`etres de ce mˆeme point.

2. D´emontrez que votre strat´egie est optimale.

On proc`ede de la mˆeme mani`ere que pour prouver l’optimalit´e de l’algorithme glouton pour la location de voiture : on consid`ere une solutionF = (x1, x2, ..., xp)fournie par notre algorithme et une solution optimale G= (y1, y2, ..., yq), on a doncp≥q et on cherche `a montrer quep=q —ici les deux suites sont bien sˆur des suites de stations-service, tri´ees de celle la plus proche du point de d´epart `a celle la plus ´eloign´ee.

Soitk le plus petit entier tel que :

∀i < k, xi=yi, etxk 6=yk.

Par d´efinition de notre algorithme, on a xk > yk. On construit `a partir de la solution optimale G= (y1, y2, ..., yk1, yk, yk+1, ..., yq)la suite de stations-serviceG0= (y1, y2, ..., yk1, xk, yk+1, ..., yq).G0 est une liste de mˆeme taille. Montrons que c’est aussi une solution —et donc une solution optimale. Il nous faut v´erifier qu’il n’y a pas de risque de panne s`eche c’est-`a-dire que :

– xk−yk1≤n.F est une solution, doncxk−xk1≤n. Par cons´equent,xk−yk1=xk−xk1≤n.

– yk+1 −xk ≤ n. G est une solution, donc yk+1−yk ≤ n. D’o`u yk+1−xk < yk+1 −yk ≤ n. Si yk+1< xk, on peut en fait supprimeryk+1 deG0 et obtenir une solution strictement meilleure ce qui contredirait l’optimalit´e deG.

G0 est donc bien une solution optimale de notre probl`eme.

Nous avons donc construit `a partir de Gune solutionG0 qui contient un ´el´ement en commun de plus avec F. On it`ere jusqu’`a ce que l’on ait une solution optimale contenantF. Alorsp≤q, ce qui prouve le r´esultat attendu.

Probl` eme du sac ` a dos

Variante« tout ou rien »

Un voleur d´evalisant un magasin trouvenobjets, leie de ces objets valantvi euros et pesantwikilos,vi

et wi ´etant des entiers. Le voleur veut bien ´evidemment emporter un butin de plus grande valeur possible mais il ne peut porter queW kilos dans son sac `a dos. Quels objets devra-t-il prendre ?

Variante fractionnaire

Le probl`eme est le mˆeme que le pr´ec´edent, sauf qu’ici le voleur peut ne prendre qu’une fraction d’un objet et n’est plus oblig´e de prendre l’objet tout entier comme pr´ec´edemment, ou de le laisser.

1

(2)

1. Proposez un algorithme glouton pour la variante fractionnaire.

On commence par trier les objets suivant leur valeur au kilo,vi/wi, d´ecroissante. L’algorithme consiste alors `a prendre autant que faire se peut de l’objet de plus grande valeur au kilo —sa totalit´e si le sac `a dos peut le contenir en entier et sinon la quantit´e n´ecessaire `a remplir le sac— puis recommencer avec les autres objets jusqu’`a ce que le sac soit plein.

2. Montrez que cet algorithme est optimal.

On proc`ede comme pour le probl`eme de la location d’une voiture ou celui de la minimisation des arrˆets en station service : on compare ici la solution construite par notre algorithme avec une solution optimale. On compare ces deux solutions apr`es avoir tri´es les objets qu’elles contiennent par valeur au kilo d´ecroissante. Pour le premier objet pour lequel les quantit´es diff`erent, on rajoute dans la solution optimale la quantit´e manquante de l’objet en question en enlevant le poids ´equivalent en objets de valeur au kilo inf´erieure —ce qui est toujours possible vu l’ordre dans lequel on compare les deux solutions.

On conclut comme pr´ec´edemment.

3. Quelle est sa complexit´e ?

La complexit´e du tri est en O(nlogn)(voir le cours) et celle de l’algorithme proprement dit en n, o`u n est le nombre d’objets. La complexit´e de l’ensemble est donc en O(nlogn).

4. Montrez au moyen d’un contre-exemple que l’algorithme glouton ´equivalent pour la variante«tout ou rien»n’est pas optimal.

On consid`ere trois objets : le premier p`ese 10 kilos et vaut 60 euros (valeur de 6 euros par kilo), le deuxi`eme p`ese 20 kilos et vaut 100 euros (valeur de 5 euros par kilo) et le troisi`eme p`ese 30 kilos et vaut 120 euros (valeur de 4 euros par kilo). La strat´egie gloutonne pr´ec´edente prendra initialement le premier objet et ne pourra plus alors en prendre d’autre, quand la solution optimale ici aurait ´et´e de prendre les deux autres objets...

5. Proposez un algorithme de programmation dynamique r´esolvant la variante «tout ou rien».

On commence par ´etablir une r´ecurrence d´efinissant la valeur du butin emport´e. SAD(i, w)est la valeur maximale du butin s’il n’est compos´e que de certains desipremiers objets (les objets sont ici num´erot´es mais pas ordonn´es) et qu’il p`ese au maximumw kilos. On a plusieurs cas `a consid´erer :

(a) Le ie objet est plus lourd que la capacit´e du sac : on ne peut pas le prendre et le probl`eme se ram`ene `a la recherche du meilleur butin parmi lesi−1premiers objets.

(b) Il est possible de prendre leieobjet :

i. On ne le prend pas et le probl`eme se ram`ene `a la recherche du meilleur butin parmi lesi−1 premiers objets.

ii. On le prend et la valeur du butin est celle duieobjet plus celle du butin que l’on peut constituer

`

a partir desi−1premiers objets compte tenu que l’on a pris leieobjet et que le poids portable est diminu´e d’autant.

De ce qui pr´ec`ede on tire l’´equation : SAD(i, w) =

SAD(i−1, w) siw < wi,

max(vi+SAD(i−1, w−wi),SAD(i−1, w)) sinon. (1) Il nous reste `a transcrire cette d´efinition r´ecursive sous la forme d’un algorithme de programmation dynamique :

Sac `ADos(W,w,v)

pourw←0`aW faireValeur[0, w]←0 pouri←1`a nfaire

pourw←0 `aW faire siwi> w

alorsValeur[i, w]←Valeur[i−1, w]

sinon Valeur[i, w]←max(vi+Valeur[i−1, w−wi],Valeur[i−1, w]) renvoyer Valeur

2

(3)

Cet algorithme nous calcule la valeur optimale du butin (Valeur(n, W)) mais pas sa composition, ce que fait l’algorithme suivant :

Butin(Valeur,i,W,w, v) siwi> W

alors renvoyerButin(Valeur,i−1,W,w,v) sinon sivi+S[i−1, W−wi]>S[i−1, W]

alors renvoyer{i}∪ Butin(Valeur,i−1,W −wi,w,v) sinon renvoyerButin(Valeur,i−1,W,w,v)

Cet algorithme est appel´e initialement : Butin(Sac `ADos(w,v),n,W,w,v).

6. Quelle est sa complexit´e ?

La complexit´e de l’algorithme Sac `ADosest enΘ(nW)et celle de l’algorithme Butinest en Θ(n)(`a chaque ´etape on d´ecr´emente ide 1). La complexit´e totale est donc en Θ(nW).

3

Références

Documents relatifs

Dans tout le texte n d´esigne un entier naturel strictement positif, R le corps des nombres r´eels et R n l’espace vectoriel euclidien canonique de dimension n.. R n est

Masse molaire atomique Définition : La masse molaire atomique d’un élément chimique est la masse d’une mole d’atomes de cet élément pris à l’état naturel 1.. Elle se note M

[r]

Remarque Je ne ferai pas, dans ce qui suit, l’identification des ´ el´ ements de M n,1 ( R ) aux ´ el´ ements de R n propos´ ee par le texte car elle n’apporte rien ici.. Le

Remarque On peut ais´ ement trouver la limite (∗) en utilisant des d´ eveloppements limit´

On obtient le graphe ci-dessus, la question 7 permettant d’obtenir les tangentes `a l’origine.. Partie

Car, en faisant l'hypothdse contraire, la solution du problSme n'offre pas de diffi- cult6s particuli5res.. En effet, poss6dant mdme toutes les solutions r6elles

Cependant, leurs solutions contiennent en g6n6ral plus de param~tres qu'il ne

Le prix d’un article subit une hausse de 60%, calculer le taux d’´ evolution r´ eciproque permettant de revenir au prix initial. www.emmanuelmorand.net

Estimez les composantes horizontales et verticales de la r´esultante des forces exerc´ees par la paroi du coude sur le fluide2. Quelles forces faut-il par ailleurs exercer sur le

Soit elle n’est pas chez elle, soit elle ne r´ epond pas au t´ el´ ephone. Mais si elle n’est pas chez elle, alors, elle a ´ et´ e kidnapp´ ee. Et si elle ne r´ epond pas au

Soit Pierre aime Marie, soit Marie aime Pierre. Mais si Marie n’aime pas Pierre, alors Pierre n’est pas content. Une fois Pierre n’est pas content, il n’aime pas Marie. Donc Pierre

La division euclidienne d’un nombre entier (appel´e dividende) par un nombre entier (appel´e divi- seur) donne le quotient et le reste.. On a : dividende = quotient x diviseur +

Une enquˆete pr´ealable du service statistique a permis d’estimer qu’au cours d’une ann´ee chaque personne a une chance sur cinq mille environ d’ˆetre victime d’un

Calculer les int´ egrales

— De mˆ eme fa¸ con, c’est courant de parler de « le tenseur t αβ » plutˆ ot que « le tenseur qui a les composantes t αβ ».. — Donc c’est normale d’´ ecrire les r` egles

2 Pour le moment cin´ etique, elle ne s’applique pas telle quelle si le point O est mobile dans

2 La classe Point / le fournisseur doit avoir prévu de recevoir deux valeurs L’exécution d’un programme n’est pas magique non plus:. 1 on peut suivre l’exécution ligne

repos, jette une boule de neige de masse 200 g a la vitesse de 20,0 km/h dans une.

La diagonale [A, C] traverse des carr´ es de cˆ ot´ e unit´ e et d´ elimite ` a l’int´ erieur de certains d’entre eux des petits triangles rectangles (voir l’exemple supra)

Si les fleurs pouvaient parler, elles me diraient leur plaisir de me voir arriver avec, et elles me demanderaient d’utiliser la pomme pour que la pluie soit plus

[r]

Il faut bien comprendre que la 2 e loi de Newton rappel´ee dans le chapitre d’in- troduction ` a la m´ecanique classique appliqu´ee dans notre r´ef´erentiel Oxyz