Vous êtes sur la page 1sur 14

Chapitre 6

Programmation dynamique
6.1 Programmation dynamique et probl` emes doptimisation

La programmation dynamique est une m ethodologie g en erale pour concevoir des algorithmes qui permettent de r esoudre ecacement certains probl` emes doptimisation. Un probl` eme doptimisation admet un grand nombre de solutions. Chaque solution a une certaine valeur, et on veut identier une solution dont la valeur est optimale (minimale ou maximale). Trouver un plus court chemin pour aller dun point ` a un autre dans un r eseau de transport est un probl` eme doptimisation La conception dun algorithme de programmation dynamique se d ecompose en quatre etapes. 1. Caract erisation de la structure dune solution optimale. 2. D enition r ecursive de la valeur de la solution optimale. 3. Calcul ascendant de la valeur de la solution optimale. 4. Construction de la solution optimale ` a partir des informations obtenues a l ` etape pr ec edente. L etape 4 peut etre omise si on a seulement besoin de la valeur de la solution optimale et non de la solution elle m eme. Les sections suivantes d ecrivent lutilisation de la programmation dynamique pour r esoudre en temps polynomial trois probl` emes doptimisation : le calcul dun parcours optimal dans un atelier de montage, le calcul dune cha ne de mulplications matricielles avec un nombre minimum dop erations 71

72

CHAPITRE 6. PROGRAMMATION DYNAMIQUE

scalaires, le calcul dun arbre binaire de recherche optimal. Ensuite, nous mettrons en evidence deux caract eristiques que doit poss eder un probl` eme doptimisation pour que la programmation dynamique soit applicable.

6.2

Ordonnancement optimal dune cha ne de montage

Un constructeur automobile poss` ede un atelier avec deux cha nes de montage comportant chacune n postes de montages. Chaque v ehicule doit passer par les n postes dans lordre. Le constructeur cherche ` a d eterminer quels sont les postes ` a s electionner sur la cha ne 1 et sur la cha ne 2 pour minimiser le d elai de transit dune voiture ` a travers latelier. Les donn ees du probl` eme doptimisation quil doit r esoudre sont les suivantes. Pour i = 1, 2 et j = 1, . . . , n, on note Si,j le j ` eme poste de la cha ne i, ei le temps dentr ee dun v ehicule sur la cha ne i, ai,j le temps de montage pour le poste j sur la cha ne i, ti,j le temps de transfert dun v ehicule de la cha ne i vers lautre cha ne apr` es le poste Si,j et nallement xi le temps de sortie dun v ehicule de la cha ne i (voir Figure 6.1a). Chaque solution de ce probl` eme doptimisation est d enie par le sousensemble de postes de la cha ne 1 utilis es (les postes restant sont choisis dans la cha ne 2). Il y a donc 2n solutions possibles, i.e. le nombre de sousensembles dun ensemble ` a n el ements. Par cons equent, lapproche na ve consistant ` a consid erer tous les chemins possibles est inecace. La programmation dynamique permet de r esoudre ce probl` eme ecacement. La premi` ere etape consiste ` a identier des sous-probl` emes dont les solutions optimales vont nous permettre de reconstituer une solution optimale du probl` eme initial. Les sous-probl` emes ` a consid erer ici consistent ` a calculer un itin eraire optimal jusquau poste Si,j pour i = 1, 2 et j = 1, . . . , n. Par exemple, consid erons un itin eraire optimal jusquau poste S1,j . Si j = 1, il ny a quun seul chemin possible. Pour j = 2, . . . , n, il y a deux possibilit es. Un itin eraire optimal jusqu` a S1,j est ou bien, un itin eraire optimal jusqu` a S1,j 1 suivi du poste S1,j , ou bien, un itin eraire optimal jusqu` a S2,j 1 suivi dun changement de cha ne et du poste S1,j . La deuxi` eme etape consiste ` a d enir la valeur optimale de mani` ere r ecursive a partir des valeurs des solutions optimales des sous-probl` ` emes. Soit fi [j ] le d elai optimal jusqu` a Si,j et f le d elai optimal total. Pour traverser latelier, il faut atteindre ou bien S1,n ou bien S2,n et sortir de latelier. Par

6.2. ORDONNANCEMENT OPTIMAL DUNE CHA INE DE MONTAGE73


S1 , 1
6 S 1, 2 8

S1 , 3
2

S1 , 4
4

S1 , 5
9 2

3 2 1 2 5 1 3

Entree
3 5 2 3 8 4 7 7 3

Sortie

S2 , 1

S2 , 2

S2 , 3
(a)

S2 , 4

S2 , 5

j f1 [j ] f2 [j ]

1 13

5 f = 32
(b)

2 1 1

3 2 2

4 1 2

5 1 1 l = 2

9 17 19 15 22

23 32 29 29

l1 [j ] l2 [j ]

Figure 6.1 Exemple dinstance du probl` eme dordonnacement optimal dune cha ne de montage : (a) les donn ees du probl` eme et (b) les tables de programmation dynamique. cons equent, on a f = min(f1 [n] + x1 , f2 [n] + x2 ). Pour le poste 1 de chaque cha ne, il ny a quun itin eraire possible : f1 [1] = e1 + a1,1 f2 [1] = e2 + a2,1 Pour le poste j = 2, . . . , n de la cha ne 1, il y a deux possibilit es : f1 [j ] = min(f1 [j 1] + a1,j , f2 [j 1] + t2,j 1 + a1,j ), et sym etriquement f2 [j ] = min(f2 [j 1] + a2,j , f1 [j 1] + t1,j 1 + a2,j ). (6.2) (6.1)

Les fi [j ] sont les valeurs des solutions optimales des sous-probl` emes. Pour pouvoir reconstruire les solutions optimales elles-m emes, on d enit li [j ] le num ero de la cha ne (1 ou 2) dont le poste j 1 est utilis e par un chemin

74

CHAPITRE 6. PROGRAMMATION DYNAMIQUE

optimal jusquau poste Si,j pour j = 2, . . . , n, (li [1] nest pas d eni car aucun poste ne vient avant le poste 1). La troisi` eme etape consiste ` a concevoir un algorithme qui calcule en temps polynomial les valeurs fi [j ] des solutions optimales et les informations li [j ] n ecessaires ` a la construction de ces solutions. Lalgorithme suivant fait ce travail en O(n) en utilisant les formules r ecursives (6.1) et (6.2). Il revient a remplir les tables de la Figure 6.1b de la gauche vers la droite. ` Plus-Rapide-Chemin(a, t, e, x, n) 1. f1 [1] e1 + a1,1 2. f2 [1] e2 + a2,1 3. pour j 2 ` a n faire 4. si f1 [j 1] f2 [j 1] + t2,j 1 5. alors f1 [j ] f1 [j 1] + a1,j 6. l1 [ j ] 1 7. sinon f1 [j ] f2 [j 1] + t2,j 1 + a1,j 8. l1 [ j ] 2 9. si f2 [j 1] f1 [j 1] + t1,j 1 10. alors f2 [j ] f2 [j 1] + a2,j 11. l2 [ j ] 2 12. sinon f2 [j ] f1 [j 1] + t1,j 1 + a2,j 13. l2 [ j ] 1 14. si f1 [n] + x1 f2 [n] + x2 15. alors f = f1 [n] + x1 16. l = 1 17. sinon f = f2 [n] + x2 18. l = 2 Finalement, la quatri` eme et derni` ere etape consiste ` a reconstruire une solution optimale en utilisant les informations sauvegard ees ` a l etape 3. La proc edure suivante ache les postes utilis es par une solution optimale par ordre d ecroissant de num ero de poste. Afficher-Postes(l, n) 1. i l 2. acher cha ne i, poste n 3. pour j n jusqu` a2 4. faire i li [j ] 5. acher cha ne i, poste j 1

6.3. CHA INE DE MULTIPLICATIONS MATRICIELLES

75

6.3

Cha ne de multiplications matricielles

On se donne une suite de n matrices A1 , . . . , An et on veut calculer le produit A1 A2 . . . An (6.3) Une fois que lon a parenth es e cette expression de mani` ere ` a supprimer lambigu t e li ee ` a lordre dans lequel les multiplications doivent etre eectu ees, on peut evaluer lexpression (6.3) en utilisant comme routine lalgorithme standard de multiplication de deux matrices. On dit dun produit de matrices quil est compl` etement parenth es e dans les deux cas suivants : cest une matrice isol ee, cest le produit de deux matrices compl` etement parenth es ees. Le produit de matrices est associatif par cons equent quelque soit le parenth esage on obtient le m eme r esultat. Par exemple, si la cha ne de matrices est A1 , A2 , A3 , A4 , le produit A1 A2 A3 A4 peut etre parenth es e de 5 fa cons di erentes : (A1 (A2 (A3 A4 ))), (A1 ((A2 A3 )A4 )), ((A1 A2 )(A3 A4 )), ((A1 (A2 A3 ))A4 ), (((A1 A2 )A3 )A4 ). La fa con dont on parenth` ese une telle cha ne de matrices peut avoir une grande importance sur le nombre dop erations n ecessaires pour eectuer le produit. Si A est une matrice p q et B une matrice q r, la matrice produit est une matrice q r. La complexit e du calcul du produit est domin e par le nombre de multiplications scalaires qui est egal ` a pqr. Pour illustrer les di erences de co uts obtenus en adoptant des parenth esages di erents, consid erons un produit de 3 matrices A1 , A2 , A3 de dimensions respectives 10 100, 100 5 et 5 50. Si on eectue les multiplications dans lordre donn e par le parenth esage ((A1 A2 )A3 ), le nombre dop erations n ecessaires est 10 100 5 = 5000 pour obtenir le produit A1 A2 , qui est une matrice 10 5, plus 10 5 50 = 2500 pour obtenir le produit ((A1 A2 )A3 ), soit 7500 op erations en tout. Si on adopte le parenth esage (A1 (A2 A3 )), le nombre dop erations n ecessaires est 100 5 50 = 25000 pour obtenir le pro-

76

CHAPITRE 6. PROGRAMMATION DYNAMIQUE

duit A2 A3 , qui est une matrice 100 50, plus 10 100 50 = 50000 pour obtenir le produit (A1 (A2 A3 )), soit 75000 op erations en tout. Par cons equent, calculer le produit en accord avec le premier parenth esage est 10 fois plus rapide. Notre probl` eme se formule de la fa con suivante : etant donn e une suite de n matrices A1 , . . . , An , avec pi1 pi la dimension de la matrice Ai , pour i = 1, . . . , n, trouver le parenth` esage du produit A1 A2 . . . An qui minimise le nombre de multiplications scalaires ` a eectuer. Remarque : le nombre de parenth esages di erents est une fonction exponentielle de n. Par cons equent, la strat egie qui consiste ` a enum erer tous les parenth esages est exclue pour de grandes valeurs de n.

6.3.1

Structure dun parenth esage optimal

La premi` ere etape dans une approche de type programmation dynamique consiste ` a identier la structure des solutions optimales. Notons Ai..j la matrice qui r esulte de l evaluation du produit Ai Ai+1 . . . Aj . Un parenth esage optimal de A1 . . . An d ecoupe le produit entre les matrices Ak et Ak+1 pour un certain k compris entre 1 et n 1. Cest-` a-dire que pour un certain k , on calcule dabord le produit A1..k et Ak+1..n , ensuite on multiplie ces produits pour obtenir le produit nal A1..n . Le co ut de ce parenth esage est la somme des co uts du calcul de A1..k et Ak+1..n et du produit de ces deux matrices. Remarquons que le parenth esage de A1..k doit etre lui-m eme un parenth esage optimal de A1 . . . Ak , de m eme le parenth esage de Ak+1..n doit etre optimal. Par cons equent, une solution optimal dun probl` eme de parenth esage contient elle-m eme des solutions optimales de sous-probl` emes de parenth esage. La pr esence de sous-structures optimales dans une solution optimale est lune des caract eristiques des probl` emes pour lesquels la programmation dynamique est applicable.

6.3.2

Une solution r ecursive

La seconde etape dans une approche de type programmation dynamique consiste ` a d enir la valeur de la solution en fonction des solutions optimales de sous-probl` emes. Dans notre cas, un sous-probl` eme consiste ` a d eterminer le

6.3. CHA INE DE MULTIPLICATIONS MATRICIELLES

77

co ut minimal dun parenth esage de Ai . . . Aj pour 1 i j n. Soit m[i, j ] le nombre minimum de multiplications scalaires n ecessaires pour obtenir le produit Ai..j . Le nombre minimum de multiplications scalaires n ecessaires pour obtenir A1..n sera m[1, n]. On peut calculer m[i, j ] r ecursivement de la fa con suivante. Si i = j , la cha ne de matrices se r eduit ` a une seule matrice Ai..i = Ai , aucune op eration nest n ecessaire, et donc m[i, i] = 0 pour i = 1, . . . , n. Pour calculer m[i, j ] quand i < j , on se sert de la structure des solutions optimales que nous avons pr ec edemment mise en evidence. Supposons que la solution optimale du sous-probl` eme d ecoupe le produit Ai . . . Aj entre Ak et Ak+1 avec i k < j . Alors, m[i, j ] est egal au nombre minimum de multiplications scalaires pour obtenir Ai..k et Ak+1..j plus le nombre de multiplications n ecessaires pour effectuer le produit matriciel Ai..k Ak+1..j , cest-` a-dire pi1 pk pj multiplications scalaires, on obtient m[i, j ] = m[i, k ] + m[k + 1, j ] + pi1 pk pj . Cette equation r ecursive suppose que nous connaissions la valeur de k , ce qui nest pas le cas. Il y a seulement j i valeurs possibles pour k : les valeurs i, i + 1, . . . , j 1. Puisque la solution optimale correspond ` a lune de ces valeurs, il sut de les essayer toutes et de garder la meilleure. Par cons equent, notre d enition r ecursive pour le co ut minimum dun parenth` esage de Ai . . . Aj devient m[i, j ] = 0 minik<j {m[i, k ] + m[k + 1, j ] + pi1 pk pj } si i = j, si i < j. (6.4)

Les valeurs m[i, j ] donnent les co uts des solutions optimales des sous-probl` emes. Pour reconstituer une solution optimale a posteriori, nous allons stocker dans s[i, j ] une valeur de k qui minimise m[i, k ] + m[k + 1, j ] + pi1 pk pj , i.e. telle que m[i, j ] = m[i, k ] + m[k + 1, j ] + pi1 pk pj .

6.3.3

Calcul du co ut optimal

Au point o` u nous en sommes, on peut ecrire facilement un programme r ecursif bas e sur la relation de r ecurrence (6.4) pour calculer le co ut de la solution optimale. Cependant, cet algorithme na pas une meilleure complexit e quun algorithme enum eratif brutal.

78

CHAPITRE 6. PROGRAMMATION DYNAMIQUE

En fait, on peut remarquer quil existe relativement peu de sous-probl` emes : un pour chaque choix de i et j qui satisfasse 1 i j n, cest-` a-dire ` a peu pr` es n2 (en fait, n(n +1)/2+ n exactement). Un algorithme r ecursif peut rencontrer plusieurs fois chacun de ces sous-probl` emes dans larbre des appels r ecursifs. Cette propri et e est la deuxi` eme caract eristique des probl` emes pour lesquels la programmation dynamique est applicable. Au lieu de calculer la solution de la r ecurrence (6.4) r ecursivement, nous allons eectuer la troisi` eme etape la troisi` eme etape dune approche de type programmation dynamique en calculant le co ut optimal de fa con ascendante. Lalgorithme suivant remplit la table en commen cant par r esoudre le probl` eme de parenth esage sur les cha nes de matrices les plus courtes et en continuant par ordre croissant de longueur de cha nes. L equation de r ecurrence (6.4) montre que lon peut calculer le co ut optimal pour une cha ne en connaissant les co uts optimaux pour les cha nes de longueurs inf erieures.

Ordre-Cha ne-Matrices(p) 1. n longueur(p) 2. pour i 1 ` an 3. faire m[i, i] 0 4. pour l 2 ` an 5. faire pour i 1 ` a nl+1 6. j i+l1 7. m[i, j ] 8. pour k i ` a j1 9. faire q m[i, k ] + m[k + 1, j ] + pi1 pk pj 10. si q < m[i, j ] 11. alors m[i, j ] q 12. s[i, j ] k 13. retourner m et s

Cet algorithme est en O(n3 ). En eet, il contient trois boucles imbriqu ees dans lesquelles chaque index peut prendre au plus n valeurs. De plus, le traitement est eectu e` a lint erieur de ces boucles se fait en temps constant. Par cons equent, cet algorithme est beaucoup plus ecace que la m ethode exponentielle qui consiste ` a examiner chaque parenth esage.

6.4. ARBRE BINAIRE DE RECHERCHE OPTIMAL

79

6.3.4

Construction dune solution optimale

Lalgorithme que nous avons d ecrit pr ec edemment donne le nombre minimum de multiplications scalaires n ecessaires pour calculer la cha ne de produits matriciels mais ne montre pas directement comment multiplier ces matrices en utilisant ce nombre minimum de multiplications. La derni` ere etape dans notre approche de type programmation dynamique consiste ` a reconstruire une solution optimale ` a partir des informations que nous avons sauvegard ees ` a l etape pr ec edente. Nous allons utiliser la table s[ , ] pour d eterminer la meilleure fa con de multiplier les matrices. Chaque entr ee s[i, j ] de cette table contient la valeur k telle quun parenth esage optimal s epare le produit Ai Ai+1 . . . Aj entre Ak et Ak+1 . Par cons equent, nous savons que la derni` ere multiplication matricielle dans la solution optimale que nous voulons reconstruire est A1..s[1,n] As[1,n]+1..n . Les multiplications pr ec edentes peuvent etre reconstitu ees r ecursivement de la m eme fa con. La proc edure suivante ache le parenth esage optimal du produit matriciel Ai..j etant donn ee la table s[ , ] calcul ee ` a l etape pr ec edente et les indices i et j. Pour calculer le parenth esage sagecomplet, le premier appel de cette proc edure sera Affichage-Parenthe Optimal(s, 1, n). sage-Optimal(s, i, j ) Affichage-Parenthe 1. si i = j 2. alors Acher Ai 3. sinon Acher ( sage-Optimal(s, i, s[i, j ]) 4. Affichage-Parenthe sage-Optimal(s, s[i, j ] + 1, j ) 5. Affichage-Parenthe 6. Acher )

6.4

Arbre binaire de recherche optimal

Le probl` eme doptimisation que nous allons consid erer dans cette section consiste etant donn e un ensemble ordonn e de clefs {a1 , a2 , . . . , an } et p1 , p2 , . . . , pn les fr equences de recherche de ces clefs, ` a calculer un arbre binaire de recherche qui permettent de minimiser le temps de recherche de ces clefs. En remarquant que le temps n ecessaire pour rechercher une clef est proportionnel ` a sa profondeur dans larbre binaire de recherche, on d eduit que larbre binaire de recherche que nous souhaitons identier doit minimiser

80 la quantit e suivante

CHAPITRE 6. PROGRAMMATION DYNAMIQUE

co ut(T ) =

n i=1

pi (profT (ai ) + 1)

o` u profT (ai ) est la profondeur de la clef ai dans larbre T . clefs fr equences a1 20 a2 40 a3 12 a4 16 a5 12

co ut(T1) = 60 + 36 + 80 + 32 + 12 = 220 a3 12 a4 16 2 = 32 a5 12 3 = 36

co ut(T2) = 36 + 36 + 40 + 32 + 40 = 184 T2 20 2 = 40 a1 a3 12 3 = 36 a2 40 a4 16 2 = 32 a5 12 3 = 36

T1 40 2 = 80 a2 a1 20 3 = 60

Figure 6.2 Un exemple dinstance du probl` eme de larbre binaire de recherche optimal avec deux arbres et leurs co uts respectifs. Pour commencer, nous allons mettre en evidence la pr esence de sousstructures optimales dans un arbre binaire de recherche (ABR) optimal. Pour cela, nous allons introduire les notations suivantes : Ti,j un ABR optimal pour les clefs ai+1 , . . . , aj ; wi,j = pi+1 + . . . + pj la somme des fr equences des clefs de larbre Ti,j ; ri,j la racine de larbre Ti,j ; ci,j le co ut de larbre Ti,j ; Ti,i larbre vide (ci,i = 0). Consid erons un ABR optimal Ti,j et notons k lentier compris entre i + 1 et j tel que la racine ri,j de larbre Ti,j soit ak . Le sous-arbre gauche de la racine ak est constitu e des clefs ai+1 , . . . , ak1 . De plus, ce sous-arbre T doit n ecessairement etre un ABR optimal sur cet ensemble de clefs car sil existait un meilleur ABR T sur cet ensemble de clefs alors en rempla cant T par T dans Ti,j on obtiendrait un arbre meilleur que Ti,j , ce qui contredirait loptimalit e de Ti,j . Le m eme raisonnement sapplique au sous-arbre droit et montre que larbre optimal Ti,j est constitu e dune racine ak dont le ls

6.4. ARBRE BINAIRE DE RECHERCHE OPTIMAL

81

gauche est la racine dun ABR optimal Ti,k1 et le ls droit est la racine dun ABR optimal Tk,j (voir Figure 6.4).
ak

Ti,k1

Tk,j

Figure 6.3 Sous-structures optimales dans un ABR optimal Voyons maintenant comment donner une d enition r ecursive du co ut dun ABR optimal. Si ak est la racine de Tij , on a : ci,j = (ci,k1 + wi,k1 ) + pk + (ck,j + wk,j ) = (wi,k1 + pk + wk,j ) + ci,k1 + ck,j = wi,j + ci,k1 + ck,j

La premi` ere ligne sexplique par le fait que lorsque lon place larbre Ti,k1 sous la racine ak , la profondeur de chacun de ces noeuds augmente de un, donc globalement le co ut ci,k1 de ce sous-arbre augmente de la somme des fr equences des clefs quil contient, cest-` a-dire wi,k1 . Idem pour la contribution du sous-arbre droit Tk,j qui augmente de wk,j . Finalement, il reste ` a compter la contribution de ak qui est egale ` a pk . La deuxi` eme ligne est juste une r e ecriture de la premi` ere et la troisi` eme utilise simplement la d enition de wi,j . Pour nir, on remarque que la valeur de k ` a utiliser est celle qui minimise le co ut ci,k1 + ck,j , ce qui donne la d enition r ecursive suivante : ci,j = wi,j +
k{i+1,...,j }

min

(ci,k1 + ck,j )

Lalgorithme suivant consiste ` a r esoudre les sous-probl` emes sur des sousensembles de clefs de longueurs l croissantes, en utilisant la formule r ecursive ci-dessus : ABR-Optimal(p, n) 1. Pour i 0 ` a n faire

82

CHAPITRE 6. PROGRAMMATION DYNAMIQUE

2. wi,i 0 3. ci,i 0 4. Pour l 1 ` a n faire 5. Pour i 0 a ` n l faire 6. j i+l 7. wi,j wi,j 1 + pj 8. Soit m la valeur de k telle que ci,k1 + ck,j soit minimum 9. ci,j = wi,j + ci,m1 + cm,j 10. ri,j m Lalgorithme pr ec edent permet dobtenir le co ut dun ABR optimal et sauvegarde les informations n ecessaires pour le construire gr ace ` a lalgorithme suivant. Const-ABR-opt(i, j ) 1. p Cr eerNoeud(ri,j , NULL, NULL) 2. Si i < ri,j 1 alors 3. pls-gauche = Const-ABR-opt(i, ri,j 1) 4. Si ri,j < j alors 5. pls-droit = Const-ABR-opt(ri,j , j )

6.5

Applicabilit e de la programmation dynamique

Dans cette section, nous pr esentons deux caract eristiques que doit avoir un probl` eme doptimisation pour que la programmation dynamique soit applicable : la pr esence de sous-structures optimales et le recouvrement des sous-probl` emes.

6.5.1

Sous-structures optimales

La premi` ere etape dans une approche de type programmation dynamique consiste ` a identier la structure des solutions optimales. On dit que le probl` eme pr esente une sous-structure optimale si une solution optimale contient des solutions optimales de sous-probl` emes. C etait le cas dans les trois probl` emes pr ec edents. Par exemple, chaque parenth esage optimal de A1 . . . An etait obtenu comme le produit du parenth esage optimal de A1 . . . Ak et de Ak+1 . . . An pour un certain k et que chaque ABR optimal peut etre obtenu en attachant ` a une racine bien choisie

DE LA PROGRAMMATION DYNAMIQUE 6.5. APPLICABILITE deux ABR optimaux pour des sous-probl` emes.

83

6.5.2

Recouvrement des sous-probl` emes

Pour que la programmation dynamique soit applicable, il faut egalement que lespace des sous-probl` emes soit susament petit. Dans le sens o` u un algorithme r ecursif qui r esoudrait le probl` eme rencontrerait les m emes sous-probl` emes plusieurs fois, au lieu de g en erer toujours de nouveaux sousprobl` emes. Pour que la programmation dynamique permette de concevoir un algorithme polynomial, il faut bien s ur que le nombre de sous-probl` emes a consid ` erer soit polynomial.

84

CHAPITRE 6. PROGRAMMATION DYNAMIQUE