償却分析とは何ですか?また、プログラムで最悪の場合のパフォーマンス保証を達成するのにどのように役立ちますか?
私は、次のテクニックがプログラマーが最悪のパフォーマンス保証を達成するのを助けることができると読んでいました(つまり、私自身の言葉:プログラムの実行時間が最悪のキャストの実行時間を超えないことを保証します):
- ランダム化アルゴリズム(たとえば、最悪の場合、クイックソートアルゴリズムは2次ですが、入力をランダムに並べると、実行時間が線形であることが確率的に保証されます)
- 操作のシーケンス(分析では、データとクライアントが実行した操作のシーケンスの両方を考慮する必要があります)
- 償却分析(パフォーマンス保証を提供する別の方法は、すべてのオペレーションの合計コストをオペレーション数で割って追跡することにより、コストを償却することです。この設定では、平均コストを維持しながら、いくつかの高価なオペレーションを許可できますつまり、少数の高価な操作のコストを、その一部を多数の安価な操作のそれぞれに割り当てることで分散します)
著者は、償却分析を達成する方法の1つの例として、Stackの配列データ構造のサイズ変更の使用に言及しましたが、償却分析とは何か、実際にはどのようにできるかはまだわかりません最悪の結果を達成するために実装か(データ構造?アルゴリズム?) -キャストパフォーマンス保証