有算法百科全书吗?[关闭]


34

是否有与《数学手册》风格相似的算法百科全书在一处拥有大量可用项似乎很有用。我知道计算机编程艺术被认为是很好的资料,但它似乎不像百科全书那样具有启发性。

主持人备注

我们正在寻找能提供一些解释和上下文的长答案。不要只列出一本书:请解释为什么您推荐一本书或资源。没有解释任何内容的答案将被删除。有关更多信息请参见良好主观,不良主观



稍作谷歌搜索对回答这个问题大有帮助。至少,它会提供一份不错的候选人名单,然后您可以用来提出更集中的问题。
Caleb

Answers:


41

我不确定这是否是您要寻找的东西,但是NIST拥有算法和数据结构字典。这是一本关于数据结构和算法(doh)的非常全面的词典,当我发现以前从未听说过的内容时,通常可以很好地查找。


您的答案几乎正是我要的内容。免费加分。
世界工程师

有趣的是,在过去几天中,由于美国政府关闭,NIST DADS已关闭,直到另行通知然后,当听到成千上万的开发人员立即尖叫时
haylem

11

Skiena书也是很好的参考书:http : //www.algorist.com/

本书涵盖了从背景到不同问题领域(数据结构,搜索/排序,图形问题,组合/排列/启发式方法)的所有内容,甚至包括P vs NP完全问题。

本书中与该问题特别相关的部分是目录,列出了约70-75种不同的算法,它们通常需要的输入类型,特定算法要解决的问题的整体说明以及特定的应用示例(例如,后缀树部分讨论了try的用法及其在子字符串和搜索中的适用性。在可能的情况下,作者还确定各种通用语言(c,c ++,Java和其他一些语言)的现有实现。


这是我能想到的最接近算法的百科全书。很棒的书!
Charalambos Paschalides

8

我所看到的最接近您所寻找的内容的是计算机程序的结构和解释以及计算机程序设计艺术

SICP遍历了常见的数据结构和算法。尽管它不是百科全书,但在有限的空间内覆盖了广阔的领土,这是一个很好的选择。

关于计算机编程艺术还没有什么可以说的。拿起它时要格外小心,您可能会去找一个特定的主题,几个小时后才意识到您已经读完了每一本书。这是将您的编程真正提升到更高水平的好方法。


5
SICP是一本很棒的书,但是对于正在寻找“算法百科全书”的人来说,这并不是一个合理的建议。SICP不会尝试那样的事情。此外,《任择议定书》写道,ACP“似乎不像百科全书那样具有启发性”,因此应该清楚地表明,SICP 不是他或她想要的。
卡莱布

很棒的书,但不是百科全书。
haylem 2011年

我敢肯定,我说的不是百科全书,而是介绍了很多算法。“虽然它不是百科全书,但在有限的空间内覆盖广阔的领土还是不错的。” 是的,我就是这么说的。
迈克尔·布朗

8

Cormen,Leiserson,Rivest,Stein-“算法归纳”

算法导论(通常称为CLRS)是许多大学的标准算法教科书。它涵盖了适用于各种应用程序的一系列算法,包括排序,搜索,图论和基本数值计算。它还包括有关Big O,Big Omega和Big Theta表示法的详细讨论。普遍的批评是它并没有真正为设计新算法做准备,但作为算法的百科全书或字典,它已经足够了。

我还应该指出,CLRS还提供有关何时使用哪种算法的建议,而不仅仅是提供算法和数据结构的通用索引。当您有想要完成的任务并希望获得最佳解决方案的建议时,此功能很有用。当您知道自己想怎么做并且只需要伪代码时,就会有更好的资源。

—来自@quanticle的评论,如下


4
您能否扩大答案以包括满足该问题目标的那本书?

2
算法导论(通常称为CLRS)是许多大学的标准算法教科书。它涵盖了适用于各种应用程序的一系列算法,包括排序,搜索,图论和基本数值计算。它还包括有关Big O,Big Omega和Big Theta表示法的详细讨论。普遍的批评是,它并没有真正为设计算法做准备,但是作为一本百科全书或算法词典,它绰绰有余。
2011年

1
我还应该指出,CLRS还提供有关何时使用哪种算法的建议,而不仅仅是提供算法和数据结构的通用索引。当您有想要完成的任务并希望获得最佳解决方案的建议时,此功能很有用。当您知道自己想怎么做并且只需要伪代码时,就会有更好的资源。
2011年

提示德米特里:只需将@quanticle的评论复制到答案的正文中,即可使您的答案更出色1000%。
2011年

5

在物理研究生院,我真的很喜欢C语言的数值食谱。它当然并不涵盖所有算法,但是对许多在科学中非常有用的算法给出了很好的解释:

http://www.nr.com/

本书涵盖了如何解决:

线性方程组

  1. 线性方程组
  2. 插值和外推
  3. 功能整合
  4. 功能评估
  5. 特殊功能,包括伽玛功能,贝塔功能,阶乘
  6. 随机数-包括对这意味着什么的很好的解释
  7. 排序算法
  8. 寻找根和非线性方程
  9. 最小化和最大化功能
  10. 特征系统
  11. 快速傅立叶变换
  12. FFT和频谱分析
  13. 数据的统计描述
  14. 数据建模
  15. 常微分方程的积分
  16. 两点边界问题
  17. 积分方程和逆边界理论
  18. 偏微分方程
  19. “其他”算法,例如CRC检查和数据压缩

因此,这都是非常数学的,对科学家以及为游戏设计物理引擎的人们都是有益的。它不仅提供算法,而且解释了它们背后的原因,以便您可以正确使用它们。不是您的典型编码文本,而是您需要时的确切文本。

在多维(变形虫游走)多维中使用下坡单纯形法进行数据分析时,我非常依赖它。仍然有我的铅笔痕迹。啊,美好的时光!


1
您能否扩大答案以包括满足该问题目标的那本书?

4

如果你正在寻找一个“算法百科全书,”这将会是很难去错算法的百科全书。我不能说我已经读过它(399美元,这对于一本百科全书书来说很便宜),但是这个blurb看起来很有希望:

《算法百科全书》为学生和研究人员提供了针对重要算法问题的全面解决方案,包括最近十年来的高影响力解决方案。

有人已经引用了Steven Skiena的《算法设计手册》,但我认为还没有人提及Skiena的相关网站The Stony Brook Algorithm Repository。从网站:

该WWW页面旨在作为算法实现的全面集合,用于解决组合算法中超过70个最基本的问题。

这本书不仅仅是一本已知算法的目录。这也是关于如何决定使用哪种算法最适合您的问题和情况的教程(从最好的意义上来说)。另一方面,该存储库本质上是更加百科全书的。它不一定包含有关如何自己实现每种算法的大量细节,但确实解释了该算法的功能以及其工作原理,通常是从本书中获得的一般可读术语,并且它提供了每种算法的实际实现的链接。算法。


2

罗塞塔代码维基是常见的算法实现的几种语言的大集合。它不完全是学术性的,但是内容丰富且有趣。

用他们自己的话说:

罗塞塔代码是一种编程读本网站。这个想法是要以尽​​可能多的不同语言提供针对同一任务的解决方案,以展示语言的相似性和差异性,并以一种解决方案为基础来帮助一个人学习另一种问题。

与其他资源(例如NIST 算法和数据结构词典)相比,它的主要优点是,它使您可以查看不同语言的几种实现。这对于各种目的(比较表现力,验证一种语言或另一种语言的可行性等)可能会有所帮助。

例如,“ 快速排序”页面提供了(截至2013年10月7日)至少89个实施方案。


您介意进一步解释它的功能吗,为什么在回答所提问题时推荐它?在Stack Exchange上不太欢迎“仅链接的答案”
2013年

@gnat:通常会同意,但是“仅书本参考”答案有何不同?另外,我认为“几种语言的通用算法实现的集合”涵盖了它的工作。如果您看起来足够近,它也与(
或少

@gnat:无论如何,添加了更多内容。
haylem 2013年

@AnnaLear:对不起,我认为您的编辑很正确,以使我的文章简短易懂,但应的要求,将更改放回去比较合适。
haylem 2013年

0

尽管有很多关于该主题的优秀且永恒的指导性书籍,但我几乎认为,您不会找到这样的百科全书。

  • 关于数学的百科全书涵盖了数千年的研究。另一方面,对算法的研究还不到一个世纪(从更大的角度讲)。几乎没有人了解计算机科学的整个领域,并且大多数事情仍在迅速发展。如果现在有这本百科全书,我想您可能会在10到20年内将90%的信息扔掉。值得保留的10%以上的纸张中,有一半以上是在半个世纪前印刷的。从现在起的一百年内,数学手册的大部分内容将是最新的。

  • 数学是纯净的,独立的。这几乎不适用于“算法领域”。实际上,几乎不能将其视为一个字段,因为一个字段通常在定义明确的问题空间内运行,而算法实际上仅在定义较不明确的解决方案空间内运行。
    因此,如果您要编写一本有关算法的百科全书,那么,如果您真的希望它是全面的,则并不清楚要包括什么内容。图论?线性代数?数值分析?

恕我直言,目前履行百科全书作用的最佳资源是“互联网”(看吧)。百科全书的重点是要有一个索引化的,全面的,可搜索的知识库(在某些主题上)。就个人而言,我发现此列表此列表都非常庞大。在其他答案中,也链接了许多出色的算法数据库。

因此,尽管您无法期望像充满书架的百科全书所期望的质量那样高,但是您确实获得了补偿您想了解的年轻领域所需的及时性水平。


0

就现有资料而言,我认为Wikipedia是您所寻找的最接近的东西。出于此目的,为此目的,在Wikipedia上创建一个更定义的“算法模板”可能会很有用,但这是与Wikipedia编辑者讨论的内容,此处不再赘述。

关于计算机编程艺术的简要说明:完成后,将包括一个“摘要”卷,尽管这现在对您没有帮助,但可能与您正在寻找的差不多。TAOCP涵盖的内容是百科全书的,但是它还不完整,并且Knuth的个性使得他不会包括任何东西,除非他进行了详尽的研究。

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.