51 lines
1.3 KiB
Plaintext
51 lines
1.3 KiB
Plaintext
Notion de complexité d'un algorithme
|
||
====================================
|
||
|
||
définition
|
||
-----------
|
||
|
||
l’analyse de la complexité d’un algorithme consiste à évaluer les ressources
|
||
consommées par l’algorithme lors de l’exécution
|
||
|
||
deux critères d’évaluation
|
||
|
||
- le coût en temps (nombre d’opérations)
|
||
- le coût en espace, (quantité de mémoire)
|
||
|
||
|
||
principes de base
|
||
-----------------
|
||
|
||
Caractériser la quantité de ressources consommées en fonction de la
|
||
taille des données sur lesquelles l’algorithme est appliqué.
|
||
|
||
Evaluer le coût exact est difficile, on exprimera donc seulement un
|
||
ordre de grandeur
|
||
|
||
|
||
définition mathématique
|
||
-----------------------
|
||
|
||
|
||
- si f est la fonction caractérisant exactement le coût d’un algorithme
|
||
- et n la taille des données
|
||
- on s’intéresse à la façon dont croı̂t f(n) lorsque n croı̂t
|
||
- on va montrer que f (n) ne croı̂t pas plus vite qu’une autre fonction g(n)
|
||
|
||
Du point de vue mathématique, on dit que la fonction f est dominée
|
||
asymptotiquement par la fonction g ce qui se note f= O(g)
|
||
|
||
::
|
||
|
||
f = O(g) ssi ∃k, ∃n 0 , ∀n, n > n 0 ⇒ f (n) ≤ k.g (n)
|
||
|
||
|
||
exemples
|
||
---------
|
||
|
||
- O(n) : progression linéaire
|
||
- O(n^2) : progression quadratique
|
||
- O(n^p) : progression polynomiale
|
||
- O(p^n ) : progression exponentielle
|
||
- O(log(n)): progression logarithmique
|