算法导论第四版

article/2025/10/19 21:13:16
摘要: 算法导论第四版介绍

【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,原创文章】
我的网站:潮汐朝夕的生活实验室
我的公众号:算法题刷刷
我的知乎:潮汐朝夕
我的github:FennelDumplings
我的leetcode:FennelDumplings


在这里插入图片描述

本文介绍一下算法导论第四版。本书的第四版是去年出来的,新增了机器学习算法等内容,还是有不少更新的。本书完整下载链接如下

  • 第三版中文版以及习题答案,第四版英文版

本文首先简要介绍一下这本书,然后对目录做一些记录,以后有需要的时候可以快速找到需要的章节。

简介

《Introduction to Algorithm》是由 Thomas H. Cormen,Charles E. Leiserson,Ronald L. Rivest,Clifford Stein 编写,MIT 出版的一本介绍、分析当代计算机算法的图书。一般用四位作者姓的首字母组成的 CLRS 代表此书。

本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计分析能为各个层次的读者接受。

全书各章自成体系,可以作为独立的学习单元。算法以伪代码的形式描述;说明和解释力求浅显易懂,不失深度和数学严谨性。

本书在 2012 年出了第三版,当时第3版的主要变化为:

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

第四版中被删除的第三版内容

删除内容这里做个记录,需要的时候可以看第三版。

  • Fibonacci heaps(第3版 $19)
  • van Emde Boas trees(第3版 $20)
  • computational geometry(第3版 $33)
  • the maximum-subarray problem
  • implementing pointers and objects(第3版 $10-3)
  • perfect hashing(第3版 $11-5)
  • randomly built binary search trees(第3版 $12-4)
  • matroids(第3版 $15-4)
  • push-relabel algorithms for maximum flow(第3版 $26-4)
  • the iterative fast Fourier transform method
  • the details of the simplex algorithm for linear programming(第3版 $29-3)
  • integer factorization

第四版中更新的第三版内容和新增内容

一些新增或更新内容这里也做个汇总

  • Chap3:
    • giving an overview of asymptotic notation before delving into the formal definitions
  • Chap4:
    • underwent substantial changes to improve its mathematical foundation and make it more robust and intuitive.
    • The notion of an algorithmic recurrence was introduced
    • the topic of ignoring floors and ceilings in recurrences was addressed more rigorously
    • The second case of the master theorem incorporates polylogarithmic factors
    • a rigorous proof of a “continuous” version of the master theorem is now provided
    • present the powerful and general Akra-Bazzi method (without proof).
  • Chap9:
    • The deterministic order-statistic algorithm is slightly different
    • the analyses of both the randomized and deterministic order-statistic algorithms have been revamped.
  • Chap10:
    • In addition to stacks and queues, discusses ways to store arrays and matrices.
  • Chap11:
    • a modern treatment of hash functions
    • linear probing as an efficient method for resolving collisions when the underlying hardware implements caching to favor local searches.
  • Chap15:
    • To offline caching into a full section.
  • Chap16:
    • a more intuitive explanation of the potential functions to analyze table doubling and halving.
  • Chap17:
    • augmenting data structures was relocated from Part III to Part V.
  • Chap25:
    • a new chapter about matchings in bipartite graphs.
    • It presents algorithms to find a matching of maximum cardinality
    • solve the stable-marriage problem
    • find a maximum-weight matching (known as the “assignment problem”).
  • Chap26:
    • task-parallel computing has been updated with modern terminology
  • Chap27:
    • online algorithms, is another new chapter.
    • In an online algorithm, the input arrives over time, rather than being available in its entirety at the start of the algorithm.
    • describes several examples of online algorithms
      • determining how long to wait for an elevator before taking the stairs
      • maintaining a linked list via the move-to-front heuristic
      • evaluating replacement policies for caches.
  • Chap29:
    • we removed the detailed presentation of the simplex algorithm, as it was math heavy without really conveying many algorithmic ideas.
    • The chapter now focuses on the key aspect of how to model problems as linear programs
    • the essential duality property of linear programming.
  • chap32:
    • adds structure of suffix arrays.
  • Chap33:
    • machine learning, is the third new chapter.
    • several basic methods used in machine learning:
      • clustering to group similar items together
      • weighted-majority algorithms
      • gradient descent to find the minimizer of a function
  • Chap34:
    • summarizes strategies for reductions to show that problems are NP-hard.
  • Chap35:
    • polynomial-time The proof of the approximation algorithm for the set-covering problem.

Part1 基础知识

  • 1 算法在计算中的作用
  • 2 算法基础
    • 2.1 插入排序
    • 2.2 分析算法
    • 2.3 设计算法
      • 2.3.1 分治法
      • 2.3.2 分析分治算法
  • 3 函数的增长
    • 3.1 渐近记号
    • 3.2 标准记号与常用函数
  • 4 分治策略
    • 4.1 最大子数组问题
    • 4.2 矩阵乘法的Strasse
    • 4.3 用代入法求解递归式
    • 4.4 用递归树方法求解递归式
    • 4.5 用主方法求解递归式
    • 4.6 证明主定理
      • 4.6.1 对b的幂证明主定理
      • 4.6.2 向下取整和向
    • (新增)4.7 Akra-Bazzi recurrences
  • 5 概率分析和随机算法
    • 5.1 雇用问题
    • 5.2 指示器随机变量
    • 5.3 随机算法
    • 5.4 概率分析和指示器随机变量的进一步使用
      • 5.4.1 生日悖论
      • 5.4.2 球与箱子
      • 5.4.3 特征序列
      • 5.4.4 在线雇用问题

Part2 排序和顺序统计量

  • 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 最坏情况为线性时间的选择算法

Part3 数据结构

  • 10 基本数据结构
    • 10.1 栈和队列
    • 10.2 链表
    • 10.3 有根树的表示
  • 11 散列表
    • 11.1 直接寻址表
    • 11.2 散列表
    • 11.3 散列函数
      • 11.3.1 除法散列法
      • 11.3.2 乘法散列法
      • 11.3.3 全域散列法
    • 11.4 开放寻址法
    • (新增)11.5 Practical considerations
  • 12 二叉搜索树
    • 12.1 什么是二叉搜索树
    • 12.2 查询二叉搜索树
    • 12.3 插入和删除
  • 13 红黑树
    • 13.1 红黑树的性质
    • 13.2 旋转
    • 13.3 插入
    • 13.4 删除

Part4 高级设计和分析技术

  • 14 动态规划
    • 14.1 钢条切割
    • 14.2 矩阵链乘法
    • 14.3 动态规划原理
    • 14.4 最长公共子序列
    • 14.5 最优二叉搜索树
  • 15 贪心算法
    • 15.1 活动选择问题
    • 15.2 贪心算法原理
    • 15.3 赫夫曼编码
    • (新增)15.4 Offline caching
  • 16 摊还分析
    • 16.1 聚合分析
    • 16.2 核算法
    • 16.3 势能法
    • 16.4 动态表
      • 16.4.1 表扩张
      • 16.4.2 表扩张和收缩

Part5 高级数据结构

  • 17 数据结构的扩张
    • 17.1 动态顺序统计
    • 17.2 如何扩张数据结构
    • 17.3 区间树
  • 18 B树
    • 18.1 B树的定义
    • 18.2 B树上的基本操作
    • 18.3 从B树中删除关键字
  • 19 用于不相交集合的数据结构
    • 19.1 不相交集合的操作
    • 19.2 不相交集合的链表表示
    • 19.3 不相交集合森林
    • 19.4 带路径压缩的按秩合并的分析

Part6 图算法

  • 20 基本的图算法
    • 20.1 图的表示
    • 20.2 广度优先搜索
    • 20.3 深度优先搜索
    • 20.4 拓扑排序
    • 20.5 强连通分量
  • 21 最小生成树
    • 21.1 最小生成树的形成
    • 21.2 Kruskal算法和Prim算法
  • 22 单源最短路径
    • 22.1 Bellman-Ford算法
    • 22.2 有向无环图中的单源最短路径问题
    • 22.3 Dijkstra算法
    • 22.4 差分约束和最短路径
    • 22.5 最短路径性质的证明
  • 23 所有结点对的最短路径问题
    • 23.1 最短路径和矩阵乘法
    • 23.2 Floyd-Warshall算法
    • 23.3 用于稀疏图的Johnson算法
  • 24 最大流
    • 24.1 流网络
    • 24.2 Ford-Fulkerson方法
    • 24.3 最大二分匹配
  • (新增)25 Matchings in Bipartite Graphs
    • (新增)25.1 Maximum bipartite matching (revisited)
    • (新增)25.2 The stable-marriage problem
    • (新增)25.3 The Hungarian algorithm for the assignment problem

Part7 专题

  • 26 多线程算法
    • 26.1 动态多线程基础
    • 26.2 多线程矩阵乘法
    • 26.3 多线程归并排序
  • (新增)27 Online Algorithms
    • (新增)27.1 Waiting for an elevator
    • (新增)27.2 Maintaining a search list
    • (新增)27.3 Online caching
  • 28 矩阵运算
    • 28.1 求解线性方程组
    • 28.2 矩阵求逆
    • 28.3 对称正定矩阵和最小二乘逼近
  • 29 线性规划
    • 29.1 标准型和松弛型
    • 29.2 将问题表达为线性规划
    • 29.3 对偶性
  • 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算法
    • (新增)32.5 Suffix arrays
  • (新增)33 Machine-Learning Algorithms
    • (新增)33.1 Clustering
    • (新增)33.2 Multiplicative-weights algorithms
    • (新增)33.3 Gradient descent
  • 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 子集和问题

Part8 附录:数学基础知识

  • 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 矩阵基本性质

http://chatgpt.dhexx.cn/article/JRQlfV6N.shtml

相关文章

山东大学软件学院2021算法导论期末试题

山大软院算法期末题回忆版 可能乱序and有差错,仅供参考 老师会捞的 题目都很简单 不需要太复习 1.三种时间复杂度比较异同 2.T(n)T(n*3/4)nlogn 求T(n)的最大上界 3.npc问题证明 4.强连通分量 算法思想和证明 5.图三个证明 (1)证明最短路的…

算法导论第三版 第29章习题答案

参考文献: https://walkccc.me/CLRS/Chap29/29.1/https://sites.math.rutgers.edu/~ajl213/CLRS/ 29.Linear Programming 29.1 Standard and slack forms 1.If we express the linear program in (29.24)–(29.28) in the compact notation of (29.19)–(29.21)…

算法导论 观后感一

此文章只作为自己看算法导论的一些理解和想法,希望自己能坚持下去。 算法的在计算中的应用 什么是算法?算法的作用?为什么要研究算法?对于算法我常有的想法是必然和数学相关,而且必定是高等数学之上的。甚至很多目前…

《算法导论》常见算法总结

前言:本篇文章总结中用到很多其他博客内容,本来想附上原作链接,但很久了未找到,这里关于原创性均来源于原作者。 分治法 分治策略的思想: 顾名思义,分治是将一个原始问题分解成多个子问题,而…

算法导论复习题

文章目录 第一章 复杂度第二章 递归与分治2.1 排列问题2.2 整数划分问题2.3 分治时间复杂度2.5 汉诺塔时间复杂度2.6二分搜索时间复杂度2.7 金块问题2.9 棋盘覆盖复杂度2.10 合并排序时间复杂度2.11 快速排序2.11 线性时间选择 第三章 动态规划3.1 矩阵连乘问题3.2 最长公共子序…

算法导论 pdf_下载算法导论_高清_pdf

关注我,持续更新好资料 点击下方链接,获得资料 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 这个公众号全是好资料,干货满满 算法导论pdf下载_书籍大小55M 此内容,仅限个人阅读,不得翻印,不得上传网络,不得用于谋利。 若因传播引起任何纠纷,由下载者自行负责。…

算法导论

1.算法在计算中的作用 1.1算法 算法解决哪些问题 数据结构 技术,算法设计分析技术 难题,PE完全问题 并行性 1.2作为一种技术的算法 效率 算法与其他技术 2.算法基础 2.1插入排序 代码 public static void main(String[] args) {int[] array {5, 2, 4, 6…

书评《算法导论》

最近空闲时间在看《算法导论》。由于之前有数据结构与算法的基础,并且也写过几百道代码题。所以现在看这本书反而有了一些更深的感悟。 《算法导论》确实不适合初学者,尤其是不适合实践派。对于实践派,《数据结构与算法分析——C语言描述》、…

蓝牙sbc怎么解决_【科普】蓝牙音频常用的编解码格式

蓝牙耳机的参数你是否都了解,那些看起来貌似高大上的技术是如何改变蓝牙音质和传输稳定性的,下面dy君就带你了解主流的几种蓝牙音频编码格式: SBC (Sub-band coding,子带编码) 最早的格式应该是SBC,SBC是A2DP(Advanced Audio DistribuTIon Profile,蓝牙音频传输协议)…

蓝牙音频双剑客(二)--高质量音频分布协议(A2DP) 连接播放音乐断开流程(被连接)介绍

零. 概述 主要介绍下蓝牙协议栈(bluetooth stack)传统蓝牙音频协议之高质量音频分布协议(A2DP) 连接播放音乐断开流程(被连接)介绍 一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍…

基于AVDTP信令分析蓝牙音频启动流程

前言 公司项目edifier那边需要在原来音频SBC,AAC基础上增加LHDC5.0编码,在打通lhdc协议栈之前,学习记录一番AVDTP音频服务流程。 一、AVDTP音频流基础知识 分析音频流程首先应具备的最简单基础概念知识:AVDTP信令signal,流端点se…

蓝牙音频广播多连接模块技术方案

蓝牙我们应该都很熟悉,现在的蓝牙应用在生活中随时随地都可以见得到,尤其是蓝牙音频;常见的蓝牙一般都是点对点的,或者就是TWS,一拖二功能,但是有一些使用场景,是需要一拖多的,需要多个音响同步…

当前市场主流蓝牙音频SOC

2020年5月9日更: 目前安卓已经全面支持LDAC了,讨论其他格式的蓝牙音频方案已经没多大意义了。 对于真无线耳机方案来说,也就剩高通和苹果了,开发者可选也就高通了。 这个市场已经归一统了~~~~~~不要看下面的内容浪费时间了。 -…

海贝思蓝牙接收器Linux,Hagibis海备思 蓝牙音频接收 耳机怎么样,评测

Hagibis海备思 蓝牙音频接收 耳机怎么样,评测: 1、很不错,与车子AUX连接电话声音很青楚,物有值 2、还行,免提打电话效果还可以,就是充电线和音频线一起走的那么细一根线,我也是醉了。声音效果一般&#xff…

蓝牙音频编码简介 - SBC、AAC、AptX、LDAC、LHDC

https://zhuanlan.zhihu.com/p/265597723 早在2000年,蓝牙耳机就已经出现,但由于技术限制,只能用于通话。2008年,随着蓝牙A2DP(Advanced Audio Distribution Profile)开始普及,立体声蓝牙耳机日渐流行。发展到现在&am…

蓝牙技术|伦茨科技带你了解蓝牙音频

蓝牙设备在日常生活中随处可见,用蓝牙耳机或音箱听音乐已经成为蓝牙最主流的应用之一。这些都用到我们的蓝牙音频技术。 蓝牙音频协议HFP,HSP,A2DP,AVRCP,OPP,PBAP HFP HFP(Hands-free Profile)&#xf…

蓝牙基础:蓝牙音频

前言 蓝牙耳机中存在两种 通话音频 和 音乐音频两种音频。 1 通话音频 1.1 音频链路 通话中的音频数据(Audio)直接通过基带上的SCO链路进行传输 音频通路(1) Audio-》Voice-》SCO/eSCO-》HCI-》Baseband(2) Audio-》Voice-》PCM-》Baseband这两种方…

ZYNQ平台Linux4.6内核蓝牙音频

第1章 RTL8723BU蓝牙模块驱动移植 1.1. 硬件方案 1.2. 蓝牙驱动移植 1.3. 蓝牙耳机规格要求 第2章 Linux音频框架 2.1. ALSA 2.2. Pulseaudio 2.3. GStreamer 2.4. Jack 2.5. FFADO 2.6. Xine 2.7. Phonon 2.8. 其他分支 第3章 蓝牙协议栈Bluez 3.1…

蓝牙的音频通路

如上图: 音频通路1:Audio->L2CAP->ACL->HCI->Baseband,a2dp音频走这种方式; 音频通路2:Audio->Voice->SCO/eSCO->HCI->Baseband,hfp、hsp蓝牙通话走这种方式; 音频通路…

蓝牙音频编码协议

文章目录 一、人耳需要什么样的采样率二、采样率分类三、蓝牙音频编码协议分类 一、人耳需要什么样的采样率 人耳对声音的分辨率是在20Hz~~~~20KHz的范围。 二、采样率分类 常见的蓝牙音频采样率: 44.1KHz48.0KHz88.2Khz96Khz 三、蓝牙音频编码协议分类 SBC 全…