Évaluer la complexité
#Évaluer la complexité
Ordres de grandeur, notation grand-O, coûts en temps et mémoire; intuition avant formalisme.
#Introduction
La complexité algorithmique permet d'évaluer l'efficacité d'un algorithme en termes de temps d'exécution et d'utilisation de la mémoire, indépendamment de l'implémentation spécifique ou de la machine utilisée.
#Notation Grand-O
La notation Big-O (Grand-O) décrit le comportement asymptotique d'une fonction, en se concentrant sur le terme dominant lorsque la taille de l'entrée tend vers l'infini.
#Ordres de complexité courants
- O(1) - Temps constant
- O(log n) - Logarithmique
- O(n) - Linéaire
- O(n log n) - Log-linéaire
- O(n²) - Quadratique
- O(2ⁿ) - Exponentiel
#Exemples
- O(1) : Accéder à un élément d'un tableau par son index
- O(log n) : Recherche dichotomique dans un tableau trié
- O(n) : Parcourir tous les éléments d'un tableau
- O(n²) : Boucles imbriquées sur un tableau
#Complexité en temps vs complexité en espace
#Complexité en temps
Mesure le nombre d'opérations élémentaires effectuées par un algorithme en fonction de la taille de l'entrée.
#Complexité en espace
Mesure la quantité de mémoire utilisée par un algorithme en fonction de la taille de l'entrée.
#Analyse de la complexité
Pour analyser la complexité d'un algorithme, on compte le nombre d'opérations élémentaires dans le pire cas.
#Exemple: Recherche linéaire
Complexité : O(n) - dans le pire cas, on parcourt tout le tableau.
#Exemple: Recherche dichotomique
Complexité : O(log n) - on divise l'espace de recherche par deux à chaque itération.