Aller au contenu principal

É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

  1. O(1) - Temps constant
  2. O(log n) - Logarithmique
  3. O(n) - Linéaire
  4. O(n log n) - Log-linéaire
  5. O(n²) - Quadratique
  6. 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.