ACFrOgCE4tqNkZD-a8HtlPfOpzEfJVyvZPs1oMyQf1 ev7ZeA6qlmQVTKoSmYOh6EtCTJun34pkleorjPt q2W-9uKbieSOO3JD8-9PB-Q0iX2tRnVtlanvafIdkru6YUh A87oPZC3GG rIvjU3

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 3

École Nationale des Sciences Appliquées

Algorithmique avancée Année 2020 − 2021


Tronc commun Feuille de TD N◦ 2

Complexité des algorithmes

Exercice 1
Prouver que :
1. n2 ∈ O(10−3 n3 ).
2. 17n4 - 13n3 + 7n2 ∈ Θ(n4 ).
3. Si f (n) 6 g(n), pour tout n > 0, alors f (n) + g(n) = O(g(n)).
4. Si f (n) = n log(n) + O(n), alors f (n) = Θ(n log(n)).
5. log(n!) = Θ(n log(n)).

Exercice 2
Soient m et n deux entiers positifs. Calculer la complexité des algorithmes suivants par rapport
au nombre d’itérations effectuées :

Algorithm 1:
begin
i := 1 ; j := 1;
while ((i 6 m) et (j 6 n)) do
i := i + 1;
j := j + 1;
end
end

Algorithm 2:
begin
i := 1 ; j := 1;
while ((i 6 m) ou (j 6 n)) do
i := i + 1;
j := j + 1;
end
end

1
Algorithm 3:
begin
i := 1 ; j := 1;
while ((j 6 n) do
if (i 6 m) then
i := i + 1;
else
j := j + 1;
end
end
end

Algorithm 4:
begin
i := 1 ; j := 1;
while ((j 6 n) do
if (i 6 m) then
i := i + 1;
else
j := j + 1;
i := i + 1;
end
end
end

Exercice 3
Résoudre les équations de récurrences suivantes (trouver une borne asymptotique de la solution
T (n)) :
1. T (n) = 2T (n/2) + n3 .
2. T (n) = 9T (n/10) + n.
3. T (n) = 16T (n/4) + n2 .

4. T (n) = 2T (n/4) + n.
5. T (n) = T (n − 1) + n.

6. T (n) = T ( n) + 1 (utiliser le changement de variable m = log(n)).

Exercice 4
Soit c une constante positive, et posons T (n) = 1 + c + c2 + ... + cn = i=n i
P
i=0 c . Démontrer
que :
1. Si 0 < c < 1, alors T (n) = Θ(1).
2. Si c = 1, alors T (n) = Θ(n).
3. Si c > 1, alors T (n) = Θ(cn ).

Exercice 5
Supposons que, pour résoudre un même problème P , vous devriez choisir un algorithme parmi
les trois proposés :

2
• L’algorithme A résout une instance du problème P de taille n en le divisant en 5 sous-
problèmes, chacun de taille n2 , puis résout récursivement chaque sous-problème, et fina-
lement combine les solutions en temps linéaire en n.

• L’algorithme B résout une instance du problème P de taille n en résolvant récursivement


2 sous-problèmes de taille (n − 1) chacun, puis en combinant les deux solutions en temps
constant.

• L’algorithme C résout une instance du problème P de taille n en le divisant en 9 sous-


problèmes, chacun de taille n3 , puis résout récursivement chaque sous-problème, et fina-
lement en combinant les solutions en temps O(n2 ).
1. Déterminer le temps d’exécution de chacun des trois algorithmes A, B et C.
2. Lequel choisiriez-vous ?

Pr. A. DARGHAM

Vous aimerez peut-être aussi