BFS vs DFS
BFS vs DFS compared — data structure, shortest paths, memory and use cases, with interactive visualizers for both.
Breadth-first search (BFS) explores a graph level by level with a queue; depth-first search (DFS) dives down one branch with a stack (or recursion). Both visit every node in O(V + E) but suit different problems.
BFS vs DFS at a glance
| BFS | DFS | |
|---|---|---|
| Data structure | Queue (FIFO) | Stack / recursion |
| Shortest path (unweighted) | Yes | No |
| Memory | Wide frontier | Path depth |
| Best for | Shortest paths, levels | Cycles, topological sort, mazes |
When to use BFS
Use BFS for shortest paths on unweighted graphs and level-order traversal.
When to use DFS
Use DFS for cycle detection, topological sorting, and exploring all paths.
Tools for BFS & DFS
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 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 herramientaBFS vs DFS
¿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.