0% ont trouvé ce document utile (0 vote)
354 vues29 pages

Complexité des Algorithmes

Transféré par

Anouar Donald Cobain
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
354 vues29 pages

Complexité des Algorithmes

Transféré par

Anouar Donald Cobain
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Algorithmes Complexit e Conclusion

Complxit des algorithmes e e


Pr. Mohamed EL ANSARI
Dpartement dInformatique e Facult des Sciences, Universit Ibn Zohr e e Agadir

melansari@[Link]

Fili`re: SMI4 e Module: Algorithmes & Structures de donnes e


Pr. Mohamed EL ANSARI

Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Plan
1

Algorithmes Reprsentations des algorithmes e Codage dun algorithme Oprations lmentaires e ee Complexit e Notions de complexit e Complexit en temps e Types de complexit e Notations en O Notations en Complexit dun algorithme rcursif e e Echelle de complexit e Conclusion
Pr. Mohamed EL ANSARI Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Reprsentations des algorithmes e Codage dun algorithme Oprations lmentaires e ee

Algorithmes
Le mot algorithme vient du nom du mathmaticien arabe Al Khuwarizmi. Un algorithme est une suite de traitement lmentaires ee pouvant tre excutes automatiquement. e e e Un algorithme prend en entre des donnes et produit un e e rsultat. e Une recette de cuisine est un algorithme, lentre tant les e e ingrdients et la sortie le plat cuisin. e e Lalgorithme dEuclide: cest un algorithme permettant de dterminer le plus grand commun diviseur (P.G.C.D.) de deux entiers.
Pr. Mohamed EL ANSARI Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Reprsentations des algorithmes e Codage dun algorithme Oprations lmentaires e ee

Reprsentations des algorithmes e


Un programme est la ralisation dun algorithme (traduction e en un language de programmation ` savoir C/C++, Pascal, a Fortran, Java, ...etc). Pour dcrire la solution dun probl`me, on utilise les e e algorithmes an de saranchir des langages de programmation. Lalgorithme sera par la suite traduit au langage souhait. e Il y a deux types de reprsentations pour les algorithmes: e
1 2

Un pseudo langage (pseudo-code) Un organigramme

Pr. Mohamed EL ANSARI

Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Reprsentations des algorithmes e Codage dun algorithme Oprations lmentaires e ee

Pseudo langage

Structures lmentaires dun pseudo langage: ee


1 2 3

Entres/Sorties: LIRE, ECRIRE e Aectation: X Y Instructions conditionnelles:


Si condition Alors instructions FinSi Si condition Alors instructions1 Sinon instructions2 FinSi

Instructions rptitives (les boucles) e e


TantQue condition Faire instructions FinTantQue Faire instructions TantQue condition Pour i=0 ` n Faire instructions FinPour a

Pr. Mohamed EL ANSARI

Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Reprsentations des algorithmes e Codage dun algorithme Oprations lmentaires e ee

Pseudo langage
Exemple

Exemple: Calculer la factorielle de N. Version itrative e


1 2 3

LIRE N F 1 Pour I=1 ` N Faire a F F I FinPour ECRIRE F

NB. Il nexiste pas de formalisme universel pour lcriture dun e pseudo programme.
Pr. Mohamed EL ANSARI Complxit des algorithmes e e

Organigramme
Un organigramme permet de reprsenter graphiquement un algorithme. e Organigramme de la factorielle

Algorithmes Complexit e Conclusion

Reprsentations des algorithmes e Codage dun algorithme Oprations lmentaires e ee

Codage dun algorithme


Traduire lalgorithme dans un langage de programmation pour pouvoir lexcuter sur un ordinateur. e Chaque instruction lmentaire sera traduite dans le langage ee de programmation. Il faut choisir la faon de reprsenter les donnes (structures c e e de donnes). e Pour rsoudre un probl`me: nombreux algorithmes possibles. e e Pour chaque algorithme: plusieurs choix de structures de donnes. e

Pr. Mohamed EL ANSARI

Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Reprsentations des algorithmes e Codage dun algorithme Oprations lmentaires e ee

Oprations lmentaires e ee
Etant donn un algorithme, nous appelons oprations e e lmentaires: ee
1 2 3

un acc`s en mmoire pour lire ou crire la valeur dune variable; e e e une opration arithmtique entre deux variables: +,- ...etc; e e une comparaison entre deux variables.

Considrons par exemple linstruction c a + b. Elle fait e appel ` quatre oprations lmentaires: a e ee
1 2 3 4

lacc`s en mmoire pour lire la valeur de a, e e lacc`s en mmoire pour lire la valeur de b, e e laddition de a et b, lacc`s en mmoire pour crire la nouvelle valeur de c. e e e

Pr. Mohamed EL ANSARI

Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Notions de complexit e Complexit en temps e Types de complexit e Notations en O Notations en Complexit dun algorithme rcursif e e Echelle de complexit e

Notions de complexit e
Plusieurs algorithmes permettent de rsoudre un mme e e probl`me. e Exemple: Pour trier les lments dun tableau il y a dirents ee e algorithmes:
1 2 3 4 5

tri par slection, e tri par insertion, tri rapide, tri par fusion, ....

Comment valuer les performances dun algorithme? e Sur quel crit`re il faut se baser pour choisir le meilleur e algorithme?
Pr. Mohamed EL ANSARI Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Notions de complexit e Complexit en temps e Types de complexit e Notations en O Notations en Complexit dun algorithme rcursif e e Echelle de complexit e

Notions de complexit e
La complexit dun algortithme est une valuation du cot de e e u lalgorithme en termes de:
1 2

temps dexcution (complexit temporelle) ou e e despace mmoire (complexit spatiale, encombrement en e e mmoire des donnes) e e

On va traiter dans la suite la complexit temporelle. Les e mmes notions permettent de traiter la complexit spatiale. e e La complexit permet de dterminer si un algorithme A et e e meilleur quun algorithme B.

Pr. Mohamed EL ANSARI

Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Notions de complexit e Complexit en temps e Types de complexit e Notations en O Notations en Complexit dun algorithme rcursif e e Echelle de complexit e

Complexit en temps e

Complexit = temps de calcul et mmoire requis pour obtenir e e un rsultat donn. e e Bonne ma trise de la complexit se traduit par: e
1 2

temps de calcul des applications prvisible, e mmoire occupe par lapplication est contrle. e e oe des latences importantes dans les temps de calcul, des dbordements mmoire, e e consquence : planter la machine. e

Mauvaise comprhension de la complexit dbouche sur: e e e


1 2 3

Pr. Mohamed EL ANSARI

Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Notions de complexit e Complexit en temps e Types de complexit e Notations en O Notations en Complexit dun algorithme rcursif e e Echelle de complexit e

Complexit en temps e
Lvaluation exacte du temps de calcul dpend de nombreux e e param`tres: e
1 2 3 4 5

le langage utilis pour coder lalgorithme. e le compilateur utilis. e lordinateur sur lequel va tourner le programme (sa rapidit). e taille et structure de donnes. e ....

Objectif: comparer plusieurs algorithmes permettant de rsoudre un mme probl`me lorsque la taille des donnes e e e e manipules devient grande. e Nous sommes plus intresss par un comportement e e asymptotique: que se passe-til quand la taille des donnes e tend vers linni?
Pr. Mohamed EL ANSARI Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Notions de complexit e Complexit en temps e Types de complexit e Notations en O Notations en Complexit dun algorithme rcursif e e Echelle de complexit e

Complexit en temps e
Dnitions e

Dnition de la complexit dun algorithme e e Soit A un algorithme et d une donne dentre de A. On appelle e e complexit de A pour d, note CA (d), le nombre doprations e e e lmentaires eectues lors de lexcution de A sur d. ee e e Le nombre doprations est exprim en fonction de param`tres e e e associs aux instances ` traiter. e a Exemple: la complexit dun tri est fonction du nombre de e donnes ` trier. La complexit nest pas la mme avec deux e a e e jeux de donnes dirents ` savoir: e e a
rapide si des donnes sont dj` tries. e ea e moins rapide si les donnes sont dsordonnes. e e e
Pr. Mohamed EL ANSARI Complxit des algorithmes e e

Types de complexit e
1

La complexit dans le pire des cas: on consid`re le plus grand e e nombre doprations lmentaires eectues sur les donnes. e ee e e On cherche un majorant de la complexit e (SupA (n) = sup{CA (d)/d de taille n}). Cest la mesure la plus utilise. e La complexit dans le meilleur des cas: on consid`re le plus e e petit nombre doprations lmentaires eectues sur les e ee e donnes (InfA (n) = inf {CA (d)/d de taille n}). e La complexit en moyenne: la moyenne des nombres e doprations lmentaires eectues sur tous les jeux des e ee e donnes. Ce calcul est gnralement dicile ` formuler car il e e e a faut conna la probabilit de chacun des jeux de donnes tre e e pour un calcul pertinent de cette moyenne (MoyA (n) = d de taille n p(d) CA (d)).

Algorithmes Complexit e Conclusion

Notions de complexit e Complexit en temps e Types de complexit e Notations en O Notations en Complexit dun algorithme rcursif e e Echelle de complexit e

Calcul de la complexit dans le pire des cas: exemple-1 e


Exemple-1 1. K 0 2. I 0 3. TantQue I N Faire
a. R R + [I ] b. I I + 1

4. FinTantQue Supposons que (avec t1, t2, t3, et t4 sont des constantes): t1: temps dexcution des instructions 1-2. e t2: temps dexcution de linstruction 3 (comparaison). e t3: temps dexcution de linstructions a. e t4: temps dexcution de linstructions b. e
Pr. Mohamed EL ANSARI Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Notions de complexit e Complexit en temps e Types de complexit e Notations en O Notations en Complexit dun algorithme rcursif e e Echelle de complexit e

Calcul de la complexit dans le pire des cas: exemple-1 e


Le temps dexcution t(n) pour N = n scrit: e e n (t2 + t3 + t4) + t2 t(n) = t1 + i =1 Soit tit le temps dexcution dune itration dni par e e e tit = t2 + t3 + t4 alors t(n) = t1 + t2 + n tit Le temps dexcution dpend linairement de la taille n e e e (fonction ane). Comportement asymptotique: valeur de t(n) quand n tend vers linni? t(n) est quivalente ` tit n lorsque n tend ` linni. e a a Lalgorithme est donc asymptotiquement linaire en n. e
Pr. Mohamed EL ANSARI Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Notions de complexit e Complexit en temps e Types de complexit e Notations en O Notations en Complexit dun algorithme rcursif e e Echelle de complexit e

Notations en O

Domination asymptotique Soient f et g deux fonctions de N dans R+ , Si c R+ et n0 N tels que, pour tout n > n0 , f (n) c g (n) on dit que f est en O(g ) (f est asymptotiquement domine par g ) e Exemple f (n) = 3n + 1, g (n) = n alors 3n + 1 est en O(n). En eet pour n0 = 2 et c = 4 on a 3n + 1 4n pour n > n0

Pr. Mohamed EL ANSARI

Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Notions de complexit e Complexit en temps e Types de complexit e Notations en O Notations en Complexit dun algorithme rcursif e e Echelle de complexit e

Notations en
Ordre de grandeur Soient f et g deux fonctions de N dans R+ , Si f est en O(g ) et g est en O(f ) alors on dit que f est en (g ) (f et g sont de mme e ordre de grandeur asymptotique) Exemple f (n) = 3n + 1, g (n) = n alors 3n + 1 est en (n). En eet dune part 3n + 1 est en O(n), dautre part pour n0 = 2 et c = 2 on a n 2 (3n + 1) pour n > n0 et donc n est en O(3n + 1)

Pr. Mohamed EL ANSARI

Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Notions de complexit e Complexit en temps e Types de complexit e Notations en O Notations en Complexit dun algorithme rcursif e e Echelle de complexit e

Proprits ee
f est en (g ) si et seulement si c R+ , d R+ , n0 N tels que n N , n > n0 d g (n) f (n) c g (n) La notation se ram`ne ` un encadrement (` partir dun e a a certain rang) de la quantit f . e Si Lim
n f (n) g (n) f (n) g (n) f (n) g (n)

= a = 0 f est en (g ) = 0 f est en O(g ) mais f nest pas en (g ) = f nest pas en O(g ) et donc f nest

Si Lim
n

Si Lim
n

pas en (g )
Pr. Mohamed EL ANSARI Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Notions de complexit e Complexit en temps e Types de complexit e Notations en O Notations en Complexit dun algorithme rcursif e e Echelle de complexit e

Proprits ee
En pratique: La fonction f reprsente une quantit ` tudier (temps, e eae nombre doprations). e La fonction g fait partie dune chelle de fonctions simples e 2 , etc...) destine ` informer sur le (n, n log2 (n), n e a comportement asymptotique de f . Les proprits cites ci-dessus permettent dans la pluspart des ee e cas dvaluer f . On cherche lquivalent de f ` linni. e e a Exemple: f (n) = 3n + 1, 3n+1 3n et donc

Lim
n

3n+1 n

= 3 = 0 (3n + 1) est en (n)


Pr. Mohamed EL ANSARI Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Notions de complexit e Complexit en temps e Types de complexit e Notations en O Notations en Complexit dun algorithme rcursif e e Echelle de complexit e

Rgles de calcul de la complexit (en pire) e e


La complexit est value en temps ou en nombre doprations e e e e dun algorithme. Les r`gles gnrales sont: e e e Le temps dexcution (TE) dune aectation ou dun test est e considr comme constant c. ee Le temps dune squence dinstructions = la somme des TE e des instructions qui la composent. Le temps dun branchement conditionnel = TE du test + le max des deux TE correspondant aux deux alternatives. Le temps dune boucle = (le cot du test + le cot du corps u u de la boucle)*(nombre ditrations) + le test de la sortie de la e boucle.
Pr. Mohamed EL ANSARI Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Notions de complexit e Complexit en temps e Types de complexit e Notations en O Notations en Complexit dun algorithme rcursif e e Echelle de complexit e

Exemples de calcul de la complexit e


Deux boucles imbriques sans dpendance des indices e e

Donner la complexit de lalgorithme suivant: e


Algorithme B0 I1 TantQue I N Faire Soit Op(n) le nombre doprations e lmentaires, avec N = n ee Op(n) = 1 + 1 +
n i=1

1+2+1+
2

n j=1

(1 + 3) + 1 +

B B+2 J1 TantQue J N Faire


T[i,j] (1+T[j,i])*B

1 = 3 + 5n + 4n 2 Limn 3+5n+4n = 4 Op(n) est n2 en (n2 )

FinTantQue
FinTantQue
Pr. Mohamed EL ANSARI Complxit des algorithmes e e

Exemples de calcul de la complexit e


Deux boucles imbriqus avec indpendance des indices e e

Donner la complexit de lalgorithme ci-dessous: e Algorithme B 0 I 1 TantQue I N Faire


B B+2 J 1 TantQue J I Faire
T[I,J] (1+T[J,I])*B J J+1

Solution:?

FinTantQue

I I+1 FinTantQue

Algorithmes Complexit e Conclusion

Notions de complexit e Complexit en temps e Types de complexit e Notations en O Notations en Complexit dun algorithme rcursif e e Echelle de complexit e

Complexit dun algorithme rcursif e e


Soit lalgorithme: Factorielle dun entier fonction factorielle(n:entier):entier dbut e
si n=0 alors
retourner 1

sinon
retourner n*factorielle(n-1)

sinon

n
Pr. Mohamed EL ANSARI Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Notions de complexit e Complexit en temps e Types de complexit e Notations en O Notations en Complexit dun algorithme rcursif e e Echelle de complexit e

Complexit dun algorithme rcursif e e


Solution: c1 : temps dexcution pour le test et c2 : le temps dexcution e e pour la multiplication. T (n = 0) = c1 T (n) = c1 + c2 + T (n 1) T (n) = n c2 + (n + 1) c1 Complexit O(n) e Les calculs de la complexit rcursive induisent naturellement des e e suites.

Pr. Mohamed EL ANSARI

Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Notions de complexit e Complexit en temps e Types de complexit e Notations en O Notations en Complexit dun algorithme rcursif e e Echelle de complexit e

Echelle de complexit e
Nous donnerons ici les ordres de grandeur et leur correspondance: O(1) : constante. une instruction simple ou nombre ni dinstructions. O(log (n)) : logarithmique. Quand on part dun grand probl`me ` un sous-probl`me plus petit par rduction. e a e e O(n) : linaire, e n log (n) O(n2 ), O(n3 ), O(np ) : polynomiales, O(p n ) : exponentielle.

Pr. Mohamed EL ANSARI

Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Notions de complexit e Complexit en temps e Types de complexit e Notations en O Notations en Complexit dun algorithme rcursif e e Echelle de complexit e

Inuence de la complexit e
Le tableau ci-dessous donne le temps dexcution de cinq e algorithmes selon leur comportement et la taille des donnes; on e suppose que la dure dune instruction est de lordre de 1s. e Taille (n=) 10 100 1000 10000 100000 log(n) 3s 7s 10s 13s 17s n 10s 100s 1000s 1/100s 1/10s n*log(n) 30s 700s 1/100s 1/7s 2s n2 100s 1/100s 1s 1,7mn 2,8h 2n 1000s 1014 si`cles e astronomique astronomique astronomique

Table: Temps dexcution des dirents algorithmes e e


Pr. Mohamed EL ANSARI Complxit des algorithmes e e

Algorithmes Complexit e Conclusion

Conclusion

Probl`me Algorithme Programme Solution. e Quel algorithme? Quelle structure de donnes? e Comment juger un algorithme? Complexit? Comment la calculer? e

Pr. Mohamed EL ANSARI

Complxit des algorithmes e e

Vous aimerez peut-être aussi