我正在阅读我的Java III课程的教科书。我们正在阅读关于Big-Oh的消息,我对它的正式定义有点困惑。 (n) - 即f(n)= O(g(n)) - 如果一个正实数c和正整数N存在,使得对于所有n> = N,f(n)= cg(n)。也就是说,当n足够大时,cg(n)是f(n)的上限。Big Oh Notation - 正式定义
好的,这是有道理的。但是且慢,请继续阅读...这本书给了我这个例子:
“在段9.14,我们说,使用5N + 3个操作 是O(n)的 算法现在,我们可以展示。该5N + 3 = 为O(n)通过使用 大哦的正式定义。
当n> = 3,5N + 3 < = 5N + N = 6N。 因此,如果我们让F(N )= 5n + 3,g(n)= n,c = 6,N = 3,我们已经表明当n≥3时或者5n + 3 = O(n)。也就是说,如果算法那么 需要与时间成正比的关系,所以它是O(n)。“
好的,这种对我有意义。 他们说如果n = 3或更大,5n + 3比n小于3的时间少 - 因此5n + n = 6n - 对吗?有意义,因为如果n是2,5n + 3 = 13而6n = 12,但是当n大于等于3时,5n + 3总是小于或等于6n。
这里是我困惑的地方。他们给我一个例子:
例2:“让我们表明,4N^2 + 50N - 10 =为O(n^2)这是很容易看到:4N^2 + 50N - 10 < = 4N^2 + 50N 对任意n由于50N < = 50N^2 n个
= 50,4N^2 + 50N - 10 < = 4N^2 + 50N^2 = 54N^2对于n> = 50。因此,在c = 54和N = 50的情况下,我们已经证明4n^2 + 50n-10 = 0(n^2)。“
这种说法没有任何意义:50N < = 50N^2对n> = 50
是不是任意n打算让50N小于50N^2?不只是大于或等于50?为什么他们甚至提到50n < = 50n^2?这与问题有什么关系?对于n> = 50,无论n是多少,4n^2 + 50n - 10 < = 4n^2 + 50n^2 = 54n^2将是真实的。
在世界上如何挑选数字表明f(n)= O(g(n))?
阿德里安谢谢你。通读你的解释让事情变得更加清晰。你应该当老师! – ShrimpCrackers 2010-05-02 20:59:28