无法理解为什么 n0 在这个 big-O 定义中不是 1?
cant understand why n0 isnt 1 in this big-O definition?
所以我一直在解决这个要求通过大 O 定义证明的练习
2^(2log(n)) = O(n^2)
所以我意识到 2^(2log(n)) = n^2
我发现 c = 1 和 n0 = 1 因为 n^2 <= 1*n^2
从 n >=1 开始
但是为什么老师在答案中选择了 n0 = 2 呢?
重要吗?或者它也可以是 1?
有什么技巧可以轻松找到这类问题中的 c 和 n0 吗?
正如您正确注意到的那样,使用对数规则/幂规则它们完全相等,因此我们可以选择 c=1
和一些任意的 n0
因为定义要求 n0>0
这样对于 全部 n>n0
:
n^2 <= c*n^2 = n^2
。当然,对于 n0
.
的所有值都是如此
所以无论你的老师选择n0=2
还是你选择n0=1
,根据定义你都是正确的。
根据大O的定义:
f(n) = O(g(n)) if there exists a positive integer n0 and a positive constant c, such that f(n) ≤ c*g(n) ∀ n≥n0
从你的问题来看,不清楚log
函数的基值是什么?
让f(n) = 2^(2log(n))
和g(n) = n^2
.
让我们考虑以下 3 种情况:
案例一: base = 2
f(n)
的计算结果为 n^2
,因此很明显 c=1
和 n0=1
.
案例二: base = 10
f(n)
= 2^(2log10(n))
~ n^(0.602)
在这种情况下,我们也可以说c=1
和n0=1
。
作为证明,我绘制了函数 x^2
和 x^0.602
的图形如下:
在上图中可以清楚的看到,对于n0 > 1
,x^2 > x^0.602
.
案例三: base = e
f(n)
= 2^(2loge(n))
~ n^(1.3862)
在这种情况下,我们也可以说 c=1
和 n0=1
。
作为证明,我绘制了函数 x^2
和 x^1.3862
的图形如下:
因此,在所有情况下,你都是正确的。
PS: 您和教授很可能假设对数函数的底值为不同的值。但在那种情况下,如果 base>=2
,我认为考虑 n0=1
.
也没有任何错误
所以我一直在解决这个要求通过大 O 定义证明的练习
2^(2log(n)) = O(n^2)
所以我意识到 2^(2log(n)) = n^2
我发现 c = 1 和 n0 = 1 因为 n^2 <= 1*n^2
从 n >=1 开始
但是为什么老师在答案中选择了 n0 = 2 呢?
重要吗?或者它也可以是 1?
有什么技巧可以轻松找到这类问题中的 c 和 n0 吗?
正如您正确注意到的那样,使用对数规则/幂规则它们完全相等,因此我们可以选择 c=1
和一些任意的 n0
因为定义要求 n0>0
这样对于 全部 n>n0
:
n^2 <= c*n^2 = n^2
。当然,对于 n0
.
所以无论你的老师选择n0=2
还是你选择n0=1
,根据定义你都是正确的。
根据大O的定义:
f(n) = O(g(n)) if there exists a positive integer n0 and a positive constant c, such that f(n) ≤ c*g(n) ∀ n≥n0
从你的问题来看,不清楚log
函数的基值是什么?
让f(n) = 2^(2log(n))
和g(n) = n^2
.
让我们考虑以下 3 种情况:
案例一: base = 2
f(n)
的计算结果为 n^2
,因此很明显 c=1
和 n0=1
.
案例二: base = 10
f(n)
= 2^(2log10(n))
~ n^(0.602)
在这种情况下,我们也可以说c=1
和n0=1
。
作为证明,我绘制了函数 x^2
和 x^0.602
的图形如下:
在上图中可以清楚的看到,对于n0 > 1
,x^2 > x^0.602
.
案例三: base = e
f(n)
= 2^(2loge(n))
~ n^(1.3862)
在这种情况下,我们也可以说 c=1
和 n0=1
。
作为证明,我绘制了函数 x^2
和 x^1.3862
的图形如下:
因此,在所有情况下,你都是正确的。
PS: 您和教授很可能假设对数函数的底值为不同的值。但在那种情况下,如果 base>=2
,我认为考虑 n0=1
.