O-нотация, O (∞) = O (1)?

Так быстрая мысль; Можно ли утверждать, что O (∞) на самом деле O (1)?

  • Я имею в виду, что это не зависит от размера ввода?
  • Так что в некотором роде его, постоянный, даже если он бесконечен.

Или это единственный "правильный" способ выразить его O (∞)?

Ответ 1

Бесконечность - это не число или, по крайней мере, не действительный номер, поэтому выражение неверно. Правильный способ выразить это - просто указать, что программа не заканчивается. Примечание: программа, а не алгоритм, поскольку алгоритм гарантированно завершается.

(Если бы вы хотели, вы могли бы определить обозначение big-O на трансфинитных числах. Я не уверен, что это было бы полезно.)

Ответ 2

Ваш аргумент не совсем корректен.

Нотация Big O не учитывает постоянные кратные; нет разницы между O(1) и O(42), или между O(log(n)) и O(3π log(n)).

Стандартное соглашение - не использовать постоянные кратные.

Однако O(∞) будет означать "алгоритм", который никогда не заканчивается, в отличие от O(1), который в какой-то момент прекратится.

Ответ 3

Чтобы ответить на вопрос:

O-нотация, O (∞) = O (1)?

Нет

Основное отличие состоит в том, что O (1) закончится в какой-то момент, тогда как O (∞) никогда не заканчивается.

Оба они не включают переменную, но имеют оба разных значения:

O(1) (или O (121) или O (независимо от бесконечности): независимо от аргументов функций, но заканчивается

O(∞): независимый аргумент функций, а не конечный

Как указывалось в другом ответе, бесконечность на самом деле не находится в области нотации большого О, но простое "нет", чем, конечно, остается, но O (1) и O (∞) не совпадают.

Ответ 4

Big-Oh - это мера того, как что-то требует ресурсов, поскольку N увеличивается. O (5 часов) и O (5 секунд) являются O (1), так как при увеличении N дополнительных ресурсов не требуется.