数据结构考研:大O表示法最浅显易懂且详细深入的解释及与小o表示法的区别(十分钟必懂)

大O表示法的背景

作为软件工程专业的学生,在我们学习数据结构的时候,总是会碰见对各种算法时间复杂度和空间复杂度的大O表示法的描述。我们只是将信将疑的用着,并不知道大O表示法的准确含义,今天博主李同学在查阅各方资料后进行详细地讲解。

大O表示法的定义

根据Big O notation(大O表示法)维基百科的描述:

大O表示法的字母O是函数的增长率,也被称为函数的阶数,即字母O代表Order(阶数)。用大O符号描述函数通常只提供函数增长率的一个上界。
设f是实或复值函数,g是实值函数,它们都定义在实正数的无界子集上,使得g(x)对于所有足够大的x都为正数,那么我们称:当x趋向于无穷大时,f(x)=O(g(x))。
另外,对于所有足够大的x值,f(x)的绝对值最多是g(x)的正常数倍。即f(x) = O(g(x))有且仅有一个实数M和一个实数x0使得:对于所有x≥x0的x,|f(x)|≤Mg·(x)恒成立。

在典型的用法中,O符号是渐近的,也就是说,它指的是非常大的x。因此,可以应用以下简化规则:如果f(x)是几个项的和,如果有一个增长率最大的项,它可以保留,其他项都可以省略。
如果f(x)是几个因子的乘积,任何常数(乘积中不依赖于x的项)都可以省略。
例如,让f(x) = 6x4 - 2x3 + 5,假设我们想要简化这个函数,用大O表示法来描述x趋于无穷时的增长率。这个函数是三项的和:6x4, 2x3和5。在这三项中,增长率最高的是指数最大的x,即6x4。现在我们可以应用第二个规则:6x4是6和x4的乘积,其中第一个因子不依赖于x,省略这个因子就得到了简化形式x4。因此,我们说f(x)是(x4)的Big O。数学上,我们可以写成f(x) = O(x4)可以用形式定义来确认这个计算:令f(x) = 6x4-2x3 + 5, g(x) = x4。应用一个正式定义,f(x) = O(x4)等于它的展开式|f(x)|≤MX4,其中M是一个常数。对于某些合适的x0和M以及所有的x >x0。为了证明这一点,令x0 = 1, M = 13。然后,对于所有的x > x0
在这里插入图片描述
因此,我们说:|6x4-2x3 + 5|≤13x4
而这个表达式用大O表示法,可写成:(6x4-2x3 + 5)=O(x4)

大O表示法与小o表示法的区别

如果你上过高等数学的课程,你一定对小o表示法不陌生,下面是高阶无穷小,也就是小o表示法的定义:

设为an和bn为两个序列的数,而且都是n趋近于无穷时的无穷小量。虽然它们在n趋近于无穷时都趋于零,但趋于零的速度是有区别的。
可以用如下方式比较它们的速度:
若对于任意正实数c>0,存在正整数N,在k>N时,使得ak<c·bk总是成立,则称:当n趋近于无穷时,an=o(bn),即an是bn的高阶无穷小。
在上述定义中,也可以说无穷小量an的阶要比bn的要高,或者说an比bn更快地趋于零,尽管在此时“阶”或者“速度”本身其实都没有明确的定义。

通过上述我对小o表示法的讲解后,我们再看看维基百科中对大O表示法与小o表示法区别的描述:

符号名字描述公式定义
在这里插入图片描述大O表示法f渐近地以g为界在这里插入图片描述
在这里插入图片描述小o表示法f渐近地被g控制公式定义

由这个对比表格,我们可以清楚地知道:
大O表示法f(n)=O(g(n))中的f(n)是g(n)的等阶无穷大或者是同阶无穷大。
小O表示法f(n)=o(g(n))中的f(n)是g(n)的高阶无穷小。

  • 14
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐李同学(李俊德-大连理工大学)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值