Introduction 1
Part 1: Getting Started with Algorithms 7
Chapter 1: Introducing Algorithms 9
Chapter 2: Considering Algorithm Design 23
Chapter 3: Working with Google Colab 41
Chapter 4: Performing Essential Data Manipulations Using Python 59
Chapter 5: Developing a Matrix Computation Class 79
Part 2: Understanding the Need to Sort and Search 97
Chapter 6: Structuring Data 99
Chapter 7: Arranging and Searching Data 117
Part 3: Exploring the World of Graphs 139
Chapter 8: Understanding Graph Basics 141
Chapter 9: Reconnecting the Dots 161
Chapter 10: Discovering Graph Secrets 195
Chapter 11: Getting the Right Web page 207
Part 4: Wrangling Big Data 223
Chapter 12: Managing Big Data 225
Chapter 13: Parallelizing Operations 249
Chapter 14: Compressing and Concealing Data 267
Part 5: Challenging Difficult Problems 289
Chapter 15: Working with Greedy Algorithms 291
Chapter 16: Relying on Dynamic Programming 307
Chapter 17: Using Randomized Algorithms 331
Chapter 18: Performing Local Search 349
Chapter 19: Employing Linear Programming 367
Chapter 20: Considering Heuristics 381
Part 6: The Part of Tens 401
Chapter 21: Ten Algorithms That Are Changing the World 403
Chapter 22: Ten Algorithmic Problems Yet to Solve 411
Index 417
ntroduction 1
Part 1: Getting Started with Algorithms 7
Chapter 1: Introducing Algorithms 9
Chapter 2: Considering Algorithm Design 23
Chapter 3: Working with Google Colab 41
Chapter 4: Performing Essential Data Manipulations Using Python 59
Chapter 5: Developing a Matrix Computation Class 79
Part 2: Understanding the Need to Sort and Search 97
Chapter 6: Structuring Data 99
Chapter 7: Arranging and Searching Data 117
Part 3: Exploring the World of Graphs 139
Chapter 8: Understanding Graph Basics 141
Chapter 9: Reconnecting the Dots 161
Chapter 10: Discovering Graph Secrets 195
Chapter 11: Getting the Right Web page 207
Part 4: Wrangling Big Data 223
Chapter 12: Managing Big Data 225
Chapter 13: Parallelizing Operations 249
Chapter 14: Compressing and Concealing Data 267
Part 5: Challenging Difficult Problems 289
Chapter 15: Working with Greedy Algorithms 291
Chapter 16: Relying on Dynamic Programming 307
Chapter 17: Using Randomized Algorithms 331
Chapter 18: Performing Local Search 349
Chapter 19: Employing Linear Programming 367
Chapter 20: Considering Heuristics 381
Part 6: The Part of Tens 401
Chapter 21: Ten Algorithms That Are Changing the World 403
Chapter 22: Ten Algorithmic Problems Yet to Solve 411
Index 417
ntroduction 1
Part 1: Getting Started with Algorithms 7
Chapter 1: Introducing Algorithms 9
Chapter 2: Considering Algorithm Design 23
Chapter 3: Working with Google Colab 41
Chapter 4: Performing Essential Data Manipulations Using Python 59
Chapter 5: Developing a Matrix Computation Class 79
Part 2: Understanding the Need to Sort and Search 97
Chapter 6: Structuring Data 99
Chapter 7: Arranging and Searching Data 117
Part 3: Exploring the World of Graphs 139
Chapter 8: Understanding Graph Basics 141
Chapter 9: Reconnecting the Dots 161
Chapter 10: Discovering Graph Secrets 195
Chapter 11: Getting the Right Web page 207
Part 4: Wrangling Big Data 223
Chapter 12: Managing Big Data 225
Chapter 13: Parallelizing Operations 249
Chapter 14: Compressing and Concealing Data 267
Part 5: Challenging Difficult Problems 289
Chapter 15: Working with Greedy Algorithms 291
Chapter 16: Relying on Dynamic Programming 307
Chapter 17: Using Randomized Algorithms 331
Chapter 18: Performing Local Search 349
Chapter 19: Employing Linear Programming 367
Chapter 20: Considering Heuristics 381
Part 6: The Part of Tens 401
Chapter 21: Ten Algorithms That Are Changing the World 403
Chapter 22: Ten Algorithmic Problems Yet to Solve 411
Index 417