dc.description.abstract | Most professional programmers that I’ve encountered are not well prepared to
tackle algorithm design problems. This is a pity, because the techniques of algorithm
design form one of the core practical technologies of computer science. Designing
correct, efficient, and implementable algorithms for real-world problems requires
access to two distinct bodies of knowledge:
• Techniques – Good algorithm designers understand several fundamental algorithm
design techniques, including data structures, dynamic programming,
depth-first search, backtracking, and heuristics. Perhaps the single most important
design technique is modeling, the art of abstracting a messy real-world
application into a clean problem suitable for algorithmic attack.
• Resources – Good algorithm designers stand on the shoulders of giants.
Rather than laboring from scratch to produce a new algorithm for every task,
they can figure out what is known about a particular problem. Rather than
re-implementing popular algorithms from scratch, they seek existing implementations
to serve as a starting point. They are familiar with many classic
algorithmic problems, which provide sufficient source material to model most
any application.
This book is intended as a manual on algorithm design, providing access to
combinatorial algorithm technology for both students and computer professionals.
It is divided into two parts: Techniques and Resources. The former is a general
guide to techniques for the design and analysis of computer algorithms. The Resources
section is intended for browsing and reference, and comprises the catalog
of algorithmic resources, implementations, and an extensive bibliography. | en_US |