算法设计手册 第2版 中文版 PDF

所需积分/C币:50 2016-04-01 11:06:15 32.22MB PDF
收藏 收藏 20
举报

作者: 斯基恩纳 出版社: 清华大学出版社 原作名: The Algorithm Design Manual (2nd Ed.) 《算法设计手册(第2版)》是算法设计畅销书的最新版本,是设计实用且高效算法的最全面指导书。《算法设计手册(第2版)》揭密了算法的设计与分析,以简单易懂的写作风格,介绍了各种算法技术,着重强调了算法分析,全书包括两大部分,“技术”部分介绍了设计和分析计算机算法的各种方法,“资源”部分给出了大量的参考资源,以及算法实现的各种资源,此外,在作者的个人网址http://www.CS.sunysb.edu/~algorith/I-还提供了各种教学资源和参考材料,这些资源对
动编号为1~8的小方块)。A*算法的实现依赖于一系列良好定义的接口。因为有良好定 的接口,实现这些接口的类能够清晰地封装八数码这类特定问题的细节 在本书中,我们使用了大量的编程语言,并且遵循一种严格的设计规范,使得代码可读 性高并且生成高效的解决方案。由于我们具备软件工程背景,所以根据泛化的算法和特 定领域的解决方案设计一个清晰的接口是一件很容易的事情。按照这样的流程编 生的软件是易于测试、维护并且能够根据面临的问题即时扩展。另外一个好处是读者能 够更加容易地阅读和理解算法的描述和结果。当选择了一个算法,我们将会告诉读者 如何将我们编写的可读并且高效的代码转换成高度优化(虽然稍稍降低了可读性)并且 性能优秀的代码。毕竟,优化是在问题已经解决之后才进行的,而且客户需要的是运行 更快的代码。即便如此,我也认为我们需要听从C.A.R. Hoare的建议:“过早的优化是 切问题之源 原则:仅仅讲述足够的数学 很多算法注重专门关注于证明算法的正确性,并且抽象地解释其细节。我们关注的却是 如何将算法应用到实践中去。最后我们才会介绍一些数学知识,这些数学知识都是为了 读者能够更好地理解数据结构和解的控制流程 例如,一个人需要理解在很多算法中使用的集合和二叉树的性质。但是,没有必要证明 叉树的高度如何得到,并且解释红黑二叉树是如何平衡的。如果你需要了解这些细 节,请阅读《算法导论》的第13章。我们仅仅是需要才会解释结果,如果读者需要理解 如何证明结论,我们将会告诉读者在哪儿能够找到数学证明 在这本书你将会学习到使用一些关键术语和分析技术,并且基于数据结构的功能来区分 算法行为。 原则:用经验来支持数学分析 在这本书中,我们从数学角度来分析算法的性能,以帮助程序员了解在哪种情况下算 能够得到最好的性能。我们将会提供现成的代码样例,在相关代码库中,有大量的 JUnit (hrp:/ sourceforge. net/projects/juni)测试样例为每个算法的实现提供了文档。我们也 会生成基准性能数据,供分析算法性能时参考。 我们将每个算法归到一个特定的性能族中,并且提供基准测试数据来得到算法的性能, 支持我们的分析结论。有一些算法是那些具有数学背景的算法设计人员证明能够非常高 效但是却不可能实现的,我们需要避免使用这样的算法。我们将在各种平台上执行我们 的算法,以证明算法的高效并不依赖于特定平台,而是由于其优秀的设计 前言 附录包含了我们采用的基准测试方法的全部细节,并且这个基准测试能够独立地验证书 中描述的所有性能结论。我们能够给你的建议在开源社区非常常见:“你得到的利益也 许会不一样”。虽然你不可能准确地复制我们的结论,但是你能看出我们描述的趋势 我们鼓励你在决定使用哪个算法的时候使用我们的这种基于经验的方法 目标读者 如果你被困在一个沙漠孤岛上,并且只能选择一本算法书,我们推荐 Donald Knuth的 《计算机程序设计艺术(卷1-3)》(1998)。 Knuth在这本书中描述了大量的数据结 构和算法,并且进行了精巧的处理和分析。这本书包含了大量的脚注和练习,并且能够 帮助一名程序员在接下来的时间中保持活力和竞争力。这些练习非常有挑战性,并且你 能够直接接触到 Knuth的思想 但是你没有被困在孤岛上,对吗?你接手了一些劣质的代码,而且这些代码必须在周五 进行改进,你需要知道如何去处理才行! 在你面对一个算法问题,需要解决一个特定的问题或者对现有解决方案进行改进的时 候,我们希望本书能够成为你的第一选择。为解决各种问题,我们广泛地讨论了现存的 算法,并且遵循以下原则 我们使用模式化的统一格式来描述每一个算法,进行每一次讨论并解释算法的重 点。正因如此,我们的书才如此易读。我们才能够看出相似的设计会对不同的算法 产生什么样的影响 在这本书中,我们使用了不同的编程语言(包括C、C++、Java还有Ruby)来描述 算法。得益于此,我们能够使用你熟悉的编程语言对算法进行详细的讨论 我们描述了算法的期望性能,并且根据经验提供了支持这些结论的证据。无论你相 信数学还是相信实际的运行时间,你都会被我们说服 对软件工程师、程序员以及设计师来说,我们希望这本书能够派上用场。为了达到目 你需要参考大量的关于实际解决方案和算法的资料,才能够解决手头的实际问题 你已经知道了如何用多种语言编写一个程序。你也知道了计算机科学的关键数据结构, 例如数组、链表、栈、队列、散列表、二又树还有有向图或者无向图。你不需要实现这 些数据结构,因为它们大都在库函数中可以找到 我们希望你能从这本书中学到如何选择并且测试解决方案以快速高效地解决问题 够学到一些高级数据结构和一些使用标准数据结构的新方法,来改善程序的性能。在选 择算法时,如果你可以知道什么样的决定可以改善解决方案的效率,那么就能够提高你 解决问题的能力 前言 本书组织方式 本书分为三个部分。第一部分(第1章~第3章)介绍了算法的必要数学基础,以便于读 者理解本书的描述。在每个算法的论述中,我们使用了一种模式化的格式。我们仔细地 设计这个格式,确保前后一致。第二部分(第4章~第9章)介绍了一系列的算法。这些 章节的每个独立部分都是一个完备的算法描述 第三部分(第10章和第章)为那些感兴趣的读者提供一些较为高深的资源。当没有 个高效的解决方案来解决问题,而且“最后的线索”为解决问题提供了有意义的线索的 时候,这个部分就能够告诉我们如何利用这些线索来解决问题。最后我们以一个重要领 域的讨论结東本书。这个讨论在第2章之所以被忽略,是因为它的内容太过高深,太过 前沿,甚至还没有被证明。第四部分包括了一个附录,这个附录描述了本书每章中对算 进行评测的方法以及数学分析。在业界,这是一种标准的基准测试方法,但是几乎没 有算法教科书介绍这个方法 本书体例 在印刷上的一些例行惯例 代码(code) 这些代码都是直接取自代码库,是现实中使用的代码 斜体( italic) 表示这个术语用于描述算法和数据结构。同样在伪代码描述中表示变量 等宽字体( Constant Width) 表示实现中的软件元素,例如Java类、C语言的数组名称以及常量(true或者 false 小型大写字母( SMALL CAPS) 表示算法名称 在本书中,我们引用了大量的书籍,文章和网站。这些引用都用括号标示出来,例如 ( Cormen等,2001),每一章最后部分列出本章所使用的参考文献。正文中的引用列出 作者的名字和文献的年份。 本书中的所有URL都在2008年8月时验证有效,而且我们抛弃了那些看起来不久就会失 效的URL。短URL,例如hrtp:/www.oreilly.com,直接在文本中使用;否则,这些URL会 放入参考文献中。 前言|5 代码使用说明 本书的目的是帮助你更好地完成工作,一般来说,你可以在程序和文档中直接使用本 书代码。除非你需要重构这些代码的重要部分,否则你不需要联系我们获得许可。例 如,你可以编写一个使用了本书中一些代码的程序而不需要许可。销售或者分发来自 O'Reilly出版书籍中的样例不需要许可。引用本书来回答问题或者引用样例代码也不需 要许可。在你的产品文章中过度地使用本书中的代码也不需要许可。我们希望,但是不 要求标明归属。一个归属说明通常包括标题、作者、出版商和ISBN。例如:“ George Heineman, Gary Pollice和 Stanley Selkow编写的《 Algorithms in a Nutshell》。版权属于 George T Heineman, Gary PolliceiAStanley Selkow, 978-0-596-51624-6 如果你觉得你需要使用代码的情况超出了我们的允许范围,那么请联系: permissions@ oreilly,com。 联系我们 对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商: 美国 O Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472 北京市西城区西直门南大街2号成铭大厦C座807室(100035 奥莱利技术咨询(北京)有限公司 本书也有相关的网页,我们在上面列出了勘误表、范例以及其他一些信息。你可以访 hrp:/www.oreilly.com/catalog/9780596516246(英文版) hrtp:/ wworeilly. com. cn/bod0kphp?bn=9787.1l2806745(中文版) 对本书做出评论或者询问技术问题,请发送Emal至: 希望获得关于本书、会议,资源中心和 O'Reilly网络的更多信息,请访问: http://www.oreilly.com eilly. com. cn 6前言 致谢 我们感谢书籍的审阅者,感谢他们对于本书细节的关注以及所给出的建议,这些建议 提高了本书的质量。他们是: Alan davidson、 Scot Drysdale、 Krzysztof duleba,Gene Hughes、 Murali mani、 Jeffrey Yasskin和 Daniel Yoo. George Heineman感谢那些带领他走入算法世界的人,包括 Scot Drysdale教授(达特茅 斯学院), Zvi Galil(哥伦比亚大学)。同样, George也感谢他的妻子 Jennifer,他的孩 子 Nicholas(他一直想要知道爸爸在写什么便条)和 Alexander(出生于我们书籍定稿 Gary Pollice感谢他的妻子陪伴他走过了40年的美好时光。他同样感谢wP计算机科学系 提供给他的伟大工作和幽雅的环境 Stanley Selkow感谢他的妻子Deb。这本书是在他们相伴走过的时光中的又一个结晶 参考文献 Cormen, Thomas H, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, d edition McGraw-Hill 2001 Knuth, Donald E, The Art of Computer Programming, Volumes 1-3, Boxed Set Second Edition. Addison-Wesley Professional, 1998 前言 第一部分 第1章算法真的很重要 第2章算法的数学原理 第3章模式和领域

...展开详情
试读 127P 算法设计手册 第2版 中文版 PDF
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    一个资源只可评论一次,评论内容不能少于5个字
    cnfeigo 我曾经是个土豪, 才会买这么贵的书
    2018-08-21
    回复
    duidui00712 不是第二版
    2018-05-02
    回复
    1204364027 不是第二版
    2018-04-25
    回复
    wshn13 还可以吧 没了这本书
    2018-04-13
    回复
    robbenv 挺好的一本书
    2017-10-28
    回复
    Honei_X 好像不是清华出版的。
    2017-10-07
    回复
    我干过豪哥 讲的挺好的 不过深度其实一般
    2017-09-26
    回复
    gta100 不是那本流行的算法书
    2017-09-06
    回复
    雨林一叶 这不是The Algorithm Design Manual, 是Algorithms in a Nutshell
    2017-07-11
    回复
    youniuni 不是算法设计手册,但也很好
    2017-05-23
    回复
    关注 私信 TA的资源
    上传资源赚积分,得勋章
    最新推荐
    算法设计手册 第2版 中文版 PDF 50积分/C币 立即下载
    1/127
    算法设计手册 第2版 中文版 PDF第1页
    算法设计手册 第2版 中文版 PDF第2页
    算法设计手册 第2版 中文版 PDF第3页
    算法设计手册 第2版 中文版 PDF第4页
    算法设计手册 第2版 中文版 PDF第5页
    算法设计手册 第2版 中文版 PDF第6页
    算法设计手册 第2版 中文版 PDF第7页
    算法设计手册 第2版 中文版 PDF第8页
    算法设计手册 第2版 中文版 PDF第9页
    算法设计手册 第2版 中文版 PDF第10页
    算法设计手册 第2版 中文版 PDF第11页
    算法设计手册 第2版 中文版 PDF第12页
    算法设计手册 第2版 中文版 PDF第13页
    算法设计手册 第2版 中文版 PDF第14页
    算法设计手册 第2版 中文版 PDF第15页
    算法设计手册 第2版 中文版 PDF第16页
    算法设计手册 第2版 中文版 PDF第17页
    算法设计手册 第2版 中文版 PDF第18页
    算法设计手册 第2版 中文版 PDF第19页
    算法设计手册 第2版 中文版 PDF第20页

    试读已结束,剩余107页未读...

    50积分/C币 立即下载 >