具体描述
《计算机算法》主要讲述、分析了各种算法的基本原理和解题技巧,以五种通用的算法设计技术为主线论述了分治策略、贪心策略、动态规划策略、分支限界法、回溯法等问题,对算法的时间和空间复杂性进行了分析。在内容的选材上注重基本理论和具体实例的结合,以便于读者理解。《计算机算法》还对概率算法、近似算法、密码算法和NP问题进行了简单的介绍。
《计算机算法》可作为计算机系本科学生及研究生的教材,也可作为计算机科学研究和软件开发技术人员的参考用书。
作者简介
目录信息
1.1 算法的时间复杂性
1.2 算法的空间复杂性
1.3 两个算法的分析实例
1.4 算法设计技术
1.4.1 分治方法
1.4.2 回溯法
1.4.3 贪心法
1.4.4 动态规划法
1.4.5 分支限界法
1.4.6 递归方程解的展开式
习题
第2章 排序算法
2.1 插入算法
2.1.1 直接插入排序
2.1.2 折半插入排序
2.1.3 希尔排序
2.2 选择排序
2.2.1 直接选择排序
2.2.2 堆排序
2.3 交换排序
2.3.1 冒泡排序
2.3.2 快速排序
2.4 归并排序
2.5 基数排序
2.6 外部排序
2.6.1 归并排序
2.6.2 多步归并算法
2.7 各种内部排序方法的比较讨论
习题
第3章 查找树
3.1 二分查找树
3.2 2—3—4树
3.3 红黑树
3.4 8树
习题
第4章 图的算法
4.1 基本概念
4.2 图的表示方法
4.3 图的遍历
4.4 所有点对之间的最短路径
4.5 最小生成树
习题
第5章 串匹配
5.1 简单的字符串匹配算法
5.2 Knuth—Morris—Pratt(KMP)字符串匹配
5.3 BM算法
5.4 RK算法
习题
第6章 分治算法
6.1 二分搜索
6.2 求最大元和最小元
6.3 大整数乘法
6.4 矩阵乘法算法
6.5 矩阵乘积的Winograd算法
习题
第7章 贪心算法
7.1 背包问题
7.2 带时限的作业排序
7.3 单源最短路径问题
7.4 最小生成树问题
7.5 Dijkstra各点之间最短路径的优化算法
习题
第8章 回溯法
8.1 n皇后问题
8.2 图的着色问题
8.3 0—1背包问题
8.4 哈密顿回路
8.5 子集和数
习题
第9章 动态规划法
9.1 最长公共子序列问题
9.2 矩阵连乘问题
9.3 多阶段决策过程最优化问题
9.4 0—1背包问题
9.5 流水线调度问题
习题
第10章 分支限界法
10.1 分支限界的策略
10.2 0-1背包问题
习题
第11章 概率算法
11.l 随机数
11.2 数值概率算法
11.3 蒙特卡罗算法
11.4 拉斯维加斯算法
11.5 舍伍德算法
习题
第12章 几何问题算法
12.1 直线相交问题的算法
12.2 点是否包含在多边形内部
12.3 求凸包问题
习题
第13章 NP完全问题
13.1 不确定算法和不确定图灵机
13.2 NP难度和NP完全问题
13.3 COOK定理
13.4 几个NP完全问题
习题
第14章 密码学算法
14.1 什么是密码
14.2 基本数论
14.3 背包公钥密码
14.4 RSA算法
14.5 数字签名
习题
第15章 近似算法
15.1 任务调度近似算法.
15.2 顶点覆盖问题近似算法
15.3 旅行商问题的近似解
15.4 子集和数问题的近似算法
习题
第16章 并行算法
16.1 并行计算机
16.2 并行算法的基本概念
16.3 并行算法的描述
16.4 SIMD-SM上的非线性方程求根同步并行算法
16.5 SIMD-SM上的同步并行求和算法
16.6 SIMD-CC超立方机器上的同步并行求和算法
16.7 MIMD-SM上的异步并行求和算法
习题
参考文献
· · · · · · (收起)
读后感
用户评价
这本关于离散数学与计算复杂度的书籍,简直是理论计算机科学爱好者的饕餮盛宴!我特别喜欢作者对NP完全性问题证明的梳理,逻辑严密,层层递进,让人在跟着作者的思路走的时候,既感到挑战性,又充满了豁然开朗的喜悦。它不仅仅是一本教科书,更像是一场关于“什么是可计算”和“什么是不可计算”的哲学思辨之旅。书中对判定问题、搜索问题和优化问题之间的转换关系描述得非常到位,尤其是对PCP(Pigeonhole Principle)在证明中的巧妙应用,令人拍案叫绝。对于那些想深入理解程序语言语义、形式化验证或者密码学基础的读者,这本书提供的数学基础是无可替代的。它教会我的不是具体的编程技巧,而是对问题本质的抽象和建模能力,这是更高层次的编程智慧。
天哪,这本书简直是数据结构与算法的“清醒剂”!我承认,在实际工作中,我们经常习惯于调用库函数,久而久之,很多底层的数据结构是如何实现、时间复杂度究竟如何分析,都变得模糊不清了。这本书就像一剂强心针,把我拉回了最扎实的计算机科学基础。它对图算法的阐述尤其精彩,特别是对Dijkstra和Bellman-Ford算法的比较分析,不仅仅是停留在代码实现层面,更深入探讨了在不同图结构和权重条件下,选择哪种算法的性能最优,甚至还涉及到了近似算法的适用场景。排版清晰,配图精妙,很多抽象的概念通过图示变得一目了然。对于准备技术面试的读者来说,这本书提供的不仅仅是解题思路,更是一种严谨的计算思维模式,让你在面对复杂问题时,能够迅速构建出最优的解决方案框架。
我一直对数据库系统的内部工作原理感到好奇,尤其是事务处理和查询优化方面。这本书在这方面的阐述可以说是详尽到令人发指,但绝不拖沓。它把一个复杂的查询是如何被解析、如何被优化器选择执行路径,以及如何在多用户环境下保证ACID特性的过程,拆解得细致入微。作者对B+树索引结构在高并发读写场景下的锁粒度控制和WAL(Write-Ahead Logging)机制的讲解,简直是教科书级别的范例。我特别欣赏它对不同隔离级别(如快照隔离和可串行化)的性能权衡分析,这在实际系统设计中至关重要。这本书读完后,我不再仅仅是一个SQL使用者,而是开始理解为什么数据库会以特定的方式运行,这让我能够写出更健壮、性能更高的持久化层代码。
我一直以为,操作系统原理和并发编程是硬核中的硬核,枯燥又难懂。直到我翻开了这本关于系统底层优化的宝典。这本书的厉害之处在于,它没有用过于理论化的语言去描述复杂的进程调度和内存管理,而是巧妙地将这些概念融入到实际的性能瓶颈分析中。比如,它花了很大篇幅解析了I/O模型(如epoll和kqueue)在处理高并发网络请求时的底层机制,以及如何通过无锁数据结构来避免锁竞争带来的性能损失。对于编写高性能网络服务或数据库系统的开发者来说,这本书提供的视角是革命性的。它让我意识到,很多我们习以为常的“卡顿”,其实都可以通过对并发原语和缓存一致性的深入理解来迎刃而解。读完后,我对如何榨干硬件的每一分性能,有了全新的认识和实用的工具箱。
这本书简直是人工智能领域的“圣经”!我本来以为自己对机器学习的基础概念已经 cukup 了解了,但读了这本书后才发现,自己之前的理解简直是冰山一角。作者对深度学习的数学原理剖析得极其透彻,尤其是卷积神经网络和循环神经网络的推导过程,简直是化繁为简的大师手笔。它没有仅仅停留在对现有模型的介绍上,而是深入挖掘了模型背后的优化算法和收敛性证明,这一点对于想从事前沿研究的读者来说,简直是无价之宝。书中对最新Transformer架构的解读,更是结合了最新的研究论文,提供了清晰的理论框架和代码实现的思路。读完感觉自己的研究思路一下子开阔了许多,对于如何设计更高效、更具泛化能力的AI模型,也有了更深刻的洞察。这本书的深度和广度,绝对是值得反复研读的经典之作,强烈推荐给所有想在AI领域深耕的工程师和研究人员。