简明易懂的算法文章-了解渐进分析

(翻译文)
    算法的效率取决于执行算法所需的时间、存储和其他资源。效率是用渐近符号来衡量的。
    对于不同类型的输入,算法可能没有相同的性能。随着输入大小的增加,性能将发生变化。
    研究算法性能随输入大小顺序的变化被定义为渐近分析。

渐进符号

    渐近符号是一种数学符号,用于描述当输入趋于某个特定值或某个极限值时算法的运行时间。
    例如:在冒泡排序中,当输入数组已经排序时,算法所花费的时间是线性的,即最佳情况。但是,当输入数组处于反向状态时,算法需要最大时间(二次方)对元素进行排序,即最坏情况。
    当输入数组既不排序也不按相反顺序排序时,则需要平均时间。这个持续阶段用渐近符号表示。
    渐近符号主要有三种:Theta表示法、Omega表示法和Big-O表示法。

Theta表示法(Θ表示法)

    Theta表示法从上方和下方将函数括起来。由于它代表算法运行时间的上限和下限,所以用来分析算法的平均情况复杂度。
在这里插入图片描述
    上图表示Theta将函数限制在常数因子之内
    对于一个函数g(n),Θ(g(n))由以下关系给出:

Θ(g(n)) = { f(n): 存在正常数c1, c2 和 n0
0 ≤ c1g(n) ≤ f(n) ≤ c2g(n) 其中所有的 n ≥ n0 }

    如果存在正常数c1和c2,使得它可以夹在c1g(n)和c2g(n)之间,对于足够大的n,上述表达式可以描述为属于集合Θ(g(n))的函数f(n)。
    如果一个函数f(n)位于c1g(n)和c2>g(n)之间的任意一个n,且n ≥ n0,则f(n)被称为渐近紧界。

大O表示法(O表示法)

    Big-O表示代表算法运行时间的上限。因此,它给出了算法的最坏情况的复杂性。
在这里插入图片描述
    上图表示Big-O给出函数的上限

O(g(n)) = { f(n): 存在正常数c和n0
使得 0 ≤ f(n) ≤ cg(n),n ≥ n0 }

    如果存在一个正常数c,使得它位于0和cg(n)之间,对于足够大的n,则上述表达式可以描述为属于集合O(g(n))的函数f(n)。
    对于n的任何一个值,算法的运行时间不超过O(g(n))提供的时间。
    由于它给出了算法最坏情况下的运行时间,因此它被广泛用于分析算法,因为我们总是对最坏情况感兴趣。

Ω表示法(Ω表示法)

    Ω表示法表示算法运行时间的下限。因此,它提供了算法的最佳情况复杂度。
在这里插入图片描述
    上图表示Omega给出功能的下限

Ω(g(n)) = { f(n): 存在正常数c和n0
使得 0 ≤ cg(n) ≤ f(n),n ≥ n0 }

    如果存在一个正常数c,使得它位于cg(n)之上,对于足够大的n,上述表达式可以描述为属于集合Ω(g(n))的函数f(n)。
    对于任何n值,算法所需的最小时间由Ω(g(n))给出。

参考文献

https://www.programiz.com/dsa/asymptotic-notations

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值