Vous êtes sur la page 1sur 33

Complexit

Objectifs des calculs de complexit : - pouvoir prvoir le temps d'excution d'un algorithme - pouvoir comparer deux algorithmes ralisant le mme traitement Exemples : - si on lance le calcul de la factorielle de 100, combien de temps faudra t-il attendre le rsultat? - quel algorithme de tri vaut-il mieux utiliser pour retrier un tableau o on vient de changer un lment? L'valuation de la complexit peut se faire plusieurs niveaux : au niveau purement algorithmique par l'anal!se et le calcul au niveau de l excution du programme exprimentalement

Licence Informatique - Semestre 2 - Algorithmique et Programmation

Complexit exprimentale
"l est possible d'valuer de fa#on exprimentale le temps d'excution des programmes$

Cette valuation exprimentale dpend beaucoup des programmation ordinateurs et s!st%mes d'exploitation utiliss$

langages

de

&our avoir un sens l'valuation exprimentale re'uiert un talonnage des ordinateurs utiliss$
Licence Informatique - Semestre 2 - Algorithmique et Programmation 2

(enchmar)ing
*n logiciel de benchmar) +talonnage, donne une mesure de puissance d'un ordinateur en flops +floating point operations per second,$ Cette puissance varie en fonction des traitements effectus +calculs bruts sur des entiers ou des rels calculs lis l'affichage $$$,

&uissance des ordinateurs grand public actuels : 'uel'ues -igaflops +./0 flops, &uissance des meilleurs super-ordinateurs actuels : environ ./// 1eraflops +./.2 flops, +cf$ !!!"top#00"org,

Licence Informatique - Semestre 2 - Algorithmique et Programmation

Complexit temporelle vs spatiale +.34,


Exemple : change de deux valeurs enti$res
// change des valeurs de deux variables entier x, y, z; ... // initialisation de x et y z <- x; x <- y; y <- z; // change des valeurs de deux variables entier x, y; ... // initialisation de x et y x <- y-x; y <- y-x; x <- y+x;

- la premi$re mthode utilise une variable supplmentaire et ralise % affectations

- la deuxi$me mthode n utilise que les deux variables dont on veut changer les valeurs, mais ralise % affectations et % oprations
Licence Informatique - Semestre 2 - Algorithmique et Programmation 4

Complexit temporelle vs spatiale +434,


L'efficacit d'un algorithme peut tre valu en temps et en espace : - complexit en temps : valuation du temps d'excution de l'algorithme - complexit en espace : valuation de l'espace mmoire occup par l'excution de l'algorithme

5%gle +non officielle, de l'espace-temps informati'ue : pour gagner du temps de calcul on doit utiliser davantage d'espace mmoire$

On s'intresse essentiellement la complexit en temps +ce 'ui n'tait pas forcment le cas 'uand les mmoires coutaient cher,

Licence Informatique - Semestre 2 - Algorithmique et Programmation

&aram%tre de complexit +.36,


Le param%tre de la complexit est ce 'ui va faire varier le temps d'excution de l'algorithme$ Exemple : la calcul de la factorielle
fonction avec retour entier factorielle1(entier n entier i, resultat; dbut resultat <- 1; !our (i allant de " # n !as 1 faire resultat <- resultat$i; fin!our retourne resultat; fin

&e param$tre de complexit est la valeur de n

Licence Informatique - Semestre 2 - Algorithmique et Programmation

&aram%tre de complexit +436,


Exemple : multiplier tous les lments d un tableau d entiers par un entier donn
fonction sans retour %ulti!lie(entier&' tab, int x entier i; dbut !our (i allant de ( # tab.longueur-1 !as de 1 tab&i' <) tab&i' $ x; fin!our fin

faire

&e param$tre de complexit est la longueur du tableau tab"

Licence Informatique - Semestre 2 - Algorithmique et Programmation

&aram%tre de complexit +636,


Exemple : faire la somme des premiers lments de chaque ligne d un tableau ' deux dimensions
fonction avec retour entier so%%e*ete+igne(entier&'&' tab entier i,s; dbut s <- (; !our (i allant de ( # tab&('.longueur-1 !as de 1 faire s <) s + tab&('&i'; fin!our retourne s; fin

&e seul param$tre de complexit est la longueur de tab(0)"

7uand l'algorithme op%re sur une structure multidimensionnelle il faut bien prciser le param%tre de complexit$ *n algorithme oprant sur de telles structures peut avoir des complexits diffrentes selon la dimension considre$
Licence Informatique - Semestre 2 - Algorithmique et Programmation 8

Calcul de complexit +.34,


Exemple*: la factorielle
fonction avec retour entier factorielle1(entier n entier i, resultat; dbut resultat <- 1; !our (i allant de " # n !as 1 faire resultat <- resultat$i; fin!our retourne resultat; fin

+n peut fixer des temps d excution constants ' chaque t,pe d instruction : - affectation d entier : ae - comparaison d entier : ce - opration lmentaire sur des entiers : oe +n nglige le co-t des dclarations, des affectations et du retour"
Licence Informatique - Semestre 2 - Algorithmique et Programmation

Calcul de complexit +434,


& excution de la fonction va prendre*:
resultat <- 1;

ae 9

!our (i allant de " # n !as 1 faire resultat <- resultat$i; fin!our

+n-., 8 +ae 9 oe,

.u total, le temps d excution sera de la forme a/n0b a et b dpendent du langage de programmation et de l ordinateur utiliss"

Licence Informatique - Semestre 2 - Algorithmique et Programmation

10

Complexit au mieux et au pire +.3:,


Exemple : recherche squentielle d un lment dans un tableau de n chaines de caract$res

fonction avec retour boolen recherche,le%ent(chaine&' tab, chaine x entier i; dbut i <- (; tant-ue (i < tab.longueur faire si (tab&i' . x alors retourne /012; finsi fintant-ue retourne 3145; fin

&e param$tre de complexit est la taille du tableau d entre" &e nombre de tours de boucles varie selon que x est dans le tableau ou pas, et selon l endroit o x est prsent"
Licence Informatique - Semestre 2 - Algorithmique et Programmation 11

Complexit au mieux et au pire +43:,


fonction avec retour boolen recherche,le%ent(chaine&' tab, chaine x entier i; dbut i <- (; tant-ue (i < tab.longueur faire si (tab&i' . x alors retourne /012; finsi fintant-ue retourne 3145; fin

Si x est dans la premire case du tableau : 1 tour de boucle avec la condition tab(i)1x vraie Si x est dans la deuxime case du tableau : 1 tour de boucle avec la condition tab(i)1x fausse et 1 tour de boucle avec la condition tab(i)1x vraie """ Si x est dans dernire case du tableau : tab"longueur-1 tours de boucle avec la condition tab(i)1x fausse et 1 tour de boucle avec la condition tab(i)1x vraie Si x n'est pas dans le tableau : tab"longueur tours de boucle avec la condition tab(i)1x fausse
Licence Informatique - Semestre 2 - Algorithmique et Programmation 12

Complexit au mieux et au pire +63:,


Lors'ue pour une valeur donne du param%tre de complexit le temps d'excution varie selon les donnes d'entre on peut distinguer :

- La complexit au pire : temps d'excution maximum dans le cas le plus dfavorable$

- La complexit au mieux : temps d'excution minimum dans le cas le plus favorable +en prati'ue cette complexit n'est pas tr%s utile,$

- La complexit mo!enne : temps d'excution dans un cas mdian ou mo!enne des temps d'excution$ Le plus souvent on utilise la complexit au pire car on veut borner le temps d'excution$
Licence Informatique - Semestre 2 - Algorithmique et Programmation 13

Complexit au mieux et au pire +:3:,


fonction avec retour boolen recherche,le%ent(chaine&' tab, chaine x entier i; dbut i <- (; tant-ue (i < tab.longueur faire si (tab&i' . x alors retourne /012; finsi fintant-ue retourne 3145; fin

n 1 la taille du tableau, ae 1 affectation d entier, ce 1 comparaison d entier" 2omplexit au pire 3x n est pas dans le tableau4 : ae0n/35/ce4 2omplexit au mieux 3x est dans la premi$re case du tableau4 : ae05/ce 2omplexit en mo,enne : considrons qu on a #06 de chance que x soit dans le tableau, et #06 qu il n , soit pas, et, s il , est sa position mo,enne est au milieu" &e temps d excution est ( 3ae0n/35/ce44 0 3ae03n754/35/ce44 ) 75, de la forme a/n0b 3avec a et b constantes4
Licence Informatique - Semestre 2 - Algorithmique et Programmation 14

Complexit as!mptoti'ue +.3:,


Calculer la complexit de fa#on exacte n'est pas raisonnable vu la 'uantit d'instructions de la plupart des programmes et n'est pas utile pour pouvoir comparer deux algorithmes$ &remi%re approximation : on ne consid%re souvent 'ue la complexit au pire

;euxi%me approximation : on ne calcule 'ue la forme gnrale de la complexit

1roisi%me approximation : on ne regarde 'ue le comportement as!mptoti'ue de la complexit

Licence Informatique - Semestre 2 - Algorithmique et Programmation

15

;omination as!mptoti'ue +.34,


f et g tant des fonctions f < O+g, s'il existe des constantes c=/ et n/ telles 'ue f+x, > c8g+x, pour tout x = n/

c8g+x,

f+x,

n/

f < O+g, signifie 'ue f est domine as!mptoti'uement par g$


Licence Informatique - Semestre 2 - Algorithmique et Programmation 16

;omination as!mptoti'ue +434,


La notation O dite notation de Landau vrifie les proprits suivantes : - si f<O+g, et g<O+h, alors f<O+h, - si f<O+g, et ) un nombre alors )8f<O+g, - si f.<O+g., et f4<O+g4, alors f.9f4 < O+g49g4, - si f.<O+g., et f4<O+g4, alors f.8f4 < O+g48g4, Exemples de domination as,mptotique : x 1 +3x54 car pour x81, x9x5 x5 1 +3x%4 car pour x81, x59x% 100/x 1 +3x54 car pour x8100, x9x5 ln3x4 1 +3x4 car pour x80, ln3x49x si i80, xi 1 +3ex4 car pour x tel que x7ln3x48i, xi9ex

?otation @ : f < @+g, s'il existe des constantes c=/ et n/ telles 'ue f+x, A c8g+x, pour tout x A n/

Licence Informatique - Semestre 2 - Algorithmique et Programmation

17

B'uivalence as!mptoti'ue
f et g tant des fonctions f < C+g, s'il existe des constantes c. c4 strictement positives et n/ telles 'ue c.8g+x, D f+x, D c48g+x, pour tout x A n/

c48g+x,

f+x,

c.8g+x, n/ x

Licence Informatique - Semestre 2 - Algorithmique et Programmation

18

Classes de complexit +.36,


O+., : complexit constante pas d'augmentation du temps d'excution 'uand le param%tre croit O+log+n,, : complexit logarithmi'ue augmentation tr%s faible du temps d'excution 'uand le param%tre croit$ Exemple : algorithmes qui dcomposent un probl$me en un ensemble de probl$mes plus petits 3dichotomie4" O+n, : complexit linaire augmentation linraire du temps d'excution 'uand le param%tre croit +si le param%tre double le temps double,$ Exemple : algorithmes qui parcourent squentiellement des structures linaires" O+nlog+n,, : complexit 'uasi-linaire augmentation un peu suprieure O+n,$ Bxemple : algorithmes 'ui dcomposent un probl%me en d'autres plus simples traits indpendaments et 'ui combinent les solutions partielles pour calculer la solution gnrale$

Licence Informatique - Semestre 2 - Algorithmique et Programmation

19

Classes de complexit +436,


O+n4, : complexit 'uadrati'ue 'uand le param%tre double le temps d'excution est multipli par :$ Exemple : algorithmes avec deux boucles imbriques" O+ni, : complexit pol!nomiale 'uand le param%tre double le temps d'excution est multipli par 4i$ Exemple : algorithme utilisant i boucles imbriques" O+in, : complexit exponentielle 'uand le param%tre double d'excution est lev la puissance 4$ O+nE, : complexit factorielle as!mptoti'uement 'uivalente nn le temps

Bncore pire : la fonction d'Fc)erman


.c:3m,n4 1 n01 si m 1 0 .c:3m,n4 1 .c:3m-1,14 si n10 et m 8 0 .c:3m,n4 1 .c:3m-1, .c:3m,n-144 sinon .c:30,04 1 1, .c:31,14 1 %, .c:35,54 1 ;, .c:3%,%4 1 <1, .c:3=,=4 est suprieur ' 10>0
Licence Informatique - Semestre 2 - Algorithmique et Programmation 20

Classes de complexit +636,

Les algorithmes de complexit pol!nomiale ne sont utilisables 'ue sur des donnes rduites ou pour des traitements ponctuels Les algorithmes exponentiels ou au del ne sont pas utilisables en prati'ue
Licence Informatique - Semestre 2 - Algorithmique et Programmation 21

Complexit et temps d'excution


Temps de calcul pour des donnes de taille 1 million
flops complexit ./0 ./L ./.4 ln+n, / /.6ms / /.6Ms / /.6ns n .s .ms .Ms nJ 4KI heures 4n .//// ans ./ ans . semaine

N heure
.s

Loi de Goore +empiri'ue, : coHt constant la rapidit des processeurs double tous les .I mois +les capacits de stoc)age suivent la mme loi,$ Constat : le volume des donnes stoc)es dans les s!st%mes d'informations augmente de fa#on exponentielle$ Conclusion : il vaut mieux optimiser ses algorithmes 'u'attendre des annes 'u'un processeur surpuissant soit invent$
Licence Informatique - Semestre 2 - Algorithmique et Programmation 22

5echerche s'uentielle
fonction avec retour boolen recherche,le%ent(chaine&' tab, chaine x entier i; dbut i <- (; tant-ue (i < tab.longueur faire si (tab&i' . x alors retourne /012; finsi fintant-ue retourne 3145; fin

n 1 la taille du tableau, ae 1 affectation d entier, ce 1 comparaison d entier" 2omplexit au pire 3x n est pas dans le tableau4 : ae0n/35/ce4 1 +3n4 2omplexit au mieux 3x est dans la premi$re case du tableau4 : ae05/ce 1 +314 2omplexit en mo,enne : considrons qu on a #06 de chance que x soit dans le tableau, et #06 qu il n , soit pas, et, s il , est sa position mo,enne est au milieu" &e temps d excution est ( 3ae0n/35/ce44 0 3ae03n754/35/ce44 ) 75, de la forme a/n0b 3avec a et b constantes4 1 +3n4
Licence Informatique - Semestre 2 - Algorithmique et Programmation 23

5echerche dichotomi'ue +.34,


fonction avec retour boolen recherche6icho(chaine&' tab, chaine x entier i, 7; dbut i <- (; 7 <- tab.longueur-1; tant-ue (i <. 7 faire si (tab&(7+i /"' . x alors retourne /012; sinon si (tab&(7+i /"' 8 x alors 7 <- (7+i /" - 1; sinon i <- (7+i /" + 1; finsi finsi fintant-ue retourne 3145; fin

&e param$tre de complexit est la longueur du tableau, qu on appelle n" 2as au pire : x n est pas dans le tableau" &a longueur de la partie du tableau comprise entre i et ? est d abord n, puis n75, puis n7=, """", ?usqu ' ce que n75t 1 1" &e nombre de tours de boucles est donc un entier t tel que n75t 1 1 soit 5t 1 n soit t/log354 1 log3n4 soit t 1 log53n4
Licence Informatique - Semestre 2 - Algorithmique et Programmation 24

5echerche dichotomi'ue +434,


fonction avec retour boolen recherche6icho(chaine&' tab, chaine x entier i, 7; dbut i <- (; 7 <- tab.longueur-1; tant-ue (i <. 7 faire si (tab&(7+i /"' . x alors retourne /012; sinon si (tab&(7+i /"' 8 x alors 7 <- (7+i /" - 1; sinon i <- (7+i /" + 1; finsi finsi fintant-ue retourne 3145; fin

&a complexit au pire de la recherche dichotomique est 3ce 0 5/ cc 0 %/oe4/log53n4 avec ce 1 comparaison d entier, cc 1 comparaison de chaine, oe 1 opration lmentaire" 2omplexit as,mptotique : +3log3n44 2onclusion : pour des donnes de grande taille, si le tableau est tri, il vaut mieux utiliser la recherche dichotomique
Licence Informatique - Semestre 2 - Algorithmique et Programmation 25

Oactorielle rcursive +.34,


Exemple : calcul rcursif de la factorielle
// cette fonction renvoie n9 (n est su!!os su!rieur ou gal # 1 fonction avec retour entier factorielle"(entier n dbut si (n . 1 alors retourne 1; sinon retourne n$factorielle"(n-1 ; finsi fin

@aram$tre de complexit : la valeur de n Al n , a qu un seul cas d excution 3pas de cas au pire ou au mieux4 Bi n C 1, le calcul de la factorielle de n co-te une comparaison d entiers, le calcul de la factorielle de n-1 et une multiplication d entiers Bi n 1 1, le calcul de la factorielle co-te une comparaison d entiers
Licence Informatique - Semestre 2 - Algorithmique et Programmation 26

Oactorielle rcursive +434,


+n pose une quation de rcurrence : appelons c3n4 la complexit c3n4 1 ce 0 c3n-14 0 oe si n C 1 c314 1 ce

+n rsoud cette quation de rcurrence : c3n4 1 n/ce 0 3n-14/oe 1 +3n4

&a complexit de la factorielle rcursive est donc linaire, comme celle de la factorielle itrative"

. l excution, la fonction rcursive est un peu moins rapide 3pente de la droite plus forte4 du fait des appels rcursifs"

Licence Informatique - Semestre 2 - Algorithmique et Programmation

27

Complexit et rcursivit
Bn gnral drcursiver un algorithme ne change pas la forme de sa complexit pas plus 'ue passer en rcursivit terminaleE

"l existe diverses techni'ues pour la rsolution des 'uations de rcurrence +mthode des fonctions gnratrices et dcomposition des fractions rationnelles transforme en P Q,$

1hor%me : soit 1+n, une fonction dfinie par l''uation de rcurrence suivante oR b A 4 ) A / a = / c = / et d =/ : 1+n, < a81+n3b, 9 c8n)

si a = b) alors 1+n, C +nlogb+a,, si a < b) alors 1+n, C +n)8log+n,, si a > b) alors 1+n, C n)
Licence Informatique - Semestre 2 - Algorithmique et Programmation 28

5solution des rcurrences +.34,


B'uation : c+n, < c+n-., 9 b Solution : c+n, < c+/, 9 b8n < O+n, Exemples : factorielle, recherche squentielle rcursive dans un tableau B'uation : c+n, < a8c+n-., 9 b a C . Solution : c+n, < an8+c+/, T b3+.-a,, 9 b3+.-a, < O+an, Exemples : rptition a fois d un traitement sur le rsultat de l appel rcursif B'uation : c+n, < c+n-., 9 a8n 9 b Solution : c+n, < c+/, 9 a8n8+n9.,34 9 n8b < O+n4,$ Exemples : traitement en co-t linaire avant l appel rcursif, tri ' bulle B'uation : c+n, < c+n34, 9 b Solution : c+n, < c+., 9 b8log4+n, < O+log+n,, Exemples : limination de la moiti des lments en temps constant avant l appel rcursif, recherche dichotomique rcursive
Licence Informatique - Semestre 2 - Algorithmique et Programmation 29

5solution des rcurrences +434,


B'uation : c+n, < a8c+n34, 9 b a C . Solution : c+n, < nlog4+a, 8+c+., T b3+.-a,, 9 b3+.-a, < O+nlog4+a,, Exemples : rptition a fois d un traitement sur le rsultat de l appel rcursif dichotomique B'uation : c+n, < c+n34, 9 a8n 9b Solution : c+n, < O+n, Exemples : traitement linaire avant l appel rcursif dichotomique B'uation : c+n, < 48c+n34, 9 a8n 9 b Solution : c+n, < O+n8log+n,, Exemples : traitement linaire avant double appel rcursif dichotomique, tri fusion

Licence Informatique - Semestre 2 - Algorithmique et Programmation

30

Le pi%ge de Oibonacci +.34,


fonction avec retour entier fibo(entier n dbut si ((n . ( :4 (n . 1 alors retourne 1; sinon retourne fibo(n-1 + fibo(n-" ; finsi fin

&aram%tre de complexitU: la valeur de n *n seul cas d'excution La complexit c+n, vrifie l''uationU: c+n, < a 9 c+n-., 9 c+n-4, si n=. c+., < . c+/, < . Solution de l''uationU: c+n, < C +Vn, oR V < +.9W2,34
Licence Informatique - Semestre 2 - Algorithmique et Programmation

31

Le pi%ge de Oibonacci +434,


fonction avec retour entier fibo(entier n entier a, b, c, i; dbut si ((n . ( ou (n . 1 alors retourne 1; sinon a <- 1; b <- 1; !our (i allant de " # n !as 1 faire c <- b; b <- a + b; a <- c; fin!our retourne b; finsi fin

&aram%tre de complexitU: la valeur de n *n seul cas d'excution &our nX/ il ! a +n-., tours de boucles donc la complexit vaut a8+n-.,9b avec a et b constantes donc la complexit est en O+n,$

Licence Informatique - Semestre 2 - Algorithmique et Programmation

32

Complexit du tri bulle


fonction sans retour tri;ulle(entier&' tab < entier i,7,te%!; dbut !our (i allant de tab.longueur-" # 1 !as -1 faire !our (7 allant de ( # i !as 1 faire si (tab&7' 8 tab&7+1' alors te%! <- tab&7'; tab&7' <- tab&7+1'; tab&7+1' <- te%!; finsi fin!our fin!our fin

&aram%tre de complexit : la taille du tableau Cas au pire : les lments sont tris dans l'ordre inverse de celui voulu Complexit au pire : remonter le premier lment ncessite +n-., tours de la boucle imbri'ue remonter le deuxi%me ncessite +n-4, tours etc$ ;onc le nombre de tours total est +n-., 9 +n-4, 9 Q 9 . < n8+n-.,34 soit O+n4,$ 5emar'ue : les tris par slection et par insertion sont aussi 'uadrati'ues$ Gais il existe des algorithmes de tri 'uasi-linaires$
Licence Informatique - Semestre 2 - Algorithmique et Programmation 33