Many young programmers scour the web trying to find answers to this question: How to study Algorithm and Data structure? Certainly, a good place to start... But I believe a more relevant question would be this: What are algorithms and data structures, and why should I study them?
Let’s start with this motivating quote: “Every program depends on algorithms and data structures, but few programs depend on the invention of brand new ones.” -- Kernighan & Pike
What is an algorithm?
Wikipedia says “an algorithm is a self-contained step-by-step set of operations to be performed. Algorithms perform the calculation, data processing, and/or automated reasoning tasks.”
You’d be surprised that there are still some of us who could be tripping on words while trying to explain algorithms, data structures, and their importance. Simply put, whether you are cooking a burger or adding two numbers, there’s an algorithm working its magic there. From monitoring stock markets to oil crises to determining crop yield to pairing soul mates, algorithms are omnipresent.
One definition from the Internet is this: An algorithm is a detailed step-by-step instruction set or formula for solving a problem or completing a task. You need to tell your computer what task to perform, right? You need algorithms or specific computational procedures to achieve the input–output relationship. Repetition, sequencing, and conditional logic or decision are computational concepts that manifest in your everyday life. Your morning routine can be an algorithm. Can you guess how?
There’s this great TEDEd cartoonby Harvard computer scientist David J. Malan you should see.
Algorithms are much more than instructions. It doesn’t matter if you call them algorithms or programming basics, what matters is that they teach you to define clear steps and conceptualize solutions in terms of distinct steps in a process.
As we are computer science-mad people, I should do some fancy talking about a few algorithm types. Shopping for the prom dress, investing in stocks, or driving to the mall, you are using thegreedy algorithm. In the hope of finding a global optimum, you find the locally optimum choice at each stage (Wikipedia). I beg your pardon? (Say it with a Brit accent, if you please. I love it.)
If you know the famoustraveling salesman problem in computational mathematics, then you’ll know how you can apply to delivering meals to homebound people.
Readthis articleabout a two-year project led by Prof. William Cook from the University of Waterloo, Canada. His math team added new dimensions to the TSP; they calculated the shortest distance possible to get to almost 25,000 pubs in the UK using Google Maps. The route is circular, with the longest distance being 50 hours and the average distance being an hour. If you want to go to each pub on this list, get ready for 28,270 miles.
Like Cook said: “We did not set out to improve the lot of a wandering pub aficionado.” But I guess they did just the same!
It is all about forgetting future consequences and taking the best you can this minute. This I understand! What approach would you use to find a name in a phonebook?Thebrute-force algorithm.
On a good day, you go through the zillion names and find it quickly, that is, trying all possibilities till you get a solution that is good enough. A criminal can use the brute-force method, which is a trial-and-error approach, to crack data that is encrypted. This one doesn’t work so well if the complexity (size) of the problem increases.
Do you recall in the late 90s IBM’s Deep Blue used brute force methods to defeat the then reigning chess champion, Garry Kasparov? We have moved on and computational abilities have progressed beyond belief.
You havedata compression algorithmsusing mp3 to JPEG to Zip that reduce the file size by saving oodles of time and space.Huffmanis a widely used one; most repeating bytes represent the least number of bits.