Асимптотическая сложность, алгоритмы

65
7

В этом случае f(n) != O(g(n)) и g(n) != O(f(n)) верно?

У меня есть следующий ответ на этот вопрос, который я не мог понять:

Иногда верно: для f(n) = 1 и g(n) = ||n ∗ sin(n)|| это верно, тогда как для любого f(n) = O(g(n)), например f(n) = g(n) = 1, это неверно.

Пожалуйста, помогите в понимании:

В каком случае это иногда верно? Объяснение с примером будет высоко оценено. Что значит "||" в этом?

спросил(а) 2020-03-28T17:14:30+03:00 1 месяц, 4 недели назад
1
Решение
64

f (n)! = O (g (n)) истинно, если для любого заданного k и любого данного N существует n> = N такое, что f (n)> k * g (n).

Примером как f (n)! = O (g (n)), так и g (n)! = O (f (n)) является истинным одновременно, будет следующее: Позволяет определить f (n) = 0 для четных n и f (n) = n для нечетного n. Аналогичным образом определим g (n) = n для четных n и g (n) = 0 для нечетного n. Теперь очевидно, что f (n)> kg (n) для всех нечетных n, независимо от того, насколько велика мы выбираем k и аналогично g (n)> kf (n) для всех четных n, независимо от того, насколько велика k.

Ваш пример f (n) = 1 и g (n) = || n * sin (n) || также будет работать, так как g (n) осциллирует и получает значение 0 для сколь угодно большого n, но также получает сколь угодно большие значения, которых достаточно для нашего определения f (n)! = O (g (n)) и g ( n)! = O (f (n)), так как f остается постоянной функцией 1

ответил(а) 2020-03-28T17:26:39.020043+03:00 1 месяц, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема