我需要逐步证明: 7 + O(n)= O(n)
当双方都有大O时,我不知道该怎么做。
我想我了解大O表示法的概念,但是为什么两边都有大O呢?
这种表示法的使用与大O表示法的形式定义不符,因此尚不清楚证明需要达到何种形式的形式。另外,由于该符号不是正式的,因此需要进行一些解释才能确定实际需要证明的内容。
我将其解释为要求证明,给定O( n )中的任何函数,如果将该函数的所有值加7,则新函数也是在O( n )中。更正式地说,对于O( n )中的所有 f ,函数 g ( n )= f ( n )+ 7也在O( n )中。
这可以从定义中直接证明:
因此,给定常数 c 和 N 证明 f 在O( n )中,则常数( c + 7)和max( N ,1)证明 g 在O( n )中。 QED。
,语句 7 + O(n)= O(n)没有多大意义。 O:(ℕ→ℕ)→P(ℕ→ℕ)是将一个功能映射到一组功能的功能。您不能在功能的集中添加七个。您可以“包含”它,但这可能不是该表达式的目的。
您可能需要做的就是证明 O(n + 7)= O(n)。通过证明第一组中的每个元素是第二组的成员,第二组中的每个元素是第一组的成员,可以证明两组是相等的。
由 O(n)产生的一组函数定义为每个函数 g ,因此对于此 g ,存在一个 n 0 和值 k> 0 ,这样对于所有n∈ℕ具有 n> n 0 ,它保持 g(n)≤k×n 。因此,您需要证明所有这些功能都是 O(n + 7)产生的集合的成员,反之亦然。
,这是大O表示法的正式定义:
f(n) = O(g(n)) means there are positive constants c and k,such that 0 ≤ f(n) ≤ cg(n) for all n ≥ k. The values of c and k must be fixed for the function f and must not depend on n.
(big-O notation)。
例如,如果您的复杂度为O(n^2)
,则可以保证存在某个n值(大于k),之后f(n)
在任何情况下都不会超过c g(n)
让我们尝试证明q(n) = f(n) + 7
是O(n)
,其中f(n)
是O(n)
:
根据定义,存在一个函数f(n)
,所有f(n) ≤ c n
都使用n ≥ k
。
现在,我们要证明q(n)
是O(n)
。我们通过矛盾证明了这一点。我们说如果q(n)
不是O(n)
,则不存在k'
和c'
,使得所有q(n) ≤ c' n
的{{1}} (原始假设)。现在,
n ≥ k'
代表所有q(n) = f(n) + 7 ≤ c n + 7
----(1)。
根据定义n ≥ k
和c > 0
。现在,k > 0
代表所有(c + 1) n ≥ c n + 7
,n ≥ max(k,7)
c > 0
,(c + 1) n ≥ f(n) + 7
的 => n ≥ max(k,7)
(来自等式(1))
c > 0
,(c + 1) n ≥ q(n)
----(2)的 => n ≥ max(k,7)
在上式中用c > 0
和c' = c + 1
代替,我们很快发现了一个矛盾:
k' = max(k,7)
的 c' n ≥ q(n)
(在步骤2中写为原始假设)
这是一个矛盾,因为违反了我们最初的假设,即不存在n ≥ k'
和c'
这样的值。因此,k'
是O(n) + 7
。
这完成了您的证明。希望对您有帮助!
编辑:足以证明存在O(n)
和k'
对于我们的证明有效。我们可以简单地跳过矛盾部分。
Big O表示法适用于n的渐近大值。因此,常量不会更改Big O表示法。
,O(n)+ constant = O(n)常量在这种情况下并没有太大区别,因此我们可以忽略常量。