Front Cover
Distributed Algorithms
Copyright Page
Contents
Preface
Chapter 1. Introduction
1.1 The Subject Matter
1.2 Our Viewpoint
1.3 Overview of Chapters 2-25
1.4 Bibliographic Notes
1.5 Notation
Part I: Synchronous Network Algorithms
Chapter 2. Modelling I: Synchronous Network Model
2.1 Synchronous Network Systems
2.2 Failures
2.3 Inputs and Outputs
2.4 Executions
2.5 Proof Methods
2.6 Complexity Measures
2.7 Randomization
2.8 Bibliographic Notes
Chapter 3. Leader Election in a Synchronous Ring
3.1 The Problem
3.2 Impossibility Result for Identical Processes
3.3 A Basic Algorithm
3.4 An Algorithm with O (n log n) Communication Complexity
3.5 Non-Comparison-Based Algorithms
3.6 Lower Bound for Comparison-Based Algorithms
3.7 Lower Bound for Non-Comparison-Based Algorithms
3.8 Bibliographic Notes
3.9 Exercises
Chapter 4. Algorithms in General Synchronous Networks
4.1 Leader Election in a General Network
4.2 Breadth-First Search
4.3 Shortest Paths
4.4 Minimum Spanning Tree
4.5 Maximal Independent Set
4.6 Bibliographic Notes
4.7 Exercises
Chapter 5. Distributed Consensus with Link Failures
5.1 The Coordinated Attack Problem—Deterministic Version
5.2 The Coordinated Attack Problem—Randomized Version
5.3 Bibliographic Notes
5.4 Exercises
Chapter 6. Distributed Consensus with Process Failures
6.1 The Problem
6.2 Algorithms for Stopping Failures
6.3 Algorithms for Byzantine Failures
6.4 Number of Processes for Byzantine Agreement
6.5 Byzantine Agreement in General Graphs
6.6 Weak Byzantine Agreement
6.7 Number of Rounds with Stopping Failures
6.8 Bibliographic Notes
6.9 Exercises
Chapter 7. More Consensus Problems
7.1 k-Agreement
7.2 Approximate Agreement
7.3 The Commit Problem
7.4 Bibliographic Notes
7.5 Exercises
Part II: Asynchronous Algorithms
Chapter 8. Modelling II: Asynchronous System Model
8.1 I/O Automata
8.2 Operations on Automata
8.3 Fairness
8.4 Inputs and Outputs for Problems
8.5 Properties and Proof Methods
8.6 Complexity Measures
8.7 Indistinguishable Executions
8.8 Randomization
8.9 Bibliographic Notes
8.10 Exercises
Part IIA: Asynchronous Shared Memory Algorithms
Chapter 9. Modelling III: Asynchronous Shared Memory Model
9.1 Shared Memory Systems
9.2 Environment Model
9.3 Indistinguishable States
9.4 Shared Variable Types
9.5 Complexity Measures
9.6 Failures
9.7 Randomization
9.8 Bibliographic Notes
9.9 Exercises
Chapter 10. Mutual Exclusion
10.1 Asynchronous Shared Memory Model
10.2 The Problem
10.3 Dijkstra's Mutual Exclusion Algorithm
10.4 Stronger Conditions for Mutual Exclusion Algorithms
10.5 Lockout-Free Mutual Exclusion Algorithms
10.6 An Algorithm Using Single-Writer Shared Registers
10.7 The Bakery Algorithm
10.8 Lower Bound on the Number of Registers
10.9 Mutual Exclusion Using Read-Modify-Write Shared Variables
10.10 Bibliographic Notes
10.11 Exercises
Chapter 11. Resource Allocation
11.1 The Problem
11.2 Nonexistence of Symmetric Dining Philosophers Algorithms
11.3 Right-Left Dining Philosophers Algorithm
11.4 Randomized Dining Philosophers Algorithm
11.5 Bibliographic Notes
11.6 Exercises
Chapter 12. Consensus
12.1 The Problem
12.2 Agreement Using Read/Write Shared Memory
12.3 Agreement Using Read-Modify-Write Shared Memory
12.4 Other Types of Shared Memory
12.5 Computability in Asynchronous Shared Memory Systems
12.6 Bibliographic Notes
12.7 Exercises
Chapter 13. Atomic Objects
13.1 Definitions and Basic Results
13.2 Implementing Read-Modify-Write Atomic Objects in Terms of Read/Write Variables
13.3 Atomic Snapshots of Shared Memory
13.4 Read/Write Atomic Objects
13.5 Bibliographic Notes
13.6 Exercises
Part IIB: Asynchronous Network Algorithms
Chapter 14. Modelling IV: Asynchronous Network Model
14.1 Send/Receive Systems
14.2 Broadcast Systems
14.3 Multicast Systems
14.4 Bibliographic Notes
14.5 Exercises
Chapter 15. Basic Asynchronous Network Algorithms
15.1 Leader Election in a Ring
15.2 Leader Election in an Arbitrary Network
15.3 Spanning Tree Construction, Broadcast and Convergecast
15.4 Breadth-First Search and Shortest Paths
15.5 Minimum Spanning Tree
15.6 Bibliographic Notes
15.7 Exercises
Chapter 16. Synchronizers
16.1 The Problem
16.2 The Local Synchronizer
16.3 The Safe Synchronizer
16.4 Safe Synchronizer Implementations
16.5 Applications
16.6 Lower Bound on Time
16.7 Bibliographic Notes
16.8 Exercises
Chapter 17. Shared Memory versus Networks
17.1 Transformations from the Shared Memory Model to the Network Model
17.2 Transformations from the Network Model to the Shared Memory Model
17.3 Bibliographic Notes
17.4 Exercises
Chapter 18. Logical Time
18.1 Logical Time for Asynchronous Networks
18.2 Adding Logical Time to Asynchronous Algorithms
18.3 Applications
18.4 Transforming Real-Time Algorithms to Logical-Time Algorithms
18.5 Bibliographic Notes
18.6 Exercises
Chapter 19. Consistent Global Snapshots and Stable Property Detection
19.1 Termination-Detection for Diffusing Algorithms
19.2 Consistent Global Snapshots
19.3 Bibliographic Notes
19.4 Exercises
Chapter 20. Network Resource Allocation
20.1 Mutual Exclusion
20.2 General Resource Allocation
20.3 Bibliographic Notes
20.4 Exercises
Chapter 21. Asynchronous Network Computing with Process Failures
21.1 The Network Model
21.2 Impossibility of Agreement in the Presence of Faults
21.3 A Randomized Algorithm
21.4 Failure Detectors
21.5 k-Agreement
21.6 Approximate Agreement
21.7 Computability in Asynchronous Networks
21.8 Bibliographic Notes
21.9 Exercises
Chapter 22. Data Link Protocols
22.1 The Problem
22.2 Stenning's Protocol
22.3 Alternating Bit Protocol
22.4 Bounded Tag Protocols Tolerating Reordering
22.5 Tolerating Crashes
22.6 Bibliographic Notes
22.7 Exercises
Part III: Partially Synchronous Algorithms
Chapter 23. Modelling V: Partially Synchronous System Models
23.1 MMT Timed Automata
23.2 General Timed Automata
23.3 Properties and Proof Methods
23.4 Modelling Shared Memory and Network Systems
23.5 Bibliographic Notes
23.6 Exercises
Chapter 24. Mutual Exclusion with Partial Synchrony
24.1 The Problem
24.2 A Single-Register Algorithm
24.3 Resilience to Timing Failures
24.4 Impossibility Results
24.5 Bibliographic Notes
24.6 Exercises
Chapter 25. Consensus with Partial Synchrony
25.1 The Problem
25.2 A Failure Detector
25.3 Basic Results
25.4 An Efficient Algorithm
25.5 A Lower Bound Involving the Timing Uncertainty
25.6 Other Results
25.7 Postscript
25.8 Bibliographic Notes
25.9 Exercises
Bibliography
Index
Related Titles from Morgan Kaufmann