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.
Diferencia entre BFS y DFS
Diferencia entre BFS y DFS

ยฟ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)

Ejemplo de BFS

Tienes un grรกfico de siete nรบmeros que van del 0 al 6.

Paso 2)

Ejemplo de BFS

Se ha marcado 0 o cero como nodo raรญz.

Paso 3)

Ejemplo de BFS

0 se visita, se marca y se inserta en la estructura de datos de la cola.

Paso 4)

Ejemplo de BFS

Los 0 nodos adyacentes y no visitados restantes se visitan, marcan e insertan en la cola.

Paso 5)

Ejemplo de BFS

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.

Ejemplo de DFS

Paso 1)

Ejemplo de DFS

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)

Ejemplo de DFS

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)

Ejemplo de DFS

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)

Ejemplo de DFS

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.

Ejemplo de 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.

Resumir este post con: