大问题 - 算法分析

时间:2011-04-08 13:01:58

标签: algorithm complexity-theory big-o

我正在修改考试,我在互联网上发现了这个问题,并想知道如何解决这个问题。

  

(基地2日志)
  证明log(2 n )是O(log n )的成员。

我已经试了一下,但我不确定我是否正确,因为没有提供答案。能否请你帮忙?

这是我的尝试:

  

log 2 n - c log n ≤0
  log 2 + log n - c log n ≤0
  1 +(1- c )log n ≤0
  (然后我除以log n 。)

示例: n = 8且 c = 10评估为小于零。因此它 true

我的问题是:

  1. 我这样做了吗?

  2. 我的答案可以进一步简化吗?

2 个答案:

答案 0 :(得分:7)

lg(2n) = lg(2) + lg(n).

lg(2)是一个常数。见维基百科,Logarithmic identities

答案 1 :(得分:4)

答案很长

                log(2n)       log(2) + log(n)       log(2)
lim n->infinity ------- = lim --------------- = lim ------ + 1 = 0 + 1 = 1
                log(n)        log(n)                log(n)

因为限制中两个函数的比例存在(即有界),它们具有相同的渐近复杂度。

以同样的方式,为了证明O(n 2 )不是O(n),你会做

lim n->infinity (n^2 / n) = lim n    which tends to infinity

为O(n)与O(log n)执行此操作需要更多工作,因为

lim n->infinity (n / log n)

需要以某种方式处理。诀窍是你可以使用衍生物,因为极限中的导数也需要渐近相关(否则它们的积分不是,即原始函数)。你得到n的导数,即1,和log n的导数,即n -1 ,之后

lim n->infinity (1 / (1 / n)) = lim n    which tends to infinity