Vous êtes sur la page 1sur 5

Examen d’algorithmique et complexit´e Corrig´e

6 juillet 2010

Exercice 1: Questions de cours

Question 1: Comparer en utilisant les notations de Landau n log 2 n et n 2 . Justifier.

R´eponse: Posons f (n) = n log 2 n et g(n) = n 2 .

lim

n→∞

f(n)

g(n)

=

=

lim

n→∞

lim

n→∞

n log 2 n

n

2

log 2 n

n

Comme on l’a d´ej`a vu en cours, on peut directement dire que la limite vaut 0. Pour

ˆetre exhaustif, il faut utiliser la r`egle de l’Hˆopital sur f 1 (n) = log 2 n et g 1 (n) = n, que

l’on peut appliquer car lim

n f 1 (n) = lim

n g 1 (n) = , et on a alors :

lim

n→∞

f(n)

g(n)

= lim

n→∞

= lim

n→∞

= lim

=

n→∞

0

f 1 (n)

g 1 (n)

f 1 (n)

g 1 (n)

1

n

Donc, d’apr`es la d´efinition vue en cours, f (n) = o(g(n)).

Question 2: Comparer en utilisant les notations de Landau n et 2 log 2 n . Justifier.

R´eponse: Quelques rappels math´ematiques :

a b = e b ln(a)

– log b (a) = ln(a)

ln(b)

dont on peut en d´eduire que 2 log 2 n = n. La relation ´etait d’ailleurs ´ecrite `a la question 6 de l’exercice 2 ! Il devient alors trivial de dire que n = Θ(2 log 2 n ).

1

fonction F1(n) pour i 1 `a n faire Afficher(Bonjour)

Question 3: Ecrire la complexit´e exacte F1 puis l’´ecrire sous forme d’une notation de Landau usuelle.

R´eponse: La complexit´e r´eside dans la boucle pour et l’on prend donc comme op´eration ´el´ementaire la fonction Afficher, que l’on suppose unitaire (ne d´ependant pas de n). Il reste alors `a compter combien de fois la fonction s’effectue, c’est-`a-dire le nombre d’it´eration de la boucle.

T(n)

=

n

1

i=1

= n

= Θ(n)

= O(n)

fonction F2(n) pour i 1 `a n faire si i%2 = 0 alors Afficher(Bonjour) sinon pour j 1 `a n faire Afficher(Bonjour)

% modulo

Question 4: Ecrire la complexit´e exacte F2 puis l’´ecrire sous forme d’une notation de Landau usuelle.

R´eponse: Ici, le temps d’ex´ecution d´epend de la valeur de n ce qui fait que n n’est pas la taille de l’entr´ee mais bien l’entr´ee elle mˆeme ! Il ne faut pas confondre avec, par exemple, les algorithmes de tri sur les tableaux dont le temps d’ex´ecution d´epend de la taille du tableau (le n qui apparaˆıt dans les complexit´es), mais peut aussi d´ependre de la position des ´el´ements (2 entr´ees diff´erentes pour une mˆeme taille n), auquel cas on ´etudie T min (n), T max (n) et T moy (n). On prend ici aussi comme op´eration ´el´ementaire la fonction Afficher. La condition dans le si teste si i est pair ce qui arrive une fois sur 2.

2

T(n)

n

1 si i est pair

j=1 n 1 si i est impair

1

n/2

n


+

i=1 j=1

1

pour les i impairs

n

si n est impair

=

i=1

n/2


=

i=1

pour les i pairs = n + n ∗ n 2 2 + 2 =
pour les i pairs
=
n + n ∗ n
2
2 +
2
=
Θ( n
2 )

= Θ(n 2 )

n


+

j=1

1

n ∗ n 2 2 + 2 = Θ( n 2 ) = Θ( n 2

si n est impair

fonction F3(n) pour i 1 `a n faire pour j 1 `a i faire Afficher(Bonjour)

F3( n )

2

Question 5: Ecrire la complexit´e exacte F3 puis l’´ecrire sous forme d’une notation de Landau usuelle.

R´eponse: Ici aussi on utilise la fonction Afficher comme op´eration ´el´ementaire.

T(n)

=

=

=

n i

1

i=1 j=1

les 2 boucles pour imbriqu´ees

n

i + T( n )

2

i=1

n(n + 1)

2

+ T( n )

2

+

T( n )

2

l’appel r´ecursif

Θ(n 2 ) + T( n )

=

2

On peut alors utiliser le th´eor`eme vu en cours avec a = 1, b = 2 et k = 2 qui nous permet de conclure que T (n) = Θ(n 2 ).

Question 6: Construire l’AVL `a partir de l’ensemble {3, 15, 12, 1, 7, 2, 16, 4}.

R´eponse:

3

3 15 12 12 3 15 12 3 15 1 7 2 3 1 12
3
15
12
12
3 15
12
3 15
1
7
2
3
1
12
2
7
15
3
1
12
2
7
15
4
16

Lors On rajoute du rajout 3, 15 de et 12, 12. on niveau détecte de un 3 problème (hauteur au du

droit: hauteur sous arbre 2). du gauche: sous arbre 0, On effectue une double

rétablir rotation la gauche propriété pour d'AVL.

On Lors détecte niveau sous rajoute du arbre de un rajout 12 problème 1, gauche: (hauteur 7 de et 2, 2. 3, on au du

hauteur droit: 1). du sous arbre

On droite effectue pour rétablir une rotation la

propriété d'AVL.

On rajoute 16 et 4.

une rotation la propriété d'AVL. On rajoute 16 et 4. Fig. 1 – Un graphe non

Fig. 1 – Un graphe non orient´e.

Question 7: Donner la liste des sommets visit´es par un parcours en largeur du graphe repr´esent´e figure 1 en partant de a. On traitera les arˆetes par ordre de sommet lexicographique (on traitera (a, b) avant (a, h) par exemple).

4

R´eponse: Il suffit d’appliquer pas `a pas l’algorithme vu en cours.

– on part de a et on enfile (a, b) puis (a, h)

– on d´efile (a, b), on d´ecouvre b puis on enfile (b, a) et (b, d)

– on d´efile (a, h), on d´ecouvre h puis on enfile (h, a), (h, d), (h, e), (h, f ), (h, g) et (h, i)

– on d´efile (b, a), a est connu donc on marque l’´etiquette retour

– et ainsi de suite pour obtenir au final la liste suivante : a, b, h, d, e, f , g, i, c

Question 8: Donner la liste des sommets visit´es par un parcours en profondeur du graphe repr´esent´e figure 1 en partant de a. On traitera les arˆetes par ordre de sommet lexicographique.

R´eponse: Il suffit d’appliquer pas `a pas l’algorithme vu en cours.

– on part de a et on empile (a, b) puis (a, h)

– on d´epile (a, h), on d´ecouvre h puis on empile (h, a), (h, d), (h, e), (h, f ), (h, g) et (h, i)

– on d´epile (h, i), on d´ecouvre i puis on empile (i, d) et (i, h)

– on d´epile (i, h), h est connu donc on marque l’´etiquette retour

– et ainsi de suite pour obtenir au final la liste suivante : a, h, i, d, e, b, g, f , c

Question 9: Donner en justifiant le nombre maximal de feuilles que peut poss´eder un arbre binaire en fonction de sa hauteur h.

R´eponse: Le nombre maximal de feuille est obtenu lorsque tous les noeuds poss`edent exactement 2 fils. A chaque niveau i, on a 2 i noeuds. En particulier, on a 2 h feuilles.

Question 10: Donner en justifiant la hauteur minimale d’un arbre binaire en fonction de son nombre de noeuds n.

R´eponse: Chaque niveau d’un arbre binaire contient au maximum 2 i noeuds (voir question pr´ec´edente). Un arbre de hauteur h contient donc au maximum

n max =

h

i=0

2 i = 2 h+1 1. A partir de l`a, on calcule que h min = log 2 (n + 1) 1 .

5