Analyse asymptotique
Ce terme se réfère à l'analyse des performances d'un algorithme en supposant que les données sur lesquelles l'algorithme opère (les données de base) sont les mêmes que celles de l'algorithme. entrée ) est, en termes simples, "suffisamment grande pour que le fait de l'augmenter ne change pas la conclusion". Bien que la taille exacte de l'entrée n'ait pas besoin d'être spécifiée (nous n'avons besoin que d'une limite supérieure), l'ensemble de données en soi a à spécifier.
Notez que jusqu'à présent, nous n'avons parlé que de l'élément méthode d'analyse ; nous n'avons pas spécifié exactement quelle quantité que nous analysons (complexité temporelle ? complexité spatiale ?), et nous n'avons pas non plus spécifié quelle est la nature de l'analyse. métrique qui nous intéressent (pire cas ? meilleur cas ? moyenne ?).
Dans la pratique, le terme d'analyse asymptotique fait généralement référence à limite supérieure de la complexité temporelle d'un algorithme, c'est-à-dire la performance la plus défavorable mesurée par le temps d'exécution total, qui est représentée par la notation big-Oh (par exemple, un algorithme de tri peut être O(nlogn)
).
Analyse amortie
Ce terme désigne l'analyse des performances d'un algorithme sur la base d'une séquence spécifique d'opérations qui vise à atteindre les objectifs suivants scénario le plus défavorable -- En d'autres termes, l'analyse amortie implique que la mesure correspond à la performance dans le pire des cas (bien qu'elle ne précise toujours pas quelle quantité est mesurée). Pour effectuer cette analyse, nous devons spécifier le paramètre taille de l'entrée, mais nous n'avons pas besoin de faire d'hypothèses sur sa forme.
En termes simples, l'analyse amortie consiste à choisir une taille arbitraire pour l'entrée, puis à "jouer" avec l'algorithme. Chaque fois qu'une décision qui dépend de l'entrée doit être prise, le pire chemin est choisi¹. Une fois l'algorithme terminé, nous divisons la complexité calculée par la taille de l'entrée pour obtenir le résultat final.
¹note : Pour être précis, le pire chemin qui est théoriquement possible . Si vous disposez d'un vecteur qui double dynamiquement sa taille chaque fois que sa capacité est épuisée, "le pire des cas" ne signifie pas qu'il faille supposer qu'il devra doubler à chaque fois que la capacité sera épuisée. chaque insertion parce que les insertions sont traitées comme une séquence. Nous sommes autorisés à (et en fait nous devons) utiliser les données connues de état pour éliminer mathématiquement le plus grand nombre possible de cas "encore plus mauvais", même si l'entrée reste inconnue.
La différence la plus importante
La différence essentielle entre l'analyse asymptotique et l'analyse amortie est que la première dépend de l'entrée elle-même, tandis que la seconde dépend de la séquence d'opérations que l'algorithme exécutera.
Par conséquent :
- l'analyse asymptotique nous permet d'affirmer que la complexité de l'algorithme lorsqu'il reçoit une entrée pour le meilleur, le pire ou la moyenne des cas d'une taille proche de N est limitée par une certaine fonction F(N) -- où N est une variable
- L'analyse amortie nous permet d'affirmer que la complexité de l'algorithme lorsqu'on lui donne une entrée de caractéristiques inconnues mais de taille connue N n'est pas plus mauvais que la valeur d'une fonction F(N) -- où N est une valeur connue