Lot of resources to learn classic and modern algorithms and data structures. But is there a good resource guide on how they are applied. Especially the non obvious applications? For example when i learnt shortest path algo is used in context aware image resizing, my mind was wow, thats clever. Is there a good collection of such applications?
It is usually in the optimization of some problem.<p>Bin packing (loading transport, scheduling), min/max of a function, least steps, least travel. One of the big applications of early computers were in ballistics tables and cut and fill for road and rail lines. Another being scheduling (classes, specialized staff, etc).<p>If you can't find problems to apply your algorithm knowledge to, I'd recommend compilers and 3d printing/design.<p><a href="http://www.learncivilengineering.com/wp-content/uploads/2014/06/Excavation-and-embankment-e.g.-cut-and-fill.pdf" rel="nofollow">http://www.learncivilengineering.com/wp-content/uploads/2014...</a><p><a href="https://hrcak.srce.hr/file/172575" rel="nofollow">https://hrcak.srce.hr/file/172575</a><p>I recommend checking out Skiena's "Algorithm Design Manual" [1] if you haven't already.<p>[1] <a href="https://www.algorist.com/" rel="nofollow">https://www.algorist.com/</a><p>[2] <a href="https://www.algorist.com/algowiki/index.php/Chapter_10#Design_Problems" rel="nofollow">https://www.algorist.com/algowiki/index.php/Chapter_10#Desig...</a>
Algorithmic Thinking might be what you're looking for - <a href="https://www.amazon.com/Algorithmic-Thinking-Problem-Based-Daniel-Zingaro-ebook/dp/B085BVJ51Z/ref=sr_1_3?crid=2VZI7RYE7L5J8&keywords=algorithmic+thinking&qid=1648077507&sprefix=algorithmic+thinking%2Caps%2C81&sr=8-3" rel="nofollow">https://www.amazon.com/Algorithmic-Thinking-Problem-Based-Da...</a>
Try finding an entry in a list of 100 elements. Then try finding an entry in a list of 10 million elements.<p>Then make a hash table out of the list and try finding an entry in the hash table of 100 elements and the hash table of 10 million elements.<p>If you want to take it further, try building an in-memory database. Benchmark how it works with and without indexes as the number of items in the database grows.