Vous êtes sur la page 1sur 24

COMPLEXITÉ ALGORITHMIQUE

Ryma MAHFOUDHI
ryma.mahfoudhi@gmail.com
MOTIVATION
Comment choisir parmi les différentes approches pour résoudre un problème?

Exemples: Liste chaînée ou tableau?


Algorithme de tri par insertion de tri rapide? …, etc

2
MOTIVATION

Qualités d’un bon algorithme:

Correct par rapport à la spécification


Complet
Efficace

3
COMPLEXITÉ
Définition 1: la complexité temporelle d’un algorithme est le temps mis par ce
dernier pour transformer les données du problème considéré en un ensemble de
résultats.

Définition 2: la complexité spatiale d’un algorithme est l’espace utilisé par ce


dernier pour transformer les données du problème considéré en un ensemble de
résultats.

4
COMPLEXITÉ
Pour comparer des solutions entre-elles, deux méthodes peuvent être
utilisées:
 Méthode empirique
 Méthode mathématique

Cette comparaison se fera relativement à deux ressources critiques:


temps, espace mémoire,...

5
COMPLEXITÉ TEMPORELLE
Comment calculer le coût d’un algorithme (ou la complexité)?
Définition 3: La complexité d’un algorithme est la mesure du
nombre d’opérations fondamentales qu’il effectue sur un jeu de
données.
La complexité est exprimée comme une fonction de la taille du jeu
de données. Notons Dn l’ensemble des données de taille n et C(d) le
coût de l’algorithme sur la donnée d.

6
PIRE CAS, MEILLEUR CAS ET
CAS MOYEN
Toutes les entrées d’une taille donnée ne nécessitent pas
nécessairement le même temps d’exécution.

Exemple:
Recherche d’un élément C dans un tableau de n élément.

7
COMPLEXITÉ MINIMALE
Complexité minimale :
Tmin(n) = min C(d), ∀d∈Dn
C’est le plus petit nombre d’opérations qu’aura à exécuter
l’algorithme sur un jeu de données de taille fixée.
C’est une borne inférieure de la complexité de l’algorithme sur un
jeu de données de taille n

8
COMPLEXITÉ MAXIMALE
Complexité maximale :
Tmax(n) = max C(d), ∀d∈Dn
C’est le plus grand nombre d’opérations qu’aura à exécuter
l’algorithme sur un jeu de données de taille fixée.

9
COMPLEXITÉ MOYENNE
Complexité moyenne :
Tmoy(n) = ΣC(d)/|Dn|, ∀d∈Dn
C’est la moyenne des complexités de l’algorithme sur des jeux de
données données de taille n.

10
EXEMPLE: ALGORITHME DE
RECHERCHE
int recherche(int *tab, int C)
{ int i; Le cas favorable se présente quand la
i = 0; valeur C se trouve au début du tab:
while (tab[i] != C && i<n) tmin(n) = e + 3t
i = i+1;
if (i == n)
return(0); Affectation e

else return(1); Test t


Addition a
}
11
EXEMPLE: ALGORITHME DE
RECHERCHE
int recherche(int *tab, int C)
{ int i; Le cas défavorable se présente quand
i = 0; la valeur C ne se trouve dans tab.
while (tab[i] != C && i<n) tmax(n) = 1e + (n+1)(2t+1e+ 1a)+ 1t
i = i+1;
if (i == n)
return(0); Affectation e

else return(1); Test t


Addition a
}
12
CALCUL DE COMPLEXITÉ
1) Pour calculer la complexité, il faut compter le nombre
d’opérations de base qu’il effectue comme:

 Opération arithmétique ou logique


 Opération d’affectation
 Opération d’E/S

La complexité de chaque opération de base est constante.


13
CALCUL DE COMPLEXITÉ
2) La complexité d’une boucle est la complexité du bloc interne dans
la boucle multipliée par la cardinalité de la boucle.
Exemple:
Pour i <- 1 à n faire
Ecrire (« Entrer un nombre a »)
Lire (a)
Ecrire (« ixa »; a*i)
Fin Pour
14
CALCUL DE COMPLEXITÉ
3) La complexité d’une structure conditionelle est la complexité au
pire des cas.
Exemple:
Si n <5 alors
Ecrire (« Hello TED »)
Sinon
Pour i <- 1 à n faire
Ecrire (« Entrer un nombre a »)
Fin Pour
Fin si
15
CALCUL DE COMPLEXITÉ
3) La complexité d’un algorithme est un calcul de ses performances
asymptotiques dans le pire des cas.
Notation grand-O: ordre de grandeur (borne supériere) qui mesure le
taux de croissance de la complexité
i- Les constantes multiplicatives sont remplacées par 1
ii- Les constantes additives sont annulées
iii- Le terme le plus élevé est conservé

16
CALCUL DE COMPLEXITÉ
Exemples:

=O

17
18
EXEMPLES
Exemple 1:

a = b;
 Temps constant: (1).

Exemple 2:

somme = 0;
for (i=1; i<=n; i++)
somme += n;
 Temps: (n)

19
EXEMPLES
Exemple 3:
somme = 0;
for (j=1; j<=n; j++)
for (i=1; i<=n; i++)
somme++;
for (k=0; k<n; k++)
A[k] = k;

 Temps: (1) + (n2) + (n) = (n2)

20
EXEMPLE DE BOUCLE TANT
QUE (1)
i<-0
Tant que (i<N)
A<-A+B
i<-i+3
Ftq

Nbre d’itération est ?


La complexité est ?
21
EXEMPLE DE BOUCLE TANT
QUE (2)
Lire (N)
Tant que (N!=0)
A<-A+B
N<-N/2
Ftq

Nbre d’itération est ?


La complexité est ?
22
COMPLEXITÉ D’APPEL D’UNE
FONCTION
Le coût de l’appel d’une procédure (ou d’une fonction est égale à:

i. Le coût du corps de la procédure


ii. Plus le coût de l’élvaluation de ses paramètres

23
COMPLEXITÉ D’APPEL D’UNE
FONCTION
Fonction pair(a: entier):booléen Début de l’Algorithme
Début Si (pair(n)==Vrai) alors
Si (a mod 2==0) alors n<- n+1
Sinon n<-n+2
retourner Vrai
Sinon Fsi
retourner Faux
Fsi
Fin
24

Vous aimerez peut-être aussi