Algorithms

Download Algorithms

Post on 15-Aug-2014

1.831 views

Category:

Documents

242 download

Embed Size (px)

DESCRIPTION

AlgorithmsCopyright 2006 S. Dasgupta, C. H. Papadimitriou, and U. V. VaziraniJuly 18, 2006http://www.cs.berkeley.edu/~vazirani/algorithms.html

TRANSCRIPT

 AlgorithmsCopyright c 2006 S. Dasgupta, C. H. Papadimitriou, and U. V. Vazirani July 18, 20062AlgorithmsContentsPreface 0 Prologue 0.1 Books and algorithms 0.2 Enter Fibonacci . . . 0.3 Big-O notation . . . . Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 11 11 12 15 18 21 21 25 33 39 43 48 39 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 55 58 60 64 66 68 83 91 91 93 98 101 1061 Algorithms with numbers 1.1 Basic arithmetic . . . . . 1.2 Modular arithmetic . . . 1.3 Primality testing . . . . 1.4 Cryptography . . . . . . 1.5 Universal hashing . . . . Exercises . . . . . . . . . . . .Randomized algorithms: a virtual chapter 2 Divide-and-conquer algorithms 2.1 Multiplication . . . . . . . . . 2.2 Recurrence relations . . . . . 2.3 Mergesort . . . . . . . . . . . . 2.4 Medians . . . . . . . . . . . . . 2.5 Matrix multiplication . . . . . 2.6 The fast Fourier transform . . Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 Decompositions of graphs 3.1 Why graphs? . . . . . . . . . . . . . . . . 3.2 Depth-rst search in undirected graphs 3.3 Depth-rst search in directed graphs . . 3.4 Strongly connected components . . . . . Exercises . . . . . . . . . . . . . . . . . . . . . 34 4 Paths in graphs 4.1 Distances . . . . . . . . . . . . . . . . . . . . . . . 4.2 Breadth-rst search . . . . . . . . . . . . . . . . . 4.3 Lengths on edges . . . . . . . . . . . . . . . . . . 4.4 Dijkstras algorithm . . . . . . . . . . . . . . . . . 4.5 Priority queue implementations . . . . . . . . . . 4.6 Shortest paths in the presence of negative edges 4.7 Shortest paths in dags . . . . . . . . . . . . . . . Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Greedy algorithms 5.1 Minimum spanning trees 5.2 Huffman encoding . . . . 5.3 Horn formulas . . . . . . 5.4 Set cover . . . . . . . . . Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Algorithms115 . 115 . 116 . 118 . 119 . 126 . 128 . 130 . 132 139 . 139 . 153 . 157 . 158 . 161 . . . . . . . . 169 169 170 174 181 184 186 189 191. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 Dynamic programming 6.1 Shortest paths in dags, revisited 6.2 Longest increasing subsequences 6.3 Edit distance . . . . . . . . . . . . 6.4 Knapsack . . . . . . . . . . . . . . 6.5 Chain matrix multiplication . . . 6.6 Shortest paths . . . . . . . . . . . 6.7 Independent sets in trees . . . . . Exercises . . . . . . . . . . . . . . . . .7 Linear programming and reductions 7.1 An introduction to linear programming 7.2 Flows in networks . . . . . . . . . . . . . 7.3 Bipartite matching . . . . . . . . . . . . 7.4 Duality . . . . . . . . . . . . . . . . . . . 7.5 Zero-sum games . . . . . . . . . . . . . . 7.6 The simplex algorithm . . . . . . . . . . 7.7 Postscript: circuit evaluation . . . . . . Exercises . . . . . . . . . . . . . . . . . . . . . 8 NP-complete problems 8.1 Search problems . . . . 8.2 NP-complete problems 8.3 The reductions . . . . . Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201 . 201 . 211 . 219 . 220 . 224 . 227 . 236 . 239 247 . 247 . 257 . 262 . 278S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani9 Coping with NP-completeness 9.1 Intelligent exhaustive search 9.2 Approximation algorithms . . 9.3 Local search heuristics . . . . Exercises . . . . . . . . . . . . . . .5 283 . 284 . 290 . 297 . 306 . . . . . . . . 311 311 315 316 318 321 324 326 329 331 333. . . .. . . .. . . .. . . .. . . .. . . .. . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .10 Quantum algorithms 10.1 Qubits, superposition, and measurement 10.2 The plan . . . . . . . . . . . . . . . . . . . 10.3 The quantum Fourier transform . . . . . 10.4 Periodicity . . . . . . . . . . . . . . . . . . 10.5 Quantum circuits . . . . . . . . . . . . . . 10.6 Factoring as periodicity . . . . . . . . . . . 10.7 The quantum algorithm for factoring . . . Exercises . . . . . . . . . . . . . . . . . . . . . . Historical notes and further reading Index6AlgorithmsList of boxesBases and logs . . . . . . . . . . . . . . . . Twos complement . . . . . . . . . . . . . . Is your social security number a prime? . Hey, that was group theory! . . . . . . . . Carmichael numbers . . . . . . . . . . . . Randomized algorithms: a virtual chapter An application of number theory? . . . . . Binary search . . . . . . . . . . . . An n log n lower bound for sorting . The Unix sort command . . . . . Why multiply polynomials? . . . . The slow spread of a fast algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 27 33 36 37 39 40 60 62 66 68 82How big is your graph? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Crawling fast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Which heap is best? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Trees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 A randomized algorithm for minimum cut . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Entropy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Recursion? No, thanks. Programming? . . . . . Common subproblems Of mice and men . . . . Memoization . . . . . . On time and memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 173 177 179 183 189 205 209 211 222 234A magic trick c

Recommended

View more >