ch4 algorthmique avancée - analyse & complexité des algorithmes
DESCRIPTION
TRANSCRIPT
,-
© L. B. Romdhane, Ph.D.
D S I / F S M / UM/Tunisie
INTRODUCTION (1)• Analyser la complexité d'un algorithme revient à
étudier ses performances
• Pourquoi ?• savoir les limitations d'un algorithme• choisir les machines adéquates pour l'exécuter
convenablement• comparer deux algorithmes pour choisir le plus efficace
• Paramètres mesurables• espace méraoire (RAM)« temps d'exécution
AS!) « 1,. B. Hunulhiuic; KSM.TN
>ommaire• Introduction
• Analyse expérimentale
• Analyse théorique
• Complexité asymptotique• Big-Oh• Big oméga
• Big thêta
• Méthodes récursives• Discussion
O L. B. Rumdhtmc; FSM.TN
• Espace mémoire, appelé aussi complexité spatiale,dépend de• la taille des données
• e.g.; nombre d'éléments d'un tableau, la valeur d'un paramètre
• choix d'une structure/type de données• e.g.; entier, réel, etc.
• L'avancement technologique fait que l'espace mémoiren'est plus un problème fondamental pour les machinesactuelles
• Grosse capacité, vitesse d'accès rapide
L. B. Rorailhuiiui FSM.TN
INTRODUCTION (3)» Le facteur primordial est le temps d'exécution« Appelé aussi complexité temporelle• Un fait réel : certains algorithmes sont encore très
lents à exécuter même sur les machines les plusperformantes
• Dépend des paramètres du problème à résoudre• nombre d'éléments d'un tableau à trier• taille (valeur) d'un nombre qu'on veut déterminer être
premier ou non ?« etc.
L. B. KomiiJuuic; l'SM.TN
Analyse Expérimentale
i ],. B. Rumdliane; FSM.TN
HTTRO D U CTi 0 N (4) "" '"
temps = /(paramètres du problème)
temps
FAnalyse
paramètres (input) Expérimentale Théorique
L. B. Romdhanej FSM.TN
Mesurer le temps d'exécution sur un ensemble dedonnées en faisant varier• l'ensemble des données; et/ou• la taille (le nombre) des données en entrée
Dégager Za corrélation entre temps et données ( F )à l'aide d'une étude statistique
temps _débuîPROGRAMME
temps_fm
temps ~ temps_début - temp_tin
L. B. Romdhanc; FSM.TN
EMARCHE (1)1.
2.
Fixer les tests à faire ?
« variation en fonction de la taille* Tri d'un tableau: varier la dimension
• sensibilité par rapport à un paramètre constant• calculer le zéro d'une fonction : mesurer le temps et
la précision du résultat obtenu en fonction du critèred'arrêt (e = 10^ ; £ = icr* ; ,..)
Mesurer le temps d'exécution• Très difficile à estimer correctement• Varie en fonction de plusieurs paramètres
• taille mémoire; vitesse CPU; OS; langage utilisé; etc.
© L. B. RoiiHlIiunc; FSM.TN L'J
TourdFJWnoExécuté sur 128 R.4M; et CPU = 866 Mliz; Windows XP; langage C
= 34: 2168 sec
i/rïw
gu
2500
2000 -
1500 -
1000
500 -
= 36,13 mn
•v— - j- — r- — J---W | v—
1 4 7 107 10 13 16 19 22 25 28 31 34
N (# disks)
ï L. B, KomdUane; ÏSM.TN
EMARCHE (2)3. Génération de l'ensemble des données en entrée
• choisir les données les plus représentatives• connaître la distribution des données en entrée
4. Codage & test de l'algorithme• effectuer « assez » de tests !
5. Analyser les résultats obtenus• dégager le comportement de l'algorithme en fonction
des données en entrée
• mettre ses résultats sous formulation mathématique(même empirique)
) L. ii. Ruuiilliuiiin l'SM.TN
« Les expérimentations sont possibles uniquement sur
un ensemble limité des données
• Les données doivent être bien choisies
* Temps d'exécution dépend de l'environnement
d'exécution :
• hardware (CPU, Mémoire, etc.)
• software (OS, compilateur, langage, etc.)
O L. B. Romdlianr, FSM.TN
l" \ Une comparaison équitable de 2 algorithmes exige
• implémentation/exécution sur le même environnement• développement par des compétences égales
• Le développement de l'algorithme est nécessaire• perte temps
• gaspillage argent
• Démarche coûteuse et parfois non praticable pour
certains algorithmes
« Le temps d'exécution peut durer des années !
© L. B. Ronullianc; FSM.TN
-^vîODELE* A ne pas confondre avec la Random Access Memory
« On considère un ensemble de primitives utilisées enalgorithmique qui sont indépendantes du langage deprogrammation :• affectation (<— )• appel d'une méthode (fonction ou procédure)» comparaison (<, >=, < > , > , > -)» accès à une case d'un tableau (T[ i ] )» retourner (résulat) (d'une méthode )
« opérations mathématiques (+, * , - , / )
« etc.
ASI) © L. B. Homdhant; FSM.TN M
Analyse Théorique
) L. B. Romdiiaue; FSM.TN
-IvTODELE-RAM (2)Une primitive dans le modèle RAM correspond à uneinstruction dans un
La durée d'exécution d'une instruction dépend del'environnement utiliséDans le modèle RAM, on suppose que le tempsd'exécution de toutes les primitives est le même;c'est-à-dire « une unité de temps »
Calc'ulefla compïëxïlé~iemporelie d'unalgorithme revient à comptabiliser le nombre deprimitives qu'il contient
L. U. Itoimlhane; FSM.TN
I XEMPLE (1)/ i u i r / i o f i arrayMax(A :
Ui l> l r au [N] d'entiers) : entier
VAR i, currentMax : entier
Début
1. currenMax <— A[i]
2. Pour i de 2 à N faire
3. Si ( currentMax < A[iJ )
4. alors currentMax <—A[i]
Fin Si
Fin Pour5. retourner (currentMax)FIN.
Inst.1.
2.
3.
4.
5
Tmin
Tmax
#opérations
2
1 affect; N compa. ; 1incré. et 1 affection (N-l)fois ; 1 + N + 2(N-1)
1 comparaison, 1 accès :N-l fois;2(N-l)
1 alïectation, 1 accès : N-1 fois; 2 (N-l)
1
5N
7 N - 2
i L. I). Komdlimii]; KSM.ÏN
-TfPÉS DE CÔMPLËXÏÏF
5ms •a
4 rns "
8 3ms -
B 2ms 'Cl
1 ms "
"i™
A
«I
i
1 -
-•~
B
U
"1
] f
JD
.1
Ë
E
ii .
.:'..
:'
F
iE
|
3
7"
}maximal
moyenne
minimal
C ]., B, Kn indhnne ; KSM.TN
-"EXEMPLE (2)Un algorithme peut s'exécuter plus rapidement sur unensemble de données que sur un autre ^
• A= [5,2,1,0]; T= Tmi'n = 20 ops ff là• A = [0,1,2,5]; T = Tmax = 26 ops /;'; ' jt^S• A = [5,4,6,0]; Tmin <= T <= Tmax \_
On peut dégager trois mesures de complexité« maximale ou au pire des cas ( worst case )• minimale ou au meilleur des cas ( best case )
• moyenne ( average case )
L. B. Ronuthane; FSM.TN
--COMP LEX lî• Pour déterminer la complexité moyenne, il faut
• mesurer la complexité de chaque cas possible (T,.)"-^ 'v• déterminer la fréquence de chaque cas (/))
• La complexité moyenne est donnée par
• Nécessite une idée précise sur les données du problème
« Difficile à utiliser en pratique• e.g.; problème du Tri
G L. B. Roindhant; FSM.TN
COMPLEXITE MINIMALEN'a aucune utilité pratique
II se peut que cettecomplexité ne soit atteinteque pour un ensemble trèsréduit des données; doncnon représentatif duproblème !
I L. B. Konidhane; KSM.TN
COMPLEXITE MAXIMALE• Assez informativea Constat - un algorithme
qui a de bonnesperformances dans lepire des cas, auratoujours de bonnesperformances quelquesoit les données en entrée
© L. B. Romdhane; FSM.TN
^COMPLEXITE ASYMPTOTYQUE• L'analyse de la complexité selon le modèle RAM est
difficile à appliquer sur des algorithmes (projetsinformatique) de grande taille
• Besoin d'une analyse• plus simple à calculer
• aboutir à la même conclusion concernant lecomportement de l'algorithme
8 Les mesures les plus communes« Big-Oh« Big-Oméga
« Big-Théta
«Big-Oh » (1) - Définition• Exprime le fait qu'une fonction est « inférieur ou égal »
à une autre au sens asymptotique
• Définition
f, g : N+ —> R ;f(n) est dite O(g(n)) ssi 3 c, une constante,et un entier constant n0 >= 11 f(n) <= c g(n); Vn >= n0
f(n)
ASD <0 L. B. Konulhane; KSM.TN ASD | L. B. Rumdhane; KSM.TN
« Big-Oh » (2)- Exemples• yn - 2 est O(n)
• c = 7; n0 = i
• n3+ zn- 5 est O( n3)• c = 2; n0 = i
• n + 3 log(n) est O( n )• c = 3; n0 = i
• 3n + n3 + nlog(n) est 0(3" )• c = i;n0 = i
• Big Oh permet de se concentrer sur les facteursdominants dans l'expression de la complexité
ASD © L. B. Rumdlianc; FSM.TN
« Big-Oh » (3) -ThéorèmeSoit d(n), e(n), f(n) et g(n) trois fonctions : N+ —>• R
1. d(n) est 0(f(n)) => a *d(n) est O(f(n)) Va > o
2. d(n) est O(f(n)); et e(n) est O(g(n)) :
a. d(n) + e(n) est 0(f(n) + g(n))
b. d(n) x e(n) est O (f(n) x g(n))
3. d(n) est O(f(n)) etf(n) est O(g(n)) =i> d(n) est
0(g(n))
4. f(n) - ao + ... + aknk est O(nk)
i L. B. Romdhane; FSM.TN
« Big-Oh » (4) - Fonctions usuelleslogarithmique linéaire quadratique polynomiale exponentielle
O(log(n)) O(n) O(ni (nk) (k >=l O(an)
exponentielle
quadratique/polynomiale
linéaire
&Big-Big Oméga (£1)
• une fonction f(n) est fi(g(n))ssi g(n) est O(f(n)); Le., 3c etn0>= i /g(n) <= cf(n); Vn>= nn
Big Thêta (9)
« une fonction f(n) est 0(g(n))ssi :
• fîn)estO(g(n)) «*
• f(n) esL Oi