如何使用big-O的正式定义来证明这一点?

时间:2017-01-25 17:22:55

标签: runtime big-o proof induction

我想使用big-O的形式定义来证明n ^ 1000000 = O(1.000001 ^ n)。我想知道我是否可以通过归纳证明或矛盾证明来做到这一点。我也想在不使用限制的情况下这样做。

2 个答案:

答案 0 :(得分:1)

big-O的形式定义是:当且仅当存在一个正实数B和一个非负实数b使得

时,f(n)才是O(g(n))。

| f(n)| <= B | g(n)|对于所有实数n> b

因此,我们要以这种方式编写n ^ 1000000和1.000001 ^ n之间的关系:

n ^ 1000000 <= B *(1.000001 ^ n)表示所有n> b


符号:这里我们使用log(n)作为n的自然对数,所以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)

我们知道n的增长比log(n)快,因此即使n足够大,即使1000000> log(1.000001),log(1.000001)* n> 1000000 * log(n)。 这与在n大于某个数字b(极大)时说n ^ 1000000 <1.000001 ^ n相同。

因此我们可以编写

n ^ 1000000 <= B *(1.000001 ^ n)对于所有n> b

其中B = 1并且b =可以通过求解1.000001 ^ b = b ^ 1000000和log(1.000001)* b> 1000000 * log(b)来计算的大数。

最后,我们得出的结论是n ^ 1000000 = O(1.000001 ^ n)。

答案 1 :(得分:0)

您无法证明这一点,因为n^1000000是一个函数而O(1.000001^n)是一个集合,因此它们不能相等。

Quod erat demonstrandum