Title: CSI 3505 Programmation Dynamique
1CSI 3505Programmation Dynamique
Problème du sac à dos (pg 175)
Applications de ce problème scheduling
(ordonnancement), allocation de lespace dans un
disque,
2- Objets a apporter dans un sac de capacité W
- Chaque objet a un cout de transport (poid)
- Lapport de chaque objet entraine un gain
(associé à lobjet)
Déterminer lensemble dobjets quil est possible
de prendre dans le sac et qui maximise les gains.
3Ensemble dobjets
- function qui donne poid dun objet
- function qui donne gain dun objet
4Formulation Mathématique
- Le problème est de trouver
5Solution dynamique
On commence par remarquer
Pourquoi ?
Quest ce que ca veut dire ?
Supposons que
Supposons que
Quest ce que ca veut dire ?
6si
Alors
Tout dépend donc de si on utilise
7Supposons Kon ait
Et Kon cherche
8- Cas 1
- Pi,K Pi-1, K-wi gi
- (impossible si le poids de lobjet i, wi gt K)
- Cas 2.
- Pi,K Pi-1,K
- Base
- Si i 0 ou K 0, alors Pi,K 0
9disons 10 objets, poid max 11kg
objets poid 1 2 3 4 5 6 7 8 9 10 11
(1) (1) 0 0 0 0 12 (1) 12 (1) 12 (1) 12 (1) 12 (1) 12 (1) 12 (1)
(1,2) (1,2) 0 0 0 11 (2) 12 (1) 12 (1) 12 (1) 12 (1) 23 (1,2) 23 (1,2) 23 (1,2)
(1,2,3) (1,2,3) 0 0 0 11 (2) 12 (1) 12 (1) 12 (1) 12 (1) 23 (1,2) 23 (1,2) 23 (1,2)
(1,2,3,4) (1,2,3,4) 2 (4) 2 (4) 2 (4) 11
(1,2,3,4,5) (1,2,3,4,5)
(1,2,3,4,5,6) (1,2,3,4,5,6)
1 5kg 12
2 4kg 11
3 8kg 5
4 1kg 2
10Le problème est de calculer Pn,W
- Propriété récursive du problème.
- Pi,K gains maximum si
- le choix est parmi les objets 1, , i, et
- le poids maximale ne doit pas dépasser K.
Pi,K
11CSI 3505Programmation Dynamique
- maxgiPi-1,K-wi, Pi-1,K) wi ? K
- Pi,K
- Pi-1,K wi gt K
- Pour igt0, kgt0.
Exemple
Objets 1 2 3 4 5
gi 10 5 5 10 3
wi 5 5 2 2 2
12CSI 3505Programmation Dynamique
k i 0 1 2 3 4 5 6 7 8 9 10
0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 10 10 10 10 10 10
2 0 0 0 0 0 10 10 10 10 10 15
3 0 0 5 5 5 10 10 15 15 15 15
4 0 0 10 10 15 15 15 20 20 25 25
5 0 0 10 10 15 15 18 20 20 25 25
13Taille du problème n Opérations nombre
d'entrées dans la table Cas pire
?(n W)
Dépend de W, la capacité maximale du sac !