You are on page 1of 14

Chapitre 6

Programmation dynamique
6.1 Programmation dynamique et probl`mes dope timisation

La programmation dynamique est une mthodologie gnrale pour concee e e voir des algorithmes qui permettent de rsoudre ecacement certains probl`mes e e doptimisation. Un probl`me doptimisation admet un grand nombre de soe lutions. 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 ` un autre dans un rseau de transa e port est un probl`me doptimisation e La conception dun algorithme de programmation dynamique se dcompose e en quatre tapes. e 1. Caractrisation de la structure dune solution optimale. e 2. Dnition rcursive de la valeur de la solution optimale. e e 3. Calcul ascendant de la valeur de la solution optimale. 4. Construction de la solution optimale ` partir des informations obtenues a a e ` ltape prcdente. e e Ltape 4 peut tre omise si on a seulement besoin de la valeur de la solution e e optimale et non de la solution elle mme. e Les sections suivantes dcrivent lutilisation de la programmation dynae mique pour rsoudre en temps polynomial trois probl`mes doptimisation : e e le calcul dun parcours optimal dans un atelier de montage, le calcul dune cha de mulplications matricielles avec un nombre minimum doprations ne e 71

72

CHAPITRE 6. PROGRAMMATION DYNAMIQUE

scalaires, le calcul dun arbre binaire de recherche optimal. Ensuite, nous mettrons en vidence deux caractristiques que doit possder un probl`me e e e e doptimisation pour que la programmation dynamique soit applicable.

6.2

Ordonnancement optimal dune cha de monne tage

Un constructeur automobile poss`de un atelier avec deux cha e nes de montage comportant chacune n postes de montages. Chaque vhicule doit e passer par les n postes dans lordre. Le constructeur cherche ` dterminer a e quels sont les postes ` slectionner sur la cha 1 et sur la cha 2 pour a e ne ne minimiser le dlai de transit dune voiture ` travers latelier. Les donnes du e a e probl`me doptimisation quil doit rsoudre sont les suivantes. Pour i = 1, 2 e e et j = 1, . . . , n, on note Si,j le j`me poste de la cha i, ei le temps dentre e ne e dun vhicule sur la cha i, ai,j le temps de montage pour le poste j sur e ne la cha i, ti,j le temps de transfert dun vhicule de la cha i vers lautre ne e ne cha apr`s le poste Si,j et nallement xi le temps de sortie dun vhicule ne e e de la cha i (voir Figure 6.1a). ne Chaque solution de ce probl`me doptimisation est dnie par le souse e ensemble de postes de la cha 1 utiliss (les postes restant sont choisis ne e dans la cha 2). Il y a donc 2n solutions possibles, i.e. le nombre de sousne ensembles dun ensemble ` n lments. Par consquent, lapproche na a ee e ve consistant ` considrer tous les chemins possibles est inecace. La programa e mation dynamique permet de rsoudre ce probl`me ecacement. e e La premi`re tape consiste ` identier des sous-probl`mes dont les solue e a e tions optimales vont nous permettre de reconstituer une solution optimale du probl`me initial. Les sous-probl`mes ` considrer ici consistent ` calculer e e a e a un itinraire optimal jusquau poste Si,j pour i = 1, 2 et j = 1, . . . , n. Par e exemple, considrons un itinraire optimal jusquau poste S1,j . Si j = 1, il e e ny a quun seul chemin possible. Pour j = 2, . . . , n, il y a deux possibilits. e Un itinraire optimal jusqu` S1,j est ou bien, un itinraire optimal jusqu` e a e a S1,j1 suivi du poste S1,j , ou bien, un itinraire optimal jusqu` S2,j1 suivi e a dun changement de cha et du poste S1,j . ne La deuxi`me tape consiste ` dnir la valeur optimale de mani`re rcursive e e a e e e a ` partir des valeurs des solutions optimales des sous-probl`mes. Soit fi [j] le e dlai optimal jusqu` Si,j et f le dlai optimal total. Pour traverser latee a e lier, 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 S1,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`me dordonnacement optimal e dune cha de montage : (a) les donnes du probl`me et (b) les tables de ne e e programmation dynamique. consquent, on a e f = min(f1 [n] + x1 , f2 [n] + x2 ). Pour le poste 1 de chaque cha ne, il ny a quun itinraire possible : e f1 [1] = e1 + a1,1 f2 [1] = e2 + a2,1 Pour le poste j = 2, . . . , n de la cha 1, il y a deux possibilits : ne e f1 [j] = min(f1 [j 1] + a1,j , f2 [j 1] + t2,j1 + a1,j ), et symtriquement e f2 [j] = min(f2 [j 1] + a2,j , f1 [j 1] + t1,j1 + a2,j ). (6.2) (6.1)

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

74

CHAPITRE 6. PROGRAMMATION DYNAMIQUE

optimal jusquau poste Si,j pour j = 2, . . . , n, (li [1] nest pas dni car aucun e poste ne vient avant le poste 1). La troisi`me tape consiste ` concevoir un algorithme qui calcule en e e a temps polynomial les valeurs fi [j] des solutions optimales et les informations li [j] ncessaires ` la construction de ces solutions. Lalgorithme suivant fait e a ce travail en O(n) en utilisant les formules rcursives (6.1) et (6.2). Il revient e 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 ` n faire a 4. si f1 [j 1] f2 [j 1] + t2,j1 5. alors f1 [j] f1 [j 1] + a1,j 6. l1 [j] 1 7. sinon f1 [j] f2 [j 1] + t2,j1 + a1,j 8. l1 [j] 2 9. si f2 [j 1] f1 [j 1] + t1,j1 10. alors f2 [j] f2 [j 1] + a2,j 11. l2 [j] 2 12. sinon f2 [j] f1 [j 1] + t1,j1 + 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`me et derni`re tape consiste ` reconstruire une e e e a solution optimale en utilisant les informations sauvegardes ` ltape 3. La e a e procdure suivante ache les postes utiliss par une solution optimale par e e ordre dcroissant de numro de poste. e e Afficher-Postes(l, n) 1. i l 2. acher cha ne i, poste n 3. pour j n jusqu` 2 a 4. faire i li [j] 5. acher cha ne i, poste j 1

6.3. CHA INE DE MULTIPLICATIONS MATRICIELLES

75

6.3

Cha de multiplications matricielles ne

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 parenths cette expression de mani`re ` supprimer lamee e a bigu e lie ` lordre dans lequel les multiplications doivent tre eectues, t e a e e on peut valuer lexpression (6.3) en utilisant comme routine lalgorithme e standard de multiplication de deux matrices. On dit dun produit de matrices quil est compl`tement parenths dans e e e les deux cas suivants : cest une matrice isole, e cest le produit de deux matrices compl`tement parenthses. e ee Le produit de matrices est associatif par consquent quelque soit le pae renthsage on obtient le mme rsultat. Par exemple, si la cha de matrices e e e ne est A1 , A2 , A3 , A4 , le produit A1 A2 A3 A4 peut tre parenths de 5 faons e ee c direntes : e (A1 (A2 (A3 A4 ))), (A1 ((A2 A3 )A4 )), ((A1 A2 )(A3 A4 )), ((A1 (A2 A3 ))A4 ), (((A1 A2 )A3 )A4 ). La faon dont on parenth`se une telle cha de matrices peut avoir une c e ne grande importance sur le nombre doprations ncessaires pour eectuer le e e produit. Si A est une matrice p q et B une matrice q r, la matrice produit est une matrice q r. La complexit du calcul du produit est domin par le e e nombre de multiplications scalaires qui est gal ` pqr. e a Pour illustrer les dirences de cots obtenus en adoptant des parenthsages e u e dirents, considrons un produit de 3 matrices A1 , A2 , A3 de dimensions e e respectives 10 100, 100 5 et 5 50. Si on eectue les multiplications dans lordre donn par le parenthsage ((A1 A2 )A3 ), le nombre doprations e e e ncessaires est 10 100 5 = 5000 pour obtenir le produit A1 A2 , qui est une e matrice 10 5, plus 10 5 50 = 2500 pour obtenir le produit ((A1 A2 )A3 ), soit 7500 oprations en tout. Si on adopte le parenthsage (A1 (A2 A3 )), le e e nombre doprations ncessaires est 100550 = 25000 pour obtenir le proe e

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 oprations en tout. Par consquent, e e calculer le produit en accord avec le premier parenthsage est 10 fois plus e rapide. Notre probl`me se formule de la faon suivante : tant donn une suite e c e e de n matrices A1 , . . . , An , avec pi1 pi la dimension de la matrice Ai , pour i = 1, . . . , n, trouver le parenth`sage du produit A1 A2 . . . An qui minimise e le nombre de multiplications scalaires ` eectuer. a Remarque : le nombre de parenthsages dirents est une fonction e e exponentielle de n. Par consquent, la stratgie qui consiste ` numrer tous e e ae e les parenthsages est exclue pour de grandes valeurs de n. e

6.3.1

Structure dun parenthsage optimal e

La premi`re tape dans une approche de type programmation dynamique e e consiste ` identier la structure des solutions optimales. a Notons Ai..j la matrice qui rsulte de lvaluation du produit Ai Ai+1 . . . Aj . e e Un parenthsage optimal de A1 . . . An dcoupe le produit entre les matrices e e Ak et Ak+1 pour un certain k compris entre 1 et n 1. Cest-`-dire que a 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 cot de ce pau renthsage est la somme des cots du calcul de A1..k et Ak+1..n et du produit e u de ces deux matrices. Remarquons que le parenthsage de A1..k doit tre lui-mme un pae e e renthsage optimal de A1 . . . Ak , de mme le parenthsage de Ak+1..n doit e e e tre optimal. Par consquent, une solution optimal dun probl`me de pae e e renthsage contient elle-mme des solutions optimales de sous-probl`mes de e e e parenthsage. La prsence de sous-structures optimales dans une solution e e optimale est lune des caractristiques des probl`mes pour lesquels la proe e grammation dynamique est applicable.

6.3.2

Une solution rcursive e

La seconde tape dans une approche de type programmation dynamique e consiste ` dnir la valeur de la solution en fonction des solutions optimales a e de sous-probl`mes. Dans notre cas, un sous-probl`me consiste ` dterminer le e e a e

6.3. CHA INE DE MULTIPLICATIONS MATRICIELLES

77

cot minimal dun parenthsage de Ai . . . Aj pour 1 i j n. Soit m[i, j] u e le nombre minimum de multiplications scalaires ncessaires pour obtenir le e produit Ai..j . Le nombre minimum de multiplications scalaires ncessaires e pour obtenir A1..n sera m[1, n]. On peut calculer m[i, j] rcursivement de la faon suivante. Si i = j, la e c cha de matrices se rduit ` une seule matrice Ai..i = Ai , aucune opration ne e a e nest ncessaire, et donc m[i, i] = 0 pour i = 1, . . . , n. Pour calculer m[i, j] e quand i < j, on se sert de la structure des solutions optimales que nous avons prcdemment mise en vidence. Supposons que la solution optimale du e e e sous-probl`me dcoupe le produit Ai . . . Aj entre Ak et Ak+1 avec i k < j. e e Alors, m[i, j] est gal au nombre minimum de multiplications scalaires pour e obtenir Ai..k et Ak+1..j plus le nombre de multiplications ncessaires pour efe fectuer le produit matriciel Ai..k Ak+1..j , cest-`-dire pi1 pk pj multiplications a scalaires, on obtient m[i, j] = m[i, k] + m[k + 1, j] + pi1 pk pj . Cette quation rcursive suppose que nous connaissions la valeur de k, e e 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 consquent, notre dnition rcursive pour le cot minimum dun pae e e u renth`sage de Ai . . . Aj devient e 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 cots des solutions optimales des sous-probl`mes. u e 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 t optimal u

Au point o` nous en sommes, on peut crire facilement un programme u e rcursif bas sur la relation de rcurrence (6.4) pour calculer le cot de la e e e u solution optimale. Cependant, cet algorithme na pas une meilleure complexit quun algorithme numratif brutal. e e e

78

CHAPITRE 6. PROGRAMMATION DYNAMIQUE

En fait, on peut remarquer quil existe relativement peu de sous-probl`mes : e un pour chaque choix de i et j qui satisfasse 1 i j n, cest-`-dire ` a a peu pr`s n2 (en fait, n(n+1)/2+n exactement). Un algorithme rcursif peut e e rencontrer plusieurs fois chacun de ces sous-probl`mes dans larbre des ape pels rcursifs. Cette proprit est la deuxi`me caractristique des probl`mes e ee e e e pour lesquels la programmation dynamique est applicable. Au lieu de calculer la solution de la rcurrence (6.4) rcursivement, nous e e allons eectuer la troisi`me tape la troisi`me tape dune approche de type e e e e programmation dynamique en calculant le cot optimal de faon ascendante. u c Lalgorithme suivant remplit la table en commenant par rsoudre le c e probl`me de parenthsage sur les cha e e nes de matrices les plus courtes et en continuant par ordre croissant de longueur de cha nes. Lquation de e rcurrence (6.4) montre que lon peut calculer le cot optimal pour une e u cha en connaissant les cots optimaux pour les cha ne u nes de longueurs infrieures. e

Ordre-Cha ne-Matrices(p) 1. n longueur(p) 2. pour i 1 ` n a 3. faire m[i, i] 0 4. pour l 2 ` n a 5. faire pour i 1 ` n l + 1 a 6. j i+l1 7. m[i, j] 8. pour k i ` j 1 a 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 imbriques e dans lesquelles chaque index peut prendre au plus n valeurs. De plus, le traitement est eectu ` lintrieur de ces boucles se fait en temps constant. ea e Par consquent, cet algorithme est beaucoup plus ecace que la mthode e e exponentielle qui consiste ` examiner chaque parenthsage. a e

6.4. ARBRE BINAIRE DE RECHERCHE OPTIMAL

79

6.3.4

Construction dune solution optimale

Lalgorithme que nous avons dcrit prcdemment donne le nombre mie e e nimum de multiplications scalaires ncessaires pour calculer la cha de e ne produits matriciels mais ne montre pas directement comment multiplier ces matrices en utilisant ce nombre minimum de multiplications. La derni`re e tape dans notre approche de type programmation dynamique consiste ` e a reconstruire une solution optimale ` partir des informations que nous avons a sauvegardes ` ltape prcdente. e a e e e Nous allons utiliser la table s[ , ] pour dterminer la meilleure faon e c de multiplier les matrices. Chaque entre s[i, j] de cette table contient la e valeur k telle quun parenthsage optimal spare le produit Ai Ai+1 . . . Aj e e entre Ak et Ak+1 . Par consquent, nous savons que la derni`re multiplie e cation matricielle dans la solution optimale que nous voulons reconstruire est A1..s[1,n] As[1,n]+1..n . Les multiplications prcdentes peuvent tre reconse e e titues rcursivement de la mme faon. La procdure suivante ache le pae e e c e renthsage optimal du produit matriciel Ai..j tant donne la table s[ , ] cale e e cule ` ltape prcdente et les indices i et j. Pour calculer le parenthsage e a e e e e complet, le premier appel de cette procdure sera Affichage-Parenthesagee Optimal(s, 1, n). Affichage-Parenthesage-Optimal(s, i, j) 1. si i = j 2. alors Acher Ai 3. sinon Acher ( 4. Affichage-Parenthesage-Optimal(s, i, s[i, j]) 5. Affichage-Parenthesage-Optimal(s, s[i, j] + 1, j) 6. Acher )

6.4

Arbre binaire de recherche optimal

Le probl`me doptimisation que nous allons considrer dans cette sece e tion consiste tant donn un ensemble ordonn de clefs {a1 , a2 , . . . , an } et e e e p1 , p2 , . . . , pn les frquences de recherche de ces clefs, ` calculer un arbre e a binaire de recherche qui permettent de minimiser le temps de recherche de ces clefs. En remarquant que le temps ncessaire pour rechercher une clef est e proportionnel ` sa profondeur dans larbre binaire de recherche, on dduit a e que larbre binaire de recherche que nous souhaitons identier doit minimiser

80 la quantit suivante e

CHAPITRE 6. PROGRAMMATION DYNAMIQUE

cot(T ) = u

n i=1

pi (profT (ai ) + 1)

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

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

cot(T2) = 36 + 36 + 40 + 32 + 40 = 184 u 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`me de larbre binaire de e recherche optimal avec deux arbres et leurs cots respectifs. u Pour commencer, nous allons mettre en vidence la prsence de souse e structures 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 frquences des clefs de larbre Ti,j ; e ri,j la racine de larbre Ti,j ; ci,j le cot de larbre Ti,j ; u Ti,i larbre vide (ci,i = 0). Considrons un ABR optimal Ti,j et notons k lentier compris entre i + 1 e et j tel que la racine ri,j de larbre Ti,j soit ak . Le sous-arbre gauche de la racine ak est constitu des clefs ai+1 , . . . , ak1 . De plus, ce sous-arbre T e doit ncessairement tre un ABR optimal sur cet ensemble de clefs car sil e e existait un meilleur ABR T sur cet ensemble de clefs alors en remplaant T c dans T par T i,j on obtiendrait un arbre meilleur que Ti,j , ce qui contredirait loptimalit de Ti,j . Le mme raisonnement sapplique au sous-arbre droit e e et montre que larbre optimal Ti,j est constitu dune racine ak dont le ls e

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 dnition rcursive du cot e e u 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`re ligne sexplique par le fait que lorsque lon place larbre e Ti,k1 sous la racine ak , la profondeur de chacun de ces noeuds augmente de un, donc globalement le cot ci,k1 de ce sous-arbre augmente de la u somme des frquences des clefs quil contient, cest-`-dire wi,k1 . Idem pour e a la contribution du sous-arbre droit Tk,j qui augmente de wk,j . Finalement, il reste ` compter la contribution de ak qui est gale ` pk . La deuxi`me ligne a e a e est juste une rcriture de la premi`re et la troisi`me utilise simplement la ee e e dnition de wi,j . e Pour nir, on remarque que la valeur de k ` utiliser est celle qui minimise a le cot ci,k1 + ck,j , ce qui donne la dnition rcursive suivante : u e e ci,j = wi,j +
k{i+1,...,j}

min

(ci,k1 + ck,j )

Lalgorithme suivant consiste ` rsoudre les sous-probl`mes sur des sousa e e ensembles de clefs de longueurs l croissantes, en utilisant la formule rcursive e ci-dessus : ABR-Optimal(p, n) 1. Pour i 0 ` n faire a

82

CHAPITRE 6. PROGRAMMATION DYNAMIQUE

2. wi,i 0 3. ci,i 0 4. Pour l 1 ` n faire a 5. Pour i 0 a n l faire ` 6. j i+l 7. wi,j wi,j1 + 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 prcdent permet dobtenir le cot dun ABR optimal et e e u sauvegarde les informations ncessaires pour le construire grce ` lalgoe a a rithme suivant. Const-ABR-opt(i, j) 1. p CrerNoeud(ri,j , NULL, NULL) e 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 de la programmation dynamique e

Dans cette section, nous prsentons deux caractristiques que doit avoir e e un probl`me doptimisation pour que la programmation dynamique soit ape plicable : la prsence de sous-structures optimales et le recouvrement des e sous-probl`mes. e

6.5.1

Sous-structures optimales

La premi`re tape dans une approche de type programmation dynae e mique consiste ` identier la structure des solutions optimales. On dit que a le probl`me prsente une sous-structure optimale si une solution optimale e e contient des solutions optimales de sous-probl`mes. e Ctait le cas dans les trois probl`mes prcdents. Par exemple, chaque e e e e parenthsage optimal de A1 . . . An tait obtenu comme le produit du pae e renthsage optimal de A1 . . . Ak et de Ak+1 . . . An pour un certain k et que e chaque ABR optimal peut tre obtenu en attachant ` une racine bien choisie e a

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

83

6.5.2

Recouvrement des sous-probl`mes e

Pour que la programmation dynamique soit applicable, il faut galement e que lespace des sous-probl`mes soit susament petit. Dans le sens o` e u un algorithme rcursif qui rsoudrait le probl`me rencontrerait les mmes e e e e sous-probl`mes plusieurs fois, au lieu de gnrer toujours de nouveaux souse e e probl`mes. Pour que la programmation dynamique permette de concevoir e un algorithme polynomial, il faut bien sr que le nombre de sous-probl`mes u e a ` considrer soit polynomial. e

84

CHAPITRE 6. PROGRAMMATION DYNAMIQUE

You might also like