Vous êtes sur la page 1sur 23

Ch.

6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

Chapitre 6 : Introduction la complexit algorithmique


1. Notions de complexit 2. Calcul de complexit 3. Exemple 4. Notation grand O 5. Exemple de calcul de complexit 6. Hirarchie de complexits 7. Problmes intrinsquement complexes

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.1

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.2

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

1. Notions de complexit
On doit exiger qu'un programme soit correct par rapport sa spcification On peut exiger qu'un programme correct soit efficace Efficacit : mesure des ressources ncessaires mettre en oeuvre pour que le programme produise les rsultats attendus Complexit : prix payer pour rsoudre le problme

Exemples de ressources
!

CPU Mesure:

nombre d'oprations effectuer temps dexcution

Mmoire Mesure: nombre de cellules mmoires ncessaires (RAM, disque) Entre / sortie Mesure: nombre de transferts depuis/vers le disque par unit de temps Temps de dveloppement, maintenance Mesure: peu mesurable ...

Dfinition
Diffrence entre
! !

thoriquement calculable (calculabilit) et pratiquement calculable (complexit)

Mesure de l'efficacit d'un programme pour un type de ressources


! !

Complexit spatiale (espace mmoire) Complexit temporelle (temps dexcution)

un problme calculable peut tre pratiquement infaisable...

En pratique, complexit temporelle souvent plus importante que complexit spatiale.

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.3

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.4

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

Algorithme vs problme
Etant donn un algorithme, on peut tudier sa complexit Etant donn un problme, comment tudier sa complexit ? Complexit dun problme : complexit dun algorithme rsolvant le problme
!

Questions
!

Comment dfinir la complexit dun algorithme ? Comment mesurer la complexit dun algorithme ? Comment comparer la complexit dalgorithmes ? Comment dterminer la complexit dun problme ?

existence de plusieurs algorithmes rsolvant le problme ? algorithmes de complexits diffrentes ?

Complexit dpend de
! !

la taille des donnes de la reprsentation des donnes du modle de calcul utilis

Dfinition
Complexit dun problme : complexit de lalgorithme le plus efficace rsolvant le problme

Types de mesures
! ! !

pire des cas (worst case) meilleur des cas (best case) moyenne (average case)

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.5

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.6

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

2. Calcul de complexit
Complexit dun algorithme
! ! !

Jeux dessais
Mesure du temps dexcution
" " !

Jeux dessais (benchmarks) Analyse dalgorithmes

de programmes donns sur des machines donnes

permettent une comparaison


"

Complexit dun problme


!

Complexit dun algorithme rsolvant le problme Techniques de rduction


!

de programmes diffrents sur la mme machine dun programme sur des machines diffrentes

"

Un programme peut avoir des complexits diffrentes sur des donnes diffrentes, mais de mme taille (e.g. programme de tri) ! Hypothse implicite les jeux dessais sont reprsentatifs de lventail des donnes relles possibles

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.7

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.8

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

Analyse dalgorithmes
!

Rduction
Certains problme peuvent tre rsolus si lon dispose dun algorithme rsolvant un autre problme

Exprimer la complexit du programme comme une fonction de la taille des donnes Trouver une fonction T(n) exprimant la complexit du programme pour une donne de taille n T(n) : temps dexcution du programme T(n) obtenu par analyse du texte du programme

Exemple
Problme 1: trouver le maximum dune suite de nombres Problme 2: trier en ordre dcroissant une suite de nombres Si lon dispose dun algorithme rsolvant le problme 2, alors on a aussi un algorithme rsolvant le problme 1 (pas ncessairement le meilleur) Techniques de rduction dj beaucoup utilise pour dterminer la (non) calculabilit de problmes

! !

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.9

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.10

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

3. Exemple
procedure SelectionSort(var A : tableau, n: integer); {# PRE: n >= 1 A contient des valeurs entre les indices 1 n POST: A est tri en ordre croissant *} var MinPosition, temp, i, j : integer ; begin for i := n downto 1 do begin MinPosition := i; for j :=1 to i-1 do if (A[j] < A[MinPosition]) then MinPosition := j; temp := A[i]; A[i] := A[MinPosition]; A[MinPosition] := temp; end; end;

Exemple (cont.)
taille n tableau petit ordinateur station de travail

125 250 500 1000 2000

12.5 49.3 195.8 780.3 3114.9

2.8 11.0 43.4 172.9 690.5

Temps dexcution de Selectionsort (millisec.) sur deux ordinateurs diffrents


3500 T1(n) T2(n) 3000

2500

2000

1500

1000

500

0 0 500 1000 1500 2000

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.11

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.12

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

Exemple (cont.)
T1(n) = 0.000772 n2 + 0.00305 n + 0.001 T2(n) = 0.0001724 n2 + 0.0004 n + 0.1
!

Complexit
Diffrentes complexits :
" " "

temps de calcul moyen temps de calcul dans le meilleur des cas temps de calcul dans le pire des cas

T(n) = a n2 + b n + c
!

Peu importe lordinateur utilis, le temps dexcution sera une fonction quadratique de la taille (n) du tableau trier

Complexit moyenne est souvent difficile dterminer Ncessite des considrations statistiques

Nous ne considrerons que la complexit dans le pire des cas

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.13

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.14

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

Classes de complexit
Analyse dun programme ! forme gnrale de la courbe
(nous ne sommes pas intresss par la valeur des coefficients)

4. Notation grand O
Objectifs
Mesure indpendante des caractristiques techniques de l'environnement technologique
!

Une classe de complexit caractrise une famille de courbes Notation grand O: permet une caractrisation concise des classes de complexit
T(n) = a n2 + b n + c T(n) est O(n2)

nombre d'instructions machine gnres par le compilateur vitesse du CPU nature des instructions (comparaison, affectation, arithmtique, ...)

! !

Mesure dans le pire des cas


!

mesure de complexit pour une donne de taille n borne suprieure pour toute donne de taille n

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.15

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.16

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

Notation grand O (cont.)


Terme dominant
T(n) = a n2 + b n + c
T(n) = 0.0001724 n2 + 0.00040 n + 0.100

Notation grand O (cont.)


Pas de constante de proportionnalit
Excution sur diffrents ordinateurs donnerait diffrentes constantes a pour le terme a.n2 ! ignorer diffrentes constantes de proportionnalit
T(n) est O(n2)

n 125 250 500 1000 2000

T(n) 2.8 11.0 43.4 172.9 690.5

an

n2 vs % du total 94.7 98.2 99.3 99.7 99.9

2.7 10.8 43.1 172.4 689.6

Proprits de la notation grand O


! ! ! !

Se concentrer sur le terme dominant Ignorer les termes plus petits Ignorer les constantes de proportionnalit Se concentrer sur les problmes de grande taille Ignorer ce qui se passe pour les problmes de petite taille

Seul le terme dominant est utilis dans la notation grand O

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.17

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.18

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

Notation grand O (cont.)


Dfinition
O(g(n)) : le nombre dtapes excutes par le programme (i.e. temps dexcution) pour une donne de taille n nest pas plus lev que c g(n) (o c est une constante), pour des donnes de tailles n suffisamment grandes T(n) est O(g(n)) si c , n0 n n0 | T(n) | c | g(n) | Il existe un facteur multiplicatif c tel que pour des valeurs de n suffisamment grandes, g(n) est une borne suprieure de T(n) Prenons

Preuve de complexit
2 n2 + n - 1 = O(n2) Montrons que n0, K > 0 tel que n n0 : 2 n2 + n - 1 K n2

n0 = 5 K=4 On a : 2 n2 + n - 1 4 n2 2 n2 - n + 1 0 Toujours vrai pour n 5 (Note: le choix de n0 est ici sans importance )

Notations
Lorsque T(n) est O(g(n)) on crit T(n) = O(g(n)) (mais on devrait utiliser T(n) O(g(n)) )

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.19

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.20

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

Proprits
Grand O est une borne suprieure
3 n2 = O(n5) n = O(n5)

Proprits
Transitivit
Si T(n) = O(f(n)) et f(n) = O(g(n)) Alors T(n) = O(g(n))

Facteurs constants inutiles


1000 n3 = O(0.0001 n3) 3 n5 = O(n5) Si 4n2 = O(n2) et n2 = O(n3) donc 4n2 = O(n3)

Limites Termes d'ordre infrieur ngligeables


n5 + n3 = O(n5) ! ne pas mettre de facteurs constants ni de termes inutiles

g(n ) lim ----------- = a (avec a ) n f(n)

Alors g(n) = O(f(n)) g(n) ne crot pas plus vite que f(n)
(Attention, l'inverse n'est pas ncessairement vrai)

Base de logarithmes inutile


log2 n = O(log10 n) = O(log n)

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.21

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.22

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

n2 = O(2n) n
1000

Problmes avec notation grand O


n

= O(2 )

log2 n = O( n ) (log10 n)100 = O(n) 2 = O(3 )


n n

Borne suprieure
La notation O n'est pas trs prcise Pour un programme donn, T(n)=O(n3) signifie que n3 est une borne suprieure du temps d'excution Il est possible qu'on ait galement T(n) = O(n2), qui est une estimation plus favorable du temps d'excution du mme programme Existence dautres notations:
!

Sommation
Si
! ! !

T1(n) = O(f1(n)) T2(n) = O(f2(n)) f2(n) = O(f1(n)) T1(n) + T2(n) = O(f1(n))

Alors
!

(g(n)) : borne infrieure de complexit


"

Si f(n) = O(g(n)) Alors g(n) = (f(n))

Trs utile pour dterminer le temps d'excution de plusieurs fragments de programmes excuts les uns aprs les autres

(g(n)) : ordre (exact) de complexit


"

Si f(n) = O(g(n)) et f(n) = (g(n)) Alors g(n) = (f(n))

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.23

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.24

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

Problmes avec notation grand O


Seulement pour de grands problmes
La complexit dcrite par notation grand O ne sapplique que pour des problmes dont les donnes sont suffisamment grandes
!

5. Calcul de complexit un exemple: les tours de Hanoi


Le problme

O(n log n) vs O( n2)


300 T1(n) T2(n) 250

200

A
!

150

100

50

Objectif: transfrer tous les disques de A vers C Rgles:


" "

0 0 5 10 15 20

la recherche squentielle est plus rapide que la recherche dichotomique pour des tableaux de moins de 20 lments le tri bulles est plus rapide que le tri par tas pour des tableaux de moins de 10 lments
!

Ne bouger quun disque la fois ne jamais placer un disque sur un disque plus petit

Problme: crire un programme qui trouve les mouvements raliser pour atteindre lobjectif

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.25

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.26

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

Tours de Hanoi (cont.)


Exemple

Tours de Hanoi (cont.)


Application
Le problme des tours de Hanoi est un exemple de problme de planification (intelligence artificielle)

A
MOVE A C MOVE A B MOVE C B MOVE A C MOVE B A MOVE B C MOVE A C

Spcification
procedure hanoi( n: integer; start,aux,finish : char) {* PRE: n > 0 POST: sortie standard : mouvements pour raliser le transfert de n disques de start vers finish *}

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.27

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.28

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

Tours de Hanoi (cont.)


Comment rsoudre hanoi(n,A,B,C) ?

Tours de Hanoi (cont.)


Programme
procedure hanoi( n: integer; start,aux,finish : char) ; begin if (n<>0) then begin hanoi(n-1,start,finish,aux); writeln(MOVE ,start, , finish); hanoi(n-1,aux,start,finish); end; end; ... {* appel dans programme principal *} readln(nombre de disques ? : ; n) ; hanoi(n,A,B,C);

A
hanoi(n-1, A,C,B)

A
MOVE A C

A
hanoi(n-1,B,A,C)

A
Y. Deville UCL, 1999

B
CALCULABILIT ET COMPLEXIT

C
PAGE 6.29 Y. Deville UCL, 1999 CALCULABILIT ET COMPLEXIT PAGE 6.30

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

Tours de Hanoi Complexit


La complexit de hanoi(n,...) est le nombre de mouvements de la solution M(n) : nombre de mouvements de la solution de hanoi(n) La complexit de hanoi(n) est O(M(n)) M(n)

Calcul de complexit (cont.)


Mthode itrative
= = = = = = = = = = 2 * M(n-1) + 1 2 * (2 * M(n-2) + 1) + 1 4 * M(n-2) + 3 8 * M(n-3) + 7 23 * M(n-3) + (23 -1) ... 2k * M(n-k) + (2k -1) ... 2n * M(0) + (2n -1) 2n -1

Relation de rcurrence
M(0) = 0 M(n) = 2 * M(n-1) + 1 (pour n > 0)

Comment rsoudre une relation de rcurrence ?


! ! ! !

Imaginer une solution et la prouver Mthode itrative Application dune formule gnrale Mthodes mathmatiques

M(n) = 2n -1 Complexit de hanoi(n,...) est O(2n)

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.31

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.32

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

Calcul de Complexit (cont.)


Formule gnrale
C(n) = a * C(n-1) + b Forme normale C(n) = an * C(0) + b * Cas particuliers :
! ! !

Calcul de Complexit
Autre formule gnrale
T(0) = c T(n) = a * n + b + T(n-1)

(0i<n) ai

Forme normale: T(n) = a/2 n2 + (a/2 +b)*n + c Cas particuliers :


! !

a=1: C(n) est O(n) a=2: C(n) est O(2n) a1: C(n) est O(an)

a=0: T(n) est O(n) a0: T(n) est O(n2)

Exemple:
!

SelectionSort est O(n2)

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.33

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.34

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

Calcul de Complexit (cont.)


Autre formule gnrale
T(n) = a * T(n/b) + c * n avec a 1, b > 1, c 0 Cas particuliers :
! ! ! !

6. Hirarchie de complexits

Nom Constante Logarithmique Linaire n log n Quadratique Cubique Exponentielle Exponentielle

notation O(1) O(log n) O(n) O(n log n) O(n2) O(n3) O(2n) O(10n)

b < a : T(n) est O(n (ln a / ln b) ) b=a: T(n) est O(n log n)

b > a : T(n) est O(n) a = 1, c = 0 : T(n) est O(log n)

Exemple:
! !

MergeSort est O(n log n) BinarySearch est O(log n)

Les algorithmes de complexit exponentielle sont intrinsquement complexes

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.35

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.36

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

Complexit
!

Exemples
Algorithmes constants
! ! !

Hypothses:
" "

ordinateur 100 Mips traitement de 1 lment = 100 instructions machine


50 .00005 sec. .0025 sec. .125 sec. 5.2 min. 35.7 annes 2x108 sicles 100 .0001 sec. .01 sec. 1 sec. 2.7 heures 4x1014 sicles ... ... ... ... 500 .0005 sec. .25 sec. 2.08 min. 1 anne ... 1000 .001 sec. 1 sec. 16.6 min. 31.7 annes ... 10000 .01 sec. 1.6 min. 11.57 jours 31x103 sicles ...

imprimer un lment dun tableau ajouter un lment une queue rechercher un lment dans une table de hachage

10 n .00001 sec. n2 .0001 sec. n


3

Algorithmes logarithmiques
! !

recherche dichotomique dans un tableau recherche dans un arbre binaire de recherche

.001 sec.

Algorithmes linaires
!

n5

.1 sec.

recherche dun lment dans un tableau non tri

2n

.001 sec.

Algorithmes n log n
!

3n

.059 sec.

tri par tas, quicksort

Les algorithmes exponentiels sont intrinsquement complexes

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.37

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.38

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

Algorithmes quadratiques
! ! !

7. Problmes intrinsquement complexes


Certains problmes, quoique thoriquement solubles par programmes, sont en pratique infaisables, car ncessitant des ressources incompatibles avec les ralits physiques. Si il existe un algorithme de complexit polynomiale, alors le problme est pratiquement faisable Si il nexiste pas dalgorithme de complexit polynomiale, alors le problme est pratiquement infaisable
Existence dalgorithmes de complexit exponentielle (ou pire)

tri par change tri bulle (bubble sort) tri par insertion

Algorithmes cubiques
! !

multiplication de 2 matrices n * n perspective dune image 3D

Algorithmes exponentiels
! ! ! !

Voyageur de commerce coloration de graphes problmes dordonnancement problmes de planification

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.39

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.40

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

Dfinition
Un problme est intrinsquement complexe sil nexiste pas dalgorithme de complexit polynomiale rsolvant le problme Un problme intrinsquement complexe est pratiquement infaisable

Proprits
Exponentiel vs polynomial
Pour toute complexit exponentielle E, pour toute complexit polynomiale P, k:n>k E(n) > P(n) Complexit exponentielle devient toujours pire quune complexit polynomiale

Beaucoup de problmes intressants sont intrinsquement complexes ...

Influence de lvolution technologie


!

Hypothses:
" "

ordinateur 100 Mips traitement de 1 lment = 100 instructions machine

Ni = taille du plus grand' exemple dont la solution peut tre calcule en 1 heure de temps calcul

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.41

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.42

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

Influence du modle de calcul


Complexit n n2 n3 n5 2n 3n ordinateur daujourdhui N1 =3.6x109 N2 = 600000 N3 = 1530 N4 = 81 N5 = 31 N6 = 20 ordinateur 100 x 100 N1 10 N2 4.64 N3 2.5 N4 N5 + 6 N6 + 4 ordinateur 1000x 1000 N1 31.6 N2 10 N3 3.98 N4 N5 + 10 N6 + 6

Si un algorithme, exprim dans un modle de calcul particulier, est de complexit polynomiale, alors il sera galement de complexit polynomiale dans un autre modle de calcul (complexit spatiale et temporelle) Hypothse de modle de calcul raliste (pas de non dterminisme) La classe de problmes intrinsquement complexes est donc indpendante du modle de calcul

Peu importe les volutions technologiques, un problme intrinsquement complexe ne peut et ne pourra tre rsolu que pour de petits exemples

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.43

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.44

Ch.6: Introduction la complexit algorithmique

Ch.6: Introduction la complexit algorithmique

Influence de la reprsentation des donnes


En pratique, diffrents choix de reprsentation ou de codage des donnes induisent une variation polynomiale du temps dexcution et de lespace Hypothses:
!

Remarques
!

Un problme est intrinsquement complexe car parmi toutes les donnes de taille n, il existe au moins une pour laquelle le temps dexcution est exponentiel Pour certains problmes intrinsquement complexes, il existe des algorithmes polynomiaux pour presque toutes les donnes de taille n. Les cas o une donne de taille n donne lieu une complexit exponentielle peuvent parfois correspondre des cas particuliers que lon rencontre peu en pratique Il existe des algorithmes (efficaces) permettant de calculer des approximations de la solution exacte

reprsentation concise; pas dinformation inutile reprsentation effective (peut tre dcode par un programme) nombres non reprsents en base 1 taille de la reprsentation est logarithmique par rapport au nombre.
!

La classe de problmes intrinsquement complexes est donc indpendante de la reprsentation des donnes

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.45

Y. Deville UCL, 1999

CALCULABILIT ET COMPLEXIT

PAGE 6.46