Java project for loading road graphs, running graph algorithms, and visualising routes in a desktop GUI. The project was developed as part of the INSA Toulouse graph algorithms coursework and is now organised as a standalone multi-module Maven repository.
- A graph model with nodes, arcs, paths, graph statistics, and binary readers.
- Shortest-path algorithms: Dijkstra, A*, and Bellman-Ford.
- Weakly connected components, package switching, and car-pooling algorithms.
- A Swing/Mapsforge GUI for loading graphs, selecting nodes, running algorithms, and displaying paths.
- Unit tests for the model, priority queues, binary heaps, and shortest paths.
- Java 17 or newer
- Maven 3.8 or newer
- A graphical desktop session to run the GUI
Map and path files are not included in this repository. The application expects
the binary formats used by the INSA graph tools (.mapgr for graphs and
.path for paths). Keep these potentially large data files outside the source
tree and select them from the GUI when needed.
From the repository root:
mvn clean verifyThis builds all modules and runs the test suites. To build only the model and algorithm modules:
mvn -pl be-graphes-model,be-graphes-algos -am verifyThe main application opens a desktop window with file pickers for graph and path files:
mvn -pl be-graphes-gui exec:javaThe GUI entry point is org.insa.graphs.gui.MainWindow. A small drawing demo
is also available and accepts a graph file followed by a path file:
mvn -pl be-graphes-gui exec:java \
-Dexec.mainClass=org.insa.graphs.gui.simple.Launch \
-Dexec.args="/path/to/map.mapgr /path/to/route.path"be-graphes-model/ Graph domain objects and binary file I/O
be-graphes-algos/ Algorithms and algorithm-specific data/observers
be-graphes-gui/ Swing/Mapsforge desktop application
docs/ Architecture and development notes
.github/ Continuous integration configuration
See the architecture guide for module boundaries and the contribution guide for the development workflow.
GitHub Actions runs mvn verify on every push and pull request with Java 17.
The same command should pass locally before opening a pull request.
No license has been selected for this repository yet. Until a license is added, the source code should not be redistributed as if it were open source. The project is based on the INSA Toulouse graph coursework and retains its original academic context.