1st Edition

A Guide to Algorithm Design Paradigms, Methods, and Complexity Analysis

    380 Pages 71 B/W Illustrations
    by CRC Press

    Presenting a complementary perspective to standard books on algorithms, A Guide to Algorithm Design: Paradigms, Methods, and Complexity Analysis provides a roadmap for readers to determine the difficulty of an algorithmic problem by finding an optimal solution or proving complexity results. It gives a practical treatment of algorithmic complexity and guides readers in solving algorithmic problems.

    Divided into three parts, the book offers a comprehensive set of problems with solutions as well as in-depth case studies that demonstrate how to assess the complexity of a new problem.

    • Part I helps readers understand the main design principles and design efficient algorithms.
    • Part II covers polynomial reductions from NP-complete problems and approaches that go beyond NP-completeness.
    • Part III supplies readers with tools and techniques to evaluate problem complexity, including how to determine which instances are polynomial and which are NP-hard.

    Drawing on the authors’ classroom-tested material, this text takes readers step by step through the concepts and methods for analyzing algorithmic complexity. Through many problems and detailed examples, readers can investigate polynomial-time algorithms and NP-completeness and beyond.

    Polynomial-Time Algorithms: Exercises
    Introduction to Complexity
    On the complexity to compute xn
    Asymptotic notations: O, o, Θ, and Ω

    Divide-and-Conquer
    Strassen’s algorithm
    Master theorem
    Solving recurrences

    Greedy Algorithms
    Motivating example: the sports hall
    Designing greedy algorithms
    Graph coloring
    Theory of matroids

    Dynamic Programming
    The coin changing problem
    The knapsack problem
    Designing dynamic-programming algorithms

    Amortized Analysis
    Methods for amortized analysis

    Exercises, Solutions, and Bibliographic Notes appear at the end of each chapter in this section.

    NP-Completeness and Beyond
    NP-Completeness

    A practical approach to complexity theory
    Problem classes
    NP-complete problems and reduction theory
    Examples of NP-complete problems and reductions
    Importance of problem definition
    Strong NP-completeness
    Why does it matter?

    Exercises on NP-Completeness
    Easy reductions
    About graph coloring
    Scheduling problems
    More involved reductions
    2-PARTITION is NP-complete

    Beyond NP-Completeness
    Approximation results
    Polynomial problem instances
    Linear programming
    Randomized algorithms
    Branch-and-bound and backtracking

    Exercises Going beyond NP-Completeness
    Approximation results
    Dealing with NP-complete problems

    Reasoning on Problem Complexity
    Reasoning to Assess a Problem Complexity

    Basic reasoning
    Set of problems with polynomial-time algorithms
    Set of NP-complete problems

    Chains-on-Chains Partitioning
    Optimal algorithms for homogeneous resources
    Variants of the problem
    Extension to a clique of heterogeneous resources
    Conclusion

    Replica Placement in Tree Networks
    Access policies
    Complexity results
    Variants of the replica placement problem
    Conclusion

    Packet Routing
    MEDP: Maximum edge-disjoint paths
    PRVP: Packet routing with variable-paths
    Conclusion

    Matrix Product, or Tiling the Unit Square
    Problem motivation
    NP-completeness
    A guaranteed heuristic
    Related problems

    Online Scheduling
    Flow time optimization
    Competitive analysis
    Makespan optimization
    Conclusion

    Bibliography

    Index

    Biography

    Yves Robert, École Normale Supérieure de Lyon, Institut Universitaire de France, and Université de Lyon, France

    Anne Benoit and Frederic Vivien, École Normale Supérieure de Lyon, France

    "This well-written book takes a fresh look at a classical subject, with features that will please both instructors and students. The book provides an insightful introduction to algorithm design with detailed coverage of a broad range of topics. The nice selection of exercises and the well-chosen case studies will be very useful for teachers of undergraduate courses. The sections devoted to the methodology of algorithm design should help students acquire a deeper understanding of advanced notions in complexity theory and approximation. A really nice job in both scope and style!"
    —Denis Trystram, Distinguished Professor, Grenoble Institute of Technology

    "Graduate students and instructors alike will find this book an invaluable resource. The subject matter is presented following a logical progression that makes students understand not only the principles behind algorithm design and analysis, but also the raison d’etre and the practical relevance of these principles. And yet, the book can also be used as a compendium of knowledge that provides the practitioner a quiver of algorithmic arrows. Finally, the extensive sets of motivating examples and exercises will prove instrumental for any instructor willing to develop an engaging course on advanced algorithms."
    —Henri Casanova, Associate Professor, Department of Information and Computer Sciences, University of Hawai'i at Manoa

    "This book is a great technical arsenal for every graduate student and post-graduate researcher. By providing a treasure trove of concrete algorithmic examples, the book trains the reader to recognize clues that indicate the complexity of a broad range of algorithmic problems, while supplying a battery of techniques for solving a particular problem in hand. The book is also a true source of inspiration for instructors looking for a material to teach advanced algorithms courses."
    —Umit Catalyurek, Professor, Ohio State University

    "This book is unique among texts on algorithmics in its emphasis on how to ‘think algorithmically’ rather than just how to solve specific (classes of) algorithmic problems. The authors skillfully engage the reader in a journey of algorithmic self-discovery as they cover a broad spectrum of issues, from the very basic (computing powers, coin changing) through the quite advanced (NP-completeness, polynomial-time approximation schemes). The authors emphasize algorithmic topics that have proven useful in ‘applied’ situations … . I shall be very happy to have this text on my bookshelf as a reference on methods as well as results."
    —Arnold L. Rosenberg, Research Professor, Northeastern University, and Distinguished University Professor Emeritus, University of Massachusetts Amherst

    "This book presents a well-balanced approach to theory and algorithms and introduces difficult concepts using rich motivating examples. It demonstrates the applicability of fundamental principles and analysis techniques to practical problems facing computer scientists and engineers. You do not have to be a theoretician to enjoy and learn from this book."
    —Rami Melhem, Professor of Computer Science, University of Pittsburgh