Означает ли g(n) ∈ O(f(n)) f(n) ∈ Ω(g(n))?

Я просто пытаюсь понять, как работают Big O и Big Omega. Я знаю, что Big O означает не лучше чем, а Big Omega означает не хуже времени бега. Итак, если у меня есть функция g(n) такая, что g(n) = O(f(n)), то могу ли я сказать, что f(n) = Ω (g(n))?

1 ответ

Решение

Для обозначения лучше написать g(n) ∈ O(f(n)), потому что "O(f(n))" можно рассматривать как множество всех функций, которые растут не быстрее, чем кратное f(н).

Давайте повторим два соответствующих формальных определения, используемых в теории сложности:

  • g(n) ∈ O(f(n)) ∃ ∃k> 0 ∃N≥0 ∀nN [|г(н) | ≤ k· |f(n) |]
  • f(n) ∈ Ω(g(n)) ∃ ∃k> 0 ∃N≥0 ∀nN [f(n) ≥ k·g(n)]

Если мы можем предположить, что f и g являются неотрицательными функциями (что почти всегда имеет место для функций, используемых в информатике), то мы можем отбросить знаки абсолютных значений. Таким образом:

  • g(n) ∈ O(f(n)) ∃ ∃k> 0 ∃N≥0 ∀nN [g(n) ≤ k·f(n)]
  • f(n) ∈ Ω(g(n)) ∃ ∃k> 0 ∃N≥0 ∀nN [f(n) ≥ k·g(n)]

Затем переверните неравенство по второму логическому утверждению:

  • g(n) ∈ O(f(n)) ∃ ∃k> 0 ∃N≥0 ∀nN [g(n) ≤ k·f(n)]
  • f(n) ∈ Ω(g(n)) ∃ ∃k> 0 ∃N≥0 ∀nN [k·g(n) ≤ f(n)]

Теперь давайте докажем, что правая часть первого утверждения подразумевает правую часть второго утверждения:

  1. Предположим, что ∃k> 0 ∃N≥0 ∀nN [g(n) ≤ k·f(n)] верно.
  2. Установить k> 0, удовлетворяющее условию ∃N≥0 ∀nN [g(n) ≤ k·f(n)].
  3. Пусть kʹ = 1 /k, что является законным, потому что k ≠ 0.
  4. Определить N≥0, удовлетворяющее ∀nN [g(n) ≤ k·f(n)].
  5. Пусть n произвольное число такое, что nN.
  6. Тогда имеем g(n) ≤ k·f(n).
  7. Далее мы имеем g(n) /kf(n).
  8. Подстановкой мы имеем kʹ ·g(n) ≤ f(n).
  9. Поскольку n произвольно, мы получаем, что ∀nN [kʹ ·g(n) ≤ f(n)].
  10. Мы получаем, что ∃N≥0, удовлетворяющее ∀nN [kʹ ·g(n) ≤ f(n)].
  11. Получаем, что ∃> 0 ∃N≥0 ∀nN [kʹ ·g(n) ≤ f(n)].
  12. Переименуем в k, так что ∃k> 0 ∃N≥0 ∀nN [k·g(n) ≤ f(n)].
  13. Таким образом, [∃k> 0 ∃N≥0 ∀nN [g(n) ≤ k·f(n)]] подразумевает [[k> 0 ∃N≥0 ∀nN [k·g(n) ≤ f(n)]].
  14. Следовательно, g(n) ∈ O(f(n)) влечет f(n) ∈ Ω(g(n)), как и хотелось.
Другие вопросы по тегам