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 algorithmsvery enjoyable and attractive to both students and researchers. Theleading intuitive discussion of each algorithm is so very well organizedand clearly written that a reader can, without the slightest effort, have aclear picture of it. An ideal textbook for an one-semester distributedalgorithms course."
Mamoru Maekawa, Professor, Graduate School of InformationSystems, University of Electro-Communications, Tokyo
"The strength of this book is its focus on practical problems indistributed computing. The book is very accessible-I would use itteaching a senior level course on distributed algorithms."
David Nicol, Department of Computer Science, Dartmouth College