Нахождение значений в Большом О - PullRequest
2 голосов
/ 07 ноября 2019

Я прохожу асимптотические обозначения от здесь . Я читаю это f(n) ≤ c g(n)

Например, если f (n) = 2n + 2, мы можем удовлетворить его любым способом как f(n) is O (c.g(n)), отрегулировав значения n и c. Или есть какое-то конкретное правило или формула для выбора значений c и n. Не всегда будет 1?

1 Ответ

3 голосов
/ 08 ноября 2019

Нет формулы как таковой. Вы можете найти формальное определение здесь:

f(n) = O(g(n)) means there are positive constants c and k, such that 0 ≤ f(n) ≤ cg(n) for all n ≥ k. The values of c and k must be fixed for the function f and must not depend on n. ( обозначение big-O ).

enter image description here

Что я понял из твоего вопроса, так это то, что ты не понимаешь сути нотации big-O. Если ваша сложность составляет, например, O(n^2), то вы можете гарантировать, что существует некоторое значение n (больше k), после которого f(n) ни в коем случае не будет превышать c g(n).

Давайте попробуемf(n) = 2n + 2:

  1. . Как видно из самой функции, вы не можете установить значение c равным 2, так как вы хотите найти f(n) ≤ c g(n). Если вы подключите c = 2, вы должны найти k такой, что f(n) ≤ c g(n) для n ≥ k. Понятно, что нет n, для которого 2n ≥ 2n + 2. Итак, мы переходим к c = 3.
  2. Теперь давайте найдем значение k. Итак, решаем уравнение 3n ≥ 2n + 2. Решение:

    3n ≥ 2n + 2 => 3n - 2n ≥ 2 => n ≥ 2

Поэтому для c = 3 мы нашли значение k = 2 (n ≥ k).

Вы также должны понимать, что ваша функция не просто O(n). Это также O(n^2), O(n^3), O(n^4) и так далее. Все потому что соответствующие значения c и k существуют для g(n) = n^2, g(n) = n^3 и g(n) = n^4.

Надеюсь, это поможет.

...