Che cos'è l'analisi ammortizzata? E come può aiutarmi a ottenere garanzie di prestazioni nel caso peggiore nei miei programmi?
Stavo leggendo che le seguenti tecniche possono aiutare il programmatore a ottenere garanzie di prestazioni nel peggiore dei casi (vale a dire con parole mie: garantire che il tempo di esecuzione di un programma non superi il tempo di esecuzione nel cast peggiore):
- Algoritmi randomizzati (ad es. L'algoritmo quicksort è quadratico nel peggiore dei casi, ma ordinare casualmente l'input offre una garanzia probabilistica che il suo tempo di esecuzione è linearitmico)
- Sequenze di operazioni (la nostra analisi deve tener conto sia dei dati sia della sequenza di operazioni eseguite dal cliente)
- Analisi ammortizzata (un altro modo per fornire una garanzia di prestazione è di ammortizzare il costo, tenendo traccia del costo totale di tutte le operazioni, diviso per il numero di operazioni. In questa impostazione, possiamo consentire alcune operazioni costose, pur mantenendo il costo medio di operazioni basse. In altre parole, dividiamo il costo delle poche operazioni costose, assegnandone una parte a ciascuna di un gran numero di operazioni economiche)
L'autore ha menzionato l'uso del ridimensionamento della struttura dei dati dell'array per Stack come esempio di come ottenere un'analisi ammortizzata, ma ancora non capisco cosa sia l'analisi ammortizzata e come possa essere effettivamente implementata (struttura dei dati? Algoritmo?) Per ottenere risultati peggiori -cast garanzie di prestazione