Universit´e Paris Sud L3 - Algorithmique et complexit´e - Ann´ee 2007-2008
TD no7
TD : Programmation Dynamique
Exercice 1 [Suite de Fibonacci]
La suite de Fibonacci est d´efinie par la r´ecurence suivante :
Fi=
0 si i= 0
1 si i= 1
Fi−1+Fi−2sinon
(1)
1. Ecrivez de mani`ere r´ecursive cette fonction.
2. Dessinez l’arbre d’´ex´ecution de cette fonction pour i= 6
3. Donnez la forme r´ecurente de la compl´exit´e de cette fonction en nombre d’addition. Qu’en pensez
vous ?
4. Ecrivez maintenant cette fonction de mani`ere it´erative en utilisant le principe de la programma-
tion dynamique.
5. Calculez la compl´exit´e de cette nouvelle fonction.
Exercice 2 [Cp
n]
Les coefficients binomiaux Cp
nsont des quantit´es tr`es utiles qui interviennent dans des calculs
alg´ebriques, en combinatoire, probabilit´e, ... Ils sont d´efinis par la formule suivante :
0≤p≤n
Cn
n=C0
n= 1
Cp
n=Cp−1
n−1+Cp
n−1
(2)
1. ´
Ecrivez une fonction r´ecursive c(n, p) qui calcule Cp
n
2. Dessinez l’arbre des appels r´ecursifs pour c(5,2) et calculez les nombre d’additions.
3. Dessinez le triangle de Pascal pour n= 5 et montrez qu’on peut calculer une ligne en se contetant
de stocker dans un tableau certains des calculs pr´ec´edents.
4. Ecrivez une fonction qui calcul les Cp
navec un coˆut polynomial en utilisant la programmation
dynamique.
Exercice 3 [Distance d’´edition / distance de Levenshtein]
Nous allons nous int´eresser au probl`eme de la distance d’´edition (cf poly 4 diapos 17 et 18).
1. Donnez un algorithme it´eratif qui prend en entr´ee deux chaˆınes de caract`eres et qui renvoie un
entier correspondant `a la distance d’´edition entre ces mots.
2. Donnez la compl´exit´e de votre algorithme.
1