在我的算法课上,我们讨论了摊销复杂度。不幸的是,由于参加体育比赛,我无法参加。在尝试联系教授解释这一点失败后,我被困在这里问了。什么是摊销复杂度,我如何找到它?我被分配了要做的工作,但不知道该怎么做。如果你们可以帮助我解决一个非常有帮助的问题或提供其他解释的参考。
这是问题所在:
假设没有溢出,考虑以下算法并将二进制数加 1,表示为 n 位数组:
increment is
local
i: INTEGER;
do
from i:=n until a.item(i) = 0 loop
a.put(0,i);
i:=i - 1
end;
a.put(1,i)
end
这个算法在最坏的情况下显然是 O(n)。证明它的摊销复杂度是 O(1)。
我可以看到为什么最坏的情况是 O(n),但我不知道为什么它的摊销复杂度是 O(1)。甚至就此而言,摊销复杂性是多少。