【发布时间】:2013-09-30 07:29:38
【问题描述】:
我的理解是,如果一个算法是O(1),那么它也是O(n)、O(n^2)、O(n^3)等等,这使它看起来毫无用处。例如,如果有人问我任何算法的 Big-Oh 表示法,我可以直接说 O(n^n) 而无需考虑(字面意思)并且大部分时间在技术上是正确的。
既然(我的理解是)这是真的,那么这些有用的信息如何?打个比方,如果我问某人他们拥有多少房子,“1 到无穷大”之类的答案并不能提供很多信息。一个有用的答案(这有点像 Big-Theta)是“1”。
【问题讨论】:
-
Big-O 与“最多”这个短语一样有用。这句话显然可能没用:“我最多拥有数不胜数的房子”。这会使短语本身无用吗?
-
@j_random_hacker 不,它没有,我可能会添加很好的解释。但是当你要求某人量化某事时,他们通常不会用“最多”这个短语来回答。通常他们会说“大约”或“周围”。但在计算机科学中,我们似乎通常说“至多”。似乎当计算机科学家知道“关于”或“周围”时,他们会回答“至多”。这让我很困惑。
-
我喜欢 John Kugelman 的评论——基本上 Big-O 刚刚变得流行 :) 我想有足够多的程序员了解它的要点,通常最有趣的上限是最低的,所以这就是“XYZ的 Big-O”获得的意义。此外(正如他所说)虽然 Big-Theta 信息量更大,但通常更难获得。至于为什么我们有 Big-Anything-At-All,这是因为我们希望以一种不依赖于您的计算机使用的特定指令集的方式来测量时间或空间。
标签: algorithm computer-science big-o big-theta