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

为什么选择《算法设计》

《算法设计》的一个重要特征是问题集。《算法设计》共包含 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 章。虽然在研究生的导论性课程中,我们的重点是更高级的部分,但我们发现,对学生来说,有一本完整的书籍用于复习或补充背景知识是很有用的,因为学习这门课的学生的本科背景有所不同。

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

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

编辑推荐

作者简介

算法设计

算法设计

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

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

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

  1. 汤晓鸥谈深度学习三大核心要素:算法设计、高性能的计算能力以及大数据

    汤晓鸥谈深度学习三大核心要素:算法设计.高性能的计算能力以及大数据 2017-05-21 15:02:28    深度学习    0 0 0 昨日(5月20日),香港中文大学汤晓鸥教授莅临 2017C ...

  2. 算法设计与分析:动态规划(3)-序列联配问题(以算代存)

    文章目录 前言 高级动态规划 应用分治思想减少空间 计算得分 从后缀匹配到前缀匹配 伪代码 分治点计算改进 总结 本文参考UCAS卜东波老师算法设计与分析课程撰写 前言 本文内容承接上一次算法设计与分 ...

  3. 算法设计与分析——十大经典排序算法一(1--5)

    目录 算法设计与分析--十大经典排序算法 第1关:冒泡排序 参考代码 第2关:选择排序 参考代码 第3关:插入排序 参考代码 第4关:希尔排序 参考代码 第5关:归并排序 参考代码 作者有言 一个不知 ...

  4. 数据结构与算法设计思路和考察点

    网上摘录,想分专题放到一起.数据结构常见的问题包括字符串方面.链表的各种操作.树的各种操作,以及各种变形和与其它数据结构的结合使用. 面试题目 字符串专题 1.将字符串转换成整数,将整数转换为字符串, ...

  5. 大白书 1.3节 高效算法设计举例

    大白书 1.3节 高效算法设计举例 例题 17 UVA 11462 简单题,注意那个数值的范围是100以内就可以了. #include <cstdio> #include <cstr ...

  6. 死磕算法!35 篇算法设计实例+6 本必读书打包送你

    算法为什么难学? 算法在程序中扮演着非常重要的角色,有人将数据结构比喻为程序的骨架,将算法比喻为程序的灵魂,这一点也不为过,正是因为这一点,很多朋友都立志要学好算法,但是我常常看到各种抱怨,比如&qu ...

  7. 哈工大威海算法设计与分析_计算机算法设计与分析第一章 算法概述

    晓强Deep Learning的读书分享会,先从这里开始,从大学开始.大家好,我是晓强,计算机科学与技术专业研究生在读.我会不定时的更新我的文章,内容可能包括深度学习入门知识,具体包括CV,NLP方向 ...

  8. 基于matlab的捷联惯导算法设计及仿真,基于 Matlab 的捷联惯导算法设计及仿真1doc.doc...

    基于 Matlab 的捷联惯导算法设计及仿真1doc 基于 Matlab 的捷联惯导算法设计及仿真1 严恭敏 西北工业大学航海学院,西安 (710072) E-mail:yangongmin@163. ...

  9. 算法设计之—直接 遍历/穷举法、贪心算法、动态规划、回溯法、EM方法

    算法是对完成特定问题的程序执行序列描述,表象为从问题初始状态到问题结束状态的所有路径之中寻找可行路径,若无先验经验,根据执行方式不同可以划分为无规则和有规则(启发式)方法. 无规则方法为穷举,改进方法 ...

  10. 算法设计与分析——算法思想总结

    算法设计与分析 1.分治法 分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同.递归的解这些子问题,然后将各子问题的解合并得到原问题的解. 分治法所能解 ...

最新文章

  1. 鸿合一体机触屏没反应怎么办_无线鼠标没反应,我来教您无线鼠标没反应怎么办?...
  2. 61条面向对象设计的经验原则
  3. tp5 引入 没有命名空间的类库的方法(以微信支付SDK为例)
  4. 【渝粤教育】电大中专电商运营实操 答案作业 题库
  5. 高性能业务架构解决方案(LVS+Keepalived)
  6. 一、vi/vim编辑器
  7. C语言嵌入系统编程修炼-性能优化
  8. Linux系列-Red Hat5平台下的DHCP服务搭建
  9. PyTorch——解决报错“RuntimeError: running_mean should contain *** elements not ***”
  10. 判断输入几位数的正则_判断是几位数,并逆向输出此数的程序算法和说明
  11. PUN搭建大厅与网络同步
  12. linux上的ds命令,使用DS-5 进行Linux应用开发
  13. 不同时区时间换算_不同时区时间转换
  14. 【智能硬件】Jetson nana 扩展显存(内存)
  15. js网页打印,js打印,javascript局部打印,网页局部打印方法
  16. [译]数据包在 Kubernetes 中的一生(2)
  17. 路在何方?前途迷茫,去不去HP?
  18. 被误解最大的基础学科——统计学,到底是个啥?
  19. 计算机网络大学规划500字,大学学习计划书范文500字
  20. linux mtr路由追踪,CentOS下网络路由追踪软件mtr及besttrace

热门文章

  1. c语言病毒编写教程,来来来,教你一个用C语言写个小病毒
  2. Java读取文件方法大全
  3. 脱壳实践之寻找OEP——堆栈平衡法
  4. 待业在家的6个月,我靠淘宝月入百万:你看不起的行业,往往很赚钱
  5. 时间序列平稳性的判断
  6. AD20如何自定义BOM模板?Altium Designer20 实用技巧系列教程(五)
  7. 联想笔记本卸载McAfee
  8. 中科方德桌面操作系统_国产操作系统——中科方德桌面操作系统,USB无线网卡配置...
  9. QQ空间自动点赞评论助手 微博自动点赞自动转发神器带源码(超简单)
  10. 中级职称的计算机考试题库,中级职称计算机考试模拟题库及答案