1
Licence Informatique L3 année 2008-2009
Parcours : Informatique fondamentale
TD 4-5-6 : Suites récurrentes et complexité
3 types d’exercice : les exercices * sont absolument à faire en TD, ils peuvent être complétés par les exercices
sans mention. Les exercices (maison) peuvent être faits sans problème dès lors que les autres ont été compris.
Exercice 1* : Soit
{
}
k
aa ,...,
1
=Σ un alphabet à k éléments.
On rappelle que les arbres binaires BIN étiquetés par
Σ
sont définis inductivement par :
-
φ
est un arbre binaire
- si
.),,(,,, BINbbxalorsBINbBINbx
dgdg
Σ
Définition : La profondeur p(b) d’un arbre binaire est définie par :
- 0)( =
φ
p
-
(
)
{
}
)(),(sup1),,(
dgdg
bpbpbbxp +
=
Etablir une formule de récurrence pour :
1) le nombre u
n
d’arbres binaires U
n
de profondeur n (en fonction de u
n-1
).
2) le nombre v
n
d’arbres binaires AB
n
de profondeur = n
(en fonction de v
n-1
et des (u
i
) i n).
NB : On ne demande pas de calculer u
n
et v
n
.
Exercice 2 : On considère l’alphabet
{
}
tbsaA ,,,
=
a (resp. s, b, t) est d’arité 0 (resp. 1,2,3).
L’ensemble T des arbres étiquetés sur l’alphabet A est défini inductivement par :
a)
Ta (arbre réduit à une feuille)
b)
Tttt
321
,, alors : - Tts
),(
1
- Tttb
),,(
21
- Ttttt
),,,(
321
La profondeur d’un tel arbre se définit inductivement par :
a)
1)( =ap
b)
-
()
)(1),(
11
tptsp
+
=
-
() { }
)(),(sup1),,(
2121
tptpttbp +=
-
(){ }
)(),(),(sup1),,,(
321321
tptptpttttp +
=
Soit k
n
le nombre d’arbres de profondeur n.
1)
Donner des exemples d’arbres de profondeur 1,2 et 3. Calculer k
1
, k
2
et k
3
.
2)
En déduire une relation de récurrence pour k
n
.
NB : On ne demande pas de calculer k
n
.
2
Exercice 3* : On trace n cercles qui se coupent 2 à 2 sans points tangents ni points triples.
Soit r
n
le nombre de régions du plan ainsi définies.
1)
Calculer r
1
, r
2
et r
3
.
2)
En déduire )1(2
1
+
=
nrr
nn
, n > 1.
3)
Calculer r
n
.
Exercice 4* : Algorithme pour le calcul du produit de deux matrices de taille NxN, avec
N=2
n
.
(méthode de Strassen)
1-
Comprendre les calculs suivants dans le cas N=2
Si
++
++
=
dhcfdgce
bhafbgae
hg
fe
x
dc
ba
on peut poser :
edcx
egdx
hfax
hbax
fecax
hedax
hgdbx
)(
)(
)(
)(
))((
))((
))((
7
6
5
4
3
2
1
+=
=
=
+=
+=
++=
+=
,
le produit des deux matrices s’écrit alors
++
+++
753276
546421
xxxxxx
xxxxxx
2-
Soit N=2
n
, A et B deux matrices NxN
On pose :
=
2221
1211
AA
AA
A, idem pour B. On peut alors faire le produit de deux matrices
de manière récursive à partir des cinq fonctions de base :
Découper_en_4(A), algorithme qui fournit à partir d’une matrice A de taille NxN, les 4
matrices A
11
, A
12
, A
21
, A
22
de taille N/2 x N/2
Recompose (A
11
,A
12
, A
21
,A
22
), algorithme qui recompose une matrice NxN à partir de 4
matrices N/2 x N/2
AddMat(A,B,N) et SubMat(A,B,N) font respectivement l’addition et la soustraction de
deux matrices NxN
ProdMat(A,B,N) fait le produit de deux matrices d’ordre NxN avec N=2
n
, de la manière
suivante :
3
fonction
ProdMat(A,B,N)
début
si
(N=1)
alors
ProdMat := A x B ;
sinon
début
Découper_en_4(A) ;
Découper_en_4(B) ;
X1 := ProdMat(SubMat(A
12
,A
22
,N/2),AddMat(B
21
,B
22
,N/2),N/2) ;
X2 := ProdMat(AddMat(A
11
,A
22
,N/2), AddMat(B
11
,B
22
,N/2),N/2) ;
X7 :=…
C
11
:=…
C
12
:= AddMat(X4,X5,N/2) ;
C
21
:=…
C
22
:=
ProdMat := Recompose(C
11
,C
12
, C
21
,C
22
) ;
fin
finsi
fin
2.1
Compléter l’algorithme ProdMat.
2.2
Combien d’appels à ProdMat(…,N/2) et à AddMat(…,N/2) fait ProdMat(…,N) ? (On
suppose qu’un appel à AddMat(…,N/2) est équivalent à SubMat(…,N/2))
2.3
Trouver la relation de récurrence qui permet de définir le nombre de multiplications
effectuées pour calculer le produit de deux matrices NxN avec N= 2
n
ainsi que le nombre
d’additions.
2.4
Résoudre ces relations.
2.5
Retrouver le nombre de multiplications et additions effectuées lorsque l’algorithme utilisé
est l’algorithme classique (vu en cours).
2.6
Comparer les deux résultats
Exercice 5* : Résoudre la relation
=
+=
1
0
13:1,
n
kkn
UUnn
(en fonction de n et U
0
).
Exercice 6* : Résoudre Fibonacci :
nnn
FFF
+
=
++ 12
pour n 0 avec F
0
= 0 et F
1
= 1.
(Ces nombres apparaissent dans le calcul de la complexité de l’algorithme d’Euclide : en effet
pgcd (F
n
,F
n
-1) correspond au pire des cas, le nombre d’appel de l’algorithme pgcd est égal
alors à n)
Exercice 7 (maison) : Trouver les solutions de
21
43
+
=
nnn
UUU pour n 2 avec U
0
= 0 et
U
1
= 1.
Exercice 8 (maison) : Trouver les solutions de
321
485
+
=
nnnn
UUUU pour n 3
avec U
0
= 0, U
1
= 1 et U
2
= 2.
4
Exercice 9* :
{}
ba,=Σ
.
+
Σ
B
.
B définie par :
BbawBw
BabwBw
BbBa
,
.
1)
Ecrire 6 éléments de B.
2)
Prouver que Bw
|w| impair (longueur impaire).
La réciproque est-elle vraie ?
3)
U
n
= card {w / Bw et |w| = n}.
a.
Calculer U
1
, U
2
, U
3
et U
4.
b.
Donner la relation de récurrence et résoudre.
Exercice 10* :
{}
dcba ,,,=Σ .
{
}
21
*
21
*
,/ abwwavecwwwwL =ΣΣ=
= {
/
*
Σw
w n’a pas de facteur ab}
1, nn
, on pose
n
n
LL Σ= I et
nn
Lu = avec
n
Σ
= {mots de longueur n sur Σ}.
1)
Calculer L
1
, L
2
, u
1
et u
2
.
2)
Donner une condition nécessaire et suffisante pour que w = xw’ avec x Σet w
n
L.
3)
Exprimer
n
Len fonction de
1
n
Let
2
n
L. En déduire que
21
4
=
nnn
uuu .
4)
Calculer u
n
.
Exercice 11 : Soit
{}
.1,0
=
Σ On interprète un mot f de
*
Σ
comme la représentation binaire
d’un entier. Par exemple, 101 représente 5, 1101 représente 13.
Soient
{
}
,2,1,0,]3[/.1
*
=Σ= ififL
i
en d’autres termes,
{
ffL
i
/.1
*
Σ= commence par 1 et fi
modulo 3
}
, i = 0,1,2.
Pour tout n 1, on pose :
n
n
n
n
n
n
Lw
Lv
Lu
Σ=
Σ=
Σ=
2
1
0
1)
Calculer u
1
, v
1
, w
1
et u
2
, v
2
, w
2
2)
Si
i
Lf à quel ensemble appartient le mot f0 ?
A quel ensemble appartient le mot f1 ?
En déduire que :
nnn
nnn
nnn
vww
wuv
vuu
+=
+=
+=
+
+
+
1
1
1
.
3)
Calculer
nnn
wvu ,, avec :
a.
La méthode du polynôme caractéristique.
b.
La méthode matricielle.
5
Exercice 12 : Algorithme du pgcd (Recherche du plus grand commun diviseur)
Rappel de l’algorithme
Procedure
pgcd (entier : a, entier : b , var c :entier)
début
si
(b = 0)
alors
c := a ;
sinon
c := pgcd(b,a%b) ;
finsi
fin
(a%b représente le reste de la division euclidienne de a par b)
1- Soit a = n ; montrer que le nombre d’appels de la fonction pour calculer le pgcd de a et b
(b<a) est majoré par les termes de la suite A
n
, vérifiant :
+=
=
2
0
2/
0
nn
AA
A
2- Déterminer A
n
.
Exercice 13* : Algorithme de calcul de la nième puissance de x
Procedure Exp( x : long, n : entier, var y : long)
début
si (n = 0) alors y :=1 ;
sinon
début
Exp(x,n/2,y) ;
si (n%2 = 0) alors y := y * y ;
sinon y := y * y * x ;
finsi
fin
finsi
fin
1- Trouver la relation de récurrence qui donne le nombre de multiplications réalisées
pour calculer x
n
, notée E(n).
2- Après avoir écrit n en base 2, n > 0, c'est-à-dire que
1,22
2
0
1
+=
=
tbn
t
i
i
i
t
, écrire
E(n) en fonction des (b
i
)
i
.
3- En déduire la complexité au pire, dans le meilleur des cas et en moyenne.
4- Comparer avec l’algorithme classique.
1 / 6 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 !