この例のインクリメントのコストは、実行するビットフリップの数です。
I.e. 3(0b11
)から4(0b100
)まで増やすと3のコストがかかります(3つの位置はすべて反転します)。
ここでは、時間の量がビットフリップの数に依存し、したがって数値によって異なるため、アルゴリズムが一定に償却されるとは言えません。
1.
- φであるビットの数は今電位0から始まるインクリメント操作のシーケンスに電位法を使用し、1つのを回避するために、(0)= 0
- φ(1)= 1
- φ(2)= 1
- φ(3)= 2
- φ(4)= 1等
これは理にかなっています。これは、各ビットが1であるため、将来のインクリメント操作では、ある時点で0に変更する必要があるためです。したがって、最後のビットよりも多くを反転する必要があるインクリメントが発生するたびに、値の可能性を利用します。
償却分析を続けると、潜在的な可能性は常に1ずつ増加し、インクリメント操作ごとに反転した1ビットごとの可能性が低下することがわかります。これを各操作で組み合わせると、コストは2になります。a)0からa1に反転、b)潜在的に1を保存します。 0より前にすべてのものを反転すると、が支払われ、潜在的可能性を使ってが支払われます。
参照:http://en.wikipedia.org/wiki/Potential_method
です。申し訳ありませんが、配列の1ビットの平均数ですか? – venkysmarty