Jon Kleinberg, Éva Tardos
Format: PDF / Kindle (mobi) / ePub
Algorithm Design introduces algorithms by looking at the real-world problems that motivate them. The book teaches 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 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.
is correct (it would need a more careful argument than what’s in the previous sentence), but it will turn out that we can also show a stronger upper bound. We’ll do this by unrolling the recurrence, following the standard template for doing this. o Analyzing the first few levels: At the first level of recursion, we have a single problem of size n, which takes time at most cn2 plus the time spent in al! subsequent recursive calls. At the next level, we have two problems, each of size n/2. Each of
Distance Vector Protocols Chapter 6 Dynamic Programming naturally nonnegative, so one could use Dijkstra’s Algorithm to compute the shortest path. However, Dijkstra’s shortest-path computation requires global knowledge of the network: it needs to maintain a set S of nodes for which shortest paths have been determined, and make a global decision about which node to add next to S. While reuters can be made to run a protocol in the background that gathers enough global information to implement
correct. (b) Assume that the distances are correct, and d(v) is finite for all v ~ V. Now you need to compute distances to a different sink t’. Give an O(rn log n) algorithm for computing distances d’(v) for all nodes v ~ V to the sink node t’. (Hint: It is useful to consider a new cost function defined as follows: for edge e = (v, w), let c’~ = c~ - d(v) + d(w). Is there a relation between costs of paths for the two different costs c and c’?) 24. Gerrymandering is the practice of carving up
preferences. Notes and Further Reading The Stable Matching Problem was ~st defined and analyzed by Gale and Shapley (1962); according to David Gale, their motivation for the problem came from a story they had recently read in the Netv Yorker about the intricacies of the college admissions process (Gale, 2001). Stable matching has grown into an area of study in its own right, covered in books by Gusfield and Irving (1989) and Knuth (1997c). Gusfield and Irving also provide a nice survey of the
operation is 2.3 Implementing the Stable Matching Algorithm Using Lisis and Arrays Before deleting e: Element e After deleting e: Element e Figure 2.1 A schematic representation of a doubly linked fist, showing the deletion of an element e. essentially the reverse of deletion, and indeed one can see this operation at work by reading Figure 2.1 from bottom to top. Inserting or deleting e at the beginning of the list involves updating the First pointer, rather than updating the record of the