据说《算法设计》是算法界三大圣经之一,你读这本书了没?

算法是计算机的灵魂!写出了灵魂。很难有讲计算机的书,能从思维角度来讲,通过具体案例,教给读者人如何去学算法,如何应用算法设计,不愧是算法界三大圣经之一。——来源豆瓣

据说《算法设计》是算法界三大圣经之一,你读这本书了没?_第1张图片

 

为什么选择《算法设计》

《算法设计》的一个重要特征是问题集。《算法设计》共包含 200 多个问题,这是我们在康奈尔大学教学课程的一部分,几乎所有问题都在课外作业中被开发,或者在课堂测验进行了考试。我们将问题视为本书的一个重要组成部分,并且让它们的结构与我们对内容的整体方法保持一致。其中大部分内容包含了一些问题的详细文字描述,这些问题出现在计算机科学应用领域或其他地方。部分问题是我们在教材中讨论的问题的实践:建立必要的符号和形式化,设计算法,然后分析这个算法并证明它是正确的。(我们认为这些问题的完整答案应该包括所有这些部分:带完整解释的算法、运行时间的分析和正确性的证明。)这些问题的想法很大程度上来自我们多年来与在不同领域工作的人们的讨论。而且,在某些情况下,这些问题也记录了一个有趣的(虽然是容易的)算法的应用,我们没有在其他任何地方看到过这些应用。

为了帮助解决这些问题,我们在每章中都加入了一节,名为“带解答的练习”,讨论一个或多个问题,并描述了如何形式化一个解。因此,专门针对每个带解答的练习的讨论,要比简单编写完整、正确的解决方案所需的时间长得多(换言之,如果将这些解决方案指定为课外作业题,那么所用的时间明显要比获得完全学分所需的时间长)。实际上,与本书的其余部分一样,这些节中的讨论应该看成是试图让人们了解一个更大的过程,通过这个过程可以考虑这种类型的问题,并最终形成精确解的详细说明。

关于在课程中使用这些问题作为作业,有两点值得一提。首先,问题大致按照难度增加的顺序排列,但这只是一个粗略的指导,建议不要过分看重它:因为大部分问题是专为本科生班的作业设计的,每章中的大部分问题在难度上实际上都差不多。其次,除编号最小的几个问题之外,其他问题都需要投入一些时间,既要将问题描述与这一章中的算法技术联系起来,又要实际设计必要的算法。在我们的本科课程中,每周大约布置 3 道这样的问题。

《算法设计》的教学特色和补充材料

除问题和带解答的练习之外,本书还有一些其他教学特色和补充材料,以方便教学。

如前所述,本书中大量篇幅专门用于算法问题的形式描述(包括其背景和潜在动机),以及针对该问题的算法设计和分析。为了反映这种风格,这些部分始终围绕一系列小节进行组织:“问题”描述问题并确定精确的形式定义;“设计算法”采用适当的设计技术开发算法;“分析算法”证明算法的性质并分析它的效率。这些节在正文中用羽毛图标突出显示。在包含问题扩展或进一步分析算法时,还有其他专门针对这些问题的节。使用这种结构是为了提供一种相对统一的表述风格,从最初讨论计算应用中出现的问题,直到对这些问题的解决方法的详细分析。

本书提供了许多补充材料作为教学的支持。配套的教师手册完成了书中所有练习,为每个问题提供完整的解决方案,还可以提供由普林斯顿大学的 Kevin Wayne 开发的一套教学用 PPT,它是按照本书章节的顺序组织的,可以作为以本书为教材的课堂教学的材料。

如何阅读《算法设计》

本书主要用于本科生的第一门算法课程,但它也可以作为研究生导论性课程的基础。在本科阶段使用本书时,我们一节课大约讲一节。如果一节课讲不完一节的内容(例如,如果该节提供了进一步的应用作为附加示例),那么我们会将这些额外的材料作为学生可以在课外阅读的补充材料。我们跳过加星号的节。虽然这些节包含重要的主题,但它们对于课程的展开并不那么重要,而且有时它们也比较难。在本书的前半部分,我们也倾向于跳过每章的一两节(例如,我们倾向于跳过 4.3 节、4.7 节、4.8 节、5.5 节、5.6 节、6.5 节、7.6 节和 7.11 节)。

第 11 章至第 13 章,我们大约每章只讲一半。值得强调的最后一点是:不要将后面的章节看成是“高级章节”,从而认为它超出了本科算法课程的范围。我们设计这些章节的目标是让每章的前几节应该适合本科生。我们自己的本科生课程包括所有这些章的材料,因为我们认为所有这些主题在本科阶段都占有重要地位。最后,我们主要将第 2 章和第 3 章作为对早期课程材料的回顾。但是,如前所述,这两章的使用在很大程度上取决于每门特定课程与其预备知识的关系。

由此产生的教学大纲大致如下:第 1 章,第 4 章至第 8 章(不包括 4.3 节、4.7 节、4.8 节、4.9 节、5.5 节、5.6 节、6.5 节、6.10 节、7.4 节、7.6 节、7.11 节和 7.13 节),第 9 章(简述),第 10 章的 10.1 节和 10.2 节,第 11 章的 11.1 节、11.2 节、11.6 节和 11.8 节,第 12 章的 12.1节至 12.3 节,以及第 13 章的 13.1 节至 13.5 节。

本书自然也支持导论性的研究生算法课程。我们认为,对于有志投身于各种不同领域研究的学生,这种课程应该介绍算法设计中当前重要的主题。在这里,我们发现强调问题的形式描述也很有用,因为学生很快就会尝试在许多不同的子领域中定义他们自己的研究问题。对于这种类型的课程,我们包含第 4 章和第 6 章中后面的主题(4.5 节至 4.9 节和 6.5 节至 6.10 节),以及第 7 章的所有内容(前面几节讲得更快),还快速介绍第 8 章中的 NP 完全性(因为许多新研究生在本科时学过),然后将剩下的时间花在第 10 章至第 13 章。虽然在研究生的导论性课程中,我们的重点是更高级的部分,但我们发现,对学生来说,有一本完整的书籍用于复习或补充背景知识是很有用的,因为学习这门课的学生的本科背景有所不同。

最后,本书支持研究生、研究人员或计算机专业人员自学,他们也许希望了解如何能够在自己的工作环境中使用特定的算法设计技术。一些研究生和同事已经以这种方式使用了本书的部分内容。

《算法设计》上架后的最近评论

据说《算法设计》是算法界三大圣经之一,你读这本书了没?_第2张图片

 

编辑推荐

据说《算法设计》是算法界三大圣经之一,你读这本书了没?_第3张图片

 

作者简介

据说《算法设计》是算法界三大圣经之一,你读这本书了没?_第4张图片

 

算法设计

据说《算法设计》是算法界三大圣经之一,你读这本书了没?_第5张图片

算法设计

这是一本被众多名校采用的算法设计课程教材,强调用实际示例阐明枯燥的算法理论,更注重算法设计思路而非算法复杂度分析。本书采用新颖的教学方式,通过分析真实世界的问题来激发算法思想。两位作者以一种清晰、直接的方式,指导学生自己分析和定义问题,并从中找出适用于给定场景的算法设计原则。本书鼓励读者更深入地理解算法设计过程,探索算法在计算机科学的更广阔领域中的应用。
本书具有以下特色:

  • 强调问题分析和设计方法;
  • 遵循结构化教学法,引导学生掌握问题形式化、算法设计和算法分析的全过程;
  • 通过一系列带解答的问题,展示计算机科学家设计和应用算法的过程;
  • 包含 200 多道作业题,其中一些题目出自 Yahoo! 和 Oracle 等公司;
  • 提供广泛用于处理 NP 困难问题和随机应用的算法,这些是极其重要的算法主题。

你可能感兴趣的:(算法设计,人工智能,程序员,算法)