Académique Documents
Professionnel Documents
Culture Documents
Exercice 1
Déterminer de deux façons différentes les complexités respectives aux équations de récurrence
suivantes :
a. T(n) = 4T(n/2) + n ; T(1) = 1
b. T(n) = 2T(n/2) + n ; T(1) = 1
c. T(n) = 3T(n/4) + n ; T(1) = 1
d. T(n) = 3T(n/2) + n2 ; T(1) = 1
Exercice 2
1. Quelle est la complexité de l’algorithme de recherche séquentielle d’un élément dans un
tableau à n éléments ? justifier.
Exercice 3
Concevoir un algorithme récursif m-aire (m>= 2) calculant le maximum d’une liste de taille n.
Déterminer sa complexité. Comparer avec l’algorithme itératif classique. Conclure.
Exercice 4
Soit E une liste de n éléments rangés dans un tableau numéroté de 1 à n. On suppose que la
seule opération qu’on sait effectuer sur les éléments est de vérifier si deux éléments sont égaux
ou non. On dit qu’un élément x ∈ E est majoritaire si l’ensemble Ex = {y ∈ E | y = x} a
strictement plus de n/2 éléments. On supposera que n est une puissance de 2.
1. Écrire une fonction itérative permettant de retourner l’élément majoritaire s’il existe. Quelle
est la complexité́ de cet algorithme ?
2. Donner une fonction récursive MajoritaireRec(i; j) selon la stratégie « Diviser pour Régner »
basé sur un découpage de E en deux listes de même taille. Il est recommandé de passer par la
fonction Occurrence(E,x, i, j) qui calcule le nombre d'occurrences de x dans le sous-tableau
E[i..j]. Calculez sa complexité.
Soit T(n) le nombre d’opérations effectuées par l’algorithme MajoritaireRec(i; j) sur une
donnée de taille n.
Complétez la formule suivante ::: si :::::
T(n) =
::::: sinon