Hay buenas respuestas aquí y muchas disponibles en línea, pero usemos algunas imágenes para ayudar a visualizar las diferencias paso a paso.
Paso 1.
- ¿Se puede resolver Codeforces 431C - k-tree por recusión?
- ¿Podemos utilizar el algoritmo de Clasificación colectiva iterativa (ICA) de forma distributiva para procesar grandes datos?
- ¿Cuál es el enfoque para encontrar un acuerdo que produzca el salario mínimo?
- ¿Cómo funciona Swype?
- Cómo demostrar que puedes ir de C a L con secuencias de vuelos
Ambos comienzan en el nodo raíz.
Paso 2.
Ambos arbitrariamente van al Nodo izquierdo más cercano. (Ambos podrían ser programados para ir primero también).
Paso 3.
DFS continúa explorando el árbol (primero se PROFUNDIZA). BFS está interesado en explorar todo en el nivel en el que se encuentra actualmente. BFS explora nivel por nivel.
Etapa 4.
DFS no tiene más profundidad para explorar en este camino. Sube uno y ve que hay más profundidad para explorar nuevamente desde un camino alternativo.
BFS terminó el nivel que estaba explorando y pasa al siguiente nivel.
Paso 5
DFS no tiene más profundidad para explorar nuevamente en este camino, vuelve a un nodo visitado anteriormente (Root) y ve que puede comenzar su búsqueda de profundidad nuevamente en un nuevo camino. BFS continúa explorando el nivel inferior.
Paso 6
DFS continúa yendo tan lejos como puede en el gráfico. BFS continúa explorando el nivel inferior.
Paso 7
DFS no tenía más nodos para explorar después del paso 6, vuelve a subir e intenta una ruta alternativa. BFS completa la exploración del nivel en el que estaba.
En general, DFS intenta llegar lo más lejos que puede en un gráfico (explore primero la profundidad del gráfico). Si ya no puede explorar la profundidad, retrocede e intenta un camino alternativo en su búsqueda hacia abajo. BFS va nivel por nivel. BFS explora los nodos que lo rodean directamente primero.
Hay un gran video de MIT en BFS
y de manera similar una excelente en DFS