美文网首页
算法设计与分析基础 | 时间复杂度分析

算法设计与分析基础 | 时间复杂度分析

作者: 胖三斤66 | 来源:发表于2018-10-23 19:59 被阅读0次
    算法运行时间计算公式

    对于大规模的数,效率分析时时常忽略乘法常量,仅关注执行次数的增长次数及其常数倍

    符号 O,\Omega,\Theta

    O(g(n)) 是增长次数小于等于 g(n) 的函数集合。比如 g(n) = n^2,即 O(n^2)。那么就有

    n \in O(n^2),\frac{1} {2}n(n-1) \in O(n^2),100n+5 \in O(n^2) 为真

    定义:当 t(n) \in O(g(n)) \wedge n \geq n_0 时,t(n) \leq c*g(n) ,其中 c 是大于 0 的常数


    \Omega(g(n)) 是增长次数大于等于 g(n) 的函数集合。比如 g(n) = n^2,即 \Omega(n^2)。那么就有

    n^3 \in \Omega(n^2),\frac{1} {2}n(n-1) \in \Omega(n^2),100n+5 \notin O(n^2) 为真

    定义:当 t(n) \in \Omega(g(n)) 时,t(n) \geq c*g(n) ,其中 c 是大于 0 的常数


    \Theta(g(n)) 是增长次数等于 g(n) 的函数集合。比如 g(n) = n^2,即 \Theta(n^2)。那么就有

    \frac{1} {2}n(n-1) \in \Theta(n^2) 为真

    如何简单判断 t(n) 属于 O(g(n))~or~\Omega(g(n))

    利用极限比较增长次数

    递归算法效率分析

    反向替换法

    齐次二阶线性递推式:斐波那切数列

    该算法基本操作是加法,把 A(n) 定义为在计算 F(n) 过程中所做的加法次数,那么就有:

    分析斐波那切数列的效率

    总结

    利用极限判断

    递归算法的效率分析方法:

    1. 反向替换法
    2. 齐次二阶线性递推式

    相关文章

      网友评论

          本文标题:算法设计与分析基础 | 时间复杂度分析

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