Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
algorithmes
Alg Avance
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
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
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.
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 }
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
Alg Avance
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
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
Complexit temporelle
Alg Avance
10
Alg Avance
11
Alg Avance
12
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
14
Affectation ()
Comparaison (<, , >, , =, <>)
Appel une mthode (fonction, procdure)
Accs une case dun tableau (T[i])
Retourner (rsultat) dune mthode
Oprations arithmtiques (+, -, *, /)
Etc.
Alg Avance
15
16
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
18
Complexit mathmatique
Cot
Nombre dexcutions
c1= 1 affectation =1
ti
(ti-1)
c4= comparaison =1
c5= retour = 1
0 ou 1
c6= retour = 1
0 ou 1
Alg Avance
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
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}
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}
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
Alg Avance
24
Alg Avance
25
Complexit asymptotique
Alg Avance
26
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
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).
28
29
Grand-Omega
Grand- Exprime quune fonction
30
Grand-Thta
Grand- Exprime quune fonction
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
31
Comparaison de fonctions
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
32
f ( n)
f ( n)
lim
lim '
n g ( n)
n g ( n )
Alg Avance
33
Classe de Complexit
Les algorithmes usuels peuvent tre classs en un
certain nombre de grandes classes de complexit:
Alg Avance
34
Exemple
(n)
(n2)
(n3)
(2n)
(lg n)
Alg Avance
35
Taux de croissance
Alg Avance
36
37
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
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
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
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
42
43
44
45
Alg Avance
46
47
T (n) 1T (n 1) 2T (n 2) ..... k T (n k )
c si (n d)
n
T ( n)
aT ( ) f (n)
b
Alg Avance
48
T (n 1) 5 sinon
Alg Avance
49
T ( n)
T (n 1) T (n 2) 8
Alg Avance
50
Finsi
Alg AvanceFin.
51
52
(
n
)
si
n
Alg Avance
53
Mthode de substitution
Mthode itrative
Mthode de larbre de rcursivit (dexcution)
Application dun Thorme
Alg Avance
54
2T ( 2 ) n si n 1
55
n
n
n
c 0 / T ( ) c log 2 ( )
2
2
2
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
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
1 ) 2
i 0
log 2 ( n )
x i 1 1
, si x 1
Se souvenir que x
x 1
i 0
Alg Avance
et
que
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
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
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
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
alors
T ( n ) ( n
k 1
log b ( a )
log 2
log b ( a )
61
(
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
62
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))
63
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
64
T (n) 1T (n 1) 2T (n 2) ..... k T (n k )
P ( x ) x 1 x
k
k 1
2x
k 2
.... k
n
2
n
k'
65
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
66
T (n) a T (n 1) f (n)
est
T ( n ) a T ( 0)
i 1
Alg Avance
f (i )
i
a
67
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
68
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
69
70