Introduction 1Part 1: Getting Started with Algorithms 7Chapter 1: Introducing Algorithms 9Chapter 2: Considering Algorithm Design 23Chapter 3: Working with Google Colab 41Chapter 4: Performing Essential Data Manipulations Using Python 59Chapter 5: Developing a Matrix Computation Class 79Part 2: Understanding the Need to Sort and Search 97Chapter 6: Structuring Data 99Chapter 7: Arranging and Searching Data 117Part 3: Exploring the World of Graphs 139Chapter 8: Understanding Graph Basics 141Chapter 9: Reconnecting the Dots 161Chapter 10: Discovering Graph Secrets 195Chapter 11: Getting the Right Web page 207Part 4: Wrangling Big Data 223Chapter 12: Managing Big Data 225Chapter 13: Parallelizing Operations 249Chapter 14: Compressing and Concealing Data 267Part 5: Challenging Difficult Problems 289Chapter 15: Working with Greedy Algorithms 291Chapter 16: Relying on Dynamic Programming 307Chapter 17: Using Randomized Algorithms 331Chapter 18: Performing Local Search 349Chapter 19: Employing Linear Programming 367Chapter 20: Considering Heuristics 381Part 6: The Part of Tens 401Chapter 21: Ten Algorithms That Are Changing the World 403Chapter 22: Ten Algorithmic Problems Yet to Solve 411Index 417ntroduction 1Part 1: Getting Started with Algorithms 7Chapter 1: Introducing Algorithms 9Chapter 2: Considering Algorithm Design 23Chapter 3: Working with Google Colab 41Chapter 4: Performing Essential Data Manipulations Using Python 59Chapter 5: Developing a Matrix Computation Class 79Part 2: Understanding the Need to Sort and Search 97Chapter 6: Structuring Data 99Chapter 7: Arranging and Searching Data 117Part 3: Exploring the World of Graphs 139Chapter 8: Understanding Graph Basics 141Chapter 9: Reconnecting the Dots 161Chapter 10: Discovering Graph Secrets 195Chapter 11: Getting the Right Web page 207Part 4: Wrangling Big Data 223Chapter 12: Managing Big Data 225Chapter 13: Parallelizing Operations 249Chapter 14: Compressing and Concealing Data 267Part 5: Challenging Difficult Problems 289Chapter 15: Working with Greedy Algorithms 291Chapter 16: Relying on Dynamic Programming 307Chapter 17: Using Randomized Algorithms 331Chapter 18: Performing Local Search 349Chapter 19: Employing Linear Programming 367Chapter 20: Considering Heuristics 381Part 6: The Part of Tens 401Chapter 21: Ten Algorithms That Are Changing the World 403Chapter 22: Ten Algorithmic Problems Yet to Solve 411Index 417ntroduction 1Part 1: Getting Started with Algorithms 7Chapter 1: Introducing Algorithms 9Chapter 2: Considering Algorithm Design 23Chapter 3: Working with Google Colab 41Chapter 4: Performing Essential Data Manipulations Using Python 59Chapter 5: Developing a Matrix Computation Class 79Part 2: Understanding the Need to Sort and Search 97Chapter 6: Structuring Data 99Chapter 7: Arranging and Searching Data 117Part 3: Exploring the World of Graphs 139Chapter 8: Understanding Graph Basics 141Chapter 9: Reconnecting the Dots 161Chapter 10: Discovering Graph Secrets 195Chapter 11: Getting the Right Web page 207Part 4: Wrangling Big Data 223Chapter 12: Managing Big Data 225Chapter 13: Parallelizing Operations 249Chapter 14: Compressing and Concealing Data 267Part 5: Challenging Difficult Problems 289Chapter 15: Working with Greedy Algorithms 291Chapter 16: Relying on Dynamic Programming 307Chapter 17: Using Randomized Algorithms 331Chapter 18: Performing Local Search 349Chapter 19: Employing Linear Programming 367Chapter 20: Considering Heuristics 381Part 6: The Part of Tens 401Chapter 21: Ten Algorithms That Are Changing the World 403Chapter 22: Ten Algorithmic Problems Yet to Solve 411Index 417
John Mueller has published more than 100 books on technology, data, and programming. John has a website and blog where he writes articles on technology and offers assistance alongside his published books.Luca Massaron is a data scientist specializing in insurance and finance. A Google Developer Expert in machine learning, he has been involved in quantitative analysis and algorithms since 2000.