Video description
An accessible introduction to the fundamental algorithms used to run the world.Richard Vaughan, Purple Monkey Collective
As a software engineer, you’ll encounter countless programming challenges that initially seem confusing, difficult, or even impossible. Don’t despair! Many of these “new” problems already have well-established solutions. Advanced Algorithms and Data Structures teaches you powerful approaches to a wide range of tricky coding challenges that you can adapt and apply to your own applications. Providing a balanced blend of classic, advanced, and new algorithms, this practical guide upgrades your programming toolbox with new perspectives and hands-on techniques.
about the technology
Can you improve the speed and efficiency of your applications without investing in new hardware? Well, yes, you can: Innovations in algorithms and data structures have led to huge advances in application performance. Pick up this book to discover a collection of advanced algorithms that will make you a more effective developer.
about the book
Advanced Algorithms and Data Structures introduces a collection of algorithms for complex programming challenges in data analysis, machine learning, and graph computing. You’ll discover cutting-edge approaches to a variety of tricky scenarios. You’ll even learn to design your own data structures for projects that require a custom solution.
what's inside
- Build on basic data structures you already know
- Profile your algorithms to speed up application
- Store and query strings efficiently
- Distribute clustering algorithms with MapReduce
- Solve logistics problems using graphs and optimization algorithms
about the audience
For intermediate programmers.
about the author
Marcello La Rocca is a research scientist and a full-stack engineer. His focus is on optimization algorithms, genetic algorithms, machine learning, and quantum computing.
Easy to follow and filled with practical examples, this book is a fantastic introduction to data structures and algorithms.Zachary Fleischmann, Hawthorne Interactive
Look no further if you’re looking for a rich book to bridge the stuff of computer science courses and the pragmatic world of software development.
George Thomas, Manhattan Associates
Teaches how to modify algorithms and data structures to solve practical problems.
Maciej Jurkowski, Grupa Pracuj
NARRATED BY JULIE BRIERLEY
Table of contents
- Chapter 1 Introducing data structures
- Part 1. Improving over basic data structures
- Chapter 1 Describing a data structure
- Chapter 1 Packing your knapsack: Data structures meet the real world
- Chapter 1 Algorithms to the rescue
- Chapter 2 Improving priority queues: d-way heaps
- Chapter 2 Solutions at hand: Keeping a sorted list
- Chapter 2 Concrete data structures
- Chapter 2 Priority, min-heap, and max-heap
- Chapter 2 How to implement a heap
- Chapter 2 PushDown
- Chapter 2 Top
- Chapter 2 Heapify
- Chapter 2 Use case: Find the k largest elements
- Chapter 2 More use cases
- Chapter 2 Analysis of branching factor
- Chapter 2 Performance analysis: Finding the best branching factor
- Chapter 2 Interpreting results
- Chapter 2 The mystery with heapify
- Chapter 3 Treaps: Using randomization to balance binary search trees
- Chapter 3 Treap
- Chapter 3 A few design questions
- Chapter 3 Delete
- Chapter 3 Applications: Randomized treaps
- Chapter 3 Performance analysis and profiling
- Chapter 3 Profiling height
- Chapter 3 Profiling memory usage
- Chapter 4 Bloom filters: Reducing the memory for tracking content
- Chapter 4 Alternatives to implementing a dictionary
- Chapter 4 Concrete data structures
- Chapter 4 Binary search tree: Every operation is logarithmic
- Chapter 4 Implementation
- Chapter 4 Constructor
- Chapter 4 Applications
- Chapter 4 Why Bloom filters work
- Chapter 4 Performance analysis
- Chapter 4 Explanation of the false-positive ratio formula
- Chapter 4 Improved variants
- Chapter 5 Disjoint sets: Sub-linear time processing
- Chapter 5 Reasoning on solutions
- Chapter 5 Naïve solution
- Chapter 5 Using a tree-like structure
- Chapter 5 Heuristics to improve the running time
- Chapter 5 Applications
- Chapter 6 Trie, radix trie: Efficient string search
- Chapter 6 Trie
- Chapter 6 Search
- Chapter 6 Insert
- Chapter 6 Keys matching a prefix
- Chapter 6 Radix tries
- Chapter 6 Search
- Chapter 6 Applications
- Chapter 6 String sorting
- Chapter 7 Use case: LRU cache
- Chapter 7 First attempt: Remembering values
- Chapter 7 Handling asynchronous calls
- Chapter 7 Memory is not enough (literally)
- Chapter 7 Getting rid of stale data: LRU cache
- Chapter 7 Temporal ordering
- Chapter 7 When fresher data is more valuable: LFU
- Chapter 7 How to use cache is just as important
- Chapter 7 Solving concurrency (in Java)
- Chapter 7 Read locks
- Part 2. Multidimensional queries
- Chapter 8 Nearest neighbors search
- Chapter 8 Simplifying things to get a hint
- Chapter 8 Moving to k-dimensional spaces
- Chapter 9 K-d trees: Multidimensional data indexing
- Chapter 9 Constructing the BST
- Chapter 9 Methods
- Chapter 9 Balanced tree
- Chapter 9 Remove
- Chapter 9 Nearest neighbor
- Chapter 9 Region search
- Chapter 10 Similarity Search Trees: Approximate nearest neighbors search for image retrieval
- Chapter 10 R-tree
- Chapter 10 Inserting points in an R-tree
- Chapter 10 Similarity search tree
- Chapter 10 SS-tree search
- Chapter 10 Insert
- Chapter 10 Insertion: Split nodes
- Chapter 10 Delete
- Chapter 10 Similarity Search
- Chapter 10 Approximated similarity search
- Chapter 10 SS+-tree
- Chapter 10 Reducing overlap
- Chapter 11 Applications of nearest neighbor search
- Chapter 11.Centralized application
- Chapter 11 Moving to a distributed application
- Chapter 11 Other applications
- Chapter 11 Multidimensional DB queries optimization
- Chapter 12 Clustering
- Chapter 12 Types of learning
- Chapter 12 K-means
- Chapter 12 The curse of dimensionality strikes again
- Chapter 12 Boosting k-means with k-d trees
- Chapter 12 DBSCAN
- Chapter 12 From definitions to an algorithm
- Chapter 12 And finally, an implementation
- Chapter 12 OPTICS
- Chapter 12 From reachability distance to clustering
- Chapter 12 Hierarchical clustering
- Chapter 12. Evaluating clustering results: Evaluation metrics
- Chapter 13 Parallel clustering: MapReduce and canopy clustering
- Chapter 13 Canopy clustering
- Chapter 13 MapReduce
- Chapter 13 First map, then reduce
- Chapter 13 MapReduce k-means
- Chapter 13 Parallelizing canopy clustering
- Chapter 13 MapReduce canopy clustering
- Chapter 13 MapReduce DBSCAN - Part 1
- Chapter 13 MapReduce DBSCAN - Part 2
- Part 3. Planar graphs and minimum crossing number
- Chapter 14 An introduction to graphs: Finding paths of minimum distance
- Chapter 14 Implementing graphs
- Chapter 14 Graph properties
- Chapter 14 Graph traversal: BFS and DFS
- Chapter 14 Reconstructing the path to target
- Chapter 14 Shortest path in weighted graphs: Dijkstra
- Chapter 14 Beyond Dijkstra’s algorithm: A*
- Chapter 14 How good is A* search?
- Chapter 14 Heuristics as a way to balance real-time data
- Chapter 15 Graph embeddings and planarity: Drawing graphs with minimal edge intersections
- Chapter 15 Some basic definitions
- Chapter 15 Planar graphs
- Chapter 15 Planarity testing
- Chapter 15 Improving performance
- Chapter 15 Non-planar graphs
- Chapter 15 Rectilinear crossing number
- Chapter 15 Edge intersections
- Chapter 15 Polylines
- Chapter 15 Intersections between quadratic Bézier curves
- Chapter 16 Gradient descent: Optimization problems (not just) on graphs
- Chapter 16 Did you just say heuristics?
- Chapter 16 How optimization works
- Chapter 16 Gradient descent
- Chapter 16 When is gradient descent appliable?
- Chapter 16 Applications of gradient descent
- Chapter 16 Gradient descent for graph embedding
- Chapter 17 Simulated annealing: Optimization beyond local minima
- Chapter 17 Sometimes you need to climb up to get to the bottom
- Chapter 17 Why simulated annealing works
- Chapter 17 Short-range vs long-range transitions
- Chapter 17 Simulated annealing + traveling salesman
- Chapter 17 Exact vs approximated solutions
- Chapter 17 State transitions
- Chapter 17 Simulated annealing and graph embedding
- Chapter 17 Force-directed drawing
- Chapter 18 Genetic algorithms: Biologically inspired, fast-converging optimization
- Chapter 18 Inspired by nature
- Chapter 18 Chromosomes
- Chapter 18 Natural selection
- Chapter 18 Selecting individuals for mating
- Chapter 18 Crossover
- Chapter 18 The genetic algorithm template
- Chapter 18 TSP
- Chapter 18 Results and parameters tuning
- Chapter 18 Minimum vertex cover
- Chapter 18 Other applications of the genetic algorithm
- Chapter 18 Beyond genetic algorithms
- Appendix A. A quick guide to pseudo-code
- Appendix A Conditional instructions
- Appendix A Blocks and indent
- Appendix B. Big-O notation
- Appendix B Notation
- Appendix C. Core data structures
- Appendix C Tree
- Appendix C Hash table
- Appendix D. Containers as priority queues
- Appendix E. Recursion
- Appendix E Tail recursion
- Appendix F. Classification problems and randomnized algorithm metrics
- Appendix F Classification metrics
Product information
- Title: Advanced Algorithms and Data Structures, video edition
- Author(s):
- Release date: May 2021
- Publisher(s): Manning Publications
- ISBN: None
You might also like
book
Advanced Algorithms and Data Structures
As a software engineer, you’ll encounter countless programming challenges that initially seem confusing, difficult, or even …
audiobook
Advanced Algorithms and Data Structures
An accessible introduction to the fundamental algorithms used to run the world. Richard Vaughan, Purple Monkey …
book
Data Structures and Algorithms in Java, 6th Edition
The design and analysis of efficient data structures has long been recognized as a key component …
video
Learning Data Structures and Algorithms
In this Learning Data Structures and Algorithms video training course, Rod Stephens will teach you how …