码迷,mamicode.com
首页 > 其他好文 > 详细

渐进符号

时间:2015-04-18 17:37:17      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:

渐进符号

符号O:

比如说这里有个式子:     f(n)=O(g(n))  他表达了函数f(n)和g(n)的一种关系 什么关系呢? 数学定义如下:

存在c>0 n0>0 使得 n>=n0时:

0<=f(n)<=c * g(n) 恒成立.

 

我们来用这个式子证明 100(n^2)=O(n^3)       其中      f(n)  是100(n^2)   g(n)  是n^3 

  要证明  存在c>0 n0>0 使得 n>=n0时:

  f(n)<=c * g(n)     即    100(n^2)<=c*(n^3) 恒成立.

  哈哈既然是说存在一个c>0 我们就取c=100 等式两边的 100消掉 即    n^2<=n^3

  可以看到 n0就算取1 n^2<=n^3 也是恒成立的.

  所以 100(n^2)=O(n^3).

 

那么这个渐进符号是为了解决什么问题呢?

 

比如说我们有两个排序算法

算法a 他的执行时间满足 y=f(n) n是要排序的数的个数 即为输入规模

算法b 他的执行时间满足 y=g(n) 

如果 f(n)和g(n)满足:  f(n)=O(g(n)) 

那么我们可以证明 存在n0>0 使得g(n)>=f(n) 恒成立.

也就是说 当输入规模越来越大超过一定的规模时 算法b 消耗的时间 大于等于 算法a 消耗的时间

 

算法里面喜欢用算法随着问题规模变大 消耗时间的变化速度来描述算法的有效性 名曰 算法的时间复杂度

这是因为我们无法比较 几个算法实际运行的速度 因为咱这里有不同的 电脑 不同的 问题规模 这都是变数 不好比

 

不过时间复杂度还是很好用的

 符号Ω: f(n)=Ωg(n)

  存在c>0 n0>0 使得 n>=n0时:

  0<=c*g(n)<=f(n) 恒成立.

 

渐进符号

标签:

原文地址:http://www.cnblogs.com/lplz/p/4437580.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!