This repository hosts Python implementations of distributed algorithms tailored for various network topologies, covering essential concepts such as tree-based election, flooding, broadcasting, saturation, and eccentricity calculations. These implementations draw inspiration from N. Santoro's seminal work, Design and Analysis of Distributed Algorithms (2006).
Distributed systems represent collections of independent computers seamlessly integrated to function as a unified entity, facilitating collaborative efforts to achieve shared objectives. These systems find extensive application across diverse domains, including communication networks, data networks, grid networks, and the Internet.
The principles and methodologies encapsulated within this repository transcend specific architectures, offering universal insights into algorithmic design and protocol development tailored to distributed computing environments.
Currently, the repository contains the following algorithms, with more to be added soon:
- Tree-Based Election: Contains algorithms for leader election in tree network topologies.
- Flooding/Broadcasting: Features flooding/broadcasting algorithms designed to deliver messages to all nodes within a network (for efficient dissemination of information across networks).
- Saturation: Includes saturation algorithms aimed at attaining global knowledge within distributed systems.
- Eccentricity Calculations: Provides implementations of algorithms for calculating eccentricity within network structures.
Each folder comprises specific implementations accompanied by a README.md file furnishing comprehensive explanations of the code's contents and objectives.