Qu'est-ce que l'analyse amortie? Et comment peut-il m'aider à obtenir les garanties de performances les plus défavorables dans mes programmes?
Je lisais que les techniques suivantes peuvent aider le programmeur à obtenir les garanties de performances les plus défavorables (c'est-à-dire, selon mes propres mots: garantir que le temps d'exécution d'un programme ne dépassera pas le temps d'exécution dans le pire casting):
- Algorithmes randomisés (par exemple, l'algorithme de tri rapide est quadratique dans le pire des cas, mais le classement aléatoire de l'entrée donne une garantie probabiliste que son temps de fonctionnement est linéithmique)
- Séquences d'opérations (notre analyse doit prendre en compte à la fois les données et la séquence d'opérations effectuées par le client)
- Analyse amortie (une autre façon de fournir une garantie de performance consiste à amortir le coût, en gardant une trace du coût total de toutes les opérations, divisé par le nombre d'opérations. Dans ce cadre, nous pouvons autoriser certaines opérations coûteuses, tout en conservant le coût moyen En d'autres termes, nous répartissons le coût des quelques opérations coûteuses, en affectant une partie de celles-ci à chacune d'un grand nombre d'opérations peu coûteuses)
L'auteur a mentionné l'utilisation du redimensionnement de la structure de données du tableau pour Stack comme un exemple de la façon de réaliser une analyse amortie, mais je ne comprends toujours pas ce qu'est l'analyse amortie et comment elle peut être réellement mise en œuvre (structure de données? Algorithme?) Pour obtenir le pire - garanties de performances de diffusion