阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      算法导论

      算法导论

      内容简介

      在有关算法的书中,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性。《算法导论(原书第 3 版)/ 计算机科学丛书》将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。

      《算法导论(原书第 3 版)/ 计算机科学丛书》全书选材经典、内容丰富、结构合理、逻辑清晰,对本科生的数据结构课程和研究生的算法课程都是非常实用的教材,在 IT 专业人员的职业生涯中,《算法导论(原书第 3 版)/ 计算机科学丛书》也是一本案头必备的参考书或工程实践手册。

      第 3 版的主要变化:

      • 新增了 van Emde Boas 树和多线程算法,并且将矩阵基础移至附录。
      • 修订了递归式(现在称为“分治策略”)那一章的内容,更广泛地覆盖分治法。
      • 移除两章很少讲授的内容:二项堆和排序网络。
      • 修订了动态规划和贪心算法相关内容。
      • 流网络相关材料现在基于边上的全部流。
      • 由于关于矩阵基础和 Strassen 算法的材料移到了其他章,矩阵运算这一章的内容所占篇幅更小。
      • 修改了对 Knuth-Morris-Pratt 字符串匹配算法的讨论。
      • 新增 100 道练习和 28 道思考题,还更新并补充了参考文献。

      作者简介

      Thomas H. Cormen (托马斯·科尔曼),达特茅斯学院计算机科学系教授、系主任。目前的研究兴趣包括:算法工程、并行计算、具有高延迟的加速计算。他分别于 1993 年、1986 年获得麻省理工学院电子工程和计算机科学博士、硕士学位,师从 Charles E. Leiserson 教授。由于他在计算机教育领域的突出贡献,Cormen 教授荣获 2009 年 ACM 杰出教员奖。

      Charles E. Leiserson(查尔斯·雷瑟尔森),麻省理工学院计算机科学与电气工程系教授,Margaret MacVicar Faculty Fellow。他目前主持 MIT 超级计算技术研究组,并是 MIT 计算机科学和人工智能实验室计算理论研究组的成员。他的研究兴趣集中在并行和分布式计算的理论原理,尤其是与工程现实相关的技术研究。Leiserson 教授拥有卡内基·梅隆大学计算机科学博士学位,还是 ACM、IEEE 和 SIAM 的会士。

      Ronald L. Rivest (罗纳德·李维斯特),现任麻省理工学院电子工程和计算机科学系安德鲁与厄纳·维特尔比(Andrew and Erna Viterbi)教授。他是 MIT 计算机科学和人工智能实验室的成员,并领导着其中的信息安全和隐私中心。他 1977 年从斯坦福大学获得计算机博士学位,主要从事密码安全、计算机安全算法的研究。他和 Adi Shamir 和 Len Adleman 一起发明了 RSA 公钥算法,这个算法在信息安全中获得大的突破,这一成果也使他和 Shamir、Adleman 一起得到 2002 年 ACM 图灵奖。他现在担任国家密码学会的负责人。

      Clifford Stein(克利福德·斯坦),哥伦比亚大学计算机科学系和工业工程与运筹学系教授,他还是工业工程与运筹学系的系主任。在加入哥伦比亚大学大学之前,他在达特茅斯学院计算机科学系任教 9 年。Stein 教授拥有 MIT 硕士和博士学位。他的研究兴趣包括:算法的设计与分析,组合优化、运筹学、网络算法、调度、算法工程和生物计算。

      目录

      • 出版者的话
      • 译者序
      • 前言

      第一部分 基础知识

      第 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 向下取整和向上取整
      • 思考题
      • 本章注记

      第 5 章 概率分析和随机算法

      • 5.1 雇用问题
      • 5.2 指示器随机变量
      • 5.3 随机算法
      • 5.4 概率分析和指示器随机变量的进一步使用
      • 5.4.1 生日悖论
      • 5.4.2 球与箱子
      • 5.4.3 特征序列
      • 5.4.4 在线雇用问题
      • 思考题
      • 本章注记

      第二部分 排序和顺序统计量

      第 6 章 堆排序

      • 6.1 堆
      • 6.2 维护堆的性质
      • 6.3 建堆
      • 6.4 堆排序算法
      • 6.5 优先队列
      • 思考题
      • 本章注记

      第 7 章 快速排序

      • 7.1 快速排序的描述
      • 7.2 快速排序的性能
      • 7.3 快速排序的随机化版本
      • 7.4 快速排序分析
      • 7.4.1 最坏情况分析
      • 7.4.2 期望运行时间
      • 思考题
      • 本章注记

      第 8 章 线性时间排序

      • 8.1 排序算法的下界
      • 8.2 计数排序
      • 8.3 基数排序
      • 8.4 桶排序
      • 思考题
      • 本章注记

      第 9 章 中位数和顺序统计量

      • 9.1 最小值和最大值
      • 9.2 期望为线性时间的选择算法
      • 9.3 最坏情况为线性时间的选择算法
      • 思考题
      • 本章注记

      第三部分 数据结构

      第 10 章 基本数据结构

      • 10.1 栈和队列
      • 10.2 链表
      • 10.3 指针和对象的实现
      • 10.4 有根树的表示
      • 思考题
      • 本章注记

      第 11 章 散列表

      • 11.1 直接寻址表
      • 11.2 散列表
      • 11.3 散列函数
      • 11.3.1 除法散列法
      • 11.3.2 乘法散列法
      • 11.3.3 全域散列法
      • 11.4 开放寻址法
      • 11.5 完全散列
      • 思考题
      • 本章注记

      第 12 章 二叉搜索树

      • 12.1 什么是二叉搜索树
      • 12.2 查询二叉搜索树
      • 12.3 插入和删除
      • 12.4 随机构建二叉搜索树
      • 思考题
      • 本章注记

      第 13 章 红黑树

      • 13.1 红黑树的性质
      • 13.2 旋转
      • 13.3 插入
      • 13.4 删除
      • 思考题
      • 本章注记

      第 14 章 数据结构的扩张

      • 14.1 动态顺序统计
      • 14.2 如何扩张数据结构
      • 14.3 区间树
      • 思考题
      • 本章注记

      第四部分 高级设计和分析技术

      第 15 章 动态规划

      • 15.1 钢条切割
      • 15.2 矩阵链乘法
      • 15.3 动态规划原理
      • 15.4 最长公共子序列
      • 15.5 最优二叉搜索树
      • 思考题
      • 本章注记

      第 16 章 贪心算法

      • 16.1 活动选择问题
      • 16.2 贪心算法原理
      • 16.3 赫夫曼编码
      • 16.4 拟阵和贪心算法
      • 16.5 用拟阵求解任务调度问题
      • 思考题
      • 本章注记

      第 17 章 摊还分析

      • 17.1 聚合分析
      • 17.2 核算法
      • 17.3 势能法
      • 17.4 动态表
      • 17.4.1 表扩张
      • 17.4.2 表扩张和收缩
      • 思考题
      • 本章注记

      第五部分 高级数据结构

      第 18 章 B 树

      • 18.1 B 树的定义
      • 18.2 B 树上的基本操作
      • 18.3 从 B 树中删除关键字
      • 思考题
      • 本章注记

      第 19 章 斐波那契堆

      • 19.1 斐波那契堆结构
      • 19.2 可合并堆操作
      • 19.3 关键字减值和删除一个结点
      • 19.4 最大度数的界
      • 思考题
      • 本章注记

      第 20 章 van Emde Boas 树

      • 20.1 基本方法
      • 20.2 递归结构
      • 20.2.1 原型 van Emde Boas 结构
      • 20.2.2 原型 van Emde Boas 结构上的操作
      • 20.3 van Emde Boas 树及其操作
      • 20.3.1 van Emde Boas 树
      • 20.3.2 van Emde Boas 树的操作
      • 思考题
      • 本章注记

      第 21 章 用于不相交集合的数据结构

      • 21.1 不相交集合的操作
      • 21.2 不相交集合的链表表示
      • 21.3 不相交集合森林
      • *21.4 带路径压缩的按秩合并的分析
      • 思考题
      • 本章注记

      第六部分 图算法

      第 22 章 基本的图算法

      • 22.1 图的表示
      • 22.2 广度优先搜索
      • 22.3 深度优先搜索
      • 22.4 拓扑排序
      • 22.5 强连通分量
      • 思考题
      • 本章注记

      第 23 章 最小生成树

      • 23.1 最小生成树的形成
      • 23.2 Kruskal 算法和 Prim 算法
      • 思考题
      • 本章注记

      第 24 章 单源最短路径

      • 24.1 Bellman-Ford 算法
      • 24.2 有向无环图中的单源最短路径问题
      • 24.3 Dijkstra 算法
      • 24.4 差分约束和最短路径
      • 24.5 最短路径性质的证明
      • 思考题
      • 本章注记

      第 25 章 所有结点对的最短路径问题

      • 25.1 最短路径和矩阵乘法
      • 25.2 FloydWarshall 算法
      • 25.3 用于稀疏图的 Johnson 算法
      • 思考题
      • 本章注记

      第 26 章 最大流

      • 26.1 流网络
      • 26.2 Ford\Fulkerson 方法
      • 26.3 最大二分匹配
      • 26.4 推送重贴标签算法
      • 26.5 前置重贴标签算法
      • 思考题
      • 本章注记

      第七部分 算法问题选编

      第 27 章 多线程算法

      • 27.1 动态多线程基础
      • 27.2 多线程矩阵乘法
      • 27.3 多线程归并排序
      • 思考题
      • 本章注记

      第 28 章 矩阵运算

      • 28.1 求解线性方程组
      • 28.2 矩阵求逆
      • 28.3 对称正定矩阵和最小二乘逼近
      • 思考题
      • 本章注记

      第 29 章 线性规划

      • 29.1 标准型和松弛型
      • 29.2 将问题表达为线性规划
      • 29.3 单纯形算法
      • 29.4 对偶性
      • 29.5 初始基本可行解
      • 思考题
      • 本章注记

      第 30 章 多项式与快速傅里叶变换

      • 30.1 多项式的表示
      • 30.2 DFT 与 FFT
      • 30.3 高效 FFT 实现
      • 思考题
      • 本章注记

      第 31 章 数论算法

      • 31.1 基础数论概念
      • 31.2 最大公约数
      • 31.3 模运算
      • 31.4 求解模线性方程
      • 31.5 中国余数定理
      • 31.6 元素的幂
      • 31.7 RSA 公钥加密系统
      • 31.8 素数的测试
      • 31.9 整数的因子分解
      • 思考题
      • 本章注记

      第 32 章 字符串匹配

      • 32.1 朴素字符串匹配算法
      • 32.2 Rabin\Karp 算法
      • 32.3 利用有限自动机进行字符串匹配
      • 32.4 Knuth-Morris-Pratt 算法
      • 思考题
      • 本章注记

      第 33 章 计算几何学

      • 33.1 线段的性质
      • 33.2 确定任意一对线段是否相交
      • 33.3 寻找凸包
      • 33.4 寻找最近点对
      • 思考题
      • 本章注记

      第 34 章 NP 完全性

      • 34.1 多项式时间
      • 34.2 多项式时间的验证
      • 34.3 NP 完全性与可归约性
      • 34.4 NP 完全性的证明
      • 34.5 NP 完全问题
      • 34.5.1 团问题
      • 34.5.2 顶点覆盖问题
      • 34.5.3 哈密顿回路问题
      • 34.5.4 旅行商问题
      • 34.5.5 子集和问题
      • 思考题
      • 本章注记

      第 35 章 近似算法

      • 35.1 顶点覆盖问题
      • 35.2 旅行商问题
      • 35.2.1 满足三角不等式的旅行商问题
      • 35.2.2 一般旅行商问题
      • 35.3 集合覆盖问题
      • 35.4 随机化和线性规划
      • 35.5 子集和问题
      • 思考题
      • 本章注记

      第八部分 附录:数学基础知识

      • 附录 A 求和
      • A.1 求和公式及其性质
      • A.2 确定求和时间的界
      • 思考题
      • 附录注记
      • 附录 B 集合等离散数学内容
      • B.1 集合
      • B.2 关系
      • B.3 函数
      • B.4 图
      • B.5 树
      • B.5.1 自由树
      • B.5.2 有根树和有序树
      • B.5.3 二叉树和位置树
      • 思考题
      • 附录注记
      • 附录 C 计数与概率
      • C.1 计数
      • C.2 概率
      • C.3 离散随机变量
      • C.4 几何分布与二项分布
      • *C.5 二项分布的尾部
      • 思考题
      • 附录注记
      • 附录 D 矩阵
      • D.1 矩阵与矩阵运算
      • D.2 矩阵基本性质
      • 思考题
      • 附录注记
      • 参考文献
      • 索引
      目录
      目录