Aller au contenu principal

Complexité des algorithmes

Progression


#title: "Complexité des algorithmes" description: "Notations asymptotiques, analyse amortie et modèle de calcul"

#Complexité des algorithmes

L'analyse de complexité permet de comparer les algorithmes indépendamment de l'implémentation matérielle. Elle répond à la question fondamentale : comment évolue le temps d'exécution (ou l'espace mémoire) lorsque la taille de l'entrée augmente ?

#Notations asymptotiques

#Notation O (Grand O)

La notation donne une borne supérieure asymptotique :

Intuition : ne croît pas plus vite que à un facteur constant près.

Exemples :

#Notation Ω (Grand Omega)

La notation donne une borne inférieure :

#Notation Θ (Grand Theta)

La notation donne un encadrement exact :

#Hiérarchie des complexités

ComplexitéNomExemple pour n=1000
Constante1 opération
Logarithmique10 opérations
Linéaire1 000 opérations
Quasi-linéaire10 000 opérations
Quadratique1 000 000 opérations
ExponentielleImpossible

#Modèle RAM

Le modèle RAM (Random Access Machine) est le cadre standard pour l'analyse :

  • Chaque instruction élémentaire (addition, comparaison, accès mémoire) coûte
  • La mémoire est illimitée et à accès uniforme
  • Les opérations arithmétiques sont bornées par la taille des données

Ce modèle simplifié capture l'essentiel du comportement tout en restant indépendant de l'architecture.

#Analyse de complexité

#Pire cas, meilleur cas, cas moyen

  • Pire cas () : temps maximal sur toutes les entrées de taille
  • Meilleur cas () : temps minimal
  • Cas moyen () : espérance sur une distribution des entrées

Exemple - Recherche linéaire :

  • Pire cas : (élément absent)
  • Meilleur cas : (premier élément)
  • Cas moyen :

#Master Theorem

Pour les récurrences de type diviser pour régner :

, :

  1. Si :
  2. Si :
  3. Si :

Exemple - Tri fusion :

  • Cas 2 :

#Complexité amortie

L'analyse amortie considère le coût moyen sur une séquence d'opérations plutôt que le pire cas isolé.

#Exemple : Tableau dynamique

Un tableau qui double sa capacité à chaque débordement :

  • Pire cas d'un push : (recopie complète)
  • Amorti :

Démonstration par méthode du potentiel :

Soit = nombre d'éléments et = capacité.

Le coût amorti de chaque push est constant car le « crédit » accumulé paie les redimensionnements.

#Complexité spatiale

L'espace mémoire utilisé par un algorithme se mesure de la même façon :

  • Espace auxiliaire : mémoire supplémentaire (hors entrée)
  • Espace total : entrée + espace auxiliaire

Exemples :

  • Tri fusion : espace auxiliaire
  • Tri rapide : espace (pile de récursion)
  • Tri par insertion sur place : espace auxiliaire

#Exercices

  1. Démontrez que .
  2. Analysez la complexité amortie d'une table de hachage avec doublement de capacité.
  3. Comparez l'impact mémoire de BFS vs DFS sur un graphe de densité variable.