【发布时间】:2016-11-13 05:24:08
【问题描述】:
我试图找到二进制计数器的平均案例时间复杂度,而不是摊销分析。由于我对自己的时间复杂度分析技能并不完全有信心,我想确认我对下面提供的伪代码的平均案例分析是正确的。
令k为数组的长度。
Increment(Array)
i = 0
while i < k and Array[i] == 1
Array[i] = o
i = i + 1
if i < k
Array[i] = 1
为了找到平均花费的时间,我找到了每次运行翻转的平均位数。结果,我发现这是 O(2+k/(2^k)),对于较大的 kO(1) /em>。
这是正确的平均案例运行时间吗?如果不是,我将如何着手解决这个问题?
【问题讨论】:
-
如果您的意思是average-case time complexity,那么您将需要算法输入的概率分布。您使用的是什么发行版?
-
我假设每个输入都有相同的发生概率。
-
在均匀分布的情况下,平均案例分析和聚合摊销分析的代数实际上是相同的(聚合分析跳过除以
n)。特别是总和系列是相同的。
标签: algorithm time-complexity average