标签:
我们来用这个式子证明 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 消耗的时间
算法里面喜欢用算法随着问题规模变大 消耗时间的变化速度来描述算法的有效性 名曰 算法的时间复杂度
这是因为我们无法比较 几个算法实际运行的速度 因为咱这里有不同的 电脑 不同的 问题规模 这都是变数 不好比
不过时间复杂度还是很好用的
标签:
原文地址:http://www.cnblogs.com/lplz/p/4437580.html