BFS vs DFS: diferencia entre ellos
Diferencia clave entre BFS y DFS
- BFS encuentra el camino mรกs corto hasta el destino, mientras que DFS va al final de un subรกrbol y luego retrocede.
- La forma completa de BFS es bรบsqueda en profundidad, mientras que la forma completa de DFS es bรบsqueda en profundidad.
- BFS utiliza una cola para realizar un seguimiento de la prรณxima ubicaciรณn a visitar. mientras que DFS usa una pila para realizar un seguimiento de la siguiente ubicaciรณn a visitar.
- BFS atraviesa segรบn el nivel del รกrbol, mientras que DFS atraviesa segรบn la profundidad del รกrbol.
- BFS se implementa utilizando una lista FIFO; por otro lado, DFS se implementa mediante una lista LIFO.
- En BFS, nunca puede quedar atrapado en bucles finitos, mientras que en DFS, puede quedar atrapado en bucles infinitos.
ยฟQuรฉ es BFS?
BFS es un algoritmo que se utiliza para graficar datos o buscar รกrboles o recorrer estructuras. El algoritmo visita y marca de manera eficiente todos los nodos clave de un grรกfico de manera precisa y en toda su amplitud.
Este algoritmo selecciona un รบnico nodo (punto inicial o de origen) en un grรกfico y luego visita todos los nodos adyacentes al nodo seleccionado. Una vez que el algoritmo visita y marca el nodo de inicio, se desplaza hacia los nodos no visitados mรกs cercanos y los analiza.
Una vez visitados, todos los nodos estรกn marcados. Estas iteraciones continรบan hasta que todos los nodos del grรกfico hayan sido visitados y marcados con รฉxito. La forma completa de BFS es la bรบsqueda en amplitud.
ยฟQuรฉ es DFS?
DFS es un algoritmo para buscar o atravesar grรกficos o รกrboles en direcciรณn profunda. La ejecuciรณn del algoritmo comienza en el nodo raรญz y explora cada rama antes de retroceder. Utiliza una estructura de datos de pila para recordar, obtener el vรฉrtice siguiente e iniciar una bรบsqueda, cada vez que aparece un callejรณn sin salida en cualquier iteraciรณn. La forma completa de DFS es bรบsqueda en profundidad.
Diferencia entre el รกrbol binario BFS y DFS
Estas son las diferencias importantes entre BFS y DFS.
| BFS | DFS |
|---|---|
| BFS encuentra el camino mรกs corto hacia el destino. | DFS va al final de un subรกrbol y luego retrocede. |
| La forma completa de BFS es Breadth-First Search. | La forma completa de DFS es Bรบsqueda en profundidad. |
| Utiliza una cola para realizar un seguimiento del prรณximo lugar a visitar. | Utiliza una pila para realizar un seguimiento del prรณximo lugar a visitar. |
| BFS atraviesa segรบn el nivel del รกrbol. | DFS atraviesa segรบn la profundidad del รกrbol. |
| Se implementa utilizando la lista FIFO. | Se implementa utilizando la lista LIFO. |
| Requiere mรกs memoria en comparaciรณn con DFS. | Requiere menos memoria en comparaciรณn con BFS. |
| Este algoritmo proporciona la soluciรณn de camino menos profundo. | Este algoritmo no garantiza la soluciรณn del camino menos profundo. |
| No es necesario retroceder en BFS. | Es necesario retroceder en DFS. |
| Nunca podrรกs quedar atrapado en bucles finitos. | Puedes quedar atrapado en bucles infinitos. |
| Si no encuentra ningรบn objetivo, es posible que deba expandir muchos nodos antes de encontrar la soluciรณn. | Si no encuentra ningรบn objetivo, es posible que se produzca un retroceso del nodo hoja. |
Ejemplo de BFS
En el siguiente ejemplo de BFS, hemos utilizado un grรกfico que tiene 6 vรฉrtices.
Ejemplo de BFS
Paso 1)
Tienes un grรกfico de siete nรบmeros que van del 0 al 6.
Paso 2)
Se ha marcado 0 o cero como nodo raรญz.
Paso 3)
0 se visita, se marca y se inserta en la estructura de datos de la cola.
Paso 4)
Los 0 nodos adyacentes y no visitados restantes se visitan, marcan e insertan en la cola.
Paso 5)
Las iteraciones de recorrido se repiten hasta que se visitan todos los nodos.
Ejemplo de DFS
En el siguiente ejemplo de DFS, hemos utilizado un grรกfico no dirigido que tiene 5 vรฉrtices.
Paso 1)
Hemos comenzado desde el vรฉrtice 0. El algoritmo comienza poniรฉndolo en la lista visitada y poniendo simultรกneamente todos sus vรฉrtices adyacentes en la estructura de datos llamado pila.
Paso 2)
Visitarรก el elemento que estรก en la parte superior de la pila, por ejemplo 1, e irรก a sus nodos adyacentes. Es porque 0 ya ha sido visitado. Por tanto, visitamos el vรฉrtice 2.
Paso 3)
El vรฉrtice 2 tiene un vรฉrtice cercano no visitado en 4. Por lo tanto, lo agregamos a la pila y lo visitamos.
Paso 4)
Finalmente visitaremos el รบltimo vรฉrtice 3, no tiene ningรบn nodo contiguo no visitado. Hemos completado el recorrido del grรกfico utilizando el algoritmo DFS.
Aplicaciones de BFS
Aquรญ estรกn las aplicaciones de BFS:
Grรกficos no ponderados
El algoritmo BFS puede crear fรกcilmente la ruta mรกs corta y un รกrbol de expansiรณn mรญnimo para visitar todos los vรฉrtices del grรกfico en el menor tiempo posible con alta precisiรณn.
Redes P2P
Se puede implementar BFS para localizar todos los nodos mรกs cercanos o vecinos en una red peer to peer. Esto permitirรก encontrar los datos necesarios mรกs rรกpidamente.
Rastreadores web
Los motores de bรบsqueda o los rastreadores web pueden crear fรกcilmente mรบltiples niveles de รญndices empleando BFS. La implementaciรณn de BFS comienza desde la fuente, que es la pรกgina web, y luego visita todos los enlaces de esa fuente.
Transmisiรณn en red
Un paquete difundido es guiado por el algoritmo BFS para encontrar y llegar a todos los nodos para los que tiene la direcciรณn.
Aplicaciones de DFS
Aquรญ hay aplicaciones importantes de DFS:
Grรกfico ponderado
En un grรกfico ponderado, el recorrido del grรกfico DFS genera el รกrbol de ruta mรกs corto y el รกrbol de expansiรณn mรญnimo.
Detectar un ciclo en un grรกfico
Un grรกfico tiene un ciclo si encontramos un borde posterior durante DFS. Por lo tanto, debemos ejecutar DFS para el grรกfico y verificar los bordes posteriores.
Encontrar camino
Podemos especializarnos en el algoritmo DFS para buscar un camino entre dos vรฉrtices.
Clasificaciรณn topolรณgica
Se utiliza principalmente para programar tareas a partir de las dependencias dadas entre el grupo de tareas. En informรกtica, se utiliza en la programaciรณn de instrucciones, serializaciรณn de datos, sรญntesis lรณgica y determinaciรณn del orden de las tareas de compilaciรณn.
Bรบsqueda de componentes fuertemente conectados de un grรกfico
Se utiliza en el grรกfico DFS cuando hay una ruta desde todos y cada uno de los vรฉrtices del grรกfico hasta los demรกs vรฉrtices restantes.
Resolver acertijos con una sola soluciรณn
El algoritmo DFS se puede adaptar fรกcilmente para buscar todas las soluciones a un laberinto incluyendo nodos en la ruta existente en el conjunto visitado.












