渐近概念:公式中的n₀是多少,我们如何找到常数
Asymptotic Notion: What is n₀ in formula, how do we find constant
我正在研究 Asymptotic Notations Topic,我发现它的公式很简单,但它什么也没说,有几件事我不明白。
当我们说
f(n) <= c.g(n) where n >= n₀
而我们不知道c=的值?和 n=?首先,通过对 f(n) 或 g(n) 进行除法,我们得到 c 的值。 (这里是混乱所在)
第一个问题:我们如何决定哪一边的 'n' 必须在等式 f(n) 或 中划分g(n)?
假设我们要证明:
2n(square) = O(n(cube))
此处 f(n) = 2(n(正方形)) 和 g(n)=n(立方体)
将形成为:
2(n(square)) = c . n(cube)
现在在我读过的笔记中,他们将 2(n(square)) 除以得到 c 的值,我们得到 c = 1;
但是如果我们将 n(cube) [我不知道我们是否能做到] 我们得到 c = 2;
我们怎么知道我们要划分什么值?
第二个问题:n₀的任务从哪里来?
那么根据公式我们知道 n >= n(0) 这意味着无论我们取 n 我们应该取 的值n(0) 或者应该比 n 更大。
但是我很困惑我们在哪里使用 n₀ ?为什么需要它?
仅通过找到 C 和 N 我们不能得出结论
n(square) = O(n(cube)) or not.
有人愿意解决这个问题吗?非常感谢。
如果我问任何愚蠢的问题或给 -1,请不要冷落我。请解决任何有用的 link 涵盖所有这些就足够了 well:3
在发布这个问题之前,我已经完成了以下 links 这就是我的理解,这是那些 links:
http://openclassroom.stanford.edu/MainFolder/VideoPage.php?course=IntroToAlgorithms&video=CS161L2P8&speed=
http://faculty.cse.tamu.edu/djimenez/ut/utsa/cs3343/lecture3.html
https://sites.google.com/sites/algorithmss15
来自你问题中的第二个url:
Let's define big-Oh more formally:
O(g(n)) = { the set of all f
such that there exist positive constants c
and n0
satisfying 0 <= f(n) <= cg(n)
for all n >= n0
}.
这意味着,对于 f(n) = 4*n*n + 135*n*log(n) + 1e8*n
,大 O 是 O(n*n)。
因为对于足够大的 c
和 n0
这是真的:
4*n*n + 135*n*log(n) + 1e8*n = f(n) <= O(n*n) = c*n*n
在这种特殊情况下,[c,n0] 可以是 [6, 1e8],因为(这当然不是有效的数学证明,但我希望它是 "obvious"):
f(1e8) = 4*1e16 + 135*8*1e8 + 1e16 = 5*1e16 + 1080*1e8 <= 6*1e16 = 6*1e8*1e8 =~= O(n*n)
。当然还有更多可能的 [c,n0] f(n) <= c*n*n
成立,但你只需要找到一对这样的对来证明 f(n)
有 O(f(n))
of [=23] =].
如您所见,对于 n=1,您需要相当大的 c
(如 1e9),因此乍一看 f(n) 可能看起来比 n*n 大得多,但在渐近概念您不关心前几个初始值,只要自某个边界以来的行为符合要求即可。该边界是一些 [c,n0]。如果你能找到这样的边界([6, 1e8]),那么QED:"f(n) has big-O of n*n".
n >= n₀ 意味着无论你在引理中说什么,对于某些第一个 k (可数)参数 n' : n' < n₀, but 因为一些n₀ 引理对于 all 其余(更大的)整数是正确的。
它说你不关心前几个整数("first few"可以是"little"作为1e400,或1e400000,......等......从理论的角度来看),你只关心更大的(足够大,大于n₀)n 个值。
最终这意味着,在大 O 表示法中,您通常会编写与所检查的 f(n) 具有相同渐近概念的最简单和最低的函数。
例如,对于任何多项式类型的 f(n),如 f(n) = ∑aini,i= 0..k O(f(n)) = O(nk).
所以我确实扔掉了 n 的所有较低的 0..(k-1) 次幂,因为它们在长 运行 中没有机会对抗 nk(对于大 n)。而 ak 确实输给了一些更大的 c.
万一你迷失在 i,k,...:[=69=]
f(n) = 34n4 + 23920392n2 有 O(n4 ).
至于足够大的 n 以至于 n4 将 "eclipse" 任何从 n2 创建的值。而34n4只比n4[=87=大34倍] => 34 是常量(与 c 相关)并且也可以从大 O 表示法中省略。
我正在研究 Asymptotic Notations Topic,我发现它的公式很简单,但它什么也没说,有几件事我不明白。
当我们说
f(n) <= c.g(n) where n >= n₀
而我们不知道c=的值?和 n=?首先,通过对 f(n) 或 g(n) 进行除法,我们得到 c 的值。 (这里是混乱所在)
第一个问题:我们如何决定哪一边的 'n' 必须在等式 f(n) 或 中划分g(n)?
假设我们要证明:
2n(square) = O(n(cube))
此处 f(n) = 2(n(正方形)) 和 g(n)=n(立方体)
将形成为:
2(n(square)) = c . n(cube)
现在在我读过的笔记中,他们将 2(n(square)) 除以得到 c 的值,我们得到 c = 1;
但是如果我们将 n(cube) [我不知道我们是否能做到] 我们得到 c = 2;
我们怎么知道我们要划分什么值?
第二个问题:n₀的任务从哪里来?
那么根据公式我们知道 n >= n(0) 这意味着无论我们取 n 我们应该取 的值n(0) 或者应该比 n 更大。
但是我很困惑我们在哪里使用 n₀ ?为什么需要它?
仅通过找到 C 和 N 我们不能得出结论
n(square) = O(n(cube)) or not.
有人愿意解决这个问题吗?非常感谢。
如果我问任何愚蠢的问题或给 -1,请不要冷落我。请解决任何有用的 link 涵盖所有这些就足够了 well:3
在发布这个问题之前,我已经完成了以下 links 这就是我的理解,这是那些 links:
http://openclassroom.stanford.edu/MainFolder/VideoPage.php?course=IntroToAlgorithms&video=CS161L2P8&speed=
http://faculty.cse.tamu.edu/djimenez/ut/utsa/cs3343/lecture3.html
https://sites.google.com/sites/algorithmss15
来自你问题中的第二个url:
Let's define big-Oh more formally:
O(g(n)) = { the set of all
f
such that there exist positive constantsc
andn0
satisfying0 <= f(n) <= cg(n)
for alln >= n0
}.
这意味着,对于 f(n) = 4*n*n + 135*n*log(n) + 1e8*n
,大 O 是 O(n*n)。
因为对于足够大的 c
和 n0
这是真的:
4*n*n + 135*n*log(n) + 1e8*n = f(n) <= O(n*n) = c*n*n
在这种特殊情况下,[c,n0] 可以是 [6, 1e8],因为(这当然不是有效的数学证明,但我希望它是 "obvious"):
f(1e8) = 4*1e16 + 135*8*1e8 + 1e16 = 5*1e16 + 1080*1e8 <= 6*1e16 = 6*1e8*1e8 =~= O(n*n)
。当然还有更多可能的 [c,n0] f(n) <= c*n*n
成立,但你只需要找到一对这样的对来证明 f(n)
有 O(f(n))
of [=23] =].
如您所见,对于 n=1,您需要相当大的 c
(如 1e9),因此乍一看 f(n) 可能看起来比 n*n 大得多,但在渐近概念您不关心前几个初始值,只要自某个边界以来的行为符合要求即可。该边界是一些 [c,n0]。如果你能找到这样的边界([6, 1e8]),那么QED:"f(n) has big-O of n*n".
n >= n₀ 意味着无论你在引理中说什么,对于某些第一个 k (可数)参数 n' : n' < n₀, but 因为一些n₀ 引理对于 all 其余(更大的)整数是正确的。
它说你不关心前几个整数("first few"可以是"little"作为1e400,或1e400000,......等......从理论的角度来看),你只关心更大的(足够大,大于n₀)n 个值。
最终这意味着,在大 O 表示法中,您通常会编写与所检查的 f(n) 具有相同渐近概念的最简单和最低的函数。
例如,对于任何多项式类型的 f(n),如 f(n) = ∑aini,i= 0..k O(f(n)) = O(nk).
所以我确实扔掉了 n 的所有较低的 0..(k-1) 次幂,因为它们在长 运行 中没有机会对抗 nk(对于大 n)。而 ak 确实输给了一些更大的 c.
万一你迷失在 i,k,...:[=69=] f(n) = 34n4 + 23920392n2 有 O(n4 ).
至于足够大的 n 以至于 n4 将 "eclipse" 任何从 n2 创建的值。而34n4只比n4[=87=大34倍] => 34 是常量(与 c 相关)并且也可以从大 O 表示法中省略。