This project implements Contraction Hierarchies (CH), Customizable Contraction Hierarchies (CCH), and Dijkstra's algorithm for pathfinding on real road networks. It also provides an interactive visualization that highlights the paths and shortcuts of each algorithm.
- Algorithm Implementations: Complete implementations of Dijkstra, CH, and CCH for realistic road graphs.
- Interactive Map Visualization: WebGL-based rendering with
deck.glandVue.jsfor dynamic map interactions. - Hierarchical Structure Visualization: Three-dimensional arc rendering to distinguish shortcut edges.
- Geocoding Integration: Search for locations by address or city and find the nearest graph vertex.
- Performance Metrics: Display real-time performance metrics for various algorithms.
- Backend: Go (for pathfinding algorithms and API)
- Frontend: Vue.js, deck.gl, MapLibre GL JS
- Data: OpenStreetMap road networks, KaHIP for graph partitioning
To set up and run the project locally:
- Clone the repository:
git clone https://github.com/your-username/efficient-routeplanning.git cd efficient-routeplanning - Backend Setup (Go):
go mod tidy go build ./cmd/efficient-routeplanning # Run the backend server ./efficient-routeplanning - Frontend Setup (Vue.js):
Open your browser to
cd frontend npm install npm run devhttp://localhost:5173(or the address shown in your terminal).
The experiments/ directory contains Go programs for benchmarking the implemented algorithms. Results are stored in the results/ directory, including CSV data and generated plots. Refer to experiments/README.md for more details on running experiments.
A written report that summarizes my findings is found in report.pdf
Two short videos demonstrating the tool are available in demo1.mp4 and demo2.mp4.
- Demo 1 visualizes the user taking a look at CH shortcuts as three-dimensional arcs, highlighting how CH computes its Graph.
- Demo 2 demonstrates the geocoding functionality, showing a query from "Denkendorf" to "Stetten" in Baden-Württemberg and mapping the result onto the road network for accurate pathfinding.
