0 Prologue 11
0.1 Books and algorithm
0.2 Enter Fibonacc
0.3 Big-O notatio15
Exercise
1 Algorithms with numbers 21
1.1 Basic arithmeti
1.2 Modular arithmeti
1.3 Primality testin
1.4 Cryptograph39
1.5 Universal hashin
Exercise . . 48
Randomized algorithms: a virtual chapter 39
2 Divide-and-conquer algorithms 55
2.1 Multiplicatio55
2.2 Recurrence relation
2.3 Mergesor0
2.4 Median
2.5 Matrix multiplicatio
2.6 The fast Fourier transfor
Exercise
3 Decompositions of graphs 91
3.1 Why graphs
3.2 Depth-first search in undirected graph
3.3 Depth-first search in directed graph
3.4 Strongly connected component
Exercise
4 Paths in graphs 115
4.1 Distance15
4.2 Breadth-first searc
4.3 Lengths on edge
4.4 Dijkstra’s algorith
4.5 Priority queue implementation
4.6 Shortest paths in the presence of negative edge
4.7 Shortest paths in dag
Exercise
5 Greedy algorithms 139
5.1 Minimum spanning tree
5.2 Huffman encodin
5.3 Horn formula
5.4 Set cover
Exercise
6 Dynamic programming 169
6.1 Shortest paths in dags, revisite
6.2 Longest increasing subsequence
6.3 Edit distanc
6.4 Knapsac
6.5 Chain matrix multiplicatio
6.6 Shortest path
6.7 Independent sets in tree
Exercise
7 Linear programming and reductions 201
7.1 An introduction to linear programmin
7.2 Flows in network
7.3 Bipartite matchin
7.4 Dualit
7.5 Zero-sum game
7.6 The simplex algorith
7.7 Postscript: circuit evaluatio
Exercise
8 NP-complete problems 247
8.1 Search problem
8.2 NP-complete problem
8.3 The reduction262 Exercise
9 Coping with NP-completeness 283
9.1 Intelligent exhaustive searc
9.2 Approximation algorithm
9.3 Local search heuristic
Exercise
10 Quantum algorithms 311
10.1 Qubits, superposition, and measuremen
10.2 The plan
10.3 The quantum Fourier transfor
10.4 Periodicit
10.5 Quantum circuit
10.6 Factoring as periodicit
10.7 The quantum algorithm for factorin
Exercise
Historical notes and further reading 331
· · · · · · (
收起)