0

I would like to prove that n^1000000 = O(1.000001^n) using the formal definition of big-O. I was wondering if I could do this using a proof by induction or a proof by contradiction. I would also like to do this without using limits.

xenteros
  • 15,586
  • 12
  • 56
  • 91
Raven
  • 1
  • 1

2 Answers2

1

The formal definition of big-O is: f(n) is O(g(n)) if and only if there exists a positive real number B and a non-negative real number b such that

|f(n)| <= B|g(n)| for all real number n > b

So we want to write the relationship between n^1000000 and 1.000001^n in such a way:

n^1000000 <= B * (1.000001^n) for all n > b


Notation: here we use log(n) for the natural log of n, so n = e^log(n)

n^1000000 = (e^log(n))^1000000 = e^(1000000 * log(n))

1.000001^n = (e^log(1.000001))^n = e^(log(1.000001) * n)

We know that n grows faster than log(n), so even though 1000000 > log(1.000001), log(1.000001) * n > 1000000 * log(n) if n is large enough. That is the same as saying n^1000000 < 1.000001^n if n is larger than some number b (extremely large).

Therefore we can write

n^1000000 <= B * (1.000001^n) for all n > b

where B = 1 and b = some large number that can be calculated by solving 1.000001^b = b^1000000 and log(1.000001) * b > 1000000 * log(b).

Finally, we conclude that n^1000000 = O(1.000001^n).

Yuhang Liu
  • 11
  • 1
0

You won't prove it because n^1000000 is a function and O(1.000001^n) is a set thus they can't be equal.

Quod erat demonstrandum

xenteros
  • 15,586
  • 12
  • 56
  • 91