您的位置:首页 > 理论基础 > 数据结构算法

数据结构与算法-函数的渐近增长

2015-08-24 00:00 218 查看
在说函数的渐近增长的例子前,先说说概念,

函数的渐近增长:给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的n > N,f(n)总是比g(n)大,那么,我们说f(n)的[b]渐近增长快于g(n)。[/b]

文字说明,比较难理解,我们利用下面的表格来说明

注意:n^2代表n 的平方,n^3代表n的立方

数值\函数n2n2n+13n+8n^22n^22n^2+2n+1n^3
1123111251
22451448138
3367179182527
55101123255061125
9918193581162181729
10102021381002002211000
1001002002013081000020000202011000000
100010002000200130081000000200000020020011000000000
10000100002000020001300081000000002000000002000200011000000000000
1000001000002000002000013000081000000000020000000000200002000011000000000000000
100000010000002000000200000130000081000000000000200000000000020000020000011000000000000000000
例如: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





从上面的图形得出的结论与之前的一致。

版权声明:本文为博主原创文章,未经博主允许不得转载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息