inside front cover
Problems described in this book
Problem | Section | Page Number |
---|
0-1 Knapsack | 1.3, 18.1 |
Tasks list | 2.2.1 |
Text compression | 2.8.3 |
Multi-indexing | 3.1 |
Keep a tree balanced | 3.4 |
Memory-efficient contacts list | 4.1 |
Non-personalized recommendations | 5.1 |
Spell check | 6.1,6.4.1 |
T9 | 6.4.3 |
Autocomplete | 6.4.4 |
Caching | 7.1 |
Distributed cache | 7.8 |
Find closest entry on a 2-D map | 8.1 |
Nearest neighbor search | 9.3.5 |
Similarity search in multi-dimensional space | 10.4 |
Closest hub | 11.1 |
Color reduction (compressing colors) | 11.4.1 |
Optimization of multidimensional DB queries | 11.4.3 |
Clustering | |
Distributed clustering | |
Shortest path on a map | 14.3.6 |
Shortest path on a map (with roads) | 14.4.4 |
Shortest path on a dynamic map | 14.5.2 |
Drawing flow charts (and generic graphs) on a 2-D plane | 15.1 |
Graph planarity | 15.2 |
Segment intersection | 15.4.1 |
Advanced Algorithms and Data Structures
Marcello La Rocca
To comment go to liveBook
Manning
Shelter Island
For more information on this and other Manning titles go to
www.manning.com
Copyright
For online information and ordering of these and other Manning books, please visit www.manning.com. The publisher offers discounts on these books when ordered in quantity.
For more information, please contact
Special Sales Department
Manning Publications Co.
20 Baldwin Road
PO Box 761
Shelter Island, NY 11964
Email: orders@manning.com
2021 by Manning Publications Co. All rights reserved.
No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher.
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps.
Recognizing the importance of preserving what has been written, it is Mannings policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without the use of elemental chlorine.
| Manning Publications Co. 20 Baldwin Road Technical PO Box 761 Shelter Island, NY 11964 |
Development editor: | Jenny Stout |
Technical development editor: | Arthur Zubarev and Aurelio De Rosa |
Review editor: | Aleksandar Dragosavljevi |
Production editor: | Deirdre Hiam |
Copy editor: | Katie Petito |
Proofreader: | Melody Dolab |
Technical proofreader: | German Gonzalez-Morris |
Typesetter: | Gordan Salinovi |
Cover designer: | Marija Tudor |
ISBN: 9781617295485
dedication
Dont let fear get in the way and dont be afraid to say I dont know or I dont understand no question is a dumb question.
Margaret H. Hamilton
Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.
Edsger Dijkstra
Cu `un fa nenti `un sbagghia nenti. (Only those who try make mistakes)
Sicilian proverb
front matter
foreword
Algorithms and data structures lie at the very heart of the intersection between the beauty of theory and the excitement of cutting-edge technology. One can say that if the body of the advancements in computation is hardware, then the mind is certainly the study of algorithms and data structures. Many of the recent advances in technology have come to life thanks to the effective use of computing resources to solve problems, and this is often due to the effective development and implementation of algorithms and clever use of data structures.
A computer scientist, a software developer, a data scientist, or anyone whose work is dependent on the power of computation needs to be fluent in the language of algorithms and data structures. It is for this reason that problems in this field are some of the most common in interviews for companies in Silicon Valley or similar technology sectors.
It is quite difficult, even for experts, to learn and remember all the details of all the algorithms in existence. However, it is important to have a good intuition about them in such a way that one can use them as building blocks to create larger projects or to solve problems. In order to master this intuition, one must develop a rigid theoretical and mathematical base, solid programming knowledge, and a strong understanding of the core concepts.
Building this intuition is precisely what Advanced Algorithms and Data Structures does so well. In this book, Marcello combines the rigidity of the theory with the versatility of the practical application, painted with the strokes of a colorful narrative full of enjoyable stories and real-life examples.
Marcello also uses his extensive experience as a developer at some of the most prominent technology companies and as a researcher in machine learning to give the reader a very clear, concise, and thorough picture of some of the most important algorithms and data structures used across industries and research fields.
With a one-size-fits-all approach, a friendly language, and fun analogies, Marcello manages to lift the curtain and demystify complicated topics such as map reduce, genetic algorithms, and simulated annealing, with the same ease as he exposes the basics of trees and heaps. Certainly a must-read for anyone who wants to get a solid understanding of the building principles of computer science. The only question in my head after reading Advanced Algorithms and Data Structures was, Where was this book when I was preparing for my first Silicon Valley interview?