Vous êtes sur la page 1sur 70

Analyse et complexit des

algorithmes

Alg Avance

H. Jamoussi Elkamel , FSM

Introduction
La question aborde dans ce chapitre est la suivante:
Comment choisir parmi les diffrentes approches
(mthodes de rsolution) pour rsoudre un
problme?
Exemple:
Approche itrative ou rcursive?
Algorithme de tri : par insertion, bulle, tri fusion ou
tri rapide?
Alg Avance

H. Jamoussi Elkamel , FSM

Introduction
Pour comparer des solutions dun problme, plusieurs
points peuvent tre pris en considration
Exactitude des algorithmes : prouver que le rsultat de
limplantation est celui escompt;
Simplicit des algorithmes;
Convergence et stabilit des algorithmes:
que nos solutions convergent vers la solution exacte (estimation de la
solution exacte) ;
que la perturbation des donnes ne change pas dune manire drastique
la solution obtenue

Efficacit des algorithmes : que nos solutions ne soient pas


lentes et ne prennent pas despace mmoire considrable.

Dans ce chapitre, on sintresse lanalyse de lefficacit


des algorithmes.
Alg Avance

H. Jamoussi Elkamel , FSM

Introduction
Lanalyse dalgorithmes se veut un outil daide la
comparaison des performances des algorithmes.
Lanalyse de la complexit permet de
Savoir les limitations dun algorithme (un algorithme peut
sexcuter sur un jeux des donnes, mais pas sur un autre);
Choisir les machines appropries pour excuter convenablement un
algorithme;
Comparer deux algorithmes pour un mme problme afin de choisir
le plus efficace.

Dans le cadre danalyse dalgorithmes, il sagit de mesurer


les ressources critiques (coteuses) utilises par les
algorithmes. Ces ressources sont, essentiellement :
Lespace mmoire
Le Temps dexcution
H. Jamoussi Elkamel , FSM
Alg Avance

Introduction
Dfinition : on appelle complexit de lalgorithme
A pour la ressource R la fonction
T(A, R, n)={ ressource R utilise par lalgorithme A lorsquil
est excut sur un ensemble des donnes de taille n }

La taille des donnes dentre dpend du problme


rsoudre, elle peut tre dfinie comme tant
lespace que les donnes en entres occupent en mmoire
Ex: dans le cas dalgorithme puissance : nombre de bits reprsentant
lentre n

Nombre dlments constituants lentre


Ex: algorithme de tri : le nombre des lments trier
Alg Avance

H. Jamoussi Elkamel , FSM

Complexit Spatiale
Dfinition : la complexit spatiale dun algorithme
est la taille de lespace mmoire utilis pour
lexcution dun algorithme
T(A, espace, n)
Elle dpend :
De la Taille de donnes dentre
Du Choix dune structure de donnes/ type de donnes

La complexit spatiale est un problme en moins


primordial vu les capacits techniques actuelles des
mmoires.
6

Alg Avance

H. Jamoussi Elkamel , FSM

Complexit Spatiale
Dans le cadre dun algorithme itratif, lespace utilis peut
se rsumer celui ncessaire pour reprsenter les variables
utilises.
Fonction factIter(a: entier): entier
La complexit spatiale dans
Var res: entier
cet algorithme est constante
Debut
= la taille de la variable res
res 1
+ la taille de la variable a
Tant que (a > 1) Faire
res res a
a (a-1)
FinTantque
Retourner (res)
Fin
Alg Avance

H. Jamoussi Elkamel , FSM

Complexit Spatiale
Dans les algorithmes rcursifs, il faut considrer en outre
lespace requis pour grer lensemble des appels rcursifs.
Cette gestion est organise au travers dune pile dexcution,
dont la taille est fonction du nombre dappels rcursifs.
Fonction factRec(a:entier):entier
Debut
Si (a = 0)
alors
retourner(1)
sinon
retourner (a factRec(a-1))
finsi
Fin

Alg Avance

La complexit spatiale =
taille de la pile dexcution
+ taille de la variable a
= a * taille de
lenvironnement dexcution
+ taille de la variable a
La complexit spatiale est
multiple de a

H. Jamoussi Elkamel , FSM

Complexit temporelle

Dfinition : la complexit temporelle dun


algorithme est le temps mis par ce dernier pour
sexcuter.
La complexit temporelle dpend des paramtres
du problme rsoudre c--d la tailles des
donnes dentres
La complexit temporelle dun algorithme A
pour une donne D de taille n sera note T(A, n)
ou simplement T(n)

Alg Avance

H. Jamoussi Elkamel , FSM

Mthode danalyse de la complexit temporelle


Deux mthodes danalyse peuvent tre utilises:
Analyse empirique: (exprimentale)
Analyse mathmatique : (thorique)

Lanalyse empirique consiste:


coder et excuter lalgorithme sur une batterie de donnes
gnres dune manire alatoire en faisant varier :
Lensemble des donnes et / ou
La taille des donnes en entres
chaque excution, on mesure le temps dexcution
Temps dexcution= tempsfin - tempsdbut
Ensuite, une tude statistique est entreprise pour dgager une
corrlation entre le temps dexcution et la taille des donnes
Alg Avance

H. Jamoussi Elkamel , FSM

10

Analyse Empirique : dmarche suivre


1. Fixer les tests faire

Variation en fonction de la taille des donnes dentre

Ex: problme de tri : varier la dimension

Sensibilit par rapport un paramtre

Calculer zro dune fonction: mesurer le temps et la prcision du


rsultat obtenu en fonction du critre darrt ( = 10-3, 10-4)

2. Mesurer le temps dexcution

Trs difficile estimer correctement


Varie en fonction de lenvironnement dexcution (Taille
mmoire, vitesse CPU, systme dexploitation, langage de
programmation utilis, compilateur, etc..)

Alg Avance

H. Jamoussi Elkamel , FSM

11

Analyse Empirique : dmarche suivre


3. Gnration de lensemble des donnes en entre

On doit choisir les donnes le plus reprsentatifs

Connatre la distribution des donnes en entre.

4. Codage et test de lalgorithme

Il faut effectuer assez de tests

5. Analyse les rsultats obtenus

Dgager le comportement de lalgorithme en fonction


des donnes en entre.
Mettre les rsultats de test sous formulation
mathmatique.

Alg Avance

H. Jamoussi Elkamel , FSM

12

Les limites de lanalyse empirique


1. Le temps dexcution dpend de lenvironnement
dexcution

Matriels (taille mmoire, vitesse CPU..)


Logiciels (OS, compilateur, langage de programmation)

2. Une comparaison quitable de deux algorithmes exige

Une implmentation et une excution sur le mme environnement


Un dveloppement par des comptences gales

3. Le dveloppement et le codage de lalgorithme est


ncessaire

Perte de temps et gaspillage dargent

4. Dmarche coteuse et parfois non praticable pour certains


algorithmes dont le temps dexcution peut durer des
annes.
Alg Avance

H. Jamoussi Elkamel , FSM

13

Analyse mathmatique
Pour pallier aux problmes de lanalyse empirique, une notion de
complexit plus simple mais efficace a t propose par les
informaticiens cest lanalyse mathmatique.
Lanalyse mathmatique de la complexit temporelle, consiste non pas
la mesurer en unit de temps (par exemple les secondes), mais
comptabiliser le nombre des instructions lmentaires (primitives)
excutes par lalgorithme
Cette manire de procder est justifie par le fait que la complexit
dun algorithme est en grande partie induite par lexcution des
instructions qui le composent.
Cependant, pour avoir une ide plus prcise de la performance
dun algorithme, il convient de signaler que la mthode
exprimentale et mathmatique sont en fait complmentaires.
Alg Avance

H. Jamoussi Elkamel , FSM

14

Modle de machine RAM (random Access Machine)


Pour que le rsultat de lanalyse dun algorithme soit pertinent, il faut
avoir un modle de la machine sur laquelle lalgorithme sera
implment (sous forme dun programme).
On prendra comme rfrence un modle de machine gnrique :
modle de machine accs alatoire (RAM) processeur unique
o les instructions sont excutes lune aprs lautre, sans
oprations simultanes
Le modle RAM comporte un ensemble de primitives utilises en
algorithmique qui sont indpendantes de langage de programmation:

Affectation ()
Comparaison (<, , >, , =, <>)
Appel une mthode (fonction, procdure)
Accs une case dun tableau (T[i])
Retourner (rsultat) dune mthode
Oprations arithmtiques (+, -, *, /)
Etc.

Alg Avance

H. Jamoussi Elkamel , FSM

15

Modle de machine RAM


Une primitive dans le modle RAM correspond
une instruction dans un langage de programmation.
Dans le modle RAM, on suppose que le temps
dexcution de toutes les primitives est le mme
cest--dire une unit de temps.
Calculer la complexit temporelle dun algorithme
revient comptabiliser le nombre de primitives
quil contient.
Alg Avance

H. Jamoussi Elkamel , FSM

16

Modle de machine RAM


lment de calcul de la complexit temporelle
T(opration lmentaire)= constante = 1
T(si(C ) alors I sinon J finsi ) T(C ) + max (T(I), T(J))
T(pour i de e1 e2 faire I finpour) =
=T(affectation)+ (e2-e1+1)*T(comparaison)+
(e2-e1)* (T(affectation)+T(incrmentation))+ T(Ii)
= 1+(e2-e1+1)+2(e2-e1) +T(Ii)
=3(e2-e1)+2+T(Ii)
Temps de calcul des mthodes rcursives est la solution
dquations de rcurrence.
Alg Avance

H. Jamoussi Elkamel , FSM

17

Complexit mathmatique
Exemple:
Problme: Recherche squentielle
Entres : une squence de n
lments a1, a2, .. an dun
tableau T et un lment E.
Sorties: i indice de llment E
dans le tableau T sil existe, -1
sinon
Principe
Dans un tableau de taille n, on
commence au dbut du tableau
et on considre chaque lment
jusqu ce que llment
cherch soit trouv ou soit on
termine le tableau.
Alg Avance

Fonction RechSeq(T:Tab; E: element; n : entier


: entier
Var i: entier
Debut
1 i1
2 Tant que ((i n ) ET (T[i]<>E))
Faire
3
ii+1
Fintantque
4 Si (i>n)
5
Alors retourner (-1)
6
Sinon Retourner (i)
finsi
Fin

H. Jamoussi Elkamel , FSM

18

Complexit mathmatique

Nous attribuons un cot pour chaque instruction, et nous comptons le nombre


dexcutions de chacune des instructions. Pour chaque i [1,n], nous notons ti le
nombre dexcution de la boucle tant que pour cette valeur de i.
Instruction

Cot

Nombre dexcutions

c1= 1 affectation =1

c2=2 comparaisons +Accs = 3

ti

c3= addition + affectation = 2

(ti-1)

c4= comparaison =1

c5= retour = 1

0 ou 1

c6= retour = 1

0 ou 1

T(n) = c1 + c2*ti + c3*(ti-1)+c4 +max(c5, c6)


T(n) = (c2 + c3)*ti + c1-c3 +c4+max(c5, c6)
T(n) = 5*ti + 1
ti dpend de la position de E dans le tableau

Alg Avance

H. Jamoussi Elkamel , FSM

19

Complexit mathmatique
Il est clair que ce dcompte dpend non seulement de la
valeur de llment E mais aussi de celles des lments du
tableau.
Par consquent, il y a lieu de distinguer trois mesures de
complexit:
1. Complexit minimale (dans le meilleur cas, best case)
2. Complexit maximale (dans le pire cas, worst case)
3. Complexit moyenne (dans la cas moyen, average case)

Alg Avance

H. Jamoussi Elkamel , FSM

20

Complexit minimale
La complexit minimale reprsente la complexit dun
algorithme A dans le meilleur des cas en fonction du
paramtre n. Cest le nombre minimal dinstructions
lmentaires excutes sur lensemble de donnes D de
taille n.
Tmin(n)= Tmin(A,n)=min {T(A,d) ; pour tout donnes D de taille n}

La complexit minimale : cest une borne minimale de


temps dexcution
na aucune utilit pratique
Il se peut que cette complexit ne soit atteinte que pour un
ensemble trs rduit des donnes, donc non reprsentatif du
problme.
Alg Avance

H. Jamoussi Elkamel , FSM

21

Complexit maximale
La complexit maximale reprsente la complexit dun
algorithme A dans le pire cas en fonction du paramtre n.
Cest le nombre maximal dinstructions lmentaires
excutes sur lensemble de donnes D de taille n.
Tmax(n)= Tmax(A,n)=max {T(A,d) ; pour tout donnes d de taille n}

Le temps dexcution dans le pire de cas dun algorithme


A est borne suprieure du temps dexcution pour une
entre quelconque.
Un algorithme qui a de bonnes performances dans le
pire des cas, aura toujours de bonne performances quelque
soit les donnes en entre
Alg Avance

H. Jamoussi Elkamel , FSM

22

Complexit moyenne
La complexit moyenne reprsente la complexit dun algorithme
A dans le cas moyen en fonction du paramtre n. Cest le nombre
moyen dinstructions lmentaires excuts sur lensemble de
donnes D de taille n.
Cest--dire la moyenne de toutes les complexits, Ti(n), pouvant
apparaitre pour tout ensemble de donnes D de taille n
Tmoy(n)= Tmoy(A,n)= p(d) * T(A,d)

d de taille n

Dans le cas o lon connait la probabilit P i de ralisation de la


valeur Ti (n), alors par dfinition, on a:
Tmoy(n) = p1 T1 (n) + p2 T2(n) + p3 T3(n) + ... +pn Tn (n)
Tmin(n) Tmoy(n) Tmax(n)
La complexit moyenne ncessite une ide prcise sur les donnes
du problme. Elle est difficile utiliser en pratique.
23

Alg Avance

H. Jamoussi Elkamel , FSM

Complexit de la recherche squentielle


T(n) = 5*ti + 1
Meilleur cas Le cas favorable se prsente quand llment E se
trouve au dbut du tableau
ti =1
Tmin(n) = 6 (une seule affectation + 3 test + un accs + un retour de la fonction)
Pire cas: Le cas dfavorable se prsente quand llment E ne se
trouve pas du tout dans le tableau. Dans ce cas, lalgorithme
aura examiner, en vain, tous les lments.
ti = n+1
Tmax(n) = 5 * ti +1 = 5(n+1)+1=5n +6
Alg Avance

H. Jamoussi Elkamel , FSM

24

Complexit de la recherche squentielle


Cas moyen: le calcul de complexit moyenne se fait comme suit:
Pour plus de simplicit, on suppose que E existe dans le
tableau.
On suppose aussi que sa probabilit de prsence dans lune des
positions de ce tableau est de 1/n (loi uniforme)
Si E est dans la position i du tableau, la complexit T(n) de
lalgorithme est
Ti(n) = 5*ti+1 avec ti = i
Par consquent, la complexit
moyenne
de notre algorithme est :
n
n
1 1
Tmoy (n) Ti (n) (5i 1)
n n i 1
i 1
1
(n 1) n
5(n 1)
5n 7
Tmoy (n) (5
n)
1
n
2
2
2

Alg Avance

H. Jamoussi Elkamel , FSM

25

Complexit asymptotique

Lanalyse de la complexit selon le modle RAM est difficile


appliquer sur des algorithmes de grande taille
On a besoin dune mthode danalyse permettant de rendre le
calcul plus simple, et daboutir la mme conclusion concernant
le comportement de lalgorithme.

La complexit asymptotique dun algorithme dcrit le


comportement de celui-ci quand la taille n des donnes
du problme trait devient de plus en plus grande, plutt
quune mesure exacte du temps dexcution.

Une notation mathmatique (notations de Landau), permettant


de reprsenter le comportement asymptotique:
Grand-O (Big-Oh) : O
Grand-Omga (Big-Omega) :
Grand-Thta (Big-Theta) :

Alg Avance

H. Jamoussi Elkamel , FSM

26

Notation Grand-O (Big-Oh)


Exprime le fait quune fonction est infrieure ou gale une autre
fonction au sens asymptotique.
Dfinition: Soient f(n) et g(n) deux fonctions valeurs strictement positifs.
f, g : N* R
f(n) est dite O(g(n)) ssi il existe une constante c>0 et un entier n0 1 telle
que n n0 f(n) c.g(n).
cg(n)

f(n)
n0
Signification: la notation Grand-O indique une borne suprieure sur le temps
dexcution.
T(n) est en O(g(n)) Pour toutes les grandes entres (i.e., nn0), on est assur que
lalgorithme ne prend pas plus de c.g(n) instructions lmentaires.
Borne suprieure.
Alg Avance

H. Jamoussi Elkamel , FSM

27

Grand-O: Exemples
T(n) = c est

en O(1).

c0=c et n0=1

T(n) = 3n2 -2

c0=3 et n0=1

est en O(n2).

T(n) = 4n3 + 2n2 -5 est en O(n3).


c0=6 et n0=1

T(n) = 5n +2log(n) est en O(n).


c0=7 et n0=1

T(n) = 5n+ n log(n) est en O(nlog(n)).


c0=6 et n0=1

T(n) = 3n +n3 + n log(n) est en O(3n).


c0=2 et n0=1

Grand-O permet de se concentrer sur les facteurs


dominants dans lexpression de la complexit.
Alg Avance

H. Jamoussi Elkamel , FSM

28

Grand-O: Rgles de simplification


Soient e, f, g, et h quatre fonctions de N* R
1. Les constantes sont ignores
Si f(n) est O(g(n)) alors k . f(n) est O(g(n)); o k > 0,
k constante
Si f(n) est O(g(n)) alors k + f(n) est O(g(n)); o k > 0,
k constante
2. La notation grand-O est transitive
Si f(n) est O(g(n)) et g(n) est O(h(n)) alors f(n) est
O(h(n)).
3. Si f(n) = O(g(n)) et e(n) = O(h(n)), alors
f(n) + e(n) est O(g(n) +h(n))
f(n)*e(n) est O(g(n) * h(n))
k est en O(nk) .
4.
f(n)
=
a
+a
n+....+a
n
0
1
n
H. Jamoussi Elkamel , FSM
Alg Avance

29

Grand-Omega
Grand- Exprime quune fonction

f est asymptotiquement suprieure

ou gale une autre fonction g.


Dfinition: Soient f(n) et g(n) deux fonctions valeurs strictement positifs.
f, g : N* R
f(n) est dite (g(n)) ssi c>0 et un entier n0 1 telle que n n0
c. g(n) f(n)
Signification: la notation Grand- indique une borne infrieure sur le
temps dexcution.
T(n) est en (g(n)) Pour toutes les grandes entres (i.e., nn0), on est
assur que lalgorithme ncessite au moins c.g(n) instructions lmentaires.
Borne infrieure.
Exemple : T(n) = c1n2 + c2n3.
c1n2 + c2n c1n2 pour tout n> 1; donc T(n) cn2 pour c = c1 et n0 = 1.
Ainsi, T(n) = (n2).
Alg Avance

H. Jamoussi Elkamel , FSM

30

Grand-Thta
Grand- Exprime quune fonction

f est asymptotiquement gale une

autre fonction g.
Dfinition: Soient f(n) et g(n) deux fonctions valeurs strictement positifs.
f, g : N* R
f(n) est dite (g(n)) ssi f(n) est O(g(n)) et f(n) est (g(n))
c--d : c1>0 , c2 >0 et un entier n0 1 / n n0 c1.g(n) f(n) c2.g(n)

Alg Avance

H. Jamoussi Elkamel , FSM

31

Comparaison de fonctions

Pour comparer deux fonctions f et g, en termes dordre, on calcul

Proprits

f ( n)
L lim
n
g ( n)

1. Si L = a 0,
alors f et g sont de mme ordre, c--d que
f(n) = O(g(n)) et g(n) = O(f(n))
f(n) = (g(n)).
2. Si L = 0
alors f est de lordre de g c--d f(n) = O(g(n)).
3. Si L =
alors g est de lordre de f c--d g(n) = O(f(n)).

Exemples

f (n) 3n 5 est en
2

Alg Avance

(n )
2

3n 2 5
car L lim
30
2
n
n

H. Jamoussi Elkamel , FSM

32

Remarque: dans plusieurs cas, pour faciliter les


calculs, la rgle de lHpital est souvent utilise.
Cette rgle est pratique car, en gnral, la drive
dune fonction est facile valuer que la fonction
elle-mme:
'

f ( n)
f ( n)
lim
lim '
n g ( n)
n g ( n )

Alg Avance

H. Jamoussi Elkamel , FSM

33

Classe de Complexit
Les algorithmes usuels peuvent tre classs en un
certain nombre de grandes classes de complexit:

Complexit constante en O(1)


Complexit logarithmique O(log(n))
Complexit linaire en O(n)
Complexit quadratique en O(n2)
Complexit polynomiale en O(nk) pour k 1
Complexit exponentielle en O(2n)
O(2 2 )
Complexit super-exponentielle O(nn) ou

Alg Avance

H. Jamoussi Elkamel , FSM

34

Exemple
(n)
(n2)
(n3)
(2n)
(lg n)
Alg Avance

H. Jamoussi Elkamel , FSM

35

Taux de croissance

Alg Avance

H. Jamoussi Elkamel , FSM

36

Rgles pour driver la complexit


Rgle 1: la complexit dun ensemble dinstructions est la
somme des complexits de chacune delles.
Rgle 2: Les oprations lmentaires telles que
laffectation, test, accs un tableau, oprations logiques et
arithmtiques, lecture ou criture dune variable simple ...
etc, sont en O(1) (ou en (1))
Rgle 3: Instruction si : maximum entre le bloc
dinstructions de alors et celui de sinon

selon : prendre le maximum parmi les complexits


des blocs dinstructions des diffrents cas de cette
instruction.
Alg Avance

H. Jamoussi Elkamel , FSM

37

Rgles pour driver la complexit


Rgle 4: Instructions de rptition:
1. la complexit de la boucle pour est calcule par la
complexit du corps de cette boucle multiplie par le
nombre de fois quelle est rpte.
2. En rgle gnrale, pour dterminer la complexit dune
boucle tant que, il faudra avant tout dterminer le nombre
de fois que cette boucle est rpte, ensuite le multiplier par
la complexit du corps de cette boucle.
Rgle 5: Procdure et fonction: leur complexit est dtermine
par celui de leur corps.
Notons quon fait la distinction entre les fonctions rcursives
et celles qui ne le sont pas: dans le cas de la rcursivit, le
temps de calcul est exprim comme une relation de
rcurrence.
Alg Avance

H. Jamoussi Elkamel , FSM

38

Exemples
Exemple 1:
ab
Temps constant: (1).
Exemple 2:
somme 0
Pour i de 1 n faire
somme somme + n;
Fin pour
Temps: (n)
Alg Avance

H. Jamoussi Elkamel , FSM

39

Exemples
Exemple 3:
somme 0
Pour i de 1 n faire
Pour j de 1 n faire
somme somme + 1
Fin pour
Fin pour
Pour k de 1 n faire
A[k] k
Fin pour
Temps: (1) + (n2) + (n) = (n2)
Alg Avance

H. Jamoussi Elkamel , FSM

40

Exemples
Exemple 4:
somme 0
Pour i de 1 n faire
Pour j de 1 i faire
somme somme + 1
Fin pour
Fin pour
Temps: (1) + O(n2) = O(n2)
Alg Avance

H. Jamoussi Elkamel , FSM

41

Exemples
Exemple 5:
somme 0 ;
k1
tant que (k n) faire
Pour j de 1 n faire
somme somme + 1
Fin pour
k k*2
Fin tant que
Temps: (n.log2(n))
Alg Avance

H. Jamoussi Elkamel , FSM

42

Recherche dun lment dans un tableau tri


Problme: Recherche
dichotomique
Entres : un tableau de n lments
tris par ordre croissant et un
lment E.
Sorties: i indice de llment E
dans le tableau T sil existe, -1
sinon
Principe
en tenant compte du fait que
les lments du tableau soient
dj tris. Considrer llment
au milieu, sil ne correspond
pas llment E recherch,
poursuivre la recherche dune
manire dichotomique gauche
ou droite du milieu.
Alg Avance

Fonction Rech-dicho(T: Tableau[N] des entiers;


n: entier E: entier): entier
Var debut, fin , milieu : entier
trouve : booleen
Debut
debut1; fin n ; trouve faux
Tant que ((debut fin ) ET (non (trouve)))
Faire
milieu(debut+fin)/2
Si (T[milieu]=E)
Alors trouve vrai
Sinon Si (E < T[milieu])
Alors fin milieu-1
Sinon debut milieu+1
finsi
finsi
Fintantque
Si (non(trouve)) Alors retourner (-1)
Sinon Retourner (milieu) finsi
Fin

H. Jamoussi Elkamel , FSM

43

Recherche dun lment dans un tableau tri


Analyse: comme nous lavons dj mentionn prcdemment, il y a lieu
de distinguer entre les trois diffrentes complexits.

Meilleur cas: Il nest pas difficile de voir que le cas favorable se


prsente quand llment recherch E est au milieu du tableau.
Autrement dit, la boucle tant que ne sera itre quune seule fois.
Dans ce cas, lalgorithme aura effectu un nombre constant
doprations; cest--dire en O(1).
Pire cas: Ce cas se prsente quand llment E nexiste pas.
Dans ce cas, la boucle tant que sera itre jusqu ce que la
variable fin < debut. Le problme est de savoir combien
ditrations sont ncessaires pour que cette condition soit vrifie.
Pour le savoir, il suffit de constater, quaprs chaque itration, la
taille de lensemble de recherche est divise par deux.
Au dpart, cet intervalle est gal fin debut + 1 = n.
Alg Avance

H. Jamoussi Elkamel , FSM

44

Recherche dun lment dans un tableau tri


Itration
intervalle de recherche
0
n
1
n/2
2
n/4
3
n/8
................................................
k
n/2k
On arrtera les itrations de la boucle tant que ds que la condition
suivante est vrifie (debut = fin)
n/2k = 1 n= 2k k = O(log2 n)
Autrement dit, la complexit de cet algorithme dans le pire cas est en
O(log2 n).
Exercice: complexit dans le cas moyen ?
Alg Avance

H. Jamoussi Elkamel , FSM

45

Analyse dalgorithmes rcursifs

Alg Avance

H. Jamoussi Elkamel , FSM

46

Principe de lanalyse dune mthode rcursive


Lanalyse dune mthode rcursive se fait sur deux
tapes:
1. Dfinition de la fonction de la complexit
temporelle T(n) laide dune quation de
rcurrence qui dcrit le temps dexcution global
pour un problme de taille n en fonction de temps
dexcution pour des entres de taille moindre.
2. Rsoudre cet quation de rcurrence pour en
dduire le comportement asymptotique.
Alg Avance

H. Jamoussi Elkamel , FSM

47

Types dquation de rcurrence


3 types dquations :

quation de rcurrence linaire

T (n) 1T (n 1) 2T (n 2) ..... k T (n k ) f (n)

quation de rcurrence linaire sans second membre

T (n) 1T (n 1) 2T (n 2) ..... k T (n k )

quations pour le paradigme diviser pour rgner

c si (n d)

n
T ( n)
aT ( ) f (n)

b
Alg Avance

c constante reprsentant le cot daller


chercher une solution particulire
T(n/b) La complexit de rsolution dun
sous-problme de taille n/b
f(n) est le cot de diviser le problme
original en sous-problme et puis de
combiner les solutions.

H. Jamoussi Elkamel , FSM

48

Equations de rcurrence: exemples


Problme factorielle

fonction facto (n: entier ):


entier
Si (n <= 0) on fait 1 test + 1retour
Debut
Si (n>0) on fait
Si (n < = 0)
1 test + 1 multiplication + 1 appel + 1
alors
soustraction + 1 retour
retourner (1)
Sinon
retourner (n*facto(n-1))
si (n 0) FinSi
2
T ( n)
Fin

T (n 1) 5 sinon

Alg Avance

H. Jamoussi Elkamel , FSM

49

Equations de rcurrence: exemples


Problme Fibonacci

fonction fibo (n: entier ): entier


Debut
Si (n=0) OU (n=1)
Si (n = 0) ou (n=1) on fait
alors
2 tests + 1retour
Si (n>0) on fait
retourner (n)
2 test + 2 apples + 2 soustractions +
Sinon
1 addition + 1 retour
retourner (fibo(n-1)+fibo(n-2))
FinSi
3 si (n 0 ) ou (n 1) Fin

T ( n)

T (n 1) T (n 2) 8

Alg Avance

H. Jamoussi Elkamel , FSM

50

Equations de rcurrence: exemples


Procdure Tri-Fusion (var T: Tab; debut, fin: entier )
Var milieu : entier
Debut
Si (debut<fin)
alors
diviser
milieu (debut + fin) div 2
Tri-Fusion(T, debut, milieu)
rgner
Tri-Fusion(T, milieu+1, fin)
combiner
Fusionner(T, debut, milieu, fin)
/* fusionner deux sous squences tries*/

Finsi
Alg AvanceFin.

H. Jamoussi Elkamel , FSM

51

Equations de rcurrence: exemples


Procdure Fusionner (var T: tab; debut,
milieu, fin : entier )
Var i, j, k : entier
R: tab
Debut
idebut
j milieu + 1
k 1
Tant que (i milieu) et (j fin) faire
Si (T[i] < T[j])
alors R[k] T[i]
i i+1
Sinon R[k] T[j]
j j+1
FinSi
k k+1
FinTantQue
Alg Avance

Tant que (i milieu) faire


R[k] T[i]
i i+1
k k+1
FinTantQue
Tant que (j Fin) faire
R[k] T[j]
j i+1
k k+1
FinTantQue
pour k de 1 (Fin-debut +1) faire
T[k+debut-1] R[k]
FinPour
Fin

H. Jamoussi Elkamel , FSM

52

Equations de rcurrence: exemples


Problme Tri-fusion
(1) si (n 0 ) ou (n 1)
n
T ( n)
2
T
(
)

(
n
)
si
n

Alg Avance

H. Jamoussi Elkamel , FSM

53

Rsolution de lquation de rcurrence


Pour rsoudre les quations de rcurrence plusieurs
approche sont possibles:
1.
2.
3.
4.

Mthode de substitution
Mthode itrative
Mthode de larbre de rcursivit (dexcution)
Application dun Thorme

Alg Avance

H. Jamoussi Elkamel , FSM

54

Mthode par substitution


La mthode par substitution demande que la forme gnrale
de la solution soit dj pressentie et on utilise linduction
mathmatique pour montrer que la solution est correcte et
trouver la constante.
si n 1
1
Exemple:
n
T ( n)

2T ( 2 ) n si n 1

Montrer que T(n)= O(nlog2(n))


(1)
n
n
n
On suppose que
T ( ) c log 2 ( )
2
2
2
Et en substituant dans lquation de rcurrence.
Alg Avance

H. Jamoussi Elkamel , FSM

55

Mthode par substitution


Dmonstration par Induction mathmatique
On suppose que la relation (1) est vrifie pour tout k<n et
on la dmontre pour n
On suppose que (1) est vrifie pour tout k < n cest--dire
T(k)= O(k.log2(k))

T (k ) O(k log 2 (k )) c 0; n 0 N / T (k ) ck log 2 (k )


Etant donne que (n/2) < n donc

n
n
n
c 0 / T ( ) c log 2 ( )
2
2
2

En substituant dans lquation de rcurrence.

n
n
n
n
T (n) 2T ( ) n 2(c( ) log 2 ( )) n c n log 2 ( ) n
2
2
2
2
n
or on a : log 2 ( ) log 2 (n) log 2 (2) log 2 (n)
et n n log 2 (n)
2
donc T (n) c n log 2 (n) n log 2 (n) (c 1) n log 2 (n) c'n log 2 (n)
Alg Avance

H. Jamoussi Elkamel , FSM

56

Mthode itrative
Lide est de dvelopper la rcurrence et de lexprimer sous la forme dune
sommation de termes dpendant uniquement de n et des conditions initiales .
si n 1
1
Exemple:
n
T ( n)
2
T
(
) n si n 1

n
2
T (n) n 2T ( )
2
n
n
n
n
n
n 2( 2T ( )) n 2( 2( 2T ( )))
2
4
2
4
8
n
n
n
n
n
n 2( 2( 2( 2( ........ 2( log 2 ( n ) 1 2T (1))...))))
2
4
8
16
2
21 n 2 2 n 23 n 2 4 n
2 log 2 ( n ) 1 n
n

..... log 2 ( n ) 1 2log 2 ( n ) T (1)


2
4
8
16
2
n(

log 2 ( n ) 1

1 ) 2
i 0

log 2 ( n )

T (1) n log 2 (n) n O (n log 2 (n))

x i 1 1
, si x 1
Se souvenir que x
x 1
i 0
Alg Avance

et

H. Jamoussi Elkamel , FSM

que

a logb (n) n logb (a)


57

Mthode de larbre de rcursivit


Larbre de rcursivit est un moyen pratique pour calculer le
cot dune mthode rcursive.
si n 1
1
Exemple:
n
T ( n)
2T ( ) n 2

p=0

si n 1

n2

n2

p=1

(n/2)2

1 2
n
2

(n/2)2

Log2(n)+1
p=2
.
.

Alg Avance

(n/4)

(n/4)

(n/4)

(n/4)

1 2
n
4

2
n
log 2 ( n ) 1

p=log2(n)-1

p=log2(n)

2log 2 ( n ) T (1)
H. Jamoussi Elkamel , FSM

58

Mthode de larbre de rcursivit


T (n) n 2 (1

1 1 1
1
... log 2 ( n ) 1 ) 2 log 2 ( n ) T (1)
2 4 8
2

1 1 1
1
... log 2 ( n ) 1 ) n
2 4 8
2
1 log 2 ( n )

1
2

n2
n

log 2 ( n )
2

n
2n 1

2n 2 n c n 2
n 2 (1

T ( n ) ( n )
2

Se souvenir que le nombre de nuds dun arbre complet une


profondeur p est 2p
Alg Avance

H. Jamoussi Elkamel , FSM

59

Thorme gnral
Soient a 1 et b > 1 deux constantes, soient f (n) et
T(n) deux fonctions dfinies sur les entiers positifs
par lquation de rcurrence
c

T ( n)

si (n d )

n
aT ( ) f (n) si n d

n
n
o l'on interprte
comme tant b

b
Alg Avance

H. Jamoussi Elkamel , FSM

ou

n
b

60

Thorme gnral
T(n) peut alors tre borne asymptotiquement de la faon
suivante:

log b ( a )
f
(
n
)

(
n
) pour une certaine constante > 0, alors
1. si

T (n) (n logb ( a ) )
2. si

f (n) (n logb ( a ) log 2 (n))

alors

T ( n ) ( n

k 1

log b ( a )

log 2

(n)) ( f (n) log 2 (n))

log b ( a )

) pour une certaine constante > 0,


3. si f (n) ( n
et si a.f(n/b) .f(n) pour une certaine constante < 1 et
pour n suffisamment grand, alors
T (n) ( f (n))
Alg Avance

H. Jamoussi Elkamel , FSM

61

Thorme gnral: signification


log b ( a )
n
Dans chacun de trois cas on compare f(n) la fonction
Intuitivement, la solution de la rcurrence est dtermine
par la plus grande de deux fonctions.
log ( a )
log b ( a )
T
(
n
)

(
n
)
Cas 1: n
est la plus grande, alors
Cas 3: la fonction f(n) est la plus grande, alors T(n)=(f(n))
Cas 2: les deux fonctions ont la mme taille, on multiplie
par un facteur logarithmique, et T (n) ( f (n) log 2 (n))
Remarque :
b

Les trois cas ne couvrent pas toutes les possibilits pour


f(n). Il ya un
log b ( a )
trou entre le cas 1 et 2, quand f(n) est plus petit que n
mais pas
polynmialement. Dans ce, on ne peut pas appliquer le thorme.
De mme, si la condition de rgularit du cas 3 ne tenait pas.
Alg Avance

H. Jamoussi Elkamel , FSM

62

Thorme gnrale: exemples


Exemple 1:

a=9 , b= 3
Cas 1 donc,
Exemple 2:

a=2 , b= 2
Cas 2 donc,

Alg Avance

n
T (n) 9T ( ) n
3
n logb ( a ) n log3 (9) n 2 , f (n) n (n 2 )

T(n)= (n2)
n
T (n) 2T ( ) n log(n)
2
n logb ( a ) n log 2 ( 2) n1 , f (n) n log(n)

T(n)= (n.log22(n))

H. Jamoussi Elkamel , FSM

63

Thorme gnrale: exemples


Exemple 3:

n
T (n) 3T ( ) n log(n)
4

n
a=3 , b= 4 n
f(n)= (n0,79+) cas 3
log b ( a )

log 4 ( 3)

0 , 79

, f (n) n log(n)

n
n
n
3
3
af ( ) 3 log( ) n.log(n) , donc 1
b
4
4
4
4

On est bien dans le cas 3


donc,
T(n)= (n.log(n))
Alg Avance

H. Jamoussi Elkamel , FSM

64

Rsolution des quations linaires sans second


membre
Soit une quation de rcurrence linaire dordre k sans second
membre:

T (n) 1T (n 1) 2T (n 2) ..... k T (n k )

On y associe son polynme caractristique:

P ( x ) x 1 x
k

k 1

2x

k 2

.... k

La rsolution de ce polynme donne k k racines ri de multiplicit wi.


La solution de lquation est alors :

T (n) Q1 (n)r Q2 (n)r .... Qk ' (n)r


n
1

n
2

n
k'

O Qi(n) sont des polynme de degr wi-1.


Les coefficients de chaque Qi sont dtermins grce aux k premiers
termes (T(0), T(1), T(2) .T(k-1)).
Alg Avance

H. Jamoussi Elkamel , FSM

65

Rsolution des quations linaires sans


second membre

Exemple: T (0) 2

T (1) 2
T (n) T (n 1) T (n 2)

1 5
1 5
P( x) x x 1 donc r1
; r2
2
2
5 1
5 1
n
n
T(n) ar1 br2 avec a
; b
;
5
5
2

T (n)

Alg Avance

1 5
n

r
1

H. Jamoussi Elkamel , FSM


66

Rsolutions des quations linaires dordre 1 avec


second membre
La solution dune quation linaire dordre 1 de la forme:

T (n) a T (n 1) f (n)
est

T ( n ) a T ( 0)
i 1

Alg Avance

H. Jamoussi Elkamel , FSM

f (i )

i
a

67

Rsolutions des quations linaires dordre 1


avec second membre
Exemple

T (0) 1

T (n) 2 T (n 1) 1

1 n 1

1

n
n
1
1
2

n
n
n 1
T ( n) 2 1 i 2 i 2 n

2
1

1
i 1 2

i 0 2
1

1
Utiliser lquation ci-dessous avec x
2
n 1
n

1
x
,

x 1
i 0
i

Alg Avance

x 1

H. Jamoussi Elkamel , FSM

68

Rsolution des quations linaires dordre 2


avec second membre
A une quation linaire dordre 2 de la forme :

T (n) a T (n 1) b T (n 2) f (n)
On y associe lquation homogne

C (n) a C (n 1) b C (n 2)

Puis on rsout C(n) qui est une quation linaire sans second
membre.
On sait ensuite que T(n)= C(n)+g(n) o g(n) est une
solution particulire de lquation dordre 2 avec second
membre.

g (n) a g (n 1) b g (n 2) f (n)
Alg Avance

H. Jamoussi Elkamel , FSM

69

Rsolution des quations linaires dordre 2


T (0) 1
Exemple:
T (1) 1
T (n) T (n 1) T (n 2) 1

Equation homogne associe C ( n) C (n 1) C ( n 2)


On trouve (les conditions initiales ont chang, a et b sont
n
n
diffrents de a et b)
C(n) a' r1 b' r2
On sait que
T(n) C(n) g(n)
Et que g(n) est une solution particulire cest- dire
g (n) g (n 1) g (n 2) 1
On trouve que g(n)= fonctionne : =++1
Et donc =-1
Alg Avance

H. Jamoussi Elkamel , FSM

70