Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
 DFS(Depth-first Search) o Búsqueda en profundidad<br />
Una Búsqueda en profundidad es un algoritmo que permite recorrer todos los vértices de un grafo o árbol de manera ordenada...
Un ejemplo de grafo sería G = ( V, A ) dado por los conjuntos:  V = {1, 2, 3, 4, 5, 6}  y   A = { {1,4}, {1,5}, {1,6}, {2,...
Un ejemplo de grafo sería G = ( V, A ) dado por los conjuntos:  V = {1, 2, 3, 4, 5, 6}  y   A = { {1,4}, {1,5}, {1,6}, {2,...
Consiste en ir expandiendo todos y cada uno de los vértices que va localizando, de forma ordenada en un camino concreto. C...
ALGORITMO DFS: Sea G = (V, A) un grafo conexo, V’ = V  un conjunto de vértice, A’ un vector de arcos inicialmente vacío y ...
Pseudocódigo<br />DFS-Visitar(nodo u) <br />       estado[u] ← VISITADO <br />       tiempo ← tiempo + 1 <br />       d[u]...
Planteamiento del problema<br />Supongamos que tenemos un árbol (dibujo) ¿Cómo recorremos sus nodos en profundidad? Siendo...
  Buscaremos en todas las ramas que cuelgan, de izquierda a derecha, y exploramos cada rama hasta llegar a una hoja. <br /...
Referencias<br />http://www.dma.fi.upm.es/java/matematicadiscreta/busqueda/<br />http://es.wikipedia.org/wiki/B%C3%BAsqued...
Upcoming SlideShare
Loading in …5
×

Depth-first Search

2,224 views

Published on

Búsqueda en profundidad

Published in: Education
  • Be the first to comment

  • Be the first to like this

Depth-first Search

  1. 1. DFS(Depth-first Search) o Búsqueda en profundidad<br />
  2. 2. Una Búsqueda en profundidad es un algoritmo que permite recorrer todos los vértices de un grafo o árbol de manera ordenada, mas no uniforme.<br />Un grafo G es un par (V, A) donde V es un conjunto finito y no vacío, cuyos elementos reciben el nombre de vértices, y A es un conjunto de arcos representados por pares no ordenados de elementos de V.<br />
  3. 3. Un ejemplo de grafo sería G = ( V, A ) dado por los conjuntos:  V = {1, 2, 3, 4, 5, 6}  y   A = { {1,4}, {1,5}, {1,6}, {2,4}, {2,6}, {3,5}, {4,5} }, y cuya representación gráfica se refleja en la siguiente figura:<br />
  4. 4. Un ejemplo de grafo sería G = ( V, A ) dado por los conjuntos:  V = {1, 2, 3, 4, 5, 6}  y   A = { {1,4}, {1,5}, {1,6}, {2,4}, {2,6}, {3,5}, {4,5} }, y cuya representación gráfica se refleja en la siguiente figura:<br />
  5. 5. Consiste en ir expandiendo todos y cada uno de los vértices que va localizando, de forma ordenada en un camino concreto. Cuando ya no quedan más vértices que visitar en dicho camino, regresar,de modo que repite el mismo proceso con cada uno de las partes del vértice ya procesado.<br />
  6. 6. ALGORITMO DFS: Sea G = (V, A) un grafo conexo, V’ = V  un conjunto de vértice, A’ un vector de arcos inicialmente vacío y P un vector auxiliar inicialmente vacío: <br />Se introduce el vértice inicial en P y se elimina del conjunto V’.<br />Mientras V’ no sea vacío repetir los puntos 3 y 4. En otro caso parar.<br />Se toma el último elemento de P como vértice activo.<br />Si el vértice activo tiene algún vértice adyacente que se encuentre en V’:<br />Se toma el de menor índice. <br />Se inserta en P como último elemento. <br />Se elimina de V’. <br />Se inserta en A’ el arco que le une con el vértice activo. <br />Si el vértice activo no tiene adyacentes se elimina de P.<br />
  7. 7. Pseudocódigo<br />DFS-Visitar(nodo u) <br /> estado[u] ← VISITADO <br /> tiempo ← tiempo + 1 <br /> d[u] ← tiempo <br /> PARA CADAv ∈ Vecinos[u] HACER<br /> SI estado[v] = NO_VISITADO ENTONCES<br /> padre[v] ← u DFS_Visitar(v) <br /> estado[u] ← TERMINADO <br /> tiempo ← tiempo + 1 <br /> f[u] ← tiempo <br />
  8. 8. Planteamiento del problema<br />Supongamos que tenemos un árbol (dibujo) ¿Cómo recorremos sus nodos en profundidad? Siendo el 1 el nodo inicial y 7 el nodo objetivo:<br />
  9. 9. Buscaremos en todas las ramas que cuelgan, de izquierda a derecha, y exploramos cada rama hasta llegar a una hoja. <br /> Para cada hijo buscamos a su vez en profundidad, parando cuando se encuentre el objetivo. <br /> En este ejemplo, la secuencia a seguir está indicada por el número de los nodos: 1-> 2-> 3-> 4-> 5-> 6-> 7<br />
  10. 10.
  11. 11. Referencias<br />http://www.dma.fi.upm.es/java/matematicadiscreta/busqueda/<br />http://es.wikipedia.org/wiki/B%C3%BAsqueda_en_profundidad<br />

×