简体   繁体   中英

How to Prove Asymptotic Notations

I want to prove the following statement

2^(⌊lg n⌋+⌈lg n⌉)∕n ∈ Θ(n)

I know that to prove it, we have to find the constants c1>0 , c2>0 , and n0>0 such that

c1.g(n) <= f(n) <= c2.g(n) for all n >= n0

In other words, we have to prove f(n) <= cg(n) and f(n) >= cg(n) .

The problem is how to prove the left hand side (2^(⌊lg n⌋+⌈lg n⌉)∕n)

Thank you

You can start by expanding the exponential. It is equal to n1*n2/n, where n1<=n<=n2, 2*n1>n and n*2>n2. The rest should be easy.

Here's a derivation for the upper bound:

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)

So we know your function can be bounded above by 2*n. Now we do the lower bound:

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)

We now know that your function can be bounded below by n/2.

Checked on gnuplot; these answers look good and tight. This is a purely algebraic solution using the definition if floor() and ceiling() functions.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM