【问题标题】:Asymptotic Bounding | If f = 2^n and g = (2^n+1), how does f = Θ(g)?渐近边界 |如果 f = 2^n 和 g = (2^n+1),那么 f = Θ(g) 怎么算?
【发布时间】:2020-05-06 03:29:24
【问题描述】:

我们被要求指出是 f = O(g),还是 f = Ω(g),或者两者兼而有之(在这种情况下,f = Θ(g))。

为了解决大 O,我发现很容易通过简单地提供常数 C = 1 在这种情况下 2^n

我的印象是求解 Ω 是不可能的,因为没有 2^n >= C(2^n+1) 的 C。

在查看解决方案以检查我的工作时,我发现 f = Θ(g)。这个问题怎么可能出现?什么常数 C 可以满足这个要求?

【问题讨论】:

  • 提示——你只需要找到常数 C 和 k 使得 2^n >= C(2^n + 1) 对于所有 n > k...

标签: algorithm performance big-o complexity-theory


【解决方案1】:

我不知道 g(n) 是 2^(n+1) 还是 (2^n)+1。无论哪种情况,f(n) 都是 Theta(g(n))。

假设 g(n) = 2^(n+1)。我们可以使用指数定律将其重写为 (2^n)(2^1),这与 2*(2^n) 相同。现在我们可以简单地选择 c = 1/2 然后 f(n) = c * g(n)。因为存在一个函数完全相等的 c,所以立即 f(n) = Theta(g(n))。

假设 g(n) = (2^n) + 1。由于 f(n) = c * g(n)。如果我们选择 c = 1/2,我们需要找到 n0 使得 2^n0 >= 1/2 2^n0 + 1/2。我们可以猜测 n0 = 1,我们发现这是可行的; 2^1 >= 1/2 2^1 + 1/2。因为 f(n) 的增长速度也快于 (1/2)2^n + 1/2,所以我们完成了。

【讨论】:

  • 非常感谢!我的印象是 C > 1 但这更有意义。谢谢!
  • @AlexRodriguez 我认为定义需要 c > 0。否则,你是对的,如果 c > 1 那么 f(n) 甚至不是 Omega(f(n))!
【解决方案2】:

如果以C = 0.1 为例有什么问题?此外,您可以通过这两个函数的限制来显示Theta 符号,这样当n 变为\inftylim(f(n)/g(n)) 等于1。这意味着我们有f(n) = \Theta(g(n))

【讨论】:

    猜你喜欢
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 2022-01-20
    相关资源
    最近更新 更多