Universit´e d’Aix-Marseille L2 Informatique et Math´ematiques - 2016/2017
Algorithmique
TD6 : programmation dynamique.
Exercice 1Sous-tableau de somme maximale
On consid`ere un tableau contenant des entiers relatifs dont au moins un est positif. On
recherche le sous-tableau, constitu´e de cases successives, dont la somme des ´el´ements est
maximale.
Par exemple, le tableau
-3 1 -1 4 -1 2 1 -5 4
contient un sous-tableau de somme 6 :
4 -1 2 1
Consid´erons le cas g´en´eral d’un tableau T[1, n] `a n´el´ements.
1. Une premi`ere id´ee consiste `a ´enum´erer tous les sous-tableaux de Tet `a s´electionner
celui dont la somme est maximale. ´
Ecrivez l’algorithme correspondant. On pourra
utiliser
— une variable dvariant entre 1 et n, pour marquer le d´ebut du sous-tableau
courant,
une variable f, variant entre det n, pour marquer la fin du sous-tableau courant,
une variable spour calculer la somme des ´el´ements T[d] + . . . +T[f],
des variables dmax, fmax et smax pour m´emoriser le meilleur sous-tableau explor´e.
2. Quelle est la complexit´e de votre algorithme dans le pire des cas ?
3. Une autre id´ee consiste `a utiliser une technique de programmation dynamique (voir
la figure 1 pour une illustration de cette technique sur le tableau pr´ec´edent). Pour
cela, on consid`ere la classe de probl`emes suivante : pour tout entier m[1, n],
rechercher le sous-tableau de T[1, m]se terminant en met de somme maximale.
On notera smax[m] cette somme maximale et dmax [m] l’indice du d´ebut de l’intervalle
correspondant.
(a) Montrez que si l’on sait r´esoudre ce probl`eme pour l’indice m, on peut facilement
trouver une solution pour l’indice m+ 1. Exprimez smax [m+ 1] et dmax[m+ 1]
en fonction de smax[m] et dmax [m] et T[m+ 1].
(b) Montrez que si l’on connaˆıt smax[m] et dmax [m] pour tout m, on peut facilement
en d´eduire dmax, fmax et smax.
(c) ´
Ecrivez l’algorithme correspondant. Quel est sa complexit´e ?
1
m1 2 3 4 5 6 7 8 9
T[m] -3 1 -1 4 -1 2 1 -5 4
smax[m] -3 1 0 4 3 5 6 1 5
dmax[m] 1 2 2 4 4 4 4 4 4
Figure 1 – R´esolution du probl`eme du sous-tableau maximal par une algorithme de pro-
grammation dynamique.
Exercice 2Rendre la monnaie
On consid`ere un syst`eme de monnaie bas´e sur des pi`eces de valeurs v1= 1 < v2<· · · <
vn.´
Etant donn´ee une somme S, on cherche une fa¸con de composer Savec un nombre de
pi`eces minimum.
Formalisation : on cherche des entiers k1, . . . , kntels que
S=
n
X
i=1
kiviet
n
X
i=1
kisoit minimale.
1. L’approche gloutonne consiste `a utiliser prioritairement les pi`eces de plus grande
valeur. Montrez que cette approche peut ne pas ˆetre optimale. Indication : cherchez
un syst`eme de 3 valeurs pour lequel l’algorithme n’est pas optimal.
2. Proposez un algorithme utilisant la programmation dynamique permettant de r´esoudre
le probl`eme.
3. Quel est sa complexit´e ? Est-il polynomial ?
2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !