Answers:
Skiena书也是很好的参考书:http : //www.algorist.com/
本书涵盖了从背景到不同问题领域(数据结构,搜索/排序,图形问题,组合/排列/启发式方法)的所有内容,甚至包括P vs NP完全问题。
本书中与该问题特别相关的部分是目录,列出了约70-75种不同的算法,它们通常需要的输入类型,特定算法要解决的问题的整体说明以及特定的应用示例(例如,后缀树部分讨论了try的用法及其在子字符串和搜索中的适用性。在可能的情况下,作者还确定各种通用语言(c,c ++,Java和其他一些语言)的现有实现。
我所看到的最接近您所寻找的内容的是计算机程序的结构和解释以及计算机程序设计的艺术。
SICP遍历了常见的数据结构和算法。尽管它不是百科全书,但在有限的空间内覆盖了广阔的领土,这是一个很好的选择。
关于计算机编程艺术还没有什么可以说的。拿起它时要格外小心,您可能会去找一个特定的主题,几个小时后才意识到您已经读完了每一本书。这是将您的编程真正提升到更高水平的好方法。
Cormen,Leiserson,Rivest,Stein-“算法归纳”
算法导论(通常称为CLRS)是许多大学的标准算法教科书。它涵盖了适用于各种应用程序的一系列算法,包括排序,搜索,图论和基本数值计算。它还包括有关Big O,Big Omega和Big Theta表示法的详细讨论。普遍的批评是它并没有真正为设计新算法做准备,但作为算法的百科全书或字典,它已经足够了。
我还应该指出,CLRS还提供有关何时使用哪种算法的建议,而不仅仅是提供算法和数据结构的通用索引。当您有想要完成的任务并希望获得最佳解决方案的建议时,此功能很有用。当您知道自己想怎么做并且只需要伪代码时,就会有更好的资源。
—来自@quanticle的评论,如下
在物理研究生院,我真的很喜欢C语言的数值食谱。它当然并不涵盖所有算法,但是对许多在科学中非常有用的算法给出了很好的解释:
本书涵盖了如何解决:
线性方程组
因此,这都是非常数学的,对科学家以及为游戏设计物理引擎的人们都是有益的。它不仅提供算法,而且解释了它们背后的原因,以便您可以正确使用它们。不是您的典型编码文本,而是您需要时的确切文本。
在多维(变形虫游走)多维中使用下坡单纯形法进行数据分析时,我非常依赖它。仍然有我的铅笔痕迹。啊,美好的时光!
如果你正在寻找一个“算法百科全书,”这将会是很难去错算法的百科全书。我不能说我已经读过它(399美元,这对于一本百科全书书来说很便宜),但是这个blurb看起来很有希望:
《算法百科全书》为学生和研究人员提供了针对重要算法问题的全面解决方案,包括最近十年来的高影响力解决方案。
有人已经引用了Steven Skiena的《算法设计手册》,但我认为还没有人提及Skiena的相关网站The Stony Brook Algorithm Repository。从网站:
该WWW页面旨在作为算法实现的全面集合,用于解决组合算法中超过70个最基本的问题。
这本书不仅仅是一本已知算法的目录。这也是关于如何决定使用哪种算法最适合您的问题和情况的教程(从最好的意义上来说)。另一方面,该存储库本质上是更加百科全书的。它不一定包含有关如何自己实现每种算法的大量细节,但确实解释了该算法的功能以及其工作原理,通常是从本书中获得的一般可读术语,并且它提供了每种算法的实际实现的链接。算法。
该罗塞塔代码维基是常见的算法实现的几种语言的大集合。它不完全是学术性的,但是内容丰富且有趣。
用他们自己的话说:
罗塞塔代码是一种编程读本网站。这个想法是要以尽可能多的不同语言提供针对同一任务的解决方案,以展示语言的相似性和差异性,并以一种解决方案为基础来帮助一个人学习另一种问题。
与其他资源(例如NIST 算法和数据结构词典)相比,它的主要优点是,它使您可以查看不同语言的几种实现。这对于各种目的(比较表现力,验证一种语言或另一种语言的可行性等)可能会有所帮助。
例如,“ 快速排序”页面提供了(截至2013年10月7日)至少89个实施方案。
尽管有很多关于该主题的优秀且永恒的指导性书籍,但我几乎认为,您不会找到这样的百科全书。
关于数学的百科全书涵盖了数千年的研究。另一方面,对算法的研究还不到一个世纪(从更大的角度讲)。几乎没有人了解计算机科学的整个领域,并且大多数事情仍在迅速发展。如果现在有这本百科全书,我想您可能会在10到20年内将90%的信息扔掉。值得保留的10%以上的纸张中,有一半以上是在半个世纪前印刷的。从现在起的一百年内,数学手册的大部分内容将是最新的。
数学是纯净的,独立的。这几乎不适用于“算法领域”。实际上,几乎不能将其视为一个字段,因为一个字段通常在定义明确的问题空间内运行,而算法实际上仅在定义较不明确的解决方案空间内运行。
因此,如果您要编写一本有关算法的百科全书,那么,如果您真的希望它是全面的,则并不清楚要包括什么内容。图论?线性代数?数值分析?
恕我直言,目前履行百科全书作用的最佳资源是“互联网”(看吧)。百科全书的重点是要有一个索引化的,全面的,可搜索的知识库(在某些主题上)。就个人而言,我发现此列表和此列表都非常庞大。在其他答案中,也链接了许多出色的算法数据库。
因此,尽管您无法期望像充满书架的百科全书所期望的质量那样高,但是您确实获得了补偿您想了解的年轻领域所需的及时性水平。