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 дополнительных ресурсов не требуется.