- 80 名前:デフォルトの名無しさん [02/04/11 11:31]
- たとえば固定長配列に1ずつ要素を追加していくことを考えます。
満杯になったら新しく大きい配列を用意して全部コピーして追加。 このとき、初期サイズ1で1ずつ大きくして行くとN要素追加するの に合計コピー回数は1+2+3+…+NだからO(N*N)。定数Cずつ大きく していくとしても、コピー回数がC分の1になるだけだからO(N*N) は変わらない。ところが2倍ずつに大きくして行くことにすると、 1+2+4+…+NだからO(N)になるのね。しかし「1個追加するときの 最大計算量」はどの方法でも(その1個であふれた場合はどのみち コピーするんで)変わらない。逆に言えば、最大計算量を考える 変わりにN個の操作全体の計算量を考えてその平均を取ると 1個追加する際の平均的な計算量はO(1)だよね、っていうのが amortized analysis。
|

|