DFS explora un grafo yendo lo más profundo posible en cada rama antes de retroceder. Utiliza una pila (a menudo la pila de llamadas a través de recursión) y visita un camino completo antes de explorar alternativas.
La idea
Desde un nodo, recurre en un vecino no visitado y sigue profundizando; cuando te atascas, retrocede e intenta otra rama.
Ejemplo
():
visited :
visited = ()
visited.add(node)
order = [node]
nbr graph[node]:
nbr visited:
order += dfs(graph, nbr, visited)
order
graph = {: [, ], : [], : [], : []}
dfs(graph, )
