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é | Nom | Exemple pour n=1000 |
|---|---|---|
| Constante | 1 opération | |
| Logarithmique | 10 opérations | |
| Linéaire | 1 000 opérations | |
| Quasi-linéaire | 10 000 opérations | |
| Quadratique | 1 000 000 opérations | |
| Exponentielle | Impossible |
#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 :
où , :
- Si :
- Si :
- 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 où = 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
- Démontrez que .
- Analysez la complexité amortie d'une table de hachage avec doublement de capacité.
- Comparez l'impact mémoire de BFS vs DFS sur un graphe de densité variable.