An advanced network optimisation framework implementing modified MST algorithms for cellular tower placement
Features • Installation • Usage • Documentation • Contributing
Network Topology Optimiser is a high-performance tool that implements modified versions of Kruskal's and Prim's algorithms to optimise cellular tower networks. The project focuses on handling real-world constraints such as signal interference and operational costs while maintaining optimal network coverage.
- 🚀 Efficient Implementation: Optimised MST algorithms for network analysis
- 🎯 Dual Optimisation: Handles both interference and cost constraints
- 📊 Visualization Tools: Python scripts for network topology analysis
- 🔄 Flexible Input: Supports both sparse and dense network configurations
- C Compiler (gcc recommended)
- Python 3.x
- Python packages:
pip install networkx matplotlib numpy pandas
-
Clone the repository
git clone https://github.com/Eusha425/network-topology-optimiser.git cd network-topology-optimiser
-
Compile the C code
gcc -O2 -o optimiser main.c graph.c archive.c
-
Install required Python packages
pip install networkx matplotlib numpy pandas
The program expects input in the following format:
[number_of_vertices]
[source] [destination] [interference] [cost]
...
# For dense networks
./optimiser < input.txt
# For sparse networks
./optimiser < input_sparse.txt
If you prefer direct file reading instead of input redirection, you'll need to modify the C code to implement file reading functionality. The main sections that would need modification are:
main.c
: Add file handling logicgraph.c
: Modify input processing functions
python main_generator.py
python graph_visual.py # General network visualization
python kruskal_visual.py # Kruskal's algorithm results
python prim_visual.py # Prim's algorithm results
network-topology-optimiser/
├── src/
│ ├── main.c # Main program implementation
│ ├── graph.c # Graph implementation and algorithms
│ ├── graph.h # Graph header file
│ └── archive.c # Archive utility functions
├── visualization/
│ ├── graph_visual.py # Network visualization script
│ ├── kruskal_visual.py # Kruskal's algorithm visualization
│ └── prim_visual.py # Prim's algorithm visualization
├── data/
│ ├── input.txt # Dense graph dataset
│ └── input_sparse.txt # Sparse graph dataset
└── main_generator.py # Test data generator
Network Type | Vertices | Kruskal (ms) | Prim (ms) |
---|---|---|---|
Sparse | 1000 | 45 | 89 |
Dense | 1000 | 156 | 78 |
We love your input! We want to make contributing to Network Topology Optimiser as easy and transparent as possible, whether it's:
- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing new features
- Becoming a maintainer
Check out our Contributing Guidelines for ways to get started.
Please refer to our Code of Conduct for details on our code of conduct.
This project is licensed under the MIT License - see the LICENSE file for details.