具体描述
本书是一部设计与分析领域的经典著作,着重介绍了计算机算法设计领域的基本原则和根本原理。书中深入分析了一些计算机模型上的算法,介绍了一些和设计有效算法有关的数据结构和编程技术,为读者提供了有关递归方法、分治方法和动态规划方面的详细实例和实际应用,并致力于更有效算法的设计和开发。同时,对NP完全等问题能否有效求解进行了分析,并探索了应用启发式算法解决问题的途径。另外,本书还提供了大量富有指导意义的习题。
本书可以作为高等院校计算机算法设计与分析课程的本科生或研究生教材,也可以作为计算机理论研究人员、计算机算法设计人员的参考书。
作者简介
Alfred V.Aho
博士是哥伦比亚大学计算机科学系主管本科生教学的副主任,IEEE Fellow,美国科学与艺术学院及国家工程学院院士,曾获得IEEE的冯·诺伊曼奖。他是《编译原理》(Compiler:Principles,Techniques,andTools)的第一作者。 他目前的研究方向为量子计算、程式设计语言.编译器和算法等。
John E.Hppcroft
博士是康奈尔大学工程学院院长兼计算机科学系教授,IEEE Fellow,美国科学与艺术学院及国家工程学院院士,1986年因其在数据结构、算法设计与分析等领域的重要贡献而获得图灵奖。他还是《自动机理论,语言和计算导论》(Introduction to Antomata Theory,Languages,and Computation)的第一作者。他目前的研究方向是信息存取。
Jefirey D.Ullman
博士先后任教于普林斯顿大学和斯坦福大学,现已退休。他是美国国家工程学院院士,曾获得1996年的Sigmod贡献奖和2000年的Knuth奖等诸多学术奖项,除本书外,他还与Aho合著了《编译原理》,与Hopcroft合著了《自动机理论、语言和计算导论》,并与其他数据库专家合著了数据库方面的名著,如《数据库系统基础教程》(AFirst Course in Database Systems)等。
目录信息
译者序
前言
第1章 计算模型
1.1 算法和复杂度
1.2 随机存取计算机
1.3 ram程序的计算复杂度
1.4 存储程序模型
1.5 ram的抽象
1.6 一种基本的计算模型:图灵机
1.7 图灵机模型和ram模型的关系
1.8 简化algol——一种高级语言
第2章 有效算法的设计
2.1 数据结构:表、队列和堆栈
2.2 集合的表示
2.3 图
2.4 树
2.5 递归
2.6 分治法
2.7 平衡
. 2.8 动态规划
2.9 后记
第3章 排序和顺序统计
3.1 排序问题
3.2 基数排序
3.3 比较排序
3.4 堆排序——o(n log n)的比较排序算法
3.5 快速排序——期望时间为o(n log n)的排序算法
3.6 顺序统计学
3.7 顺序统计的期望时间
第4章 集合操作问题的数据结构
4.1 集合的基本操作
4.2 散列法
4.3 二分搜索
4.4 二叉查找树
4.5 最优二叉查找树
4.6 简单的不相交集合合并算法
4.7 union-find问题的树结构
4.8 union-find算法的应用和扩展
4.9 平衡树方案
4.10 字典和优先队列
4.11 可合并堆
4.12 可连接队列
4.13 划分
4.14 本章小结
第5章 图算法
5.1 最小代价生成树
5.2 深度优先搜索
5.3 双连通性
5.4 有向图的深度优先搜索
5.5 强连通性
5.6 路径查找问题
5.7 传递闭包算法
5.8 最短路径算法
5.9 路径问题与矩阵乘法
5.10 单源问题
5.11 有向无环图的支配集:概念整合
第6章 矩阵乘法及相关操作
6.1 基础知识
6.2 strassen矩阵乘法算法
6.3 矩阵求逆
6.4 矩阵的lup分解
6.5 lup分解的应用
6.6 布尔矩阵的乘法
第7章 快速傅里叶变换及其应用
7.1 离散傅里叶变换及其逆变换
7.2 快速傅里叶变换算法
7.3 使用位操作的fft
7.4 多项式乘积
7.5 schonhage-strassen整数相乘算法
第8章 整数与多项式计算
8.1 整数和多项式的相似性
8.2 整数的乘法和除法
8.3 多项式的乘法和除法
8.4 模算术
8.5 多项式模算术和多项式计值
8.6 中国余数
8.7 中国余数和多项式的插值
8.8 最大公因子和欧几里得算法
8.9 多项式gcd的渐近快速算法
8.10 整数的gcd
8.11 再论中国余数
8.12 稀疏多项式
第9章 模式匹配算法
9.1 有穷自动机和正则表达式
9.2 正则表达式的模式识别
9.3 子串识别
9.4 双向确定型下推自动机
9.5 位置树和子串标识符
第10章 np完全问题
10.1 非确定型图灵机问题
10.2 p类和np类
10.3 语言和问题
10.4 可满足性问题的np完全性
10.5 其他np完全问题
10.6 多项式空间界问题
第11章 一些可证难的问题
11.1 复杂度层次
11.2 确定型图灵机的空间层次
11.3 一个需要指数时间和空问的问题
11.4 一个非基本的问题
第12章 算术运算的下界
12.1 域
12.2 再论直线状代码
12.3 问题的矩阵表述
12.4 面向行的矩阵乘法的下界
12.5 面向列的矩阵乘法的下界
12.6 面向行和列的矩阵乘法的下界
12.7 预处理
附录 算法的c/c++代码
参考文献
· · · · · · (收起)
读后感
<Data Structures and Algorithms>主要内容来本书的前六章。 可以说是本书的一个通俗化读本。 因此,本书可以说是高级版本,学术性很强,内容较深。本书1974年出版,虽然时间很早,但本书仍然是算法领域不可或缺的经典读物。 ------------------------- 如同灰姑娘书,恐龙书...
我一直认为搞算法应该看三本书,但是如果一个人把这三本书都花时间去钻研,那要么就是对算法极有天赋以及狂热的学者,要么就是附庸风雅的俗人。就如同当年胸口别四只钢笔的显摆人士,不足以模仿之。 这三本书中有两本可说是如雷贯耳,TAOCP和算法导论,而这本DACA却鲜有人问津...
我一直认为搞算法应该看三本书,但是如果一个人把这三本书都花时间去钻研,那要么就是对算法极有天赋以及狂热的学者,要么就是附庸风雅的俗人。就如同当年胸口别四只钢笔的显摆人士,不足以模仿之。 这三本书中有两本可说是如雷贯耳,TAOCP和算法导论,而这本DACA却鲜有人问津...
我一直认为搞算法应该看三本书,但是如果一个人把这三本书都花时间去钻研,那要么就是对算法极有天赋以及狂热的学者,要么就是附庸风雅的俗人。就如同当年胸口别四只钢笔的显摆人士,不足以模仿之。 这三本书中有两本可说是如雷贯耳,TAOCP和算法导论,而这本DACA却鲜有人问津...
<Data Structures and Algorithms>主要内容来本书的前六章。 可以说是本书的一个通俗化读本。 因此,本书可以说是高级版本,学术性很强,内容较深。本书1974年出版,虽然时间很早,但本书仍然是算法领域不可或缺的经典读物。 ------------------------- 如同灰姑娘书,恐龙书...
用户评价
说实话,我一开始拿到《计算机算法的设计与分析》这本书,还有些担心它会过于学术化,读起来枯燥乏味。毕竟,算法这东西,有时候确实挺抽象的。但让我意外的是,这本书的语言风格相当平实,而且穿插了许多生动形象的比喻,让那些原本复杂的概念变得容易理解。例如,在解释图论中的最短路径算法时,作者并没有直接抛出Dijkstra或者Floyd-Warshall的公式,而是用了一个“旅行商”的比喻,模拟他在城市之间寻找最便宜路线的过程,这样一来,算法的动机和思路就一目了然了。这本书还非常注重算法的实际应用,它会结合一些常见的工程问题,来展示算法是如何被设计和应用的。这一点对于我这种更偏向实践应用的开发者来说,非常有价值。我不再只是死记硬背算法的实现,而是能够理解这些算法为何存在,以及它们在解决实际问题时所扮演的角色。读完之后,我感觉自己对算法的理解,从“知道”变成了“理解”,从“会用”变成了“会设计”,这种层次的提升,对于我未来的职业发展,无疑是巨大的助力。
对于我这样一名从业多年的软件工程师来说,算法固然重要,但有时候工作中的时间压力,让我难以深入钻研算法理论。《计算机算法的设计与分析》这本书,却以一种非常务实的方式,让我重新拾起了对算法的兴趣。它没有长篇累牍的数学证明,也没有故弄玄虚的理论框架,而是直击问题的核心,用最简洁、最有效的方式来阐述算法的精髓。我特别欣赏书中对常见算法的优化技巧的讲解,比如在处理大规模数据时,如何选择合适的哈希函数,或者如何利用特定的数据结构来加速查找。这些内容对于日常的性能调优工作非常有指导意义。而且,这本书的排版设计也非常人性化,代码示例清晰明了,图示也十分直观,即使是像我这样平时不太接触纯算法理论的人,也能快速跟上节奏。它让我意识到,即使是看似基础的算法,也蕴含着无数优化和改进的空间,而这些改进,往往能带来显著的性能提升。这本书就像一位经验丰富的导师,用一种温和而坚定的方式,引导我回顾并巩固了那些曾经被我忽略的算法知识。
这本书的名字叫《计算机算法的设计与分析》,光听名字我就觉得分量十足,但当我拿到手里,翻开第一页,才真正体会到什么叫做“严谨”和“深入”。它不是那种能让你快速上手、立刻解决眼前问题的工具书,而更像是带领你走进算法世界的导览图,让你从根本上理解为什么某些算法有效,为什么它们在特定的场景下表现优异。书中对各种经典算法的推导过程,那真是细致到了每一个步骤,仿佛生怕你遗漏了任何一个关键的思考环节。从递归的巧妙运用,到动态规划的层层递进,再到图论中那些错综复杂的路径探索,作者都用一种近乎“解剖”的方式,将算法的内在逻辑展现得淋漓尽致。我尤其喜欢书中关于复杂度分析的部分,它不像有些书那样只给公式和结论,而是花了大量篇幅去解释为什么会有这样的复杂度,以及不同复杂度之间在实际运行中会有怎样的天壤之别。读完这些,我对算法的理解不再是停留在“我知道怎么写个快速排序”的层面,而是能够更深层次地思考“为什么快速排序比冒泡排序快”,以及在什么条件下,其他排序算法可能反而更优。这本书的阅读体验,就像是在攀登一座知识的高峰,每一步都充满挑战,但也每一次都能带来豁然开朗的惊喜。
这本书的书名《计算机算法的设计与分析》本身就预示着它将是一次深入的探索之旅。它不像市面上一些泛泛而谈的书籍,而是真正聚焦于算法的“设计”与“分析”这两个核心环节。书中对于算法“设计”部分的阐述,让我对问题分解、抽象建模有了更深刻的认识。例如,在介绍递归和分治策略时,作者通过大量的实例,展示了如何将一个复杂的问题,一步步拆解成更小的、可以独立解决的子问题,然后将子问题的解组合起来,形成最终的答案。这种思维方式,对于解决任何复杂系统的问题,都具有普适性。而在“分析”部分,则更加强调了算法的严谨性。书中对于不同算法的渐进时间复杂度和空间复杂度的分析,并非简单的公式堆砌,而是通过细致的推导和论证,让我能够清晰地理解每一步的增长趋势,以及它们在不同规模输入下的表现差异。这种严谨的分析,让我能够更理性地选择适合特定场景的算法,而不是盲目地追求“最优”。总的来说,这本书不仅教授了我算法知识,更重要的是,它训练了我独立思考和严谨分析的能力。
作为一名对数据结构和算法有着浓厚兴趣的在读学生,我一直渴望找到一本能够系统性地、并且深入浅出地讲解算法设计思想的书籍。《计算机算法的设计与分析》恰好满足了我的这一需求。它不仅仅罗列了各种算法,更重要的是,它教会我如何去“思考”算法。书中对贪心算法、分治算法、回溯算法等不同设计范式的介绍,让我能够理解这些方法背后的通用思想,从而在面对新问题时,能够触类旁通,举一反三。我印象最深刻的是关于动态规划的章节,书中通过一系列精心挑选的例子,从最简单的背包问题到更复杂的序列比对,一步步引导我理解如何定义状态、如何写出状态转移方程,以及如何找到最优解。这种循序渐进的教学方式,让我这个曾经对动态规划望而却步的学生,逐渐建立了信心,并且掌握了这项强大的解决问题的工具。此外,书中在分析算法效率时,不仅关注时间复杂度,也兼顾了空间复杂度,这让我意识到在实际开发中,性能的优化是一个多维度的问题。这本书对我而言,不仅仅是学习知识,更是一种思维方式的训练,它培养了我严谨的逻辑思维和解决复杂问题的能力。
我之前错了……中译老jb烂了……附录的算法实现是译者的研究生写的,粗略翻了一下,虽然是C++代码但风格非常C……
我之前错了……中译老jb烂了……附录的算法实现是译者的研究生写的,粗略翻了一下,虽然是C++代码但风格非常C……
感觉数学味太重..
感觉数学味太重..
【翻过】一本比较早的算法好书。不过一上来就是自动机模型,算法介绍里面各种证明,有点难读。