Algorithm 二进制计数器增量的平均事例时间复杂度分析
我试图找到二进制计数器的平均案例时间复杂性,而不是摊销分析。由于我对自己的时间复杂度分析技能没有完全的信心,我想确认我对下面提供的伪代码的平均案例分析是正确的 设k为数组的长度Algorithm 二进制计数器增量的平均事例时间复杂度分析,algorithm,time-complexity,average,Algorithm,Time Complexity,Average,我试图找到二进制计数器的平均案例时间复杂性,而不是摊销分析。由于我对自己的时间复杂度分析技能没有完全的信心,我想确认我对下面提供的伪代码的平均案例分析是正确的 设k为数组的长度 Increment(Array) i = 0 while i < k and Array[i] == 1 Array[i] = o i = i + 1 if i < k Array[i] = 1 增量(数组) i=0 当i
Increment(Array)
i = 0
while i < k and Array[i] == 1
Array[i] = o
i = i + 1
if i < k
Array[i] = 1
增量(数组)
i=0
当i我假设每个输入都有相同的发生概率 这意味着每个位以1/2的概率独立地打开或关闭 这是复杂度的相关分布:你掷硬币,然后在第一个尾部结果上结束实验(没有更多的东西可以携带)
这里的几何分布的平均值正好是2(参见上面的链接,或从基本原理推导),因此平均复杂度实际上是O(1)。如果你真的是平均值,那么你需要算法输入的概率分布。您使用的是什么分布?我假设每个输入具有相同的发生概率。在均匀分布的情况下,平均案例分析和总摊销分析的代数实际上是相同的(总分析跳过除以
n
)。特别是求和序列是相同的。