Деблиотекация Little-OH, домашнее задание CS, исключая фактическое задание

StackOverflow https://stackoverflow.com/questions/9348221

  •  27-10-2019
  •  | 
  •  

Вопрос

Я сижу здесь с этим заданием в курсе по алгоритмам с огромными наборами данных, и использование нотации Little-Oh пережила меня, хотя я совершенно уверен в Big-OH.

Я не хочу решения для задания, и поэтому я не буду предлагать его. Вместо этого мой вопрос в том, как я интерпретирую сложность времени o (log n)?

Я знаю из определения, что алгоритм должен стать асимптотически медленнее, чем O (log n), но я не уверен, что это означает, что алгоритм должен работать в постоянное время или если он все еще разрешен log n при определенных условиях, так что C = 1 или если это действительно log (n-1).

Скажем, у алгоритма есть время работы O (log n) Но на самом деле две итерации и как таковые c = 2, но 2*log n все еще O (log n), я прав, когда говорю, что это не держит для маленького о-о?

Любая помощь очень ценится, и если я строго необходима для разъяснения, я предоставлю задание

Это было полезно?

Решение

Сказать f это «маленький о-о-g» f = o(g), означает, что коэффициент

|f(x)/g(x)|

приближается к 0 как x приближается к бесконечности. Ссылаясь на ваш пример o(log n), этот класс содержит такие функции, как log x / log (log x), sqrt(log x) И еще много, так что o(log x) определенно не подразумевает O(1). Анкет С другой стороны, log (x/2) = log x - log 2, так

log (x/2) / log x = 1 - log 2 / log x -> 1

а также log (x/2) не в классе o(log x).

Другие советы

Для Little-OH F (x) не должен быть меньше g (x) для всех x. Он должен быть меньше только после определенного значения x. (Для вашего вопроса все еще разрешено быть логическим при определенных условиях.)

Например:

 let f(x) = 5000x and g(x) = x^2

f (x) / g (x) как x приближается к бесконечности 0, поэтому f (x) является Litte-o of g (x). Однако при x = 1, f (x) больше, чем g (x). Только после x станет больше 5000, будет G (x) больше, чем F (x).

То, что Little-O действительно говорит нам, так это то, что G (x) всегда растет более высокой скоростью, чем F (x). Например, посмотрите, сколько f (x) вырос между x = 1 и x = 2:

 f(1) = 5000
 f(2) = 10000 - f(x) became twice as big

Теперь посмотрите на G (x) на том же интервале:

 g(1) = 1
 g(2) = 4 - g(x) became four times bigger

Эта скорость увеличится еще больше при больших значениях x. Теперь, поскольку g (x) увеличивается более высокой скоростью, и потому что мы перемещаем x в бесконечность, в какой -то момент он станет больше, чем F (x). Но это не то, что касается Little-O, это все о скорости изменений.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top