罗伯特森为啥叫大O,这名字背后有啥故事?
在计算机科学中,大O符号(Big O notation)是一种用来描述算法时间复杂度和空间复杂度的数学符号。它最初由德国数学家埃米利·德·波尔查诺(Emil du Bois-Reymond)在1880年左右引入,用于分析函数的增长速度。然而,这个符号在现代计算机科学中的应用和普及,很大程度上归功于 Donald E. Knuth 等人的推广。
关于“大O”这个名字的由来,有一个流传较广的故事。据说,这个符号的“大”字(Big O)来自于一个拼写错误。在早期计算机科学的文献中,一些作者在引用德·波尔查诺的符号时,不小心将其写作“O(n)”而不是“o(n)”。这里的“o”是一个小写字母,而“O”是大写字母。由于这种拼写错误逐渐被广泛接受,最终“大O”符号就成为了标准用法。
尽管这个故事的准确性有待考证,但它提供了一个有趣的视角,解释了为什么我们今天使用“大O”符号来描述算法的复杂度。大O符号的意义在于它提供了一个抽象的框架,用于比较不同算法在输入规模增长时的性能表现。通过大O符号,我们可以忽略常数因子和低阶项,从而更关注算法的核心增长趋势。这种抽象和简化对于算法分析和设计至关重要,也是计算机科学中一个非常重要的概念。