Algorithm Design is an approachable introduction to sophisticated computer science. It is the undergraduate CS textbook for Jon Kleinberg's introduction to algorithm design course, but I bought it for the mincut classification algorithm explanation in Chapter 7. While a useful reference for graph method algorithm design, I read most of the book from the beginning because the chapters nicely build upon themselves. I can't promise you that you'll be a great computer scientist if you master the topics in the book, but working through these examples and problems will make you better.
Awesome Book
Published by Thriftbooks.com User , 16 years ago
Nicely written book. Easy to follow. The authors presented the algorithms very well. A minor complain would be that some of the proofs are too informal for my liking, and some proofs could be simpler. I would recommend this book to anyone who wants an introduction to the theory of computation. Another nice thing is the wide margin. This certainly encourages active learning.
Slightly better than Cormen - highly readable
Published by Thriftbooks.com User , 17 years ago
Best undergraduate handbook about algorithms i've seen so far. Examples are much less artificial than in CLRS (Introduction to Algorithms). Most of them are highly practical, e.g. using Kruskal's MST algorithm as a simple clustering device. It's worth mentioning that E.Tardos is a world-class calibre specialist in graph algorithms. When you feel unsatisfied with network flows chapter, you can read her survey of network flows (written with two other graph titans - Goldberg and Tarjan) The division into chapters is good, yet classical. There are also exercises after each chapter, lots of them, good for preparation if you have algorithm-oriented job interview (Google, Yahoo, Microsoft etc.). What's next? Read Tarjan's evergreen classic - Data Structures and Network Algorithms.
dealing with NP completeness
Published by Thriftbooks.com User , 19 years ago
The text offers an interesting blend of rigour and informality. The numerous proofs in each chapter have that rigour. Yet what may be more important is how the text remains accessible to a primarily undergraduate audience. The book is not just a compendium of common algorithms in computer science, and proofs about them. The authors place a stronger emphasis on motivating how to develop an intuitive understanding of the problems that the algorithms address, and of how to shape new algorithms. Or, possibly, apply or modify existing algorithms to new problems. If you compare the text to Knuth's classic "Art of Computer Programming", then you might find Kleinberg and Tardos more accessible. (At least for undergraduate readership.) Also, the extensive exercises at the end of each chapter often have contexts germane to the Web. For example, the links in web pages are used to motivate problems in graph theory, where we have directed (unidirectional) graphs, due to the one way nature of links. More generally, the recent, contextual nature of the problems may appeal to some students. Knuth had many exercises listed in his books, but they can be too abstract for most students. The text also has an interesting chapter on NP problems. The authors address a very practical situation. Even if you find that you have a problem that is NP complete, it is not necessarily the end of the story. For real life reasons, you may have to find an approximate solution that is computationally feasible to evaluate. The chapter offers suggestions and examples that may be of help. (More formal texts might merely stop at proving NP completeness.)
Detailed, clear and complete
Published by Thriftbooks.com User , 19 years ago
The flow in this book is excellent. The authors do a great job in organizing this book in logical chapter. The chapters are organized into techniques to find solutions to particular problems, like for example, Greedy Algorithms, Divide and Conquer, and Dynamic Programming. Each chapter contains a few representative problems of the technique or topic discussed. These are discussed in great detail, which is helpful to initially grasp the concepts. Furthermore, the end of each chapter contains a number of solved exercises. These are written up in less detail than the chapter problems, because they are usually slight variations or applications of the representative problems. I found these to be very helpful to me, as to build up a stronger grasp of the problem at hand. Furthemore, the progressive search for a solution, such as for the Weighted Interval Scheduling problem using dynamic programming, is essential to understanding the process through which we can find such algorithms. The book is well written, in a clear, understandable language. The supplementary chapters on Basics of Algorithm Analysis and Graph Theory are a great started for people who have not been exposed to those concepts previously. Network flows are covered extensively with their applications. I suppose this section of the course was enhanced because our instructor's research interests are Network Flows and she threw example after example at us. There are a great number of problems at the end of this chapter to practice. (...) One of the strenghs of this book, is that when the authors determine the running time of a particular algorithm, they write about how to implement it, with which data structures and why. Although it is assumed that data structures are common knowledge for the reader, this type of analysis is helpful for further understanding of such structures. All in all, this is a great textbook for an introductory course in the design of algorithms.
ThriftBooks sells millions of used books at the lowest everyday prices. We personally assess every book's quality and offer rare, out-of-print treasures. We deliver the joy of reading in recyclable packaging with free standard shipping on US orders over $15. ThriftBooks.com. Read more. Spend less.