Che cos'è l'analisi ammortizzata? E come può aiutarmi a ottenere garanzie di prestazioni peggiore nei miei programmi?
Ero leggendo che le seguenti tecniche possono aiutare il programmatore a raggiungere Garanzie di prestazioni peggiori (cioè con parole mie: garantisci che il tempo di esecuzione di un programma non superi il tempo di esecuzione nel cast peggiore):
- Algoritmi randomizzati (ad esempio, l'algoritmo quicksort è quadratico nel peggiore dei casi, ma ordinare in modo casuale l'input fornisce una garanzia probabilistica che il suo tempo di esecuzione sia linearitmico )
- Sequenze di operazioni (la nostra analisi deve tenere conto sia dei dati che della sequenza di operazioni eseguite dal cliente)
- Analisi ammortizzata (un altro modo per fornire una garanzia di performance è di ammortizzare il costo, tenendo traccia del costo totale di tutte le operazioni, diviso per il numero di operazioni. operazioni, mantenendo basso il costo medio delle operazioni. In altre parole, diffondiamo il costo delle poche operazioni costose, assegnandone una parte a ciascuna di un gran numero di operazioni poco costose)
L'autore ha menzionato l'uso di ridimensionamento della struttura dati dell'array per Stack come esempio di come ottenere l'analisi ammortizzata, ma non capisco ancora quale sia l'analisi ammortizzata e come possa effettivamente essere < strong> implementato (algoritmo della struttura dei dati?) per ottenere garanzie sulle prestazioni peggiori