![](/img/trans.png)
[英]Proving if g(n) is o(f(n)), then f(n) + g(n) is Theta(f(n))
[英]Proving Order of complexity proofs if f(n) is Ω(n∗g(n)), then f(n) is not O(g(n))
证明如果 f(n) 是 Ω(n∗g(n)),那么 f(n) 不是 O(g(n))
假设 f(n) 是 Ω(n ∗ g(n)) 并且 f(n) 是 O(g(n))。 需要表现出矛盾。 该方法是找到违反定义的 n 值。 证明:f(n) 是 Ω(n ∗ g(n)) 意味着存在正值 C 和 k,使得 n > k 意味着 f(n) ≥ C ∗ n ∗ g(n)。 f(n) 是 O(g(n)) 意味着存在正值 C' 和 k' 使得 n > k' 意味着 f(n) ≤ C ∗ g(n)。
那么 n 的什么值违反了定义,我该如何表现出矛盾呢?
您通过矛盾证明该陈述的方法是可能的。 但首先,你需要更精确一点:
C' * g(n)
(而不是C * g(n)
)。所以我们开始:
(a) 存在正整数C
, C'
, k
, k'
使得对于所有n > k
和n' > k'
:
C * n * g(n) <= f(n) and f(n') <= C' g(n')
通过将您的两个含义链接在一起并将两个全称量词合并为一个(注意for all n > k and n' > k'
意味着for all n > max(k,k')
),您立即得到:
(b) 存在正整数C
, C'
, k
, k'
使得对于所有n > max(k,k')
:
C * n * g(n) <= C' g(n)
在两边除以g(n)
,这对上面的假设 1 有效,产生等价物:
(c) 存在正整数C
, C'
, k
, k'
使得对于所有n > max(k,k')
:
C * n <= C'
这相当于:
(d) 存在正整数C
, C'
, k
, k'
使得对于所有n > max(k,k')
:
n <= C'/C
最后一条语句等价于 false。 这是一个矛盾,因此最初的陈述是正确的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.