具有几何概率分布的顺序搜索的平均案例分析

时间:2018-08-11 16:50:04

标签: algorithm runtime time-complexity analysis asymptotic-complexity

我有点意识到要平均分配运行时间。假设我们有6个数组元素。

| 1/6  | 1/6   | 1/6  | 1/6   | 1/6  |  1/6   |

上方是一个数组,其中搜索元素的均匀概率分布位于数组的每个下标中。

因此,获得均匀分布的平均运行时间将类似于以下解决方案:

T(n) = (1/6)*1 + (1/6)*2 + (1/6)*3 + (1/6)*4 + (1/6)*5 + (1/6)*6
     = (1/6) * ( 1 + 2 + 3 + 4 + 5 + 6 )
     =  3.5

或以n个术语表达时:

T(n) = (1/n) * ((n(n+1))/2)
     = (n+1) / 2
     = ϴ(n)

但是在几何概率分布下,顺序搜索中键比较的平均次数是多少?

示例:

Prob(target X is in the jth position) = 1/(2^(j+1))
where j = 0, 1, 2,3,4,5,6,...


| 1/(2^(0+1))  | 1/(2^(1+1))  | 1/(2^(2+1)) | 1/(2^(3+1))  | 1/(2^(4+1))  |  1/(2^(5+1))   |

然后

T(j) = ((1/2)* 1) + ((1/4)* 2) + ((1/8)* 3) + ((1/16)* 4) + ((1/32)* 5) + ((1/64)* 6)
     =  .5 + .25(2) + .125(3) + .0625(4) + .03125(5) + .015625(6)
     =  .5 + .5 + .375 + .25 + .15625 + .09375

     =  1.875

我不知道如何用j来表达它:

 T(j) = ?

什么是上限O(j)?下限Ω(j)? bound(j)?

任何帮助或想法,将不胜感激。

更新:

我认为获取运行时间的公式如下:

 T(j) = ((sum of geometric series) or (sum of geometric series / n)?)* (n((n+1))/2)

当序列中的每个元素的值为1 /(2 ^(j + 1)),其中j = 0、1、2,...直至。请帮忙。

更新:

我发现求和几何序列的公式为1-(1/2 ^ n)

 T(n) = (1-1/(2^n))/n * (n(n+1)/2)
      = (n+1)/2 - (n+1)/(2^(n+1))

现在,我的问题是什么是大哦,大欧米茄,大Theta,小哦和小欧米茄? 算法是否可能没有下限?

2 个答案:

答案 0 :(得分:4)

您的示例如下:

enter image description here

可以使用简单的技巧将其转换为。首先,将基数重写为参数:

enter image description here

竖线表示“以[此值]评估”。回顾x^i的派生形式:

enter image description here

方括号内的术语现在是一个几何级数;回顾标准结果:

enter image description here

请注意,随着j的增加,该值收敛为常数。

答案 1 :(得分:2)

最初,我想将其视为一个连续函数,并建议进行演算以计算概率曲线的积分曲线,然后将积分函数乘以x(直到该检查的关键协作数)。然后取最小值和最大值之差...但这不是必需的,因为您不能要求索引之间的索引。

因此,您将使用整数近似。采用概率函数并确定每个索引值的概率。计算这些概率的总和,再乘以发生的关键协作次数。

1 * p(0)+ 2 * p(1)+ 3 * p(2)=您的答案。