寻找Big-O,Omega和theta

时间:2015-03-03 01:19:29

标签: algorithm big-o discrete-mathematics

我已经仔细查看了这些链接,而且我太过头脑,无法理解将它们搞清楚的机械过程。我理解O,theta和omega的想法,我理解“规则”。因此,让我与你们一起研究这个例子,以便在脑海中清除这一点:)

f(n)= 100n + logn

g(n)= n +(logn)2

我需要找到:f = O(g),或f =Ω(g),还是两者(在这种情况下f =Θ(g))

所以我知道100n和n是相同的,它们都比log(n)慢。我只需要弄清楚(log(n))^ 2是慢还是快。但我真的不记得有关日志的事情了。如果log(n)更大,是否意味着数字变大或变小?

请允许我加入我真正的斗争是找出欧米茄和theta。根据定义f(n)< = g(n)如果存在将使g(n)更大的常数c,并且对于ω的反向则相同。但我该如何测试呢?

2 个答案:

答案 0 :(得分:1)

您通常可以从这些规则中找到答案:

  1. 广泛地k < log(n)^k < n^k < k^n。您可以在每个步骤中将k替换为您想要的任何正数,并且对于足够大的n,它仍然为真。

  2. 如果x很大,那么1/x非常接近0。

  3. 对于正面xyx < y当且仅当log(x) < log(y)。 (有时采用原木可以帮助解决复杂而混乱的产品。

  4. log(k^n) = log(k) n

  5. 对于O,theta和omega,你可以忽略除了没有取消的最大术语之外的所有内容。

  6. 规则1和5足以满足您的具体问题。但要学习所有规则。

答案 1 :(得分:0)

你不需要记住规则,而是学习一般原则。

在这里,你需要知道的是log(n)正在增加并且无限制地增长,并且big-O的定义,即f = O(g),如果有ac,那么对于所有足够大的n,f (n)&lt; = c * g(n)。您可以通过记住log(n)增长与n的位数一样来了解日志的事实。

log ^ 2(n)可以是O(log(n))吗?这意味着(使用big-O的定义)log ^ 2(n)&lt; = c.log(n)对于所有足够大的n,所以log ^ 2(n)/ log(n)&lt; = c对于足够大的n(*)。但是log ^ 2(n)/ log(n)= log(n),它没有限制地增长,因此不能被c限制。所以log ^ 2(n)= O(log(n))。

log(n)可以是O(log ^ 2(n))吗?好吧,在某些时候log(n)&gt; 1(因为它在没有限制的情况下增加),并且从那时起,log(n)<1。登录^ 2(n)的。这证明了log(n)= O(log ^ 2(n)),常数c等于1.

(*)如果你格外小心,你需要排除log(n)无限次为零的可能性。

相关问题