0% encontró este documento útil (1 voto)
92 vistas18 páginas

Algoritmo de Búsqueda en Profundidad DFS

El documento describe el algoritmo de búsqueda en profundidad (DFS) para recorrer los vértices de un grafo. DFS visita todos los vértices de una rama del grafo de manera recursiva antes de pasar a la siguiente rama, marcando los vértices visitados para evitar bucles. La complejidad de DFS es O(V+E) ya que visita cada vértice y arista una sola vez.

Cargado por

Roberto Carlos
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (1 voto)
92 vistas18 páginas

Algoritmo de Búsqueda en Profundidad DFS

El documento describe el algoritmo de búsqueda en profundidad (DFS) para recorrer los vértices de un grafo. DFS visita todos los vértices de una rama del grafo de manera recursiva antes de pasar a la siguiente rama, marcando los vértices visitados para evitar bucles. La complejidad de DFS es O(V+E) ya que visita cada vértice y arista una sola vez.

Cargado por

Roberto Carlos
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

BSQUEDA DE PROFUNDIDAD (DFS)

Roberto Carlos Martnez Moreno Algoritmos Computacionales Dra. Satu Elisa Schaeffer Verano 2011 [Link]

RECORRIDOS DE GRAFOS
Hay abundantes problemas que se pueden interpretar como un grafo. Un grafo G=(V,E) se basa en un conjunto V de vrtices (o nodos), y un conjunto E de aristas (edges o arcs) Existen diferentes razones para analizar los grafos, entre ellos buscar uno o mas vrtices. Vrtice
p r o f u d i d a d

Arista

DFS; DEPTH-FIST SEARCH


1
La bsqueda en profundidad o DFS Visita todos los vrtices de una ramicacin de un grafo, antes de continuar con el siguiente. Recorre cualquier vrtice muy profundo o lejano del origen antes que otros cercanos. Se puede implementar recursivamente.

2 3 5 6 7 8 4

11 12 10

13 14

15 16 9

DFS; DEPTH-FIST SEARCH


1

Para no inspeccionar a un vrtice que ya visitamos varias veces, debemos de sealar los vrtices que ya visitamos para que as solo visitamos a un vrtice que no ha sido marcado como visitado.

2 3 5 6 7 8 4

11 12 10

13 14

15 16 9

DFS; DEPTH-FIST SEARCH


Cuando ya no hay nodos que visitar en el camino que hemos recorrido, entonces regresa (Backtracking), volviendo atrs, volviendo al vertice mas proximo que no ha terminado de explorar. Si se hace una visita antes de la recursin, es preorden, despus es postorden.
1 2 3 5 6 7 8 9 4 10 11 12 15 16 13 14

ALGORITMO
1. funcin DFS(vrtice X). 2. sealamos X como visitado. 3. para cada vrtice V prximo a X, si no se ha visitado; marcamos como visitado. 4. llamamos DFS(vrtice V). DFS(vrtice X){ visitado[X] = Verdad; para cada V prximo{ si visitado[V] = Falso { DFS(V); } } }

NOTA

Es importante decir que este algoritmo se puede escribir de las dos maneras, recursivo e iterativo, de ambas versiones es lo mismo, solo que en iterativo se hace explcito una pila, esto se remplaza en el modo recursivo con las llamadas.

EJEMPLO
1 2 3 6 7 8 9 4 10 11 12 15 13 14 5 16

EJEMPLO
C G I

EJEMPLO
C

Si llamamos inicial mente a C, lo marcamos como visitado, sus prximos son G, I, O

EJEMPLO
Despues de la llamada recursiva, ira a su prximo segun su adyecente, ahora se va a G, se marca como visitado, por lo tanto el inicial es G y sus prximos son C, M, O.
C G I

EJEMPLO
C

Ahora marcamos como visitado a M, que es el siguiente, su prximo es G.

EJEMPLO
Como el vrtice G ya esta visitado, termina la recursin en esa rama, el siguiente prximo de G es O, que no ha sido visitado, lo marcamos; ahora sus prximos son GyC
C G I

EJEMPLO
Sus prximos ya han sido visitados, por lo tanto terminamos la recursin, ahora el actual es C, teniendo como prximos a G, O, I. Como G y O ya fueron M visitados, nos vamos a I y lo marcamos como visitado
C G I

EJEMPLO
Entonces termina la recursin y termina el recorrido por DFS
C G I

ANLISIS ASINTTICO
Suponiendo que el grafo est conectado. La bsqueda en profundidad visita cada vrtice una ves ya que los visitados no volvern a ser revisados y checa cada arista cada que se desplaza. Es por eso que, la complejidad del DFS es O(V+E)

APLICACIONES
Soluciones en la inteligencia articial. Encontrar un componente conectado (teora de los grafos) Detectar ciclos Clasicacin topogrca. La resolucin de laberintos u otros puzzles. Generar laberintos Construccin de caminos

REFERENCIAS
[Link] [Link] [Link] [Link] GraphAlgor/[Link] [Link] [Link] [Link]

También podría gustarte