CS论文的实证结果


31

我是CS领域的新手,我注意到在我阅读的许多论文中,没有经验结果(没有代码,只是引理和证明)。这是为什么?考虑到计算机科学是一门科学,它是否应该遵循科学方法?


26
简短的答案是“计算机科学”有很多东西。AI之类的某些部分实际上是科学。其他部分是工程学,而理论方面是(应用的)数学。HCI的一部分更像艺术品。计算机科学是一个广阔的帐篷。
亚伦·罗斯

6
如果有证据,为什么还需要经验结果?
Aryabhata

2
@Moron:您如何证明不实施算法就可以实施?
Jukka Suomela 2011年

8
理论CS似乎类似于数学物理学,它也避免了经验结果。如果您想要实验物理学之类的东西,可以看一下软件工程,程序验证,数据库系统等方面的研究
Yaroslav Bulatov

4
吹毛求疵:“ 科学的方法?”
卡韦赫

Answers:


21

数学也是一门科学,您必须花很长时间才能找到该领域已发表的经验结果(尽管我想一定会有)。在其他科学领域中,“引理和证明”比经验更有价值,例如量子物理学。就是说,大多数科学都将理论和实践(具有不同的比例)混合在一起,计算机科学也不例外。

计算机科学源于数学(例如,参见图灵的传记http://en.wikipedia.org/wiki/Alan_Turing),因此,许多结果(通常被称为“理论计算机科学”领域)都包含在证明中计算模型中的计算机可以解决给定数量的操作中的某些问题(例如FOCS,STOC,SODA,SoCG等会议)。然而,通过分析实验结果(例如WADS,ALENEX等会议),计算机科学的许多其他结果都与这些理论在实际生活中的适用性有关。

人们通常认为理想是理论与实践之间的良好平衡,例如在《自然科学》中,对实验的观察促使了新理论的产生,而新理论反过来又提出了新的实验来确认或证实那些理论:会议试图接受实验性和理论性结果(例如,ESA,ICALP,拉丁语,CPM,ISAAC等)。计算机科学中的“算法和数据结构”子领域可能会遭受不平衡的局面,因为“理论”会议的排名通常比实验会议的排名更高。我相信在计算机科学的其他子领域(例如HCI或AI)中并非如此。

希望能帮助到你?


谢谢,确实有很大帮助。最近,我对图论感兴趣,在阅读的论文中,几乎没有一篇有代码或实验结果。这就是为什么我问。当您做纯数学时,您无法产生实验结果,因此证明就是一切。但是在图论中,编写算法并产生有用的实验结果并不难!让我们来谈谈MST问题。当前的行业实现是Prim / Kruskal和Boruvska,但是在论文中描述了更强大的算法,但是由于没有人对它们进行编码,因此没有使用它们。

1
是的,您可以根据图论来实现算法。但是对于图论中的许多有趣问题,至少是困难的,这将是无用的,因为由于算法的指数时间复杂性,只有很小的输入是(可接受的)可计算的。NP
Mathieu Chapelle

1
@ toto当然,您所说的内容适用于某些问题,但是对于MST问题,您可以在books.google.com/…中
Abel Molina

1
@toto。这不是使用旧算法的唯一原因。从TCS角度来看,总是比更好。但是big-oh可以隐藏一个大常数,这使该算法在实践中不切实际。这样的工作针对的是TCS人员,对算法进行编码不会带来任何好处,甚至会使读者感到困惑。O n log n O(n)O(nlogn)
chazisop 2011年

24

很好地实现算法是一项技能,它需要一套不同于证明定理的工具。理论界发现的许多算法实际上已在实践中实施(尽管我希望理论界在此过程中发挥更大作用)。物理并没有要求同一个研究人员进行理论和实验,尽管可以期望这两个小组进行交流。您为什么不期望在计算机科学中看到同样的鸿沟?

加入编辑:

在贝尔实验室和AT&T实验室,我回答了Suresh关于我上面的“角色”的含义时,扩展了我的评论,鼓励算法研究人员与开发人员进行交流。我没有做应该做的很多事情,但是我确实得到了至少一篇论文,并且我认为如果理论上的人们与从业人员之间进行更多的交流对领域将是有益的。这并不意味着我认为每个提出算法的人都应该对其进行编码(即使它很实用)。

另一方面,您认为实用的编码算法(或让学生对它们进行编码)对于使从业人员适应它们很有用。考虑一个例子。Lempel和Ziv分别于1977年和1978年撰写了两篇有关新数据压缩算法的技术论文。每个人都忽略了他们。1984年,Welch撰写的技术文章少得多,略微改变了LZ78,从而稍微改善了其性能,并给出了一项小型研究的结果,将其性能与其他数据压缩方法进行了比较。它发表在许多程序员都读过的期刊上,并且该算法由几行伪代码给出。该方法很快在许多地方进行了修改,最终导致了声名狼藉的知识产权纠纷。

当然,算法研究人员与实践交流的最佳方法之一就是培养毕业于Google,IBM或其他公司工作的研究生,而我们已经在这样做。另一种方法可能是在此论坛中回答从业者的问题。希望我们也能做到这一点。


4
因此,您说的是,即使在物理学中不期望同一个人同时做这两种事情,但从理论上讲,我们应该同时做这两种事情?是因为计算模型比物理模型更近似于现实吗?
Suresh Venkat

10
我是说理论家应该与实践者更多地交流。如果您查看物理学的历史,那么当理论家停止与实验家交谈时,坏事就会开始发生。实际上,我认为我们现在在两个小组之间进行了合理数量的交流,但是拥有更多交流并没有什么坏处。
Peter Shor

3
我不会一概而论,但我认为许多研究人员根本无法编写代码/不喜欢这样做,他们宁愿让一名学生来完成实际工作。我和我的导师就是这样。
托托

与正式规范相对于实际计算相关的张力可以追溯到STEM历史上。有时用正式规范(冯·诺依曼的“关于固定爆轰波的理论” [1948]与随后的计算模拟),有时用实际规范的引导(Bowditch的“《新美国实用航海家》” [1807]与高斯的《超曲面曲折》)。 [1827])。最伟大的数学家(在上面引用的示例中为高斯和冯·诺伊曼)经常将形式规范与实际计算相结合。
约翰·西德尔斯

3
Lempel-Ziv的历史以及在StackOverflow上的帖子,使我制定了一个非常简单的原则,这可能有助于使算法理论家想到已实现的实践者:如果您认为算法可行,则将伪代码放入纸。
彼得·索尔

17

使用经验方法和理论计算机科学方法的一个研究领域是称为“实验算法”或“算法工程”的领域。就像Chris提到的那样,高性能计算在很大程度上依赖于此,因为现代系统存在复杂的缓存和延迟问题,而我们很难进行建模。

Gerth BrodalPeter Sanders是在“证明”和“经验”领域都站稳脚跟的研究人员的好例子。

--2013年1月20日更新-我还要提到Robert Sedgewick的精彩演讲。


4
ALENEX和ESA都鼓励应用算法的工作,并且还有一个关于此主题的会议(SAE)。
Suresh Venkat

什么是SAE?该TLA不可逾越。您有网址吗?
Peter Boothe

5
SAE是SEA(实验算法研讨会)的错字。
David Eppstein

1
您还可以以更严格的方式进行算法工程,即完善理论模型,使其适合实际情况,但仍需进行精确的分析。但是,这很难。
拉斐尔

O(CubeRoot(n))

12

这取决于您所处的学科。正如杰里米(Jeremy)所说,理论和实践之间存在着广泛的联系。

诸如复杂性之类的话题往往偏重于理论方面,因为通常的目标是找到空间或运行时的边界。用C ++实现算法,然后运行很多次并不能证明问题是NP完全的。

与之相反的是,高性能计算(例如像Supercomputing这样的会议)都是经验性的。没有人会向HPC出版物提交证明,因为在内存层次结构和内核开销方面存在太多可变性。

因此,根据目标,技术,社区等,可以用两种完全不同的方法来处理似乎相同的问题(需要花多长时间才能完成?)。请参见Poul-Henning Kamp的“ 您做错了”。不和谐。


10

在编程语言研究中,许多有关新编程语言结构或新型类型检查机制的想法都源于理论(也许是从实践经验中获悉的)。通常从形式/理论/概念角度撰写有关此类机制的论文。这是相对容易做到的。接下来是第一个障碍:在现有编译器的上下文中实现新结构,并在效率或灵活性方面进行试验。这也相对容易。

但是我们可以说编程结构构成了编程科学的进步吗?我们可以说这使编写程序更容易吗?我们可以说它使编程语言更好吗?

答案是不。要回答这些问题,就需要进行适当的实证评估,其中涉及大量经验丰富的程序员。这项研究几乎从未进行过。编程语言(及其构造)的价值的唯一判断是该语言的普及程度。对于编程语言的纯粹主义者而言,这与我们的假设所告诉我们的背道而驰。


7

也许我想念您提出这个问题的动机,但是有许多实证结果激励研究,算法和其他结果的例子。

MP3使用心理声学来优化人类编码算法。

π

同样,Bailey和Borwein是实验数学的重要支持者。请参见“计算机为坩埚:介绍实验数学”“计算在游览数论”当中他人。有人可能会认为这是实验性的数学,但我会认为在这一级别上的讨论是语义上的区别。

NP-完全问题的相变是大量使用经验结果的领域。请参阅Monasson,Zecchina,Kirkpatrick,Selman和Troyansky以及Gent和Walsh的入门书 ,尽管还有很多很多(请参阅此处进行简要调查)。

虽然不是很理论计算机科学或数学的水平,有一个讨论,在这里大约是因为它依赖于一个事实,即它的搜索人类可读的文本(grep的不作为不良或Unix工具grep的平均情况下运行节奏如何优化最坏的情况下算法最不利于其中包含随机字符的文件)。

甚至高斯也用实验证据给出了素数定理的假设。

数据挖掘(贝尔科Bellkor)Netflix奖的解决方案,以建立更好的推荐系统)可能被认为是完全基于经验证据的理论。人工智能(遗传算法,神经网络等)在很大程度上依赖于实验。密码学在代码制作者和代码破坏者之间不断地推拉。我实际上只列举了一些,如果您放宽对经验的定义,那么您可以投放更大的范围。

我很抱歉在回答您的问题时如此分散,但我希望我至少提供了一些有用的示例。

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.