償却分析 — 操作列にわたる平均コスト

償却分析を学びます:高コストな操作が十分まれであるため、操作あたりの平均コストが低いことを証明する方法。動的配列、ハッシュテーブルのリサイズ、スプレー木をカバー。

Analysis Concepts

詳細な説明

償却分析とは?

償却分析は、最悪ケースの操作列における操作あたりの平均時間を決定します。

動的配列の例

動的配列は満杯時に容量を倍増させます。ほとんどのpushはO(1)ですが、リサイズ時はn要素すべてをコピーします(O(n))。

n回のpush後のリサイズ総作業量は2n - 1。そのため、**pushあたりの償却コストはO(1)**です。

3つの償却分析手法

手法 アイデア
集約法 n回の操作の総コストを合計し、nで割る
記帳法 安い操作に「クレジット」を割り当て、高い操作の支払いに充てる
ポテンシャル法 データ構造に蓄えられたエネルギーを追跡するポテンシャル関数を定義

重要な理由

償却分析は、時折の高コスト操作があるデータ構造の真のパフォーマンスをより現実的に描写します。「ハッシュテーブルの挿入はO(1)」と言えるのは、リサイズがO(n)であっても償却分析のおかげです。

ユースケース

償却分析は、ベクター、ハッシュマップ、自己平衡木などの動的データ構造の真のパフォーマンスを理解するために不可欠です。アルゴリズム設計の課程や技術面接でよく出るトピックです。

試してみる — Big-O Reference

フルツールを開く