0% ont trouvé ce document utile (0 vote)
20 vues3 pages

Complexité

La complexité algorithmique mesure la performance d'un algorithme dans le pire des cas, en se concentrant sur des données très grandes. La notation O est utilisée pour exprimer cette complexité, indiquant que le nombre d'opérations est borné par une fonction g(n) lorsque n tend vers l'infini. Différentes classes de complexité, telles que constante, linéaire, logarithmique, quadratique, et exponentielle, sont définies pour caractériser la croissance du temps d'exécution en fonction de la taille des données.

Transféré par

nour.kemicha
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
20 vues3 pages

Complexité

La complexité algorithmique mesure la performance d'un algorithme dans le pire des cas, en se concentrant sur des données très grandes. La notation O est utilisée pour exprimer cette complexité, indiquant que le nombre d'opérations est borné par une fonction g(n) lorsque n tend vers l'infini. Différentes classes de complexité, telles que constante, linéaire, logarithmique, quadratique, et exponentielle, sont définies pour caractériser la croissance du temps d'exécution en fonction de la taille des données.

Transféré par

nour.kemicha
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Complexité algorithmique

1- Définition
La complexité d'un algorithme est une mesure de sa performance asymptotique dans le pire cas ; Que
signifie ‘asymptotique’ ? on s'intéresse à des données très grandes ; Que signifie ‘dans le pire cas’? On
s'intéresse à la performance de l'algorithme dans les situations où le problème prend le plus de temps.
Pourquoi? Pour être sûr que l'algorithme ne prendra jamais plus de temps que ce qu'on a estimé. Ce qui
correspond à donner une majoration du nombre d’opérations effectuées par l’algorithme.

2- La notation O
Définition
On dit que la complexité de l'algorithme est O(g(n)) ou g est une combinaison de polynômes, logarithmes
ou exponentielles. Ce qui signifie que le nombre d'opérations effectuées, noté par f(n), est borné par C*g(n),
ou C est une constante, lorsque n tend vers l'infini.

Les règles de la notation O :

• Les termes constants :


Ο Ο

• Les constantes multiplicatives sont omises :


Ο Ο Ο

• L'addition est réalisée en prenant le maximum :


Ο Ο Ο Ο Ο

• La multiplication reste inchangée :


Ο Ο Ο

Exemple : Supposant que le temps d'exécution d’un algorithme est décrit par fonction T(n) = 3n2+10n+10,
Calculer O(T(n))?
O(T(n)) = O(3 n2 + 10n + 10) = O(max (3 n2, 10n, 10)) = O(3 n2) = O (n2)

3- Classes de complexité les plus usuelles


On voit souvent apparaitre les complexités suivantes :

Classe Notation O Description Exemple

Constante O(1) Le temps d’exécution ne dépend Accéder au premier élément d'un


pas des données traitées ensemble de données

Linéaire O(n) augmentation linéaire du temps - Parcourir un ensemble de


d'exécution quand le paramètre croit données
(si le paramètre double, le temps - somme des n premiers entiers
double). naturels

Logarithmique O(log(n)) augmentation très faible du temps conversion du décimal au


1
d'exécution quand le paramètre croit. binaire.

Quasi-linéaire O(n augmentation un peu supérieure à O(n). la somme des chiffres des n
log(n)) premiers entiers naturels

Quadratique O(n2) complexité quadratique, quand le Parcourir un ensemble de


paramètre double, le temps données en utilisant deux
d'exécution est multiplie par 4. boucles imbriquées

Polynomiale O(ni) quand le paramètre double, le temps Utiliser i boucles imbriquées


d'exécution est multiplie par 2i

Exponentielle O(an) quand le paramètre double, le temps Générer tous les sous
d'exécution est élevé à la puissance 2. ensembles possibles d'un
ensemble de données

complexité O(n!) asymptotiquement équivalente à nn


factorielle

4- Calcul complexité d'un algorithme


Le coût des instructions élémentaires
On appelle opération de base, ou opération élémentaire, toute :
- Affectation ;
- Test de comparaison : ==; <;<=;>=; ! =;
- Opération de lecture (input) et écriture (print) ;
- Opération arithmétique : +;- ; *; /;%;
- Opération d'incrémentation : a=a+1,(pas 1) a=a+n (pas n) ;
- Opération de décrémentation : a=a-1,(pas 1) a=a-n (pas n) ; Le coût d'une opération élémentaire est égal
à 1.

Le coût des instructions composées


On appelle opération composée, toute instruction contenant :
- L'exécution d'une instruction conditionnelle : Si P est une instruction conditionnelle du type Si b alors
Q1 sinon Q2 finsi, le nombre d'opérations est : Coût(P) = Coût(test) + max(Coût(Q1), Coût(Q2))

- L'exécution d'une boucle : le temps d'une boucle est égal à la multiplication de nombre de répétition
par la somme du coût de chaque instruction xi du corps de la boucle ;
Coût(boucle for) =
Coût(boucle while) =

- L'appel d'une fonction : Lorsqu'une fonction ou une procédure est appelée, le coût de cette fonction ou
procédure est le nombre total d'opérations élémentaires engendrées par l'appel de cette fonction.

- Exemple 1: Que vaut le coût de ce programme P1


2
if i%2==0 :
n=i//2 else :
i=i+1
n=i//2

Coût(P1)=Coût(i%2 == 0)+ max(Coût(n = i==2),Coût(i = i + 1; n = i//2)) =1+max(1,2) =3

- Exemple 2: Que vaut le coût de ce programme P2


while i <= n :
somme=somme+i
i=i+1

- Coût(P2)=Coût(i <= n)+Coût(somme = somme + i)+Coût(i = i + 1) =n+n+n =3n


Programmation

Pour calculer la complexité d'un programme :


1. on calcule le coût des instructions qui forment le programme;
2. on simplifie le résultat grâce aux règles de simplifications suivantes:
• on remplace les constantes multiplicatives par
• on annule les constantes additives,
• on conserve le terme dominant.

Exemple 1 :
si le coût d’un programme = 3n + 6 alors la complexité = O(n)
Exemple 2 :
si le coût d’un programme = n2 + 3n alors la complexité = O(n2)

5- Des cas de complexité fréquemment utilisés:

Vous aimerez peut-être aussi