Complexite

  • Uploaded by: Yassine Ben Haj Kbaier
  • 0
  • 0
  • March 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Complexite as PDF for free.

More details

  • Words: 1,272
  • Pages: 26
Loading documents preview...
Complexité algorithmique

Complexité ƒ Exécution d ’un programme Jutilisation des ressources de l ’ordinateur z z

temps de calcul pour exécuter les opérations occupation mémoire (programme + données)

ƒ Mesurer ces 2 grandeurs pour comparer entre eux différents algorithmes ƒ « Sur toute machine, quelque soit le langage de programmation, l ’algorithme A1 est meilleur que A2 pour des données de grande taille »

2

Temps d ’exécution d ’un programme ƒ Mettre en évidence les opérations fondamentales: le temps est proportionnel au nombre de ces opérations z Recherche d ’un élément E dans une liste L: nombre de comparaisons entre E et les éléments de L z

z

Recherche d ’un élément sur disque: nombre d ’accès à la mémoire secondaire Multiplication de matrices: nombre de multiplications et d ’additions 3

Temps d ’exécution d ’un programme ƒ Soit n la taille des données soumise au programme z z z z

taille de la liste dans laquelle on cherche E taille de la liste à trier dimensions d ’une matrice dont on calcule le carré …

ƒ T(n) : temps d ’exécution du programme z

T(n) fonction de N dans R 4

Décompte du nombre d ’opérations fondamentales ƒ P: nombre d ’instructions dans un bloc de programme

ƒ P(séquence) = ∑ P(E) ; E: élément de la séquence ƒ P(if C then I1 else I2) P(C) + max(P(I1), P(I2)) ƒ P(boucle) = ∑ P(Ii) ; Ii = Ième itération de la boucle ƒ P(F(n)) s ’écrit en fonction de P(F(k)) pour une procédure ou fonction récursive J résolution d ’équations de récurrences 5

Temps d ’exécution d ’un programme ƒ Pour certains problèmes, le temps ne dépend pas seulement de la taille de la donnée mais aussi de la donnée elle-même

ƒ Complexité au mieux Tmin(n) = min(Temps(d)| d donnée de taille n) ƒ Complexité au pire Tmax(n) = max(Temps(d)| d donnée de taille n) ƒ Complexité en moyenne (d) Tmoy(n) = d:donnée∑dep(d)*Temps taille n 6

Temps d ’exécution d ’un programme

ƒ Tmin(d) <= Tmoy(d) <= Tmax(d)

7

ƒUn exemple de calcul: recherche séquentielle d’un élément X dans un tableau L L:tableau [1..n] de Element X: élément

Début i←1 Tantque i ≤ n et (L[i] ≠X) faire i ← i+1 Fintantque Si i>n alors i ← 0 Fin

8

Ordre de grandeur asymptotique: la notation Ο ƒ T(n) pour n grand ƒ Comparaison des ordres de grandeur asymptotique ƒ Définition: Soit f et g deux fonctions de N dans R*+, f= Ο (g) (f est en grand O de g) ssi ∃ c ∈ R*+, ∃ n0 tq ∀ n > n0, f(n) ≤ c g(n) ƒ Ex: f(n)=10n et g(n)=Ο(n²) 9

Equivalent: la notation Θ ƒ Définition: f= Θ(g) ssi f= Ο(g) et g= Ο(f) c'est-à-dire ∃ c ∈ R*+, ∃ d ∈ R*+, ∃ n0 tq ∀ n > n0, d g(n) ≤ f(n) ≤ c g(n) Ex: 2n = Θ(n) mais 2n n'est pas en Θ(n²) 10

Propriétés de le notation Ο ƒ Les constantes ne sont pas importantes ƒ Les termes d ’ordre inférieur sont négligeables Si T(n) = aknk + … + a1n + a0 avec ak>0 alors T(n) est en (nk) Si

h( n) ⎯⎯ ⎯ ⎯→ 0 alors g(n) + h(n) = O(g) g ( n) n→∞

ƒ Si T1(n) = Ο(f1) et T2(n) = Ο(f2) alors T1(n) + T2(n) = Ο(f1 + f2) et T1(n) ∗ T2(n) = Ο(f1 ∗ f2) ƒ Si f(n) = Ο(g) et g(n) = Ο(h) alors f(n) = Ο(h)

11

Appellation des ordres de grandeur courant ƒ ƒ ƒ ƒ ƒ ƒ ƒ

Ο(1): constante Ο(log(n)): logarithmique Ο(n): linéaire Ο(n log n): n log n Ο(n²) : quadratique Ο(n3) : cubique Ο(2n): exponentielle 12

Croissance comparée des fonctions fréquemment utilisées en complexité n3

2n

100000

n2

10000

nlog2(n) 1000

n 100

Log2(n)

10

1 2

4

8

16

32

64

128

256

13

Comparaisons des fonctions usuelles ƒ ƒ ƒ ƒ ƒ ƒ

log(n) = Ο (n) n½= Ο (n) nk = Ο (nk+1) pour tout k ≥ 0 P(n) = Ο (nk) pour tout polynôme P de degré ≤ k nk = Ο (2n) pour tout k ≥ 0 2n = Ο (nn)

14

( ouvrons une parenthèse Rappels d’analyse pour classer les fonctions Etudier de la limite de f /g pour comparer f et g

f(n) ∈ O(g(n)) mais g(n) ∉ O(f(n)) ⎧0 f ( n) ⎪ lim = ⎨c implique f(n) ∈ O(g(n)) et g(n) ∈ O(f(n)) n →∞ g ( n ) ⎪ f(n) ∉ O(g(n)) mais g(n) ∈ O(f(n)) ⎩∞

Règle de L’Hôpital: Si f et g sont dérivables et si lim f ( x) = lim g ( x) x →∞

f ( x) f ' ( x) lim = Alors x →∞ g ( x ) x →∞ g ' ( x ) lim

x →∞

si cette limite existe 15

Et aussi la formule de Stirling fin de la parenthèse

)

ƒ à propos de n! n −n

n!~ 2πn n e

16

Rapport Temps / Taille des données

1

log2(n)

n

nlog2(n )

n2

n3

2n

Evolution du temps t quand la taille des données est multipliée par 10

t

t+3,32

10 t

(10+ε)t

100 t

1000 t

t10

Evolution de la taille quand le temps alloué est multiplié par 10



n10

10 n

(10-ε)t

3,16 n

2,15 n

n+3,32

Complexités

17

Calcul de la complexité ƒ Toute lecture, écriture, affectation (sans appel de fonction) a un temps en Ο(1) ƒ Complexité d ’une séquence=complexité de l ’instruction de plus forte complexité ƒ Si C

alors A1 Ο(c(n)) Ο(f1(n))

sinon A2 Ο(f2(n))

T(n) = Ο( c(n) + max(f1(n), f2(n)) ) 18

Calcul de la complexité ƒ Pour i de A à B faire Iteri Finpour ƒ Si T(Iteri) indépendant de i en 2(f(n)), alors T(n) = Ο((B-A+1) f(n)) ƒ Si T(Iteri) dépendant de i: Titer(n,i) alors B T (n) = O( ∑ T (n,i)) i= A iter 19

Calcul de la complexité ƒ Tant que C faire Iter Fintantque ƒ La difficulté est de déterminer une borne sup pour le nombre d ’itérations:NB

ƒ Si T(Iter)= Ο (f(n)) T(n) = Ο (NB*(C(n) + f(n))) ƒ Si T(Iter) dépend de l ’itération i T(n) = Ο (NB*C(n) + ∑ Titer(n,i) 20

Calcul de la complexité ƒ Procédures et fonctions récursives ƒ T(n) calculé grâce à des relations de récurrence

21

Exemple ƒ T(n) temps d ’exécution en fonction de l ’argument n ƒ ƒ ƒ ƒ

function fact(n:integer) :integer; begin if n<=1 then fact := 1 else fact := n* fact(n-1) end;

ƒ ƒ ƒ

base T(1) = a récurrence T(n) = b + T(n-1), pour n>1 On démontre par récurrence que T(n) = a + (n-1) b pour n ≥ 1 Donc T(n) = Ο (n)

22

Un exemple: Recherche dichotomique

23

Un exemple: Recherche dichotomique ƒ On cherche dans un tableau TRIE dans l’ordre croissant L[1..n] l’indice d’un élement X ƒ Version récursive: recherche entre les indices g et d z z z z

Comparer X avec l’élément du milieu: L[m] Si X= L[m] , fin de le recherche Si X> L[m] , rechercher X entre les places m+1 et d Si X< L[m] , rechercher X entre g et m-1

24

Un exemple: Recherche dichotomique Procedure dicho(X, L, g, d, resultat res: 0..n) var m: 1..n Début Si g<= d alors m := (g+d) div 2 Si X = L[m] alors res := m sinon si X < L[m] alors dicho(X,L,g,m-1,res) sinon dicho(X,L,m+1,d,res) sinon res :=0 Fin

25

Un exemple: Recherche dichotomique ƒ On étudie le cas le pire ƒ Tmax(n) = O(log2n)

26

Related Documents

Complexite
March 2021 0
4-complexite
March 2021 0
4-complexite
March 2021 0
Pnp*complexite
March 2021 0
3-complexite-4pp
March 2021 0

More Documents from ""