Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 二进制计数器增量的平均事例时间复杂度分析_Algorithm_Time Complexity_Average - Fatal编程技术网

Algorithm 二进制计数器增量的平均事例时间复杂度分析

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

我试图找到二进制计数器的平均案例时间复杂性,而不是摊销分析。由于我对自己的时间复杂度分析技能没有完全的信心,我想确认我对下面提供的伪代码的平均案例分析是正确的

设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 为了找出平均花费的时间,我找到了每次运行翻转的平均比特数。结果,我发现这是O(2+k/(2^k)),对于一个大k等于O(1)

这是正确的平均案例运行时间吗?如果没有,我将如何开始处理这个问题


我假设每个输入都有相同的发生概率

这意味着每个位以1/2的概率独立地打开或关闭

这是复杂度的相关分布:你掷硬币,然后在第一个尾部结果上结束实验(没有更多的东西可以携带)


这里的几何分布的平均值正好是2(参见上面的链接,或从基本原理推导),因此平均复杂度实际上是O(1)。

如果你真的是平均值,那么你需要算法输入的概率分布。您使用的是什么分布?我假设每个输入具有相同的发生概率。在均匀分布的情况下,平均案例分析和总摊销分析的代数实际上是相同的(总分析跳过除以
n
)。特别是求和序列是相同的。