《算法导论(原书第3版)》一导读

简介: 本书的设计目标是全面、适用于多种用途。它可用于若干课程,从本科生的数据结构课程到研究生的算法课程。由于书中给出的内容比较多,只讲一学期一般讲不完,因此,教师们应该将本书看成是一种“缓存区”或“瑞典式自助餐”,从中挑选出能最好地支持自己希望教授的课程的内容。

bfde320a565482f569a1b563163135a554077df3

前 言

在计算机出现之前,就有了算法。现在有了计算机,就需要更多的算法,算法是计算的核心。

本书提供了对当代计算机算法研究的一个全面、综合的介绍。书中给出了多个算法,并对它们进行了较为深入的分析,使得这些算法的设计和分析易于被各个层次的读者所理解。我们力求在不牺牲分析的深度和数学严密性的前提下,给出深入浅出的说明。

书中每一章都给出了一个算法、一种算法设计技术、一个应用领域或一个相关的主题。算法是用英语和一种“伪代码”来描述的,任何有一点程序设计经验的人都能看得懂。书中给出了244幅图,说明各个算法的工作过程。我们强调将算法的效率作为一种设计标准,对书中的所有算法,都给出了关于其运行时间的详细分析。

本书主要供本科生和研究生的算法或数据结构课程使用。因为书中讨论了算法设计中的工程问题及其数学性质,所以,本书也可以供专业技术人员自学之用。

本书是第3版。在这个版本里,我们对全书进行了更新,包括新增了若干章、修订了伪代码等。

致使用本书的教师

本书的设计目标是全面、适用于多种用途。它可用于若干课程,从本科生的数据结构课程到研究生的算法课程。由于书中给出的内容比较多,只讲一学期一般讲不完,因此,教师们应该将本书看成是一种“缓存区”或“瑞典式自助餐”,从中挑选出能最好地支持自己希望教授的课程的内容。

教师们会发现,要围绕自己所需的各个章节来组织课程是比较容易的。书中的各章都是相对独立的,因此,你不必担心意想不到的或不必要的各章之间的依赖关系。每一章都是以节为单位,内容由易到难。如果将本书用于本科生的课程,可以选用每一章的前面几节内容;用于研究生的课程中,则可以完整地讲授每一章。

全书包含957道练习和158道思考题。每一节结束时给出练习,每一章结束时给出思考题。练习一般比较短,用于检查学生对书中内容的基本掌握情况。有一些是简单的自查性练习,有一些则要更充实,可以作为家庭作业布置给学生。每一章后的思考题都是一些叙述较为详细的实例研究,它们常常会介绍一些新的知识。一般来说,这些思考题都会包含几个小问题,引导学生逐步得到问题的解。

在那些不太适合本科生、更适合研究生的章节和练习前面,都加上了星号。带星号的章节也不一定就比不带星号的更难,但可能要求了解更多的数学知识。类似地,带星号的练习可能要求有更好的数学背景或创造力。

致使用本书的学生

希望本教材能为学生提供关于算法这一领域的有趣介绍。我们力求使书中给出的每一个算法都易于理解和有趣。为了在学生遇到不熟悉或比较困难的算法时提供帮助,我们逐个步骤地描述每一个算法。此外,为了便于大家理解书中对算法的分析,对于其中所需的数学知识,我们给出了详细的解释。如果对某一主题已经有所了解,会发现根据书中各章的编排顺序,可以跳过一些介绍性的小节,直接阅读更高级的内容。

本书是一本大部头著作,学生所修的课程可能只讲授其中的一部分。我们试图使它能成为一本现在对学生有用的教材,并在其将来的职业生涯中,也能成为一本案头的数学参考书或工程实践手册。

目 录

第一部分 基础知识

第1章 算法在计算中的作用
 1.1 算法
 1.2 作为一种技术的算法
 思考题
 本章注记

第2章 算法基础
 2.1 插入排序
 2.2 分析算法
 2.3 设计算法
  2.3.1 分治法
  2.3.2 分析分治算法
 思考题
 本章注记

第3章 函数的增长
 3.1 渐近记号
 3.2 标准记号与常用函数
 思考题
 本章注记

第4章 分治策略

 4.1 最大子数组问题
 4.2 矩阵乘法的Strassen算法
 4.3 用代入法求解递归式
 4.4 用递归树方法求解递归式
 4.5 用主方法求解递归式
 *4.6 证明主定理
  4.6.1 对b的幂证明主定理
  4.6.2 向下取整和向上取整
 思考题
 本章注记

相关文章
|
JSON 应用服务中间件 nginx
如何修改kong网关access.log的日志格式
有需要需要调整kong网关的日志格式,调整日志输出内容,由于原来使用docker部署kong网关,并且使用了环境变量指定了网关运行的参数,这里在以下介绍的方式还需要修改容器的环境变量,但是也提供了一条思路,就是部署网关的时候,统一使用kong.conf进行配置
1427 0
|
Java
如何修改HttpServletRequest的Headers?
HttpServletRequest java
3776 0
|
Java 数据安全/隐私保护 Android开发
如何查看签名后的jks文件信息(查看应用签名)
如何查看签名后的jks文件信息(查看应用签名)
5036 0
如何查看签名后的jks文件信息(查看应用签名)
|
12月前
|
人工智能 运维 自然语言处理
企业内训新范式:从“知识传递”到“战略杠杆”,如何实现培训价值倍增?
据2024年《中国企业培训白皮书》显示,超过68%的央国企和上市公司已将“业务场景实战”作为内训核心指标,而传统通用型课程采购量同比下降27%。在这场变革中,如何让培训从“知识传递”进化为“战斗力转化”? 本文将结合近两年先锋案例,拆解一套可落地的内训体系构建方法论。
|
12月前
|
人工智能 自然语言处理 供应链
《AI时代,别让数字鸿沟隔断未来》
在AI时代,数字鸿沟已成为新的“分水岭”,表现为不同群体在获取和使用信息通信技术(ICT)方面的差距。全球范围内,发达国家凭借雄厚实力领跑AI领域,而发展中国家因网络覆盖率低、缺乏人才和资源而落后。国内城乡之间也存在显著差距,城市居民能便捷使用AI工具,农村地区则网络基础设施滞后,难以享受AI带来的便利。此外,不同年龄段对AI的接受度也存在差异,年轻人热衷尝试新技术,老年人则面临操作困难。 数字鸿沟加剧了社会不平等,影响就业、收入和职业发展机会,限制了个人和地区的经济发展潜力。为缩小这一差距,政府应加大数字基础设施建设投入,特别是在农村和偏远地区;教育机构需将AI纳入课程体系.
450 0
《AI时代,别让数字鸿沟隔断未来》
Vue3项目使用 wow.js 让页面滚动更有趣~
本文介绍了如何在Vue3项目中集成wow.js库,通过实现滚动动画效果来增强页面的动态性和趣味性,并提供了详细的使用示例和参数说明。
902 0
Vue3项目使用 wow.js 让页面滚动更有趣~
|
存储 Java 数据库
Base64解码遇到java.lang.IllegalArgumentException: Illegal base64 character d
Base64解码遇到java.lang.IllegalArgumentException: Illegal base64 character d
Base64解码遇到java.lang.IllegalArgumentException: Illegal base64 character d
|
Linux 网络安全 Nacos
麒麟v10系统,服务连接nacos提示连接不上9848端口是什么问题呢?服务和nacos都在一台机器,防火墙也都关闭了,telnet9848是ok的,但服务启动时就连不上9848。
麒麟v10系统,服务连接nacos提示连接不上9848端口是什么问题呢?服务和nacos都在一台机器,防火墙也都关闭了,telnet9848是ok的,但服务启动时就连不上9848。
1774 1
通过 Filter 与包装 HttpServletRequest 添加自定义 header
通过 Filter 与包装 HttpServletRequest 添加自定义 header
760 0
|
分布式计算 Hadoop Java
VMware创建Linux虚拟机之(五)Spark完全分布式部署教程
VMware创建Linux虚拟机之(五)Spark完全分布式部署教程
777 0
VMware创建Linux虚拟机之(五)Spark完全分布式部署教程