Télécharger la version PDF du document

publicité
Travaux dirigés no 4
MPSI Option Informatique
Pour chacun des exercices, cherchez à mettre en œuvre une programmation dynamique 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.
1
Somme de termes consécutifs
[VIS773]
Soit a[1..n] une suite de n nombres, éventuellement négatifs.
Une sous-suite est une suite de termes ai consé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).
2
On 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 n hôtels
aux miles a1 < a2 < · · · < an , où chaque a j est 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 x miles, une pénalité de (200 − x)2 est 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 où vous
devez vous arrêter.
3
MacQuick
[UET386]
MacQuick envisage d’ouvrir une série de restaurants le long de la nationale 7. Les
n sites 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 i est qi > 0.
• Deux restaurants doivent être séparés d’au moins d kilomètres.
Proposer un algorithme efficace qui calcule le profit total maximal espéré en respectant les contraintes imposées.
4
Plus 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 k pour lequel il existe deux indices
i et j tels que x[i..(i + k − 1)] = y[ j..( j + k − 1)].
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]
5
Multiplication de matrices
[ADE615]
Supposons que nous ayons à calculer le produit de quatre matrices, A, B, C et
D de dimensions respectives 50 × 20, 20 × 1, 1 × 10 et 10 × 100. Nous devons
pour cela effectuer une succession de multiplications de deux matrices. La multiplication de matrices n’est pas commutative (en général A × B 6= 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 diffé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 n matrices.
(a) Établir une relation de récurrence satisfaite par P(n).
(b) Montrer que P(n) = Ω(2n ).
2. Pour multiplier une matrice p × q par une matrice q × r il 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 n matrices A1 , A2 , . . . , An de dimensions (p0 ,p1 ), (p1 ,p2 ), . . . ,(pn−1 ,pn ) dont nous souhaitons calculer le produit
A1 × A2 × · · · × A n .
(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 .
U
6
Vous pouvez écrire la fonction en OCaml si vous le préférez.
Le 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, p kilos de marchandise (on suppose p entier). Or, dans cette bijouterie se trouve n objets différents, chacun en quantité illimitée. Chaque objet x j à un poids q j et 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
7
Espaces 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 n mots de longueurs
a1 ,a2 , . . . ,an mesurées en nombre de caractères. On souhaite composer ce parapraphe de manière équilibrée sur un certain nombre de lignes contenant chacune
exactement M caractè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 M caractè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 espaces 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ù i ¶ j, 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, j nécessaires pour compléter la
ligne est égal au nombre de caractères de
€ la ligne
Š (M ), moins le nombre de caj
ractères nécessaires pour écrire les mots Σk=i ak , moins le nombre de caractères
j
nécessaires pour séparer les mots ( j −i), autrement dit : ci, j = M −Σk=i ak −( j −i).
Le nombre ci, j de 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’espacement supplémentaires.
Donner un algorithme de programmation dynamique permettant de composer de
manière équilibrée un paragraphe de n mots de longueurs a1 ,a2 , . . . ,an données,
et analyser la complexité de l’algorithme.
1. En typographie, « espace » est un mot féminin, comme vous le confirmera le premier dictionnaire 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
Téléchargement