1 Introduction: Some Representative Problems/引言:某些有代表性的问题
1.1 A First Problem: Stable Matching/第 一个问题:稳定匹配
1.2 Five Representative Problems/五个有代表性的问题
Solved Exercises/带解答的练习
Exercises /练习
Notes and Further Reading/注释和进一步阅读
2 Basics of Algorithm Analysis/算法分析基础
2.1 Computational Tractability/计算可解性
2.2 Asymptotic Order of Growth/增长的渐近阶
2.3 Implementing the Stable Matching Algorithm Using Lists and Arrays/用列表和数组实现稳定匹配算法
2.4 A Survey of Common Running Times/常用运行时间概述
2.5 A More Complex Data Structure: Priority Queues/更复杂的数据结构:优先队列
Solved Exercises/带解答的练习
Exercises /练习
Notes and Further Reading/注释和进一步阅读
3 Graphs/图
3.1 Basic Definitions and Applications/基本定义与应用
3.2 Graph Connectivity and Graph Traversal/图的连通性与图的遍历
3.3 Implementing Graph Traversal Using Queues and Stacks/用优先队列与栈实现图的遍历
3.4 Testing Bipartiteness: An Application of Breadth-First Search/二分性测试:宽度优先搜索的应用
3.5 Connectivity in Directed Graphs/有向图中的连通性
3.6 Directed Acyclic Graphs and Topological Ordering/有向无环图与拓扑排序
Solved Exercises/带解答的练习
Exercises /练习
Notes and Further Reading/注释和进一步阅读
4 Greedy Algorithms/贪心算法
4.1 Interval Scheduling: The Greedy Algorithm Stays Ahead/区间调度:贪心算法领先
4.2 Scheduling to Minimize Lateness: An Exchange Argument/最小延迟调度:交换论证
4.3 Optimal Caching: A More Complex Exchange Argument/最优高速缓存:更复杂的交换论证
4.4 Shortest Paths in a Graph/图的最短路径
4.5 The Minimum Spanning Tree Problem/最小生成树问题
4.6 Implementing Kruskal’s Algorithm: The Union-Find Data Structure/实现Kruskal算法:Union-Find数据结构
4.7 Clustering/聚类
4.8 Huffman Codes and Data Compression/赫夫曼码与数据压缩
4.9 Minimum-Cost Arborescences: A Multi-Phase Greedy Algorithm/最小费用有向树:多阶段贪心算法
Solved Exercises/带解答的练习
Exercises /练习
Notes and Further Reading/注释和进一步阅读
5 Divide and Conquer/分治策略
5.1 A First Recurrence: The Mergesort Algorithm/第 一个递推式:归并排序算法
5.2 Further Recurrence Relations/更多的递推关系
5.3 Counting Inversions/计数逆序
5.4 Finding the Closest Pair of Points/找最接邻近的点对
5.5 Integer Multiplication/整数乘法
5.6 Convolutions and the Fast Fourier Transform/卷积与快速傅里叶变换
Solved Exercises/带解答的练习
Exercises /练习
Notes and Further Reading/注释和进一步阅读
6 Dynamic Programming/动态规划
6.1 Weighted Interval Scheduling: A Recursive Procedure/带权的区间调度:递归过程
6.2 Principles of Dynamic Programming: Memoization or Iteration over Subproblems/动态规划原理:备忘录或者子问题迭代
6.3 Segmented Least Squares: Multi-way Choices/分段的最小二乘:多重选择
6.4 Subset Sums and Knapsacks: Adding a Variable/子集和与背包:加一个变量
6.5 RNA Secondary Structure: Dynamic Programming over Intervals/RNA二级结构:在区间上的动态规划
6.6 Sequence Alignment/序列比对
6.7 Sequence Alignment in Linear Space via Divide and Conquer/通过分治策略在线性空间的序列比对
6.8 Shortest Paths in a Graph/图中的最短路径
6.9 Shortest Paths and Distance Vector Protocols/最短路径和距离向量协议
6.10 Negative Cycles in a Graph/图中的负圈
Solved Exercises/带解答的练习
Exercises /练习
Notes and Further Reading/注释和进一步阅读
7 Network Flow/网络流
7.1 The Maximum-Flow Problem and the Ford-Fulkerson Algorithm/最大流问题与Ford-Fulkerson算法
7.2 Maximum Flows and Minimum Cuts in a Network/网络中的最大流与最小割
7.3 Choosing Good Augmenting Paths/选择好的增广路径
7.4 The Preflow-Push Maximum-Flow Algorithm/前向流推动最大流算法
7.5 A First Application: The Bipartite Matching Problem/第 一个应用:二分匹配问题
7.6 Disjoint Paths in Directed and Undirected Graphs/有向与无