Если f (n) = o (g (n)), то 2 ^ (f (n)) = o (2 ^ (g (n)))? - PullRequest
3 голосов
/ 30 марта 2012

Обратите внимание, что я спрашиваю о маленьком о здесь (см. Аналогичный вопрос здесь ) - для больших О, это явно неправильно - для маленьких - это кажется правильным, но, кажется, не может доказать это .. .

РЕДАКТИРОВАТЬ: рад, что я поднял дискуссию :) Предположим, f, g> 0 для простоты

Ответы [ 3 ]

2 голосов
/ 30 марта 2012

Это, по крайней мере, если g (n) сходится к положительной бесконечности для n к положительной бесконечности (если g (n) нет, легко найти контрпримеры).

Эскиз доказательства:

Предварительные условия: g (n) сходится к положительной бесконечности, для n - к положительной бесконечности.

f (n) в o (g (n)) означает:

for every eps > 0 exists a n0 so that for all n > n0 abs(f(n)) < abs(g(n)*eps).

Форма выглядит следующим образом:

2^abs(f(n)) < 2^abs(g(n)*eps) = (2^eps)^g(n) (for n > n0).

для eps <1: </p>

(2^eps)^n is in o(2^n) (as 2^eps < 2) 

из этого следует, что для каждого eps2> 0 существует n1, так что для всех n> n1

(2^eps)^n < eps2*(2^n).

Выбор eps2 = eps vields:

(2^eps)^n < eps*(2^n) for all n > n1 (n1 is dependent on eps)

Потому что g (n) -> поз. инф. для п -> поз. инф. существует n2, так что

g(n) > n1 for all n > n2

Исходя из

(2^eps)^g(n) < eps*2^g(n) for all n > n2.

Таким образом, для каждого 0 = max (n0, n2), так что

2^abs(f(n)) < 2^abs(g(n)*eps) = (2^eps)^g(n) < eps*2^g(n) for all n > n3.

Для каждого eps3> 1 также:

2^abs(f(n)) < eps*2^g(n) < eps3*2^g(n)

Таким образом, для каждого eps> 0 существует n3, так что

2^abs(f(n)) < eps*2^g(n) for all n > n3

Поскольку 2 ^ f (n) <2 ^ abs (f (n)) для всех n и 2 ^ x> 0 для всех вещественных x, следует

abs(2^f(n)) < abs(eps*2^g(n)) for all n > n3

* 1040 что и требовалось доказать *

Если что-то неясно или неправильно, пожалуйста, прокомментируйте.

РЕДАКТИРОВАТЬ: Некоторые мысли о других g (n):

Подпоследовательность g (n) ограничена, то есть существует некоторый x, так что не существует n0 с abs (g (n))> = x для всех n> n0:

o (g (n)) состоит только из функций, которые постоянны 0 после некоторого n или сходятся к 0. Тогда 2 ^ g (n) также имеет ограниченную подпоследовательность, но 2 ^ f (n) постоянна 1 после какой-то момент.

Нет n0, поэтому g (n)> 0 для всех n> n0:

2 ^ g (n) <1, если g (n) <0, поэтому g (n) имеет ограниченную подпоследовательность, означающую, что o (2 ^ g (n)) состоит только из функций, которые постоянны 0 после некоторого n или сходится к 0. </p>

1 голос
/ 30 марта 2012

Вот ответ.Результат зависит от свойств сходимости g (n).

Сначала рассмотрим связанный предел:

lim(x->inf) log_2 ((2^(f(n))) / (2^(g(n))))
=
lim(x->inf) ( log_2(2^(f(n))) - log_2(2^(g(n))) )
=
lim(x->inf) ( f(n) - g(n) ) = lim(x->inf) ( g(n) * f(n) / g(n) - g(n) )
=
lim(x->inf) ( -g(n) ) = - lim(x->inf) g(n)

... Теперь, чтобы получить это в виде исходного вопроса вВаш пост, ЕСЛИ математически правильно переключать лимит и журнал (который я думаю, что это так), то у нас будет:

lim(x->inf) log_2 ((2^(f(n))) / (2^(g(n))))
=
log_2 lim(x->inf) ((2^(f(n))) / (2^(g(n)))).

Теперь перейдем к ответу на вопрос.Если равно истинно, что

2^(f(n)) = o(2^(g(n))),

, то в пределе правая часть становится

log_2 (0) = - inf

... поэтому в этом сценарии это должно бытьправда, что

lim(x->inf) g(n) = inf

Этот результат, кажется, имеет смысл.Рассмотрим f(x) = exp(-x) and g(x) = 1 - exp(-x).Понятно, что в этом примере f(x) = o(g(x)).Тем не менее, 2^(f(x)) is not o(2^(g(x))), потому что

lim(x->inf) (2^exp(-x)) / (2^(1-exp(-x))) = 1/2.

Но учитывая f(x) = exp(x), g(x) = exp(2x), где также f(x) = o(g(x)) и где lim(x->inf) g(x) = inf, удовлетворяя вышеуказанному условию, мы имеем

lim(x->inf) (2^exp(x)) / (2^exp(2x))
=
lim(x->inf) 1 / 2^(exp(x)*(exp(x) - 1)) = 0

так 2^(f(x)) = o(2^(g(x))).

0 голосов
/ 28 февраля 2017

Easy Proof с примером,

Если f (n) = O (g (n)),
2 ^ (f (n)) не равно O (2 ^ g (n)))

Пусть, f (n) = 2log n и g (n) = log n
(Предположим, лог находится на базе 2)

Мы знаем, 2log n <= c (log n) следовательно, f (n) = O (g (n)) </p>

2 ^ (f (n)) = 2 ^ log n ^ 2 = n ^ 2
2 ^ (g (n)) = 2 ^ log n = n

Мы знаем, что
n ^ 2 не является O (n)

Следовательно, 2 ^ (f (n)) не равно O (2 ^ g (n)))

...