Python-data-structure-python-amortized-analysis

提供:Dev Guides
移動先:案内検索

Python-償却分析

償却分析では、入力値のデータ分布のスパンを考慮せずに、プログラム内の一連の操作の実行時間を推定します。 簡単な例は、ソートされたリスト内の値を、ソートされていないリスト内よりも早く見つけることです。 リストが既にソートされている場合、データがどのように分散されているかは関係ありません。 しかし、もちろん、リストの長さは、アルゴリズムが最終結果を得るために通過しなければならないステップの数を決定するので、影響があります。

したがって、ソートされたリストを取得する単一のステップの初期コストが高い場合、要素を見つける後続のステップのコストはかなり低くなることがわかります。 したがって、償却分析は、一連の操作の最悪の実行時間の限界を見つけるのに役立ちます。 償却分析には3つのアプローチがあります。

  • 会計方法-これには、実行される各操作にコストを割り当てることが含まれます。 実際の操作が割り当てられた時間よりも早く終了した場合、分析にプラスのクレジットが蓄積されます。 逆のシナリオでは、負のクレジットになります。 これらの蓄積されたクレジットを追跡するために、スタックまたはツリーデータ構造を使用します。 早期に実行される操作(リストのソートなど)は償却コストが高くなりますが、順番が遅い操作は、累積クレジットが使用されるため償却コストが低くなります。 したがって、償却コストは実際のコストの上限です。
  • 潜在的な方法-この方法では、保存されたクレジットがデータ構造の状態の数学関数として将来の操作に利用されます。 数学関数と償却コストの評価は等しくなければなりません。 したがって、実際のコストが償却コストよりも大きい場合、潜在性が低下し、将来の運用に使用され、費用がかかります。
  • 集計分析-この方法では、nステップの総コストの上限を推定します。 償却コストは、総コストとステップ数(n)の単純な分割です。