Académique Documents
Professionnel Documents
Culture Documents
Chap 2
Chap 2
ETUDE DE LA
COMPLEXITE
PLAN
Introduction
Définitions
Type de la Complexité
Notation de de Landau
Classes de complexité
Calcul de la Complexité des algorithmes (itératifs
& récursifs)
3
1
18/10/2020
INTRODUCTION
ANALYSES D’ALGORITHMES
INTRODUCTION
Le temps d’exécution d’un algorithme dépend des facteurs
suivants :
Les données du programme,
2
18/10/2020
INTRODUCTION
TEMPS D’EXECUTION
Running Time
80
• Le temps d’exécution en moyenne
60
est souvent difficile à déterminer.
• Nous nous intéresserons au pire cas 40
INTRODUCTION
ETUDES EXPERIMENTALES
9000
• Écrire un programme implémentant
8000
un algorithme
• Exécuter le programme avec 7000
différentes tailles des données en 6000
entrée.
Time (ms)
5000
• Utiliser une fonction, comme la
fonction prédéfinie clock(), pour 4000
avoir une mesure des temps
3000
d’exécution.
2000
• Tracer les résultats.
1000
0
0 50 100
Input Size
3
18/10/2020
INTRODUCTION
LIMITATION DES EXPERIENCES
INTRODUCTION
ANALYSE THEORIQUE
4
18/10/2020
INTRODUCTION
EXEMPLE: CALCUL DE LA VALEUR D’UN POLYNÔME
INTRODUCTION
EXEMPLE: CALCUL DE LA VALEUR D’UN POLYNÔME
2ème variante
1ère variante
Début
Début
Inter1
P0
P 0
Pour i 0 à n faire
Pour 0 à n faire
P P+ T[i] * Puiss (X, i)
P P+ Inter *T[i]
FP
Inter Inter * X
Fin
FP
1ère Complexité : Fin
(n+1) additions 2ème Complexité :
(n+1) multiplications (n+1) additions
(n+1) puissances 2(n+1) multiplications
6
Au moins 3 variables 3 variables
10
5
18/10/2020
INTRODUCTION
EXEMPLE: CALCUL DE LA VALEUR D’UN POLYNÔME
3ème variante
Début
P T[n] 3ème Complexité :
Pour i n-1 à 0 faire n additions
P P*X + T[i] n multiplications
7
2 variables
FP
Fin
11
INTRODUCTION
EXEMPLE: CALCUL DE LA VALEUR D’UN POLYNÔME
6
18/10/2020
DÉFINITION
La complexité (temporelle) d’un algorithme est la
mesure du nombre d’opérations fondamentales
13
TYPE DE LA COMPLEXITÉ
• C'est le plus petit nombre • C’est la moyenne des •C’est le plus grand
d'opérations qu'aura à complexités de l’algorithme nombre d’opérations
exécuter l'algorithme sur sur des jeux de données de qu’aura à exécuter
un jeu de données de taille n l’algorithme sur un jeu de
taille n. données de taille n
Notations:
14
7
18/10/2020
NOTATION DE LANDAU
La notation de Landau « O » est celle qui est le plus
communément utilisée pour expliquer formellement les
performances d'un algorithme.
NOTATION DE LANDAU
O(T1)O(T2) = O(T1T2) 12
16
8
18/10/2020
NOTATION DE LANDAU
Supposant que le temps d'exécution d’un algorithme est décrit par la fonction
T(n) = 3n2+10n+10, Calculer O(T(n))?
17
CLASSES DE COMPLEXITÉ
Classe Notation O Exemple
18
9
18/10/2020
CLASSES DE COMPLEXITÉ
15
19
CALCUL DE LA COMPLEXITÉ
1. Cas d'une instruction simple (écriture, lecture, affectation ) :
Le temps d'exécution de chaque instruction simple est O(1).
2. Cas d'une suite d'instructions simples: Le temps d ’exécution
d'une séquence d'instruction est déterminée par la règle de la
somme. C'est donc le temps de la séquence qui a le plus grand
temps d ’exécution: O(T) = O (T1 + T2) = max(O(T1);O(T2)) .
16
20
10
18/10/2020
CALCUL DE LA COMPLEXITÉ
Exemple 1:
17
21
CALCUL DE LA COMPLEXITÉ
3. Cas d'un traitement conditionnel: Le temps d'exécution d'une
instruction SI est le temps d ’exécution des instructions exécutées
sous condition, plus le temps pour évaluer la condition. Pour une
alternative, on se place dans le cas le plus défavorable.
18
22
11
18/10/2020
CALCUL DE LA COMPLEXITÉ
19
23
CALCUL DE LA COMPLEXITÉ
5. Cas de boucles imbriquées:
12
18/10/2020
CALCUL DE LA COMPLEXITÉ
Exemple 2:
• Recherche séquentielle (S: tableau [0..n-1] d’entier, x: entier): booléen
• i 0 c1
• Trouve faux c2
Condition = c3;
• Tant que ((i<n) et (non trouve)) faire DTQ
nombre d’itération = n
• Si (S[i] = x) alors
c4
Trouve vrai
c5
• i i + 1
c6
FTQ
• Retourner trouve
c7
T(n) = c1+c2+n*(c3+c4+c5+c6) + c7 = c8 + c9 *n 20
CALCUL DE LA COMPLEXITÉ
Exemple 3:
Tri par sélection (Var T: Tableau [1.. N] d’entier)
21
26
13
18/10/2020
CALCUL DE LA COMPLEXITÉ
Exemple 4:
22
27
CALCUL DE LA COMPLEXITÉ
Exemple 5:
23
28
14
18/10/2020
26
29
27
30
15
18/10/2020
28
O (T) = O (n)
31
O (T) = O(2n)
29
32
16
18/10/2020
Sinon
a = 2 , b = 2, k = 0 a > bk
T(n) = O(n) 31
34
17
18/10/2020
Retourner (Faux)
35
a = 1 , b = 2, k = 0 a = bk
T(n) = O(log(n))
33
36
18
18/10/2020
37
37
38
38
19