美文网首页
【算法笔记】算法的平均时间复杂度A(n)的公式及示例

【算法笔记】算法的平均时间复杂度A(n)的公式及示例

作者: w8ed | 来源:发表于2019-03-24 22:25 被阅读0次

    算法平均时间复杂度计算公式

    A(n) = \sum\limits_{I\in S}P_I t_I
    其中:

    • S是规模为n的实例集
    • 实例I的概率为P_I
    • 实例I的基本运算次数(也就是工作量)为t_I

    举例:检索问题,数组Ln个元素,每个元素为从1到n的整数。若待检索元素在L中(例如1,2,3,4,5),则比较次数为其本身。若待检索元素位于L的空隙中(例如0.5,1.5,2.5),则比较次数为n,也就是从头到尾比较一遍。若位于L和位于L的空隙的待检索元素数量各占一半,检索的平均时间复杂度是多少?

    位于L的情况:假设xL的概率为P,则x在每个位置的概率为\frac{P}{n},若x的值为i,则需要比较i次。平均时间复杂度为\sum\limits_{i=1}^{n} i\frac{P}{n}

    位于L的空隙的情况:x不在L的概率为1-P,每种情况都要比较n次,则该情况的平均时间复杂度为(1-P)n

    综上,结合等差数列求和公式有:
    \begin{aligned} A(n)&=\sum\limits_{i=1}^{n} i\frac{P}{n}+(1-P)n \\ &=\frac{(1+n)P}{2}+ (1-P)n\\ \end{aligned}

    P = \frac{1}{2}
    A(n)=\frac{1+n}{4}+\frac{n}{2}\approx \frac{3n}{4}

    相关文章

      网友评论

          本文标题:【算法笔记】算法的平均时间复杂度A(n)的公式及示例

          本文链接:https://www.haomeiwen.com/subject/ywgpvqtx.html