Vous êtes sur la page 1sur 2

Université Sultan Moulay Slimane

Ecole National des Sciences Appliquées


Khouribga

Module « Programmation Web »


4ème Année GI / Année 2019/2020
Feuille de TP N° 1
Exercice 1
1. Démontrer les affirmations suivantes :
a. n2 = O(10−5n3).
b. 25n4 - 19n3 + 13n2 = O(n4).
c. 2n+100 ∈ O(2n).
2. Donner les relations d’inclusion entre les ensembles suivants : O(n log n), O(2n),
O(log n), O(1), O(n2), O(n3) et O(n).
Soient f, g, h et k des fonctions définies de IN → IR.
3. Prouver les assertions suivantes :
a. Si f(n) = O(g(n)), alors g(n) = Ω(f(n)).
b. f(n) + g(n) = Θ(max(f(n), g(n))).
c. Si h(n) = O(f(n)) et k(n) = O(g(n)), alors :
i. h(n) + k(n) = O(g(n)).
ii. h(n)k(n) = O(f(n)g(n)).
Exercice 2
n
Soient une constante réelle c > 0, et la somme S (n) = 1 + c + c 2 + ... + c n = ∑ c i . Prouver
i=0

que :
1. S (n) = Θ(1), si c < 1.

2. S (n) = Θ(n), si c = 1.

3. S (n) = Θ(c n ), si c > 1.

Exercice 3
Considérons l’algorithme suivant :
Fonction f(n : Entier) : Entier;
Var x, y : Entier;
Début
x := n; y := n;
________________________________________________________________________________
Algorithmique avancé, TC ENSAK / S1 – 2019-2020 1
Tant Que (y ≠ 0) Faire
x := x + 2; y := y - 1;
FinTQ
Retourner(x);
Fin
1. Que calcule cette fonction ? Le prouver.
2. Donner la complexité théorique de cet algorithme. Comment améliorer cette
complexité ?
Exercice 4
Considérons l’algorithme suivant :
Fonction f(n : Entier) : Entier;
Var x, y : Entier;
Début
Si (n = 0) Alors Retourner(2);
Sinon Retourner(f(n - 1) * f(n - 1));
FinSi
Fin
1. Que calcule cette fonction ? Le prouver.
2. Donner la complexité de cet algorithme. Comment améliorer cette complexité ?
3. Proposer un algorithme itératif qui calcul le même résultat que f(n). Donner sa
preuve et calculer sa complexité.
Exercice 5
Supposons que, pour résoudre un même problème P, vous devriez choisir un
algorithme parmi les trois proposés :
• L’algorithme A résout une instance du problème P de taille n en le divisant en
cinq sous-problèmes (chacun de taille n/2), puis résout récursivement chaque
sous-problème, et finalement 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 deux sous-problèmes de taille (n - 1) chacun, puis en combinant
les deux solutions in temps constant.
• L’algorithme C résout une instance du problème P de taille n en le divisant en
neuf sous-problèmes (chacun de taille n/3), puis résout récursivement chaque
sous-problème, et finalement en combinant les the solutions en temps O(n2).
Déterminer le temps d’exécution de chacun des trois algorithmes précédents. Lequel
choisiriez-vous ?

________________________________________________________________________________
Algorithmique avancé, TC ENSAK / S1 – 2019-2020 2

Vous aimerez peut-être aussi