この練習を勉強して偶然見つけました。私は3つの方法すべてでそれを解決するのに問題があります。償却分析 - 正しいアプローチ?
一連のn回の操作でデータ構造を維持しているとします。 k番目の 操作の実際の実行時間をf(k)とします。次の各関数fについては、結果として累積された1回の操作の償却原価を決定します。 (実際には、このノートに記載されている方法のうち を試してください)。
(a)f(k)は2^iがkを分けるような最大の整数です。
ソース:https://courses.engr.illinois.edu/cs473/fa2013/notes/14-amortize.pdf
私は操作がちょうどより高価な取得として潜在的な方法はここに助けることができる場所を私は見ていない概要
k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
f(k) 0 1 1 2 2 2 2 3 3 3 3 3 3 3 3 4 ...
を取得しようとする小さなテーブルを作りました時間とともに。バンカーの方法も同じ理由でここには適用されないようです。だから私は集計方法が最も適していると思った。
私は、n個の一連の操作のために思い付いたものです、しかし、私は私はそれが正しいアプローチだかどうかを疑問視せた、それを変換するために見えることはできません。
EDIT:
k 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
f(k) 0 1 0 2 0 1 0 3 0 1 0 1 0 1 0 4 ...
テーブルが間違っています(たとえば、2^3は11を除外しません)、それはより厄介になります – harold
8は11を分割しませんか?たぶんそれは意味論の問題です。xはyを除算します。yはdiv x> 0ですか? – jmply
"xはyを割ります"はy/xが整数 – harold