formations/algo/AlgoApprofondie/cours/complexite.txt

52 lines
1.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Notion de complexité d'un algorithme
====================================
Définition
-----------
Lanalyse de la complexité dun algorithme consiste à évaluer les ressources
consommées par lalgorithme lors de lexécution
deux critères dévaluation
- le coût en temps (nombre dopé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 lalgorithme 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 dun 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 quune 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