Vous êtes sur la page 1sur 7

Faculté d’Electronique et d’Informatique - Département d’informatique USTHB 2013-2014

Module : Algorithmique avancé et complexité


1ère année Master (R.S.D.) N. BENSAOU et C. IGHILAZA

Contrôle

Exercice 1 (10 points)

n
1. Prouver que ∑ 3 est en O(3n ¿
k

k=0

2. Classer les fonctions suivantes par ordre croissant de leur valeur asymptotique:
2
log(n3 ¿ , 2n , n3 log n, √ n ! , 2 √ n
3. Donnez la complexité des programmes suivants. Vous donnerez une borne supérieure
avec un O dans un premier temps, puis vous affinerez votre calcul en utilisant la notation Θ.

Algorithme 1 Algorithme 2
1 pour i 1 à n faire 1 pour i  5 à n-5 faire
2 pour j  1 à i faire 2 pour j  i-5 à i+5 faire
3 xx+3 3 x x+3

Algorithme 3 Algorithme 4
1 pour i  1 à n faire 1 for (i = n; i>1; i = i/2)
2 pour j  1 à i faire 2 for (j=0; j<i; j++)
3 pour k  1 à j faire 3 x = x+a
4 x  x+a

Bon courage
Faculté d’Electronique et d’Informatique - Département d’informatique USTHB 2013-2014
Module : Algorithmique avancé et complexité
1ère année Master (R.S.D.) N. BENSAOU et C. IGHILAZA

Contrôle

Exercice 1 (10 points)

n
1. Prouver que ∑ 3 est en O(3n ¿
k

k=0

Preuve par récurrence :


0
Pour n=0 on a ∑ 3 = 30 =1≈ est en O ( 30 ) =O ( 1 ) vrai pour n=0
k

k=0

On suppose que la complexité est vraie pour n et on montre qu’elle est vraie pour n+1
n +1
On montre que ∑ 3 est en O(3 )
k n+1

k=0
n +1 n

∑ 3k=∑ 3 k +3n+1 est en O ( 3 n+3n+1 ) =O ( max ( 3n , 3n+1 ) )=O(3 n+1)


k=0 k=0

Ou bien
n
0 ≤ ∑ 3k ≤ c . 3 n
k=0

Cas de base : pour n=0 on a :

0
0≤∑ 3 ≤ c .3 vraie pour c≥1
k 0

k=0

On suppose l’inégalité est vraie pour l’ordre n et on montre qu’elle est vraie pour n+1

n+1 n
0 ≤ ∑ 3k =∑ 3k +3n +1 ≤ c .3 n+3 n+1
k=0 k=0

n n+1
Or c .3 + 3 =c . 3
n +1
( 13 + c1 ) ≤c . 3 n+1 1 1 3
si + ≤ 1 ce qui est vrai si c ≥ C . Q . F . D
3 c 2

2. Classer les fonctions suivantes par ordre croissant de leur valeur asymptotique:
2
log(n3 ¿ , 2n , n3 log n, √ n ! , 2 √ n
2
Classement : log(n3 ¿ ⊆ 2 √ n ⊆ n3 log n ⊆ √ n ! ⊆ 2n

3. Donnez la complexité des programmes suivants. Vous donnerez une borne supérieure
avec un O dans un premier temps, puis vous affinerez votre calcul en utilisant la notation Θ.

Algorithme 1 1 pour i 1 à n faire


Faculté d’Electronique et d’Informatique - Département d’informatique USTHB 2013-2014
Module : Algorithmique avancé et complexité
1ère année Master (R.S.D.) N. BENSAOU et C. IGHILAZA

2 pour j  1 à i faire 1 pour i  5 à n-5 faire


3 xx+3 2 pour j  i-5 à i+5 faire
Algorithme 2 3 x x+3

Algorithme 3 Algorithme 4
1 pour i  1 à n faire 1 for (i = n; i>1; i = i/2)
2 pour j  1 à i faire 2 for (j=0; j<i; j++)
3 pour k  1 à j faire 3 x = x+a
4 x  x+a

1. O(n2) n est une borne sup du nombre de tours de boucles


n
n (n+1)
∑ i= 2
2
↝O(n )
i=1
2. O(n) la boucle interne a toujours un nombre constant d'opérations (11 itérations). Les
variations de longueur sur la boucle externe étant constantes, on les ignore.

3. O(n3) car les boucles internes font au plus n itérations


n i j n i n
i(i+1) 1
∑ ∑ ∑ ¿ ∑ ∑ j=∑ 2
= ¿¿¿¿¿¿
2
i=1 j=1 k=1 i=1 j=1 i=1

4. n log n une fois qu’on sait que diviser le travail à chaque it ération introduit du log dans les co ûts.
Mais en fait, ce code est dans Θ(n) car la boucle interne s ’arr ête à i et pas à n. Donc, si on compte les
itérations faites par j dedans on trouve :1+2+4+8+…+n.
Autrement dit si on pose n=2k,
k
k 2 k k

∑ ∑ 1= ∑ 2 p=∑ 2 p −20=2k +1−2=2 n−2 ϵθ(n)


p=1 j=1 p =1 p=0
U.S.T.H.B – 01-12-2012 Complexité
Département Informatique Master M1- RSD
N. Bensaou - C. Ighilaza

Nom Prénom Matricule

Contrôle - durée 30 mn

Exercice 1.-

a. Donner l’ordre de grandeur de l’expression suivante :

2 2
n log (n)+n +log (n)
n+ 1

Justifiez votre réponse.

b. Si f(n) est une fonction en O(n), l’affirmation suivante est-elle vraie ?


2f(n) = O(2n)
Justifiez votre réponse.

Exercice 2.- Soit T un tableau [1..n] d’entiers dans un ordre quelconque.


a. Donnez un algorithme naïf, qui supprime les répétitions de ce tableau (sans
utiliser un deuxième tableau).

Exemple :
A: 4 3 7 3 5 4 2 3

L’algorithme doit obtenir le tableau :

A: 4 3 7 5 2

b. A quoi correspondent le meilleur cas et le pire cas.


c. Quelle est donc sa complexité ?
d. Donnez un algorithme linéaire, qui étant donné A un tableau [1..n] d’entiers triés
dans l’ordre croissant, supprime les répétitions.
Scanned by CamScanner
Scanned by CamScanner
Scanned by CamScanner

Vous aimerez peut-être aussi