Tables of Contents for Introduction to Algorithms
The Role of Algorithms in Computing
5
10
Algorithms as a technology
10
5
Standard notations and common functions
51
11
The substitution method
63
4
The recursion-tree method
67
6
Proof of the master theorem
76
15
Probabilistic Analysis and Randomized Algorithms
91
36
Indicator random variables
94
5
Probabilistic analysis and further uses of indicator random variables
106
21
II Sorting and Order Statistics
Maintaining the heap property
130
2
The heapsort algorithm
135
3
Description of quicksort
145
4
Performance of quicksort
149
4
A randomized version of quicksort
153
2
Analysis of quicksort
155
10
Sorting in Linear Time
165
18
Lower bounds for sorting
165
3
Medians and Order Statistics
183
17
Selection in expected linear time
185
4
Selection in worst-case linear time
189
11
Elementary Data Structures
200
21
Implementing pointers and objects
209
5
Representing rooted trees
214
7
Direct-address tables
222
2
What is a binary search tree?
253
3
Querying a binary search tree
256
5
Insertion and deletion
261
4
Randomly built binary search trees
265
8
Properties of red-black trees
273
4
Augmenting Data Structures
302
21
Dynamic order statistics
302
6
How to augment a data structure
308
3
IV Advanced Design and Analysis Techniques
Assembly-line scheduling
324
7
Matrix-chain multiplication
331
8
Elements of dynamic programming
339
11
Longest common subsequence
350
6
Optimal binary search trees
356
14
An activity-selection problem
371
8
Elements of the greedy strategy
379
6
Theoretical foundations for greedy methods
393
6
A task-scheduling problem
399
6
The accounting method
410
2
V Advanced Data Structures
Definition of B-trees
438
3
Basic operations on B-trees
441
8
Deleting a key from a B-tree
449
6
Binomial trees and binomial heaps
457
4
Operations on binomial heaps
461
15
Structure of Fibonacci heaps
477
2
Mergeable-heap operations
479
10
Decreasing a key and deleting a node
489
4
Bounding the maximum degree
493
5
Data Structures for Disjoint Sets
498
29
Disjoint-set operations
498
3
Linked-list representation of disjoint sets
501
4
Analysis of union by rank with path compression
509
18
Elementary Graph Algorithms
527
34
Representations of graphs
527
4
Strongly connected components
552
9
Minimum Spanning Trees
561
19
Growing a minimum spanning tree
562
5
The algorithms of Kruskal and Prim
567
13
Single-source Shortest Paths
580
40
The Bellman-Ford algorithm
588
4
Single-source shortest paths in directed acyclic graphs
592
3
Difference constraints and shortest paths
601
6
Proofs of shortest-paths properties
607
13
All-Pairs Shortest Paths
620
23
Shortest paths and matrix multiplication
622
7
The Floyd-Warshall algorithm
629
7
Johnson's algorithm for sparse graphs
636
7
The Ford-Fulkerson method
651
13
Maximum bipartite matching
664
5
Push-relabel algorithms
669
12
The relabel-to-front algorithm
681
23
The zero-one principle
709
3
A bitonic sorting network
712
4
Properties of matrices
725
10
Strassen's algorithm for matrix multiplication
735
7
Solving systems of linear equations
742
13
Symmetric positive-definite matrices and least-squares approximation
760
10
Standard and slack forms
777
8
Formulating problems as linear programs
785
5
The simplex algorithm
790
14
The initial basic feasible solution
811
11
Polynomials and the FFT
822
27
Representation of polynomials
824
6
Efficient FFT implementations
839
10
Number-Theoretic Algorithms
849
57
Elementary number-theoretic notions
850
6
Greatest common divisor
856
6
Solving modular linear equations
869
4
The Chinese remainder theorem
873
3
The RSA public-key cryptosystem
881
6
Integer factorization
896
10
The naive string-matching algorithm
909
2
The Rabin-Karp algorithm
911
5
String matching with finite automata
916
7
The Knuth-Morris-Pratt algorithm
923
10
Computational Geometry
933
33
Line-segment properties
934
6
Determining whether any pair of segments intersects
940
7
Finding the convex hull
947
10
Finding the closest pair of points
957
9
Polynomial-time verfication
979
5
NP-completeness and reducibility
984
11
NP-completeness proofs
995
8
NP-complete problems
1003
19
Approximation Algorithms
1022
105
The vertex-cover problem
1024
3
The traveling-salesman problem
1027
6
The set-covering problem
1033
6
Randomization and linear programming
1039
4
The subset-sum problem
1043
15
VIII Appendix: Mathematical Background
A.1 Summation formulas and properties
1058
4
A.2 Bounding summations
1062
8
C Counting and Probability
1094
33
C.3 Discrete random variables
1106
6
C.4 The geometric and binomial distributions
1112
6
C.5 The tails of the binomial distribution
1118
9