Когда что-то есть Big O, значит ли это, что это именно результат Big O? - PullRequest
0 голосов
/ 10 ноября 2018

Когда мы говорим, что метод имеет временную сложность O(n^2), подразумевается ли он так же, как в 10^2 = 100, или это означает, что метод имеет значение при максимальном или ближайшем к этой записи? Я действительно запутался в том, как проводить Большой О. Я помню то, что называется верхней границей, это будет означать максимум?

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Объяснение

Если метод f находится внутри O(g), где g является другой функцией, это означает, что в какой-то момент (существуют некоторые n_0 такие, что для всех n > n_0) функция f всегда будет выведите меньшее значение, чем g для этой точки. Однако g может иметь произвольную константу k. Так что f(n) <= k * g(n) для всех n выше некоторых n_0. Так что f разрешено сначала быть больше, если затем оно начинает уменьшаться и продолжает уменьшаться.

Мы говорим, f равен , асимптотически ограничен g. Асимптотически означает, что нам все равно, как f ведет себя в начале. Только то, что он будет делать, приближаясь к бесконечности. Поэтому мы отбрасываем все входы ниже n_0.


Иллюстрация

Иллюстрация будет такой:

enter image description here

Синяя функция k * g с некоторой константой k, красная - f. Мы видим, что сначала f больше, но затем, начиная с x_0, оно всегда будет меньше k * g. Таким образом f in O(g).


Определение

Математически это можно выразить как

enter image description here

что является обычным определением Big-O. Из объяснения выше, определение должно быть ясным. В нем говорится, что с определенного значения n_0 функция f должна быть меньше, чем k * g для всех входов. k разрешено быть некоторой константой.

Оба изображения взяты из Википедия .


Примеры

Вот несколько примеров, чтобы ознакомиться с определением:

  • n в O(n) (тривиально)
  • n в O(n^2) (тривиально)
  • 5n в O(n^2) (начиная с n_0 = 5)
  • 25n^2 находится в O(n^2) (принимая k = 25 или выше)
  • 2n^2 + 4n + 6 находится в O(n^2) (взять k = 3, начиная с n_0 = 5)

Примечания

На самом деле, O(g) - это набор в математическом смысле. Он содержит все функции с вышеупомянутым свойством (которые асимптотически ограничены g).

Итак, хотя некоторые авторы пишут f = O(g), это на самом деле неправильно и должно быть f in O(g).

Существуют также другие похожие наборы, которые отличаются только в направлении границы:

  • Big-O: меньше равно <=
  • Small-o: меньше <
  • Биг-Омега: больше равно >=
  • Малый омега: больше >
  • Тета: Биг-О и Биг-Омега одновременно ( равно )
0 голосов
/ 10 ноября 2018

Если означает, что время выполнения ограничено выше на N².

Точнее, T (N)

Например, 2N² + 4N + 6 = O (N²), потому что 2N² + 4N + 6 <3N² для всех N> 5.

...