This book is an introduction to algorithms. What is an algorithm? In short, “algorithm” means “a way of solving a problem.” When people encounter a problem, the approach to solving it depends on who is solving it, and then the efficiency varies accordingly. Lately, mobile devices have become quite smarter, planning your route when you provide your destination, and running an application when you talk to it. Inside this tiny device, there exists a computer that is smarter than the old large-scale computers, and it runs some neat algorithms to solve your problems. Smart algorithms use clever tricks to reduce computational time and the amount of memory needed.
One may think that “from the viewpoint of the progress of hardware devices, is an improvement such as this insignificant?” However, you would be wrong. For example, take integer programming. Without going into details, it is a general framework to solve mathematical optimization programs, and many realistic problems can be solved using this model. The running time of programs for solving integer programming has been improved 10,000,000,000 times over the last two decades. Surprisingly, the contribution of hardware is 2000 times, and the contribution of software, that is, the algorithm, is 4,75,000 times. It is not easy to see, but “the improvement of the way of solving” has been much more effective than “the development of hardware.”