找出具有概率的平均案例复杂性

时间:2013-10-21 14:20:25

标签: probability asymptotic-complexity

假设我们有一个字符串n,可以填充“a”或“b” 例如:n =“aaabbbab”,“ababababab”等。 我们定义了一个名为

的函数
HalfA(n):
  count a = 0;
  for each i in n:
    if n == 'a'
        i++;
     if i >= n.length/2
       return true 
  return false     

如果n具有均匀分布,则halfA的平均大小写复杂度是多少。直观地说,我认为它是len(n),但我不确定如何表明这一点。并且假设a比b更可能,并且它不是均匀分布,那么我如何计算平均情况呢?

1 个答案:

答案 0 :(得分:1)

任何分发。

最佳案例:n =“a *”。 这将采取len(n)/2步骤,因此最好的情况是:O(len(n))

最坏情况:n =“b *”。 这将需要len(n)个步骤,因为您必须遍历整个数组。最糟糕的情况是O(len(n))

平均情况受最佳案例和最坏情况的限制。也就是O(len(n)) <= average case <= O(len(n))。因此,平均案例复杂度为O(len(n))