Algorithm 指数:小哦
直觉上,nb=o(an)(o是小oh)是什么意思?我刚刚开始自学我自己的算法,每次看到这样的表达式,我都很难解释。这里,我的理解是,对于函数nb,增长率是一个常数。但是,无论是对是错,这对我来说都没有意义。语句nb的超高级含义是o(an),就是像a这样的指数函数比像nb这样的多项式函数增长得快得多 在研究大O和小O符号时,需要了解的重要一点是,它们都是上界。我猜这就是你困惑的原因。nb是o(an),因为an的生长速率要大得多。您可能会在nb上找到一个更紧的小o上界(在这个上界和函数之间的间隙更小),但an仍然有效。也许还值得一看大O和小O之间的区别 记住,函数f是函数g的大O,如果对于某个常数k>0,最终可以找到n的最小值,因此f(n)≤ k*g(n) 函数f是函数g的小o,如果对于任何常数k>0,最终可以找到n的最小值,因此f(n)≤ k*g(n) 请注意,小o要求更难实现,这意味着如果函数f是函数g的小o,那么它也是g的大o,这意味着函数g的增长速度要比函数g的大o快 在你的例子中,如果b是3,a是2,我们把k设为1,我们可以算出n的最小值,这样nb≤ 克安。在这种情况下,它的9和10之间,因为Algorithm 指数:小哦,algorithm,big-o,little-o,Algorithm,Big O,Little O,直觉上,nb=o(an)(o是小oh)是什么意思?我刚刚开始自学我自己的算法,每次看到这样的表达式,我都很难解释。这里,我的理解是,对于函数nb,增长率是一个常数。但是,无论是对是错,这对我来说都没有意义。语句nb的超高级含义是o(an),就是像a这样的指数函数比像nb这样的多项式函数增长得快得多 在研究大O和小O符号时,需要了解的重要一点是,它们都是上界。我猜这就是你困惑的原因。nb是o(an),因为an的生长速率要大得多。您可能会在nb上找到一个更紧的小o上界(在这个上界和函数之间的间隙更小
9³=729
和1*2⁹ = 512
,这意味着在9安时还不大于nb
但是
10³=1000
和1*2⁰ = 1024,这意味着n现在大于nb。
您可以看到这些函数的图形显示,对于n>10的任何值,n都将大于nb。在这一点上,我们只展示了nb是n的大O,因为大O只需要k>0的某个值(我们选择1)an≥ nb表示一些最小n(在这种情况下,它介于9和10之间)
为了证明nb是an的小o,我们必须证明,对于任何大于0的k,仍然可以找到最小值n,因此an>nb。例如,如果您选择k=.5,那么我们之前发现的最小值10不起作用,因为10³=1000
,并且0.5*2ª¥⁰ = 512
。但是我们可以继续把n的最小值滑得越来越远,k越小,n的最小值就越大。说nb是小o的意思是,无论你把k弄得多么小,我们总是能够找到一个足够大的n值,所以nb≤ k*anf(n)=o(g(n))
表示f(n)/g(n)->0
当n>无限时
对于您的问题,它应该保持a>1
<代码>(n^b)/(a^n)->0
当n>无限时,因为(n^b)/(sqrt(a)^n*sqrt(a)^n))=(n^b)/sqrt(a)^n)*(1/sqrt(a)^n)
。让f(n)=((n^b)/sqrt(a)^n)
是一个先增后减的函数,所以你可以得到max(f(n))=M的最大值,然后(n^b)/(a^n)
,因为a>1,sqrt(a)>1
,所以(sqrt(a)^n)->无限
。当n->infinite
时,即M/(sqrt(a)^n)->0
,最后,当n->infinite时,我们得到(n^b)/(a^n)->0
。根据定义,这就是n^b=o(a^n)
(为简单起见,我将假设所有函数始终返回正值。例如,对于测量算法运行时间的函数,情况就是这样,因为没有算法在“负”时间内运行。)
首先,回顾一下big-O符号,以澄清一个常见的误解:
说f
是O(g)
意味着f
的渐近增长速度最多与g
一样快。更正式地说,将f
和g
视为变量n
的函数,也就是说f(n)
是O(g(n))
意味着存在一个常数K
,因此最终,f(n)
。这里的“最终”一词意味着存在一些固定值N
(这是K
、f
和g
)的函数),因此如果N>N
,那么f(N)
例如,函数f(n)=n+2
是O(n^2)
。要了解原因,请让K=1
。然后,如果n>10
,我们有n+2
,所以我们的条件是满足的。需要注意的几点:
- 对于
n=1
,我们有f(n)=3
和g(n)=1
,因此f(n)
实际上失败了。没关系!记住,不等式最终只需要成立,如果不等式对于n
的小有限列表失败,这并不重要
- 我们使用了
K=1
,但不需要这样做。例如,K=2
也可以工作。重要的是,K
的某些值最终给出了我们想要的不等式
- 我们看到
n+2
是O(n^2)
。这可能会让人困惑,你可能会说,“等等,n+2
实际上不是O(n)
?”答案是肯定的<代码>n+2是O(n)
,O(n^2)
,O(n^3)
,O(n/3)
,等等
Little-o表示法略有不同。Big-O表示法直观地表示,如果f
是O(g)
,那么f
的渐进增长速度最多与g
一样快。Little-o表示法表示,如果f
是o(g)
,那么f
的增长速度将渐近严格慢于g
形式上,f
是o(g)
如果对于K
的任何(让我们说是肯定的)选择,最终不等式f(