[英]How to Prove Asymptotic Notations
我想證明以下陳述
2^(⌊lg n⌋+⌈lg n⌉)∕n ∈ Θ(n)
我知道要證明這一點,我們必須找到常量c1>0
, c2>0
和n0>0
使得
c1.g(n) <= f(n) <= c2.g(n) for all n >= n0
換句話說,我們必須證明f(n) <= cg(n) and f(n) >= cg(n)
。
問題是如何證明左手邊(2^(⌊lg n⌋+⌈lg n⌉)∕n)
謝謝
您可以先擴展指數。 它等於n1 * n2 / n,其中n1 <= n <= n2、2 * n1> n和n * 2> n2。 其余的應該很容易。
這是上限的推導:
2^(⌊lg n⌋+⌈lg n⌉)/n
= 2^(2⌊lg n⌋+1)/n
<= 2^(2 lg n + 1)/n
= 2^(2 lg n) 2^(1) / n
= 2 n^2 / n
= 2 n
= O(n)
因此,我們知道您的函數可以被2 * n限制。 現在我們執行下限:
2^(⌊lg n⌋+⌈lg n⌉)/n
= 2^(2⌈lg n⌉ - 1) / n
>= 2^(2 lg n - 1)/n
= 2^(2 lg n) 2^(-1) / n
= 1/2 n^2 / n
= 1/2 n
= O(n)
現在我們知道您的函數可以被n / 2限制。
在gnuplot上檢查; 這些答案看起來又好又緊。 這是使用floor()和ceiling()函數定義的純代數解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.