CHAPTER ONE:ANALYSIS OF ALGORITHMS 3
1.1 Why Analyze an Algorithm? 3
1.2 Theory of Algorithms 6
1.3 Analysis of Algorithms 13
1.4 Average-Case Analysis 16
1.5 Example:Analysis of Quicksort 18
1.6 Asymptotic Approximations 27
1.7 Distributions 30
1.8 Randomized Algorithms 33
CHAPTER TWO:RECURRENCE RELATIONS 41
2.1 Basic Properties 43
2.2 First-Order Recurrences 48
2.3 Nonlinear First-Order Recurrences 52
2.4 Higher-Order Recurrences 55
2.5 Methods for Solving Recurrences 61
2.6 Binary Divide-and-Conquer Recurrences and Binary Numbers 70
2.7 General Divide-and-Conquer Recurrences 80
CHAPTER THREE:GENERATING FUNCTIONS 91
3.1 Ordinary Generating Functions 92
3.2 Exponential Generating Functions 97
3.3 Generating Function Solution of Recurrences 101
3.4 Expanding Generating Functions 111
3.5 Transformations with Generating Functions 114
3.6 Functional Equations on Generating Functions 117
3.7 Solving the Quicksort Median-of-Three Recurrence with OGFs 120
3.8 Counting with Generating Functions 123
3.9 Probability Generating Functions 129
3.10 Bivariate Generating Functions 132
3.11 Special Functions 140
CHAPTER FOUR:ASYMPTOTIC APPROXIMATIONS 151
4.1 Notation for Asymptotic Approximations 153
4.2 Asymptotic Expansions 160
4.3 Manipulating Asymptotic Expansions 169
4.4 Asymptotic Approximations of Finite Sums 176
4.5 Euler-Maclaurin Summation 179
4.6 Bivariate Asymptotics 187
4.7 Laplace Method 203
4.8"Normal"Examples from the Analysis of Algorithms 207
4.9"Poisson"Examples from the Analysis of Algorithms 211
CHAPTER FIVE:ANALYTIC COMBINATORICS 219
5.1 Formal Basis 220
5.2 Symbolic Method for Unlabelled Classes 221
5.3 Symbolic Method for Labelled Classes 229
5.4 Symbolic Method for Parameters 241
5.5 Generating Function Coefficient Asymptotics 247
CHAPTER SIX:TREES 257
6.1 Binary Trees 258
6.2 Forests andTrees 261
6.3 Combinatorial Equivalences to Trees and Binary Trees 264
6.4 Properties of Trees 272
6.5 Examples of Tree Algorithms 277
6.6 Binary Search Trees 281
6.7 Average Path Length in Catalan Trees 287
6.8 Path Length in Binary Search Trees 293
6.9 Additive Parameters of Random Trees 297
6.10 Height 302
6.11 Summary of Average-Case Results on Properties of Trees 310
6.12 Lagrange Inversion 312
6.13 Rooted Unordered Trees 315
6.14 Labelled Trees 327
6.15 Other Types of Trees 331
CHAPTER SEVEN:PERMUTATIONS 345
7.1 Basic Properties of Permutations 347
7.2 Algorithms on Permutations 355
7.3 Representations of Permutations 358
7.4 Enumeration Problems 366
7.5 Analyzing Properties of Permutations with CGFs 372
7.6 Inversions and Insertion Sorts 384
7.7 Left-to-Right Minima and Selection Sort 393
7.8 Cycles and In Situ Permutation 401
7.9 Extremal Parameters 406
CHAPTER EIGHT:STRINGS AND TRIES 415
8.1 String Searching 416
8.2 Combinatorial Properties of Bitstrings 420
8.3 Regular Expressions 432
8.4 Finite-State Automata and the Knuth-Morris-Pratt Algorithm 437
8.5 Context-Free Grammars 441
8.6 Tries 448
8.7 Trie Algorithms 453
8.8 Combinatorial Properties ofTries 459
8.9 Larger Alphabets 465
CHAPTER NINE:WORD S AND MAPPINGS 473
9.1 Hashing with Separate Chaining 474
9.2 The Balls-and-Urns Model and Properties of Words 476
9.3 Birthday Paradox and Coupon Collector Problem 485
9.4 Occupancy Restrictions and Extremal Parameters 495
9.5 Occupancy Distributions 501
9.6 Open Addressing Hashing 509
9.7 Mappings 519
9.8 Integer Factorization and Mappings 532
List of Theorems 543
List of Tables 545
List of Figures 547
Index 551