Búsqueda en profundidad

Revisión del 12:44 9 jun 2010 de Asanto uci (discusión | contribuciones) (Página creada con '==== {{Referencia}}Búsqueda en profundidad ==== Una Búsqueda en profundidad (en inglés DFS o Depth First Search) es un algoritmo que permite recorrer todos los nodos de un …')
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)

Plantilla:ReferenciaBúsqueda en profundidad

Una Búsqueda en profundidad (en inglés DFS o Depth First Search) es un algoritmo que permite recorrer todos los nodos de un grafo o árbol (teoría de grafos) de manera ordenada, pero no uniforme. Su funcionamiento consiste en ir expandiendo todos y cada uno de los nodos que va localizando, de forma recurrente, en un camino concreto. Cuando ya no quedan más nodos que visitar en dicho camino, regresa (Backtracking), de modo que repite el mismo proceso con cada uno de los hermanos del nodo ya procesado.

Análogamente existe el algoritmo de búsqueda en anchura (BFS o Breadth First Search).

Pseudocódigo

  • Pseudocódigo para grafos
  DFS(grafo G)
     PARA CADA vertice u ∈ V[G] HACER
           estado[u] ← NO_VISITADO
             padre[u] ← NULO
     tiempo ← 0
     PARA CADA vertice u ∈ V[G] HACER
           SI estado[u] = NO_VISITADO ENTONCES
                   DFS_Visitar(u)
  DFS-Visitar(nodo u)
     estado[u] ← VISITADO
     tiempo ← tiempo + 1
     d[u] ← tiempo
     PARA CADA v ∈ Vecinos[u] HACER
           SI estado[v] = NO_VISITADO ENTONCES
                   padre[v] ← u
                   DFS_Visitar(v)
     estado[u] ← TERMINADO
     tiempo ← tiempo + 1
     f[u] ← tiempo

Arcos DF

Si en tiempo de descubrimiento de u tenemos el arco (u,v):

i. Si el estado de v es NO_VISITADO, entonces (u,v) ∈ DF,

Véase también


  • Lema: Un Grafo dirigido es cíclico si y sólo si al ejecutar DFS(G) produce al menos un arco hacia atrás.

Referencias