About the Author xiii
Preface xv
Acknowledgments xvii
About the Companion Website xxi
Part I Foundations 1
1 Mathematical Logic 3
1.1 Propositions 3
1.2 Logical Operators 6
1.3 Propositional Formulas 15
1.4 Logical Normal Forms 24
1.5 The Boolean Satisfiability Problem 29
1.6 Predicates and Quantifiers 30
1.7 Symbolizing Statements of the Form "All P Are Q" 37
2 Set-Theoretic Structures 51
2.1 Induction 51
2.2 Sets 54
2.3 Relations 59
2.4 Partitions 64
2.5 Functions 65
3 Analytic and Algebraic Structures 77
3.1 Sequences 77
3.2 Summations and Series 81
3.3 Matrices, Subspaces, and Bases 87
3.4 Convexity, Polyhedra, and Cones 91
3.5 Farkas' Lemma and Its Variants 95
Part II Combinatorics 103
4 Graphs105
4.1 Basic Graph Definitions 106
4.2 Isomorphism and Properties of Graphs 113
4.3 Eulerian and Hamiltonian Graphs 118
4.4 Graph Coloring 122
4.5 Directed Graphs 125
5 Recurrences 133
5.1 Guess-and-Confirm 133
5.2 Recursion-Iteration 136
5.3 Generating Functions 138
5.4 Recursion-Tree 140
6 Counting149
6.1 Binomial Coefficients and Identities 149
6.2 Fundamental Principles of Counting 154
6.3 The Pigeonhole Principle 161
6.4 Permutations 163
6.5 Combinations 166
Part III Algorithms 179
7 Analysis of Algorithms 181
7.1 Constructing and Comparing Algorithms 182
7.2 Running Time of Algorithms 189
7.3 Asymptotic Notation 199
7.4 Analyzing Decision-Making Statements 211
7.5 Analyzing ProgramsWithout Function Calls 213
7.6 Analyzing Programs with Function Calls 219
7.7 The Complexity Class NP-Complete 224
8 Array and Numeric Algorithms 241
8.1 Array Multiplication Algorithms 241
8.2 Array Searching Algorithms 244
8.3 Array Sorting Algorithms 248
8.4 Euclid's Algorithm 253
8.5 Newton's Method Algorithm 255
9 Elementary Combinatorial Algorithms 267
9.1 Graph Representations 267
9.2 Breadth-First Search Algorithm 270
9.3 Applications of Breadth-First Search 273
9.4 Depth-First Search Algorithm 277
9.5 Applications of Depth-First Search 279
9.6 Topological Sort 283
Part IV Optimization 293
10 Linear Programming 295
10.1 Linear Programming Formulation and Examples 296
10.2 The Graphical Method 302
10.3 Standard Form Linear Programs 309
10.4 Geometry of Linear Programming 311
10.5 The Simplex Method 320
10.6 Duality in Linear Programming 339
10.7 A Homogeneous Interior-Point Method 347
11 Second-Order Cone Programming 363
11.1 The Second-Order Cone and Its Algebraic Structure 363
11.2 Second-Order Cone Programming Formulation 368
11.3 Applications in Engineering and Finance 370
11.4 Duality in Second-Order Cone Programming 375
11.5 A Primal-Dual Path-Following Algorithm 379
11.6 A Homogeneous Self-Dual Algorithm 386
12 Semidefinite Programming and Combinatorial Optimization 395
12.1 The Cone of Positive Semidefinite Matrices 395
12.2 Semidefinite Programming Formulation 399
12.3 Applications in Combinatorial Optimization 401
12.4 Duality in Semidefinite Programming 405
12.5 A Primal–Dual Path-Following Algorithm 408
Exercises 417
Notes and Sources 418
References 418
Appendix A Solutions to Chapter Exercises 421
References 487
Bibliography 489
Index 501