Externally indexed torrent
If you are the original uploader, contact staff to have it moved to your account
Textbook in PDF format
Algorithm Design introduces algorithms by looking at the real-world problems that motivate them. The book teaches students a range of design and analysis techniques for problems that arise in computing applications. The text encourages an understanding of the algorithm design process and an appreciation of the role of algorithms in the broader field of computer science.
The book is intended for students who have completed a programming-based two-semester introductory computer science sequence (the standard “CS1/CS2” courses) in which they have written programs that implement basic algorithms, manipulate discrete structures such as trees and graphs, and apply basic data structures such as arrays, lists, queues, and stacks. Since the interface between CS1/CS2 and a first algorithms course is not entirely standard, we begin the book with self-contained coverage of topics that at some institutions are familiar to students from CS1/CS2, but which at other institutions are included in the syllabi of the first algorithms course. This material can thus be treated either as a review or as new material by including it, we hope the book can be used in a broader array of courses, and with more flexibility in the prerequisite knowledge that is assumed.
Chapter 1 starts by introducing some representative algorithmic problems. Chapters 2 and 3 cover the interface to the CS1/CS2 course sequence
mentioned earlier. Chapter 2 introduces the key mathematical definitions and notations used for analyzing algorithms, as well as the motivating principles behind them. Chapter 3 covers the basic definitions and algorithmic primitives needed for working with graphs, which are central to so many of the problems in the book. Chapters 4 through 7 cover four major algorithm design techniques: greedy algorithms, divide and conquer, dynamic programming, and network flow. Chapters 8 and 9 cover computational intractability. We devote most of our attention to NP-complete-ness, organizing the basic NP-complete problems thematically to help students recognize candidates for reductions when they encounter new problems. Chapters 10 through 12 cover three major techniques for dealing with computationally intractable problems: identification of structured special cases, approximation algorithms, and local search heuristics. Chapter 13 covers the use of randomization in the design of algorithms