Skip to content

About

Fair comparison of shortest-path algorithms on a shared weighted graph.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

Route Optimization Algorithms

A reproducible comparison of Dijkstra, A*, SPFA, Floyd-Warshall, and BFS on one shared weighted graph. The project separates two questions that are often mixed together:

  • Which route has the lowest total travel cost?
  • Which route uses the fewest road segments?

Route comparison

Main result

Dijkstra, A*, SPFA, and Floyd-Warshall all return a minimum weighted cost of 5.10 on the same network. BFS returns a two-edge route with cost 8.80 because BFS minimizes hops, not weighted distance.

Algorithm Objective Weighted cost Hops
Dijkstra Minimum weight 5.10 4
A* Minimum weight 5.10 4
SPFA Minimum weight 5.10 4
Floyd-Warshall Minimum weight 5.10 4
BFS Minimum hops 8.80 2

This is the methodological correction at the center of the project: algorithms are compared on the same graph, and BFS is reported against its actual objective instead of being declared a distance winner.

Why this version is portfolio-ready

  • One common synthetic network for fair comparison
  • Original algorithm implementations instead of black-box calls
  • Euclidean A* heuristic validated against edge costs
  • Automated tests enforcing agreement among weighted shortest-path methods
  • Reproducible CSV and PNG outputs
  • No home address, real route, API key, or private location data

Repository structure

src/route_optimization/
  algorithms.py    # Dijkstra, A*, SPFA, Floyd-Warshall, BFS
  network.py       # deterministic fictional road network
  analysis.py      # benchmark, CSV export, and visualizations
tests/
  test_algorithms.py
outputs/
  algorithm_comparison.csv
  route_comparison.png
  weighted_costs.png

Run locally

python -m pip install -e ".[dev]"
python -m route_optimization.analysis
pytest

Runtime measurements in the CSV are descriptive microbenchmarks for this small graph, not universal rankings. Algorithmic complexity and graph structure matter more than a single local timing.

Data and privacy

The graph is fictional and generated directly in network.py. Node labels and coordinates are synthetic. Earlier exploratory notebooks were used only as inspiration for the learning objective and are intentionally excluded because they mixed graph definitions and comparison criteria.

Author

Aaron Fernandez Pinto, Data Science student at Universidad Autónoma de Baja California (UABC).


Español

Algoritmos de optimización de rutas

Una comparación reproducible de Dijkstra, A*, SPFA, Floyd-Warshall y BFS sobre un mismo grafo ponderado. El proyecto separa dos preguntas que suelen mezclarse:

  • ¿Qué ruta tiene el menor costo total de viaje?
  • ¿Qué ruta usa la menor cantidad de segmentos viales?

Comparación de rutas

Resultado principal

Dijkstra, A*, SPFA y Floyd-Warshall devuelven un costo ponderado mínimo de 5.10 en la misma red. BFS devuelve una ruta de dos aristas con costo 8.80 porque BFS minimiza saltos, no distancia ponderada.

Algoritmo Objetivo Costo ponderado Saltos
Dijkstra Peso mínimo 5.10 4
A* Peso mínimo 5.10 4
SPFA Peso mínimo 5.10 4
Floyd-Warshall Peso mínimo 5.10 4
BFS Saltos mínimos 8.80 2

Esta es la corrección metodológica central del proyecto: los algoritmos se comparan sobre el mismo grafo y BFS se reporta según su objetivo real en lugar de declararlo ganador en distancia.

Por qué esta versión está lista para el portafolio

  • Una red sintética común para una comparación justa
  • Implementaciones originales de los algoritmos en lugar de llamadas de caja negra
  • Heurística euclidiana de A* validada contra los costos de las aristas
  • Pruebas automatizadas que exigen concordancia entre los métodos de ruta mínima ponderada
  • Salidas CSV y PNG reproducibles
  • Sin domicilio, ruta real, clave de API ni datos privados de ubicación

Estructura del repositorio

src/route_optimization/
  algorithms.py    # Dijkstra, A*, SPFA, Floyd-Warshall, BFS
  network.py       # red vial ficticia y determinista
  analysis.py      # benchmark, exportación CSV y visualizaciones
tests/
  test_algorithms.py
outputs/
  algorithm_comparison.csv
  route_comparison.png
  weighted_costs.png

Ejecución local

python -m pip install -e ".[dev]"
python -m route_optimization.analysis
pytest

Las mediciones de tiempo de ejecución en el CSV son microbenchmarks descriptivos para este grafo pequeño, no rankings universales. La complejidad algorítmica y la estructura del grafo importan más que una sola medición local.

Datos y privacidad

El grafo es ficticio y se genera directamente en network.py. Las etiquetas y coordenadas de los nodos son sintéticas. Los notebooks exploratorios anteriores se usaron sólo como inspiración para el objetivo de aprendizaje y se excluyeron intencionalmente porque mezclaban definiciones de grafos y criterios de comparación.

Autor

Aaron Fernandez Pinto, estudiante de Ciencia de Datos en la Universidad Autónoma de Baja California (UABC).

About

Fair comparison of shortest-path algorithms on a shared weighted graph.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages