显示函数是O(某事)(大O表示法)

时间:2015-07-03 10:46:01

标签: algorithm big-o

我在理解如何解决大O符号方程时遇到了问题,例如:

super.paintComponent(g);

// Clearing
((Graphics2D) g).setComposite(AlphaComposite.getInstance(AlphaComposite.SRC));
g.setColor(Swinger.TRANSPARENT);
g.fillRect(0, 0, this.getWidth(), this.getHeight());

从这里采取:http://web.eecs.utk.edu/~booth/311-01/notes/bigOex.html

它说f(n) = 10n + 5 and g(n) = n Show that f(n) is O(g(n))

我明白了:从k开始,f(n)的增长速度不会比g(n)乘以任意常数快。

我不能得到的是:

To show f(n) is O(g(n)) we must show constants c and k such that f(n) <= cg(n) for all n >=k

所以为了解决这些方程式,我可以始终选择c和k,只要它们符合这些要求?但是,如果我可以选择k,那么他们为什么要在该网站上计算k?

We are allowed to choose c and k to be integers we want as long as they 
are positive.  They can be as big as we want, but they can't be functions
of n.

1 个答案:

答案 0 :(得分:1)

基本上,他们希望表明,超过给定的n值,c * g(n)总是> = f(n)。因此,如果将k设置为该值,则不等式成立。没有必要显示精确超出它所拥有的点(即给定一些任意c的k的最小有效值) - 它恰好在解决不等式时变得明显。

只要你能证明存在某些 c,k为哪个,你就可以说f(n)是O(g(n))。