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