Graph Algorithms
BFS, DFS, Dijkstra & A* — pathfinding and traversal, visualized
A graph is just a set of nodes connected by edges — it models road networks, social connections, dependency chains and game maps alike. Graph algorithms answer two recurring questions: can I reach this node? and what is the cheapest way to get there?
Traversal: BFS vs DFS
Breadth-first search (BFS) explores a graph layer by layer using a queue, visiting all neighbours at distance 1 before distance 2. On an unweighted graph this finds the shortest path in terms of edge count. Depth-first search (DFS) instead follows one branch as far as it can using a stack (or recursion) before backtracking — ideal for cycle detection, topological sorting and maze generation. Both run in O(V + E) time.
Shortest paths: Dijkstra & A*
When edges carry weights (distances, costs, times), Dijkstra’s algorithm greedily settles the nearest unvisited node, guaranteeing the shortest path from a source to every other node in O((V + E) log V) with a priority queue. A* speeds this up for point-to-point queries by adding a heuristic that biases the search toward the goal — the same core relaxation step, just better-informed.
Where graphs show up
GPS routing, network packet forwarding, social-graph friend suggestions, build-system dependency ordering and game-AI pathfinding are all graph problems underneath. Master the four algorithms below and you have the toolkit for most of them. Drive each one yourself and watch the frontier expand in real time.
Try it interactively
Visualizador de Búsqueda en Anchura (BFS)
Búsqueda en anchura interactiva sobre una cuadrícula de celdas — dibuja muros, mueve el punto de inicio/destino, genera laberintos y observa la expansión paso a paso por capas. Funciona directamente en tu navegador.
Abrir herramientaVisualizador de Búsqueda en Profundidad (DFS)
Búsqueda en profundidad interactiva sobre una cuadrícula — dibuja muros, mueve el punto de inicio/destino, genera laberintos y ejecuta paso a paso el proceso de exploración en profundidad. Funciona íntegramente en el navegador.
Abrir herramientaVisualizador del algoritmo de Dijkstra
Visualiza la búsqueda de caminos de Dijkstra sobre una cuadrícula de celdas — dibuja muros, mueve el punto de inicio y destino, genera laberintos y ejecuta la búsqueda paso a paso. Funciona directamente en el navegador.
Abrir herramientaVisualizador del algoritmo de búsqueda de caminos A*
Búsqueda de caminos A* interactiva sobre una cuadrícula, con heurística de distancia Manhattan — dibuja muros, mueve el punto de inicio/destino, genera laberintos y ejecuta la búsqueda paso a paso. Funciona íntegramente en el navegador.
Abrir herramientaGenerador de laberintos
Generador de laberintos animado con el algoritmo de división recursiva (recursive division) — observa paso a paso cómo se levantan las paredes, ajusta la velocidad y crea nuevos laberintos. Combina muy bien con los visualizadores de algoritmos de búsqueda de rutas. Funciona por completo en el navegador.
Abrir herramientaPrefer a focused tool?
- Graph & Pathfinding → Watch graphs get traversed and shortest paths get found
Preguntas frecuentes
¿Cómo genera un laberinto el algoritmo de división recursiva?
Parte de un área vacía y luego divide recursivamente cada cámara con una pared recta que tiene un hueco aleatorio, repitiendo el proceso hasta que las cámaras son demasiado pequeñas para seguir dividiéndolas.
¿Qué es un laberinto "perfecto"?
Un laberinto en el que existe exactamente un único camino entre dos celdas cualesquiera, sin bucles ni zonas aisladas. El algoritmo de división recursiva siempre genera laberintos perfectos.
¿Puedo resolver este laberinto?
Sí — copia el diseño en los visualizadores de BFS, Dijkstra o A* (que comparten la misma cuadrícula) para ver cómo un algoritmo de búsqueda de rutas lo recorre.
¿Qué otros algoritmos de generación de laberintos existen?
Recursive backtracker (DFS aleatorizado), Prim's, Kruskal's, Wilson's y Eller's: cada uno produce laberintos con una textura visual diferente.