52 lines
1.3 KiB
Plaintext
52 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 il existe k, il existe n 0 , pour tout n, n > n 0 implique
|
||
f(n) inférieur ou egal 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
|