算法导论 (Introduction to Algorithms, 4th Edition)

      +
      关于本书

      《算法导论》(Introduction to Algorithms, 4th Edition) 由 Cormen、Leiserson、Rivest、Stein 合著(合称 CLRS),是计算机科学领域最经典的算法教材之一。本书全面系统地介绍了算法的设计与分析,涵盖从基础数据结构到高级图算法、计算几何、近似算法等广泛主题。

      本书共 8 个部分:

      • 第 I 部分 基础 (Foundations):算法在计算中的作用、算法入门、函数的增长、分治策略、概率分析与随机算法。

      • 第 II 部分 排序与顺序统计 (Sorting and Order Statistics):堆排序、快速排序、线性时间排序、中位数与顺序统计。

      • 第 III 部分 数据结构 (Data Structures):基本数据结构、散列表、二叉搜索树、红黑树、数据结构的扩充。

      • 第 IV 部分 高级设计与分析技术 (Advanced Design and Analysis Techniques):动态规划、贪心算法、摊还分析。

      • 第 V 部分 高级数据结构 (Advanced Data Structures):B 树、斐波那契堆、van Emde Boas 树、不相交集合的数据结构。

      • 第 VI 部分 图算法 (Graph Algorithms):基本图算法、最小生成树、单源最短路径、全对最短路径、最大流。

      • 第 VII 部分 算法问题选编 (Selected Topics):多线程算法、矩阵运算、线性规划、多项式与 FFT、数论算法、字符串匹配、计算几何、NP 完全性、近似算法。

      • 第 VIII 部分 数学基础附录 (Appendix: Mathematical Background):求和、集合等、计数与概率、矩阵。

      阅读建议

      • 第一遍通读:先看每章的「核心结论」「核心概念」「思维导图」建立全局观。

      • 第二遍精读:阅读「详细笔记」,配合原书章节,理解每条概念。

      • 第三遍做题:完成每章的「重点与易错点」自测,检验理解深度。

      • 配套代码:原书为伪代码;建议用 C++/Python/Java 自行实现关键算法加深理解。

      章节列表

      章节 标题

      第 1 章

      算法在计算中的作用 (The Role of Algorithms in Computing)

      第 2 章

      算法入门 (Getting Started)

      第 3 章

      函数的增长 (Growth of Functions)

      第 4 章

      分治策略 (Divide-and-Conquer)

      第 5 章

      概率分析与随机算法 (Probabilistic Analysis and Randomized Algorithms)

      第 6 章

      堆排序 (Heapsort)

      第 7 章

      快速排序 (Quicksort)

      第 8 章

      线性时间排序 (Sorting in Linear Time)

      第 9 章

      中位数与顺序统计 (Medians and Order Statistics)

      第 10 章

      基本数据结构 (Elementary Data Structures)

      第 11 章

      散列表 (Hash Tables)

      第 12 章

      二叉搜索树 (Binary Search Trees)

      第 13 章

      红黑树 (Red-Black Trees)

      第 14 章

      数据结构的扩充 (Augmenting Data Structures)

      第 15 章

      动态规划 (Dynamic Programming)

      第 16 章

      贪心算法 (Greedy Algorithms)

      第 17 章

      摊还分析 (Amortized Analysis)

      第 18 章

      B 树 (B-Trees)

      第 19 章

      斐波那契堆 (Fibonacci Heaps)

      第 20 章

      van Emde Boas 树 (van Emde Boas Trees)

      第 21 章

      不相交集合的数据结构 (Data Structures for Disjoint Sets)

      第 22 章

      基本图算法 (Elementary Graph Algorithms)

      第 23 章

      最小生成树 (Minimum Spanning Trees)

      第 24 章

      单源最短路径 (Single-Source Shortest Paths)

      第 25 章

      全对最短路径 (All-Pairs Shortest Paths)

      第 26 章

      最大流 (Maximum Flow)

      第 27 章

      多线程算法 (Multithreaded Algorithms)

      第 28 章

      矩阵运算 (Matrix Operations)

      第 29 章

      线性规划 (Linear Programming)

      第 30 章

      多项式与 FFT (Polynomials and the FFT)

      第 31 章

      数论算法 (Number-Theoretic Algorithms)

      第 32 章

      字符串匹配 (String Matching)

      第 33 章

      计算几何 (Computational Geometry)

      第 34 章

      NP 完全性 (NP-Completeness)

      第 35 章

      近似算法 (Approximation Algorithms)

      附录 A

      求和 (Summations)

      附录 B

      集合等 (Sets, Etc.)

      附录 C

      计数与概率 (Counting and Probability)

      附录 D

      矩阵 (Matrices)

      符号与记法

      本书使用统一的渐近记号:

      • \(\Theta(g(n))\) —— 紧确界(同时是上界与下界)

      • \(O(g(n))\) —— 渐近上界

      • \(\Omega(g(n))\) —— 渐近下界

      • \(o(g(n))\) —— 严格渐近上界

      • \(\omega(g(n))\) —— 严格渐近下界

      学习路径建议

      1. 算法入门:第 1-3 章 → 理解渐近分析

      2. 基础算法:第 4-9 章 → 排序与分治

      3. 数据结构:第 10-14 章 → 散列、树、扩充

      4. 算法范式:第 15-17 章 → 动态规划、贪心、摊还

      5. 高级数据结构:第 18-21 章 → B 树、堆、不相交集合

      6. 图算法:第 22-26 章 → 图的遍历、MST、最短路、最大流

      7. 专题:第 27-35 章 → 按需学习