数据结构与算法-函数的渐近增长
2015-07-23 16:09
239 查看
在说函数的渐近增长的例子前,先说说概念,
函数的渐近增长:给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的n
> N,f(n)总是比g(n)大,那么,我们说f(n)的[b]渐近增长快于g(n)。[/b]
文字说明,比较难理解,我们利用下面的表格来说明
注意:n^2代表n 的平方,n^3代表n的立方
例如:f(n)=2n^2+1,g(n)=2n+1
当n=1是f(n)=g(n),这个时候对应上面的概念,N=1,当n>N,也就是当n>1时,f(n)>g(n),所以,我们说f(n)的渐近增加快于g(n)
同理,我们可以观察2n与2n^2
由于渐近增长是可以看作是一种抽象,所以他的对比具有一些特点:
1.注意关注函数最高次幂的变化
2.忽略次要项与乘数
为了更好理解这些特点,我做了一些图表,以便更加清楚的知道为什么
1.我们对比2n与2n+1这两个函数
当数值比较小的时候,两个函数之间还是存在一定的区别,但是
当输入数值非常大的时候,两条曲线基本重叠,或者可以说看作重叠,所以得出结论是,2n+1其中里面作为常数的1,在输入数值大到一定程度,他对于函数的影响可以忽略不计,这时候的1就被看作是次要项
同样,我们选择2n^2与2n^2+2n+1
从上面两图可以看出,当输入数值比较小的时候,他们直接具有一定差别,但是当输入数量非常大的时候,他们两条曲线可以看作重叠,这个时候2n+1就会被看作是次要项
最后我们来看看关于乘数是次要项的例子,请看3n+8与2n^2
从上面的图形得出的结论与之前的一致。
函数的渐近增长:给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的n
> N,f(n)总是比g(n)大,那么,我们说f(n)的[b]渐近增长快于g(n)。[/b]
文字说明,比较难理解,我们利用下面的表格来说明
注意:n^2代表n 的平方,n^3代表n的立方
数值\函数 | n | 2n | 2n+1 | 3n+8 | n^2 | 2n^2 | 2n^2+2n+1 | n^3 |
1 | 1 | 2 | 3 | 11 | 1 | 2 | 5 | 1 |
2 | 2 | 4 | 5 | 14 | 4 | 8 | 13 | 8 |
3 | 3 | 6 | 7 | 17 | 9 | 18 | 25 | 27 |
5 | 5 | 10 | 11 | 23 | 25 | 50 | 61 | 125 |
9 | 9 | 18 | 19 | 35 | 81 | 162 | 181 | 729 |
10 | 10 | 20 | 21 | 38 | 100 | 200 | 221 | 1000 |
100 | 100 | 200 | 201 | 308 | 10000 | 20000 | 20201 | 1000000 |
1000 | 1000 | 2000 | 2001 | 3008 | 1000000 | 2000000 | 2002001 | 1000000000 |
10000 | 10000 | 20000 | 20001 | 30008 | 100000000 | 200000000 | 200020001 | 1000000000000 |
100000 | 100000 | 200000 | 200001 | 300008 | 10000000000 | 20000000000 | 20000200001 | 1000000000000000 |
1000000 | 1000000 | 2000000 | 2000001 | 3000008 | 1000000000000 | 2000000000000 | 2000002000001 | 1000000000000000000 |
当n=1是f(n)=g(n),这个时候对应上面的概念,N=1,当n>N,也就是当n>1时,f(n)>g(n),所以,我们说f(n)的渐近增加快于g(n)
同理,我们可以观察2n与2n^2
由于渐近增长是可以看作是一种抽象,所以他的对比具有一些特点:
1.注意关注函数最高次幂的变化
2.忽略次要项与乘数
为了更好理解这些特点,我做了一些图表,以便更加清楚的知道为什么
1.我们对比2n与2n+1这两个函数
当数值比较小的时候,两个函数之间还是存在一定的区别,但是
当输入数值非常大的时候,两条曲线基本重叠,或者可以说看作重叠,所以得出结论是,2n+1其中里面作为常数的1,在输入数值大到一定程度,他对于函数的影响可以忽略不计,这时候的1就被看作是次要项
同样,我们选择2n^2与2n^2+2n+1
从上面两图可以看出,当输入数值比较小的时候,他们直接具有一定差别,但是当输入数量非常大的时候,他们两条曲线可以看作重叠,这个时候2n+1就会被看作是次要项
最后我们来看看关于乘数是次要项的例子,请看3n+8与2n^2
从上面的图形得出的结论与之前的一致。
相关文章推荐
- 南阳oj NYOJ 数据结构 题目93 汉若塔(三)
- 浅谈队列及栈的用法
- C++的标准模板库STL中实现的数据结构之链表std::list的分析与使用
- c/c++ 数据结构之位图(bitmap)详解
- 数据结构中的基本概念
- COJ 0986 WZJ的数据结构(负十四) 区间动态k大
- 数据结构(二):链表、链队列
- 如何实现循环队列
- 插入排序
- 删除链表中值相同的多余节点
- java数据结构和算法------图(最小生成树Prim)
- 南阳 oj NYoj 数据结构 最小数 题目1073
- HDU 5145 NPY and girls (莫队分块离线)
- 数据结构与算法汇总
- Java数据结构-树及树的存储结构
- 课程笔记 07:数据结构(清华) 列表
- 数据结构与算法分析(C)1.4
- 数据结构与算法(5、链表的拼接)
- 数据结构学习--队列
- 数据结构学习--队列