Preface0 Set Theory and Logic 0.1 Introduction to Set Theory 0.2 Functions and Relations 0.3 Inductive Proofs and Recursive Definitions 0.4 The Language of Logic 0.5 Notes and References 0.6 Exercises1 Combinatorics 1.1 Two Basic Counting Rules 1.2 Permutations 1.3 Combinations 1.4 More on Permutations and Combinations 1.5 The Pigeonhole Principle 1.6 The Inclusion-Exclusion Principle 1.7 Summary of Results in Combinatorics 1.8 Notes and References 1.9 Exercises2 Generating Functions 2.1 Introduction 2.2 Ordinary Generating Functions 2.3 Exponential Generating Functions 2.4 Notes and References 2.5 Exercises3 Recurrence Relations 3.1 Introduction 3.2 Homogeneous Recurrence Relations 3.3 Inhomogeneous Recurrence Relations 3.4 Recurrence Relations and Generating Functions 3.5 Analysis of Alogorithms 3.6 Notes and References 3.7 Exercises4 Graphs and Digraphs 4.1 Introduction 4.2 Adjacency Matrices and Incidence Matrices 4.3 Joining in Graphs 4.4 Reaching in Digraphs 4.5 Testing Connectedness 4.6 Strong Orientation of Graphs 4.7 Notes and References 4.8 Exercises5 More on Graphs and Digraphs 5.1 Eulerian Paths and Eulerian Circuits 5.2 Coding and de Bruijn Digraphs 5.3 Hamiltonian Paths and Hamiltonian Cycles 5.4 Applications of Hamiltonian Cycles 5.5 Vertex Coloring and Planarity of Graphs 5.6 Notes and References 5.7 Exercises6 Trees and Their Applications 6.1 Definitions and Properties 6.2 Spanning Trees 6.3 Binary Trees 6.4 Notes and References 6.5 Exercises7 Spanning Tree Problems 7.1 More on Spanning Trees 7.2 Kruskal's Greedy Algorithm 7.3 Prim's Greedy Algorithm 7.4 Comparison of the Two Algorithms 7.5 Notes and References 7.6 Exercises8 Shortest Path Problems 8.1 Introduction 8.2 Dijkstra's Algorithm 8.3 Floyd-Warshall Algorithm 8.4 Comparison of the Two Algorithms 8.5 Notes and References 8.6 ExercisesAppendix What is NP-Completeness? A.1 Problems and Their Instances A.2 The Size of an Instance A.3 Algorithm to Solve a Problem A.4 Complexity of an Algorithm A.5 "The "Big Oh" or the O(·) Notation" A.6 Easy Problems and Difficult Problems A.7 The Class P and the Class NP A.8 Polynomial Transformations and NP-Completeness A.9 Coping with Hard ProblemsBibliographyAnswers to Selected ExercisesIndex