一.攤還分析(平攤分析)算法
1.經過求數據結構的一個操做序列中所執行的全部操做的平均時間來評價操做的代價數據結構
2.攤還分析不一樣於平均狀況分析,它不涉及到機率,它只是保證了最壞狀況下每一個操做的平均性能函數
3.三種方法:性能
(1)聚合分析:肯定一個n個操做的序列的總代價的上界(最壞狀況下的總代價),從而獲得每一個操做的攤還代價(/n),不能具體地肯定某一個操做的攤還代價對象
(2)覈算法(記帳法):對不一樣類型的操做可能賦予不一樣的攤還代價,而且信用必須非負值blog
1)賦予操做的平攤代價做爲第i步操做的代價,其中有一部分做爲通常操做代價,還有一部分可能剩餘做爲存款用做其餘特殊操做內存
2)分析平攤代價和存款,存款非負方法
(3)勢能法:對不一樣類型的操做可能賦予不一樣的攤還代價,im
1)定義勢能函數,把數據結構集映射爲實數,勢能不爲負總結
2)分析平攤代價
4. 記帳法和勢能法
記帳法:先給定平攤代價,再分析存款和攤還代價
勢能法:已知存款(勢能),分析平攤代價
5.總結
(1)平攤分析爲數據結構的性能提供了一個簡潔的抽象概念,關注彙集行爲而不是實時表現,若是根據實時表現,平攤分析毫無用處
(2)一般狀況下,三種方法都能用,能夠互相轉換,但每一種都有特定狀況使得他是最簡單或最精確
(3)不一樣的勢能函數或記帳代價可能產生不一樣的上界
二.動態表
1.問題描述:爲一個表分配必定的內存空間,進行插入和刪除操做,若內存不夠,則從新分配更大的空間,並將原表對象複製到新空間
2.表擴張的策略:爲新表分配兩倍於舊錶的空間
3.表收縮的策略:容許表的裝載因子低於1/2,好比1/4
4.攤還分析: