Асимптоти c оценки и обозначение Big O - PullRequest
3 голосов
/ 23 апреля 2020

Правильно ли говорить, что предположим, что у нас есть две монотонно возрастающие функции f, g, так что f (n) = Ω (n) и f (g (n)) = O (n). Затем я хочу сделать вывод, что g (n) = O (n).

Я думаю, что это ложное утверждение, и я пытался привести контрпример, чтобы показать, что это ложное утверждение, но после многих попыток я начинаю думать иначе.

Не могли бы вы дать какое-нибудь объяснение или пример, если это ложное утверждение или способ доказать, если оно правильное.

1 Ответ

2 голосов
/ 23 апреля 2020

Я верю, что это утверждение верно. Вот доказательство.

Предположим, что f (n) = Ω (n). Это означает, что существуют константы c, n 0 , такие что

f (n) ≥ cn для любого n ≥ n 0 . (1)

Аналогично, поскольку f (g (n)) = O (n), мы знаем, что существуют такие константы d, n 1 , что

f (g (n)) ≤ dn для любого n ≥ n 1 . (2)

Теперь есть два варианта. Во-первых, g (n) = O (1), и в этом случае мы закончили, потому что тогда g (n) равно O (n). Второй случай состоит в том, что g (n) ≠ O (1), и в этом случае g растет без ограничения. Это означает, что существует n 2 , для которого g (n 2 ) ≥ n 0 (g растет без ограничений, поэтому в итоге он обгоняет n 0 ) и n 2 ≥ n 1 (просто выберите большое n 2 ).

Теперь выберите любое n ≥ п 2 . Поскольку n ≥ n 2 , имеем g (n) ≥ g (n 2 ) ≥ n 0 , поскольку g монотонно возрастает, и, следовательно, ( 1) мы видим, что

f (g (n)) ≥ cg (n).

, поскольку n ≥ n 2 ≥ n 1 , мы можем объединить это неравенство с уравнением (2), чтобы увидеть, что

dn ≥f (g (n)) ≥ cg (n).

так, в частности, имеем, что

g (n) ≤ (d / c) n

для всех n ≥ n 2 , поэтому g (n) = O (n).

...