算法导论:时间复杂度+渐进符号

2.1计算复杂性

 

 

  

2.2渐进分析

属性:

常见函数阶数由低到高排列:

在这里插入图片描述


我的笔记: 

 

他人笔记

1)O(Big-Oh,大O表示法)——表示上限,渐进上界

构造形如f(n) = c * g(n)形式的不等式,使得在n ≥ n0的条件下,满足0≤f(n)≤c*g(n)。(n0是自己取的一个数,要求n0 ≥0)

在这里插入图片描述如图,待分析式f(n)=2n+3
此时,可以构造式子2n+3n,可以保证当n≥1时,f(n)= 2n+3 ≤ 2n+3n = 5n成立
此时,c*g(n)= 5n(c为系数5,g(n)=n)
因为g(n)= n,所以f(n)=O(n)

ps:大O表示法可以用比最接近的函数阶数更大的函数来表示。

向上面这种f(n)= 2n+3 ≤ 2n+3n = 5n的情况:用O(n)是最贴切的情况,但是也可以用O(n^2)、O(nlogn)等阶数更高的形式进行表达,只是阶数过大的时候也没什么意义了。

2)Omega(Ω)——表示下限,渐进下界

构造形如f(n) = c * g(n)形式的不等式,使得在n ≥ n0的条件下,满足f(n)≥c*g(n)≥0。(n0是自己取的一个数)

在这里插入图片描述

如图,待分析式f(n)=2n+3
此时,可以构造式子1 * logn,可以保证当n≥1时,f(n)= 2n+3 ≥ 1 * logn成立
此时,c*g(n)= 1 * logn(c为系数1,g(n)=logn)
因为g(n)= logn,所以f(n)=O(logn)

ps:Omega(Ω)表示法可以用比最接近的函数阶数更大的函数来表示。

同理,向上面这种f(n)= 2n+3 ≥ 1 * logn的情况:用O(logn)是最贴切的情况,但是也可以用O(1)这样阶数更低的形式进行表达,只是阶数过低的时候也没什么意义了。

3)Theta(Θ)——平均界限,渐近紧约束 tight bound

在这里插入图片描述

相比大O和Ω,平均界限Θ的选取往往比较严格,只会有一种。 

在这里插入图片描述

如图,待分析式f(n)=2n+3
此时,可以构造式子c1 * g(n) = 1 * n和式子c2 * g(n) = 5 * n,可以保证当n≥1时,n ≤ f(n)= 2n+3 ≤ 5n成立。

此时,不等式两边的g(n)均为n,此时g(n) = n就是平均界限θ。

ps:
平均界限要求不等式两边的g(n)必须相同,如上面的例子,不能左边的g(n)是n,右边的g(n)取n2。

ps:
大O(小于等于)并不是只能表示最坏情况,大Ω(大于等于)不是只能表示最好情况,其实用任何符号都可以表示最好情况/最坏情况。
请不要弄混淆。


1、线性时间O(n)

线性时间:运行时间最多是一个常数乘以输入的大小。

●计算n个数a1、a2、…an的最大值

 ●合并。将两个已排序的列表A = a1,a2,…,an with B = b1,b2,…,bn合并一个有序列表。

合并两个大小为n的列表需要O(n)时间。

Pf.每次比较后,输出列表的长度增加1

2、O(n logn)

O(n logn)时间,出现在分治算法中。也被称为线性时间。

●排序。归并排序和堆排序是执行O(n logn)次比较的排序算法。

●求最大的时间间隔。给定文件副本到达服务器的n个时间戳x1,…,xn,当没有文件副本到达服务器时,最大的时间间隔是多少?

解决方案O(n log n)。对n个时间戳进行排序,按顺序扫描已排序的列表,确定连续时间戳之间的最大间隔。

3、O(n^{2})

二次时间。枚举所有元素对。

●找最近的一对点。给定平面上n个点的列表(x1, y1),…,(xn, yn),找出最接近的一对。

O(n^{2})解决方案。试一遍所有的点对。

O(n^{2}) seems inevitable, but this is just an illusion.  →see chapter 5

4、O(n^{3})

立方。枚举所有元素的三元组。

●设置剥离。给定n个集合S1,。,Sn每一个集合都是1,2,。,n的子集,是否存在不相交的一对集合?

解决方案O(n^{3})。依次确定每一对集合它们是否不相交。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值