这是《算法导论》(原书第二版)中第17章的一个习题(17.4-2)。
分成三种情况讨论:
1)αi≥ 1/2
这时表并没有进行扩张或收缩,只是表中的项数少了1
平摊代价
^Ci | = | ci+Φi-Φi-1 |
| = | 1 + (2 · numi - sizei) - (2 · numi-1 - sizei-1) = 1-2 =-1 |
2) 1/4<=αi < 1/2
这时表并没有进行扩张或收缩,除了表中的项数少了1,
^Ci = | ci+Φi-Φi-1 | |||
= | 1 + (sizei /2 - numi) - (2 · numi-1 - sizei-1) | |||
=3+3/2 sizei-1 -3 numi-1
=3+3(1/2 -αi-1) sizei-1<=3
3) αi<1/4
这种情况只对sizei-1等于2时,numi-1等于1时才会发生。
这时,需要对表进行两次收缩才能满足1/4<=αi <=1,这样表变成一个空表,尺寸和项数都是0。
平摊代价:
^Ci =1
因此,平摊代价至多为3