O符号,O(∞)= O(1)?

时间:2011-04-11 20:48:29

标签: infinity big-o

快速思考;有人认为O(∞)实际上是O(1)吗?

  • 我的意思是它不依赖于输入大小?
  • 所以在某种程度上它是恒定的,即使它是无限的。

或者是表达它的唯一'正确'方式O(∞)?

4 个答案:

答案 0 :(得分:10)

Infinity不是数字,或者至少不是real number,因此表达式格式不正确。表达这一点的正确方法是简单地声明程序不会终止。注意:程序,而非算法,因为算法可以保证终止。

(如果你愿意,你可以在超限数字上定义big-O表示法。但我不确定这是否会有用。)

答案 1 :(得分:7)

你的论点不太正确。

大O符号忽略常数倍; O(1)O(42)之间或O(log(n))O(3π log(n))之间没有区别。

标准惯例是不使用任何常数倍。

但是,O(∞)表示永远不会终止的“算法”,而O(1)将终止于某个点。

答案 2 :(得分:3)

回答这个问题:

  

O符号,O(∞)= O(1)?

主要区别在于O(1)将在某个点结束,而O(∞)永远不会结束。

它们都不包含变量,但具有不同的含义:

O(1)(或O(121)或O(无论但不是无穷大):函数参数的独立,但结束

O(∞):函数参数的独立,非结束

正如另一个答案所指出的那样,无穷大并非真正属于大O符号的范畴,但当然简单的“不”仍然是O(1)和O(∞)并不相同。

答案 3 :(得分:0)

Big-Oh衡量资源需求在N增加时如何扩展。 O(5小时)和O(5秒)都是O(1),因为当N增加时不需要额外的资源。