私は、バイナリカウンタの償却分析ではなく、平均ケース時間の複雑さを見出そうとしています。自分の時間複雑さのスキルを完全に確信しているわけではないので、下記の疑似コードの平均ケース分析が正しいことを確認したいと思います。バイナリカウンタの平均ケース時間複雑度の増加
kを配列の長さとします。
Increment(Array)
i = 0
while i < k and Array[i] == 1
Array[i] = o
i = i + 1
if i < k
Array[i] = 1
平均所要時間を調べるために、1回の実行あたりに平均ビット量が反転することがわかりました。結果として、これは、kの場合にO(1)に等しいO(2 + k /(2^k))であることがわかりました。
これは正しい平均実行時間ですか?そうでない場合は、どうすればこの問題に近づくでしょうか?私は、各入力を想定してい
[平均ケースタイムの複雑さ](https://en.wikipedia.org/wiki/Average-case_complexity)を実際に意味する場合は、アルゴリズムへの入力の確率分布が必要です。どのディストリビューションを使用していますか? – phs
私は各入力が同じ確率で発生すると仮定しています。 – Jack
一様分布の場合、平均ケース分析と累積償却分析の代数は事実上同じです(集計分析は「n」で割り切れます)。特に、合計された系列は同じです。 – phs