Académique Documents
Professionnel Documents
Culture Documents
Département d’Informatique
Faculté des Sciences, Université Chouaib Doukkali
El Jadida
a.abdelkaher@gmail.com
01 Mars 2023
Informatique 2 (Algorithmique)
Structures en C
Liste chaînée
Pile
File
Arbre
1 Algorithmes
I Représentations des algorithmes
I Codage d’un algorithme
I Opérations élémentaires
2 Complexité
I Notions de complexité
I Complexité en temps
I Types de complexité
I Notations en O
I Notations en Θ
I Complexité d’un algorithme récursif
I Échelle de complexité
Calculer la factorielle de N
Ecrire("saisissez le nombre :")
Lire (N)
F←1
Pour I=1 à N Faire F← F × I
FinPour
Ecrire(F)
Remarque
Il n’existe pas de formalisme universel pour l’écriture d’un pseudo
programme.
2 le compilateur utilisé.
5 ....
Définition
Soit A un algorithme et d une donnée d’entrée de A. On appelle
complexité de A pour d, notée CA (d), le nombre d’opérations
élémentaires effectuées lors de l’exécution de A sur d.
Exemple 1
1 K←0
2 I←0
3 TantQue I ≤ N Faire
I a. R←R+I
I b. I←I+1
4 FinTantQue
Le temps d’exécution
Pn t(n) pour N = n s’écrit :
t(n) = t1 + i=1 (t2 + t3 + t4) + t2
Domination asymptotique
Soient f et g deux fonctions de N dans R∗+ , Si ∃c ∈ R∗+ et
∃n0 ∈ N∗ tels que ∀n > n0 , f (n) ≤ c × g (n) on dit que f est
asymptotiquement dominée par g
Example
f (n) = 3n + 1, g (n) = n alors 3n + 1 est un O(n).
En effet pour n0 = 2 et c = 4 on a 3n + 1 ≤ 4n pour n > n0
Exemple
Considérons la fonction
f (n) = 8n + 128.
Est ce que f (n) = O(n2 ) ?
Trouver un entier n0 et
c > 0 tel que pour n ≥ n0 ,
f (n) < cn2
Pour c = 1, f (n) ≤ cn2
→ 8n + 128 ≤ n2
→ 0 ≤ n2 − 8n − 128
→ 0 ≤ (n − 16)(n + 8)
→ n0 = 16
Sur la figure,g (n) = n2 est
supérieure à
f (n) = 8n + 128 à droite de
n = 16
Exemple
Considérons la fonction
f (n) = 8n + 128.
f (n) = O(n2 )
Autres valeurs de c et
n0 (figure) :
I c = 2 et n0 =
√
2 + 4 17 ≈ 10.2
I c = 4 et
√
n0 = 1 + 33 ≈ 6.7
Si f (n) est O(h(n)) et g (n) est O(h(n)) alors f (n) + g (n) est
O(h(n))
Ordre de grandeur
Soient f et g deux fonctions de N dans R∗+ , Si f est en O(g ) et g
est en O(f ) alors on dit que f est en Θ(g ) (f et g sont de même
ordre de grandeur asymptotique).
Exemple
f (n) = 3n + 1, g (n) = n alors 3n + 1 est en Θ(n).
En effet, d’une part 3n + 1 est en O(n), d’autre part pour n0 = 2
et c = 2
on a n ≤ 2 × (3n + 1) pour n > n0 et donc n est en O(3n + 1)
f (n)
Si lim = a 6= 0 ⇒ f est en Θ(g )
n→∞ g (n)
f (n)
Si lim = 0 ⇒ f est en O(g ) mais f n’est pas en Θ(g )
n→∞ g (n)
f (n)
Si lim = ∞ ⇒ f n’est pas en O(g ) et donc f n’est pas
n→∞ g (n)
en Θ(g )
En pratique :
Solution :
T (n = 0) = c1
T (n) = c1 + c2 + T (n − 1) ⇒ T (n) = n × c2 + (n + 1) × c1
Complexité O(n)
O(n) : linéaire,
n × log (n)
O(p n ) : exponentielle.