![](/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.