【发布时间】:2020-10-01 23:47:06
【问题描述】:
我似乎无法弄清楚这一点:5n2 + 3n + 9 = O(n2)。选择 c 和 n0。使用 f(n)
我尝试将其压缩为 3n + 9 / c - 5
Stackoverflow,请帮助我! :)
【问题讨论】:
标签: algorithm time-complexity big-o notation
我似乎无法弄清楚这一点:5n2 + 3n + 9 = O(n2)。选择 c 和 n0。使用 f(n)
我尝试将其压缩为 3n + 9 / c - 5
Stackoverflow,请帮助我! :)
【问题讨论】:
标签: algorithm time-complexity big-o notation
您不必获得最佳常量。如果您正在处理多项式,n0 = 1 可能是一个不错的选择,因为 n ≥ n0 意味着 n2 ≥ n ≥ 1 ,所以
2 2 2 2 2
5n + 3n + 9 ≤ 5n + 3n + 9n = 17n ,
你可以设置 c = 17。
【讨论】:
我不太明白这个问题,但如果你只想证明“5n^2 + 3n + 9 = O(n^2)”, 你必须证明“(5n^2 + 3n + 9)/n^2 -> k in R when n -> +inf”。 这很容易证明:“(5n^2 + 3n + 9)/n^2 = 5 + 3/n + 9/n^2 -> 5 + 0 + 0”
【讨论】:
取 c=11,n0=2。然后我们要显示 f(n) = 5n^2 + 3n + 9 = n0。等效地,证明 6n^2 - 3n - 9 >= 0 对于所有 n >= n0。该表达式因数为 (6n-9)(n+1) >= 0。这仅在 (-1, 1.5) 上为负数,因此对于所有 n > 2,我们有 f(n)
【讨论】:
根据定义:
O(g(n)) = { f(n) :存在正常数 c 和 n0 使得 0 ≤ f(n) ≤ g(n) 对于所有 n ≥ n0 }
让我们做一些数学运算来找到一个可行的c和n0:
如果我们取 n0 = max(1, 3) = 3,那么上面的不等式成立。此外,我们知道 c ≥ 9,因此我们可以取 c = 9,并且在满足定义要求时完成工作。
【讨论】: