Travaux dirigés no4
MPSI Option Informatique
Pour chacun des exercices, cherchez à mettre en œuvre une programmation dy-
namique en suivant la démarche suivante :
recherchez une structure de solutions optimales ;
établissez une relation de récurrence de la valeur optimale,
rédigez un algorithme en pseudo-code,
étudiez la complexité en temps de l’algorithme,
implémentez l’algorithme en OCaml.
1Somme de termes consécutifs [VIS773]
Soit a[1..n]une suite de nnombres, éventuellement négatifs.
Une sous-suite est une suite de termes aiconsécutifs.
Proposer un algorithme qui donne en temps linéaire une sous-suite de a[1..n]
dont la somme des termes soit maximale (la somme d’une sous-suite vide est 0).
2On the road again [BBX876]
Vous vous apprêtez à effectuer un long trajet en voiture aux États-Unis d’Amérique.
Vous empruntez la route 66 à partir du mile 0. Le long de la route il y a nhôtels
aux miles a1<a2<··· <an, où chaque ajest mesuré depuis le point de départ.
Ceux sont les seuls hôtels où vous pouvez dormir le soir. Votre voyage se termine
à l’hôtel situé à la distance an.
Vous souhaitez idéalement effectuer 200 miles par jour. Si lors d’une journée vous
voyagez xmiles, une pénalité de (200 x)2est attribuée à cette journée. Vous
devez planifier votre trajet de façon à minimiser le total des pénalités.
Proposez un algorithme efficace qui détermine la suite optimale des hôtels vous
devez vous arrêter.
3MacQuick [UET386]
MacQuick envisage d’ouvrir une série de restaurants le long de la nationale 7. Les
nsites potentiels sont situés aux kilomètres a1<a2<··· <an. Les contraintes
sont les suivantes :
Sur chaque site, MacQuick ne peut ouvrir qu’un seul restaurant. Le profit
espéré pour le site iest qi>0.
Deux restaurants doivent être séparés d’au moins dkilomètres.
Proposer un algorithme efficace qui calcule le profit total maximal espéré en res-
pectant les contraintes imposées.
4Plus longue sous-chaîne commune [ITB121]
Étant donné deux chaînes x[1..n]et y[1..m], on souhaite trouver leur plus longue
sous-chaîne commune c’est-à-dire le plus grand kpour lequel il existe deux indices
iet jtels que x[i..(i+k1)] = y[j..(j+k1)].
Proposez un algorithme qui résout ce problème en un temps Θ(mn).
http://docs.dichotomies.fr/2014/informatique/optinfo1/travaux-diriges/td4/
Alain Le Boulch, Denis Pinsard – Mis à jour le lundi 08 juin 2015
[DIP726]
5Multiplication de matrices [ADE615]
Supposons que nous ayons à calculer le produit de quatre matrices, A,B,Cet
Dde dimensions respectives 50 ×20, 20 ×1, 1 ×10 et 10 ×100. Nous devons
pour cela effectuer une succession de multiplications de deux matrices. La multi-
plication de matrices n’est pas commutative (en général A×B6=B×A), mais elle
est associative, ce qui signifie par exemple que A×(B×C) = (A×B)×C. Nous
pouvons ainsi calculer le produit des quatre matrices de plusieurs manières dif-
férentes, selon la façon dont nous plaçons les parenthèses. Une question se pose
donc : existe-t-il des manières plus efficaces que d’autres ?
1. Soit P(n)le nombre de manières d’effectuer le produit de nmatrices.
(a) Établir une relation de récurrence satisfaite par P(n).
(b) Montrer que P(n) = (2n).
2. Pour multiplier une matrice p×qpar une matrice q×ril faut effectuer pqr
multiplications scalaires (c’est une approximation mais elle nous suffit ici).
Pour chacune des manières de parenthéser le produit A×B×C×D, déterminer
le coût du calcul en nombre de multiplications.
3. Généralisons maintenant le problème. Soit nmatrices A1,A2,...,Ande dimen-
sions (p0,p1),(p1,p2),. .. ,(pn1,pn)dont nous souhaitons calculer le produit
A1×A2× · · · × An.
(a) Mettre en évidence une structure de solutions optimales.
(b) Établir une relation de récurrence pour le coût minimal de multiplication.
(c) Écrire en pseudo-code la fonction miniMult(p[0..n]) qui donne le coût
minimal de la multiplication A1×A2× · · · × An.
Vous pouvez écrire la fonction en OCaml si vous le préférez.
6Le sac-à-dos [KWW211]
Lors du cambriolage d’une bijouterie, le voleur s’aperçoit qu’il ne peut pas tout
emporter dans son sac-à-dos. Son sac peut suporter au maximum, pkilos de mar-
chandise (on suppose pentier). Or, dans cette bijouterie se trouve nobjets diffé-
rents, chacun en quantité illimitée. Chaque objet xjà un poids qjet une valeur
vj.
Quelle combinaison d’objets, transportable dans le sac, sera la plus rentable pour
notre voleur ?
http://docs.dichotomies.fr/2014/informatique/optinfo1/travaux-diriges/td4/
Alain Le Boulch, Denis Pinsard – Mis à jour le lundi 08 juin 2015
[DIP726] Page 2
7Espaces typographiques [ZST745]
On considère le problème de la composition équilibrée d’un paragraphe dans un
traitement de texte. Le texte d’entrée est une séquence de nmots de longueurs
a1,a2,...,anmesurées en nombre de caractères. On souhaite composer ce para-
praphe de manière équilibrée sur un certain nombre de lignes contenant chacune
exactement Mcaractères. Chaque ligne comportera un certain nombre de mots,
les espaces nécessaires à séparer les mots les uns des autres (une espace 1) et des
caractères d’espacement supplémentaires complétant la ligne pour qu’elle contienne
exactement Mcaractères.
U n e x e m p l e t r i v i a l
La figure ci-dessus présente un exemple de ligne contenant trois mots, deux es-
paces nécessaires à séparer ces trois mots, et six caractères d’espacement supplé-
mentaires.
Si une ligne donnée contient les mots de iàj, où ij, et étant donné que nous
avons besoin d’une espace unique pour séparer deux mots consécutifs, le nombre
de caractères d’espacement supplémentaires ci,jnécessaires pour compléter la
ligne est égal au nombre de caractères de la ligne (M), moins le nombre de ca-
ractères nécessaires pour écrire les mots Σj
k=iak, moins le nombre de caractères
nécessaires pour séparer les mots (ji), autrement dit : ci,j=MΣj
k=iak(ji).
Le nombre ci,jde caractères d’espacement supplémentaires doit bien évidemment
être positif ou nul.
Notre critère d’« équilibre » est le suivant : on souhaite minimiser la somme, sur
toutes les lignes hormis la dernière, des cubes des nombres de caractères d’espace-
ment supplémentaires.
Donner un algorithme de programmation dynamique permettant de composer de
manière équilibrée un paragraphe de nmots de longueurs a1,a2,...,andonnées,
et analyser la complexité de l’algorithme.
1. En typographie, « espace » est un mot féminin, comme vous le confirmera le premier diction-
naire venu.
http://docs.dichotomies.fr/2014/informatique/optinfo1/travaux-diriges/td4/
Alain Le Boulch, Denis Pinsard – Mis à jour le lundi 08 juin 2015
[DIP726] Page 3
1 / 3 100%