Vous êtes sur la page 1sur 2

Université d’Aix-Marseille L2 Informatique et Mathématiques - 2017/2018

Algorithmique

TD1 : analyse des algorithmes.


Exercice 1
1. L’algorithme itératif suivant retourne le plus grand élément d’un tableau. Que faut-il mo-
difier pour remplacer la structure Pour par un Tant que ?
Algorithme 1: rechercheMaxIter
entrée : T [1, n] est un tableau d’entiers.
sortie : le plus grand élément de T [1, n].
début
M ax := T [1]
pour i := 2 à n faire
si T [i] > M ax alors
M ax := T [i]
retourner M ax

2. Trouvez un invariant pour cet algorithme et prouvez sa correction.

Exercice 2 Prouvez la correction de l’algorithme récursif suivant :


Algorithme 2: expo
entrée : x est un réel et n est un entier
sortie : xn .
début
si n = 0 alors
retourner 1
si n = 1 ou x = 0 alors
retourner x
si n est pair alors
retourner expo(x ∗ x, n/2)
sinon
retourner x ∗ expo(x ∗ x, (n − 1)/2)

Exercice 3 Montrez que


1. si f (n) = Θ(ln n) alors pour tout b > 1, f (n) = Θ(logb n),
2. n ln n = O(n2 ),
3. n log2 n = Ω(n),
4. n + sin(n) ∼ n.
5. A t-on 2n = Θ(en ) ?
6. A t-on elog2 (n+1) = ω(n) ?

Exercice 4 Quelles sont les classes de complexité des fonctions suivantes :


1. f (n) = 2n3 + 4n2 + 23 ,
2. f (n) = log2 (n2 + 3n − 1),
log2 (n2 +1)
3. f (n) = 2 2 .

1
Exercice 5 Calculez la complexité de la fonction qui calcule le produit de deux matrices carrées
A et B de n lignes et n colonnes.

Exercice 6 Quelle est la complexité de l’algorithme suivant :

Algorithme 3:
début
pour i := 1 à n ∗ n faire
u := i
tant que u > 1 faire
u := u/2

Exercice 7 On reprend l’algorithme 2. Combien de multiplications faut-il effectuer pour calculer


p p
x20 ? pour calculer x2 ? pour calculer x2 −1 ?
Quelle est la complexité de l’algorithme - en terme de nombre de multiplications ?

Exercice 8 Écrivez un algorithme qui prend en entrée une matrice carrée n × n et retourne la
liste des coordonnées des cases dont les valeurs sont à la fois maximales sur leur ligne et minimales
sur leur colonne. Quelle est la complexité de cet algorithme ?

Exercice 9 : Calcul de l’élément majoritaire d’un tableau.


Etant donné un ensemble E de n éléments, on dit qu’un élément e est majoritaire dans E si le
nombre d’occurrences de e est strictement supérieur à n/2.
1. Quel est la complexité d’un algorithme qui teste si un élément e est majoritaire ou non
dans E ?
On cherche maintenant à savoir s’il existe un élément majoritaire, et si oui, à le déterminer.
2. Proposez un algorithme de complexité quadratique.
3. On considère maintenant l’approche suivante, basée sur le principe diviser pour régner :
pour rechercher l’élément majoritaire éventuel dans l’ensemble E, on répartit les n éléments
de E dans deux ensembles (approximativement) de même taille E1 et E2 . Montrez que si
un élément est majoritaire dans E, alors il est majoritaire dans E1 ou dans E2 .
Ecrivez une procédure de calcul correspondant à cette idée. Quelle est sa complexité ?
Une troisième méthode sera proposée au prochain TD.

Exercice 10 (Tiré de Introduction à l’algorithmique, Cormen et al., 2010, Dunod) Remplissez


le tableau ci-dessous en supposant que k ≥ 1,  > 0 et c > 1. Par exemple, dans la première case
libre en haut à gauche, on indiquera OUI si logk2 n = O(n ) et NON sinon.

A B O o Ω ω Θ
logk2 n n
nk cn

n nsin n
2n 2n/2
nlog2 c clog2 n
log2 (n!) log2 (nn )

Vous aimerez peut-être aussi