最早使用渐近时间复杂度的计算机科学论文是什么?


22

大O是什么时候首次用于计算机科学的,什么时候成为标准的?维基百科页面引用了SIGACT 1976年4月至6月的Knuth,Big Omicron和Big Omega And Big Theta但该论文的开头内容如下:

我们大多数人已经习惯了使用符号来表示所有大的幅度上限为常数函数的想法 。O(f(n))f(n)n

此引号表示该想法和符号已经很普遍了。

Wikipedia页面还引用了1800年代末和1900年代初的数学论文,但这并不能完全回答问题。尤其是,我听说当时(大约在60年代和70年代,而不是1800年代末)的研究人员说,当首次使用渐近分析时,有人退缩了,说挂钟时间是一个更好的指标。但是,我从未与之交谈过的人引用过像这样的被推回的具体论文,我想找到可以证实或否认这些故事的证据。


是关于函数渐近分析的表示法,还是关于使用渐近时间复杂度的问题?我认为问题与后者有关,但第一句话(和克努斯的名言)听起来像与前者有关。O()
ShreevatsaR '16

2
顺便说一句,与您的历史问题无关,但有一点并不完全是历史性的:普林斯顿大学的罗伯特·塞奇威克(偶然在克努斯任博士) ”,而是使用Knuth式的“算法分析”(即使用实际常量)。请参见这些幻灯片(前21张幻灯片)。这与推迟渐近分析并建议挂钟时间并不完全相同,但是很好。这是重要的一点。
ShreevatsaR '16

Answers:


2

对于历史问题,通常会有细微的差别,并且很难确定引入特定概念的特定论文,因为它倾向于散布在许多贡献者中,并且有时在晦涩的早期参考文献不一定传播时有时会被重新发现(基本思想就是这样) 。但是历史基本上是这样的:Landau符号是一种古老的数学形式主义(1894 / Bachman)[1],在1970年代初被引入CS作为“关键概念”。到1970年代中期,这在您的Knuth参考文献中已被某种程度地接受,并且Knuth本人也参与了这一概念的传播。

有趣的是,它输入到CS中可能与1970年代初发现的P vs NP vs Exptime的区别密切相关,这在该领域具有很大的影响力/先驱。是Cobham / Edmonds在1970年代初开始定义P类。[3] Stockmeyer / Meyer有关于Exptime和Expspace的早期证据。[2] Cook-Levin定理[4](1971)显示了P对NP时间的核心相关性,Karp [5](1972)立即证明了这一点。

Pocklington是一位既从事数字理论研究又从事计算机科学前沿工作的数学家。如[3]中指出:

然而,HC Pocklington在1910年的一篇论文中[11] [12]分析了两种求解二次同余的算法,并观察到一种算法耗时“与模的对数的幂成正比”,并将其与一种耗时的方法进行了对比。与“与模数本身或其平方根成正比”的比例成比例,从而显式地得出了在多项式时间内运行的算法与未在多项式时间内运行的算法的区别。

加州大学伯克利分校数学教授德里克·莱默(Derrick Lehmer)是分析基于机器的数论算法(即因数分解)的复杂性的另一位早期先驱,他早在1920年代就建立/分析了因式分解“算法”(基于筛的实现)。并且可能他以非正式的方式描述了诸如计算复杂性和因式分解的问题。[6]

还有另一种情况是Godel在1956年致冯·诺依曼(von Neumann)的一封“遗失”信中,谈到机器的步长f(n)的复杂度测量,以找到大小为n的证明。[7]

[1] 大O符号的历史记录 /维基百科

[2] 单词问题需要指数时间。/ Stockmeyer,Meyer(1973年)

[3] P时间课程的历史 /维基百科

[4] Cook-Levin定理 /维基百科

[5] 卡普斯21 NP完整问题 /维基百科

[6] Lehmer保理机/筛子 /维基百科

[7] 哥德尔失信 / RJLipton


4
这似乎无法回答所提出的问题。问题是“最早使用big-O的计算机科学论文是什么?” 一个答案应该可以识别一些论文。我看不到这里引用的任何论文作为该问题答案的候选人。说“通常存在细微差别,并且不容易确定特定论文”这样的说法并不是真正的答案。肯定有第一篇论文了-必须(按照井井有条的原则)-因此这个问题是可以回答的。
DW
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.