私はCormenらによるアルゴリズムの紹介を行っていました。AmortizedAnalysisという章では、会計と潜在的な方法の違いは次のように与えられています
アカウンティング方式は、シーケンスの早い段階で一部の操作をオーバーチャージし、データ構造内の特定のオブジェクトに対する「プリペイドクレジット」としてオーバーチャージを保存します。 ...
潜在的な方法では、クレジットをデータ構造内の個々のオブジェクトに関連付けるのではなく、データ構造全体の「潜在的なエネルギー」としてクレジットを維持します。
要素を挿入するスペースがないときにサイズが2倍になるサイズ変更可能な配列の例を使用して、これを理解しようとしました。理解できなかったのは、次の文です。
データ構造内の特定のオブジェクトに対する「プリペイドクレジット」として過充電を保存する
会計方法の使用:
ci = i番目の操作の料金
c'i = i番目の操作の償却原価
Si = i番目の操作後の配列サイズ
bi = i番目の操作後の信用残高
i 1 2 3 4 5 6 7 8 9 10
si 1 2 4 4 8 8 8 8 16 16
ci 1 2 3 1 5 1 1 1 9 1
c'i 3 3 3 3 3 3 3 3 3 3
bi 2 3 3 5 3 5 7 9 3 5
ここで「データ構造内の特定のオブジェクトに保存する」とはどういう意味ですか?
潜在的な方法では、phiを使用して2n-mとすると、n =配列内のcurrebt要素の数、m =配列サイズ
n m phi
empty 0 0 0
add first elem 1 1 1
add secondelem 2 2 2
add third elem 3 4 2
add fourth elem 4 4 4
add fifth elem 5 8 2
この中で、「...データ構造内の個々のオブジェクトにクレジットを関連付けるのではなく、データ構造全体の「潜在的なエネルギー」」とはどういう意味ですか。
償却された最悪のケースの分析を理解する最も簡単な方法は、それを長い一連の呼び出しでの最悪のケースのパフォーマンスの平均と見なすことです。特定の呼び出しは、値よりも大幅にパフォーマンスが悪い場合がありますが、実行するすべての呼び出しの平均は決定論的にがその値に近づきます。