An Introduction to Distributed Algorithms
An Introduction to Distributed Algorithms takes up some of the main concepts and algorithms, ranging from basic to advanced techniques and applications, that underlie the programming of distributed-memory systems such as computer networks, networks of workstations, and multiprocessors. Written from the broad perspective of distributed-memory systems in general it includes topics such as algorithms for maximum flow, program debugging, and simulation that do not appear in more orthodox texts on distributed algorithms.Moving from fundamentals to advances and applications, ten chapters—with exercises and bibliographic notes—cover a variety of topics. These include models of distributed computation, information propagation, leader election, distributed snapshots, network synchronization, self-stability, termination detection, deadlock detection, graph algorithms, mutual exclusion, program debugging, and simulation.
All of the algorithms are presented in a clear, template-based format for the description of message-passing computations among the nodes of a connected graph. Such a generic setting allows the treatment of problems originating from many different application areas.The main ideas and algorithms are described in a way that balances intuition and formal rigor—most are preceded by a general intuitive discussion and followed by formal statements as to correctness complexity or other properties.
“Barbosa makes the otherwise difficult subject of distributed algorithms very enjoyable and attractive to both students and researchers. The leading intuitive discussion of each algorithm is so very well organized and clearly written that a reader can, without the slightest effort, have aclear picture of it. An ideal textbook for an one-semester distributed algorithms course.”
—Mamoru Maekawa, Professor, Graduate School of InformationSystems, University of Electro-Communications, Tokyo
“This is a textbook in which students will find a comprehensive introduction to the difficulty and to the beauty of distributied algorithms. It is important to note that these algorithms are becoming more and more important as they constitute the core of any 'distributed' application. Moreover a set of exercises concludes each chapter. These exercises are particularly well designed for a personal in-depth study of the diversity of distributed algorithms.”
—Michel Raynal, IRISA, INRIA, Professor, Université de Rennes 1, France
“The strength of this book is its focus on practical problems in distributed computing. The book is very accessible—I would use it teaching a senior level course on distributed algorithms.”
—David Nicol, Department of Computer Science, Dartmouth College