Skip to content

A Python project that visually compares multiple pathfinding algorithms (BFS, A*, Dijkstra, Greedy) on randomly generated labyrinths using Pygame. The project features configurable execution modes (manual and automatic), a scoring system based on solution quality (distance and nodes used), and interactive visualization of each algorithm’s progress.

Notifications You must be signed in to change notification settings

fa8i/Pathfinding-algorithms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pathfinding Algorithms Comparison

Descripción del Proyecto

Este proyecto tiene como objetivo comparar el comportamiento de diferentes algoritmos de búsqueda de caminos en laberintos generados aleatoriamente. La aplicación visual, desarrollada en Pygame, muestra en paralelo la ejecución de cada algoritmo sobre el mismo laberinto y registra diversas métricas (número de nodos expandidos, longitud del camino, etc.). Además, se otorgan puntos a cada algoritmo según su rendimiento en cada corrida, permitiendo obtener una puntuación acumulada que determina cuál se comporta mejor de forma general.

Algoritmos Utilizados

  • BFS (Breadth-First Search):
    Un algoritmo de búsqueda por anchura que explora todos los nodos a una misma distancia antes de avanzar. Garantiza encontrar el camino más corto.

  • A (A-star):*
    Combina la búsqueda de costo uniforme con una heurística (distancia Manhattan en este caso) para dirigir la búsqueda hacia el objetivo, siendo generalmente más eficiente que BFS en laberintos grandes.

  • Dijkstra:
    Un algoritmo de búsqueda de caminos que garantiza encontrar la ruta óptima en grafos con pesos no negativos. Se comporta de manera similar a A*, pero sin el componente heurístico.

  • Greedy Best-First Search:
    Se centra únicamente en la heurística para decidir qué nodo explorar a continuación. Es muy rápido, aunque no siempre garantiza el camino óptimo.

Sistema de Puntuación

En cada laberinto se evalúa el rendimiento de cada algoritmo: En cada laberinto se otorgan de 4 a 1 punto(s) a los algoritmos que encuentran solución, según la siguiente lógica:

  • Se premia al algoritmo que obtiene la menor distancia.
  • En caso de empate, se favorece al que ha utilizado menos nodos.
  • Si un algoritmo no encuentra solución, se le asigna 0 puntos.

Estas puntuaciones se acumulan a lo largo de múltiples ejecuciones y se muestran en una tabla acumulativa, junto con la posición final (ranking) basado en la puntuación acumulada.

Demo

Demo de la aplicación

About

A Python project that visually compares multiple pathfinding algorithms (BFS, A*, Dijkstra, Greedy) on randomly generated labyrinths using Pygame. The project features configurable execution modes (manual and automatic), a scoring system based on solution quality (distance and nodes used), and interactive visualization of each algorithm’s progress.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages