動機

時不時看到,來搞懂他

做N次直接乘N?

以一般的雙loop,就是第一個loop乘上N就是N^2

因為裡面的loop都是N,但是如果不是每次都是N的話?

平攤分析

有些操作他有worst case與一般case,同時又會跑不特定多次,像online algorithm,如果要計算他操作的成本,只看worst case不太好,應該要算跑好幾次的平均成本

這就是平攤分析,簡單來說就是算平均

最簡單的做法是計算累積的成本,之後除總次數

像stack,一定是要先push,push是常數要N次,所以總成本就是N 就算mutil-pop(可以一次pop很多)的worst case是N,但是因為stack的總成本,能給mutil-pop的總成本是N,所以用平攤分析,mutil-pop是常數

還有其他分析法,但重點都是算 總成本 與 總次數

像是位能法的push的平攤成本為什麼是2? 因為做了這個操作才能,讓pop或是mutil-pop做事

Ref

Amortized analysis