ESTRUCTURA DE DATOS II RECORRIDOS DE GRAFOS  UNIVERSIDAD AUTONOMA GABRIEL RENE MORENO FACULTAD DE CIENCIAS EXACTAS Y TECNO...
Recorridos en Grafos:  <ul><li>Recorrer un grafo significa tratar de alcanzar todos los nodos que estén relacionados con u...
Recorrido en Profundidad (DFS) :  <ul><li>Trata de buscar los caminos que parten desde el nodo de salida hasta que ya no e...
Ejemplo de DFS :  <ul><li>Analice el siguiente grafo y realice el recorrido primero en profundidad: </li></ul>Grafo =>   D...
Recorrido en Anchura (BFS) :  <ul><li>Supone recorrer el grafo, a partir de un nodo dado, en niveles, es decir, primero lo...
Ejemplo de BFS :  <ul><li>Analice el siguiente grafo y realice el recorrido primero en anchura: </li></ul>Grafo =>   DFS(5...
Recorridos <ul><li>Primero en profundidad </li></ul><ul><ul><li>Visitar vértice inicial v i </li></ul></ul><ul><ul><li>Vis...
Recorridos <ul><li>Profundidad </li></ul><ul><li>DFS(v i ){ </li></ul><ul><li>marcar v i  como visitado </li></ul><ul><li>...
Recorridos: operaciones auxiliares <ul><li>Marcar vértice como visitado </li></ul><ul><ul><li>Si los vértices están identi...
Recorrido primero en profundidad 1, 3, 6, 10, 13, 12, 9, 5, 2, 4, 7, 8, 11 1 2 3 4 6 7 8 5 10 11 9 13 12 1 10 2 11 6 8 3 9...
Recorrido primero en anchura 1, 3, 4, 2, 6, 7, 8, 5, 10, 11, 9, 13, 12 1 2 3 4 6 7 8 5 10 11 9 13 12 1 2 3 4 5 6 7 8 9 10 ...
Implementación de DFS :  <ul><li>Se utilizara una composición de la class conjunto, para llevar la cuenta de los vértices ...
Implementación de BFS :  <ul><li>Se utilizara una composición de la class conjunto, para llevar la cuenta de los vértices ...
¿Ahora a Trabajar?
GRACIAS INF-310  Estructura de Datos II
Upcoming SlideShare
Loading in...5
×

Recorridos de Grafos

9,956

Published on

Recorridos de Grafos

Published in: Technology
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
9,956
On Slideshare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
0
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Transcript of "Recorridos de Grafos"

  1. 1. ESTRUCTURA DE DATOS II RECORRIDOS DE GRAFOS UNIVERSIDAD AUTONOMA GABRIEL RENE MORENO FACULTAD DE CIENCIAS EXACTAS Y TECNOLOGIA <ul><li>PROFESOR: </li></ul><ul><li>Ing. Evans Balcazar Veizaga </li></ul>
  2. 2. Recorridos en Grafos: <ul><li>Recorrer un grafo significa tratar de alcanzar todos los nodos que estén relacionados con uno que llamaremos nodo de salida.    Existen básicamente dos técnicas para recorrer un grafo: el recorrido en anchura y el recorrido en profundidad. </li></ul><ul><li>Así, para recorrer un grafo consiste en visitar todos los vértices alcanzables a partir de uno dado. Hay dos formas. </li></ul><ul><ul><li>Recorrido en profundidad (DFS). </li></ul></ul><ul><ul><li>Recorrido en anchura (BFS). </li></ul></ul>
  3. 3. Recorrido en Profundidad (DFS) : <ul><li>Trata de buscar los caminos que parten desde el nodo de salida hasta que ya no es posible avanzar más. Cuando ya no puede avanzarse más sobre el camino elegido, se vuelve atrás en busca de caminos alternativos, que no se estudiaron previamente. </li></ul><ul><li>La búsqueda en profundidad empieza por un vértice V. del grafo G; V no visitado; así hasta que no haya mas vértices adyacentes no visitados. </li></ul>
  4. 4. Ejemplo de DFS : <ul><li>Analice el siguiente grafo y realice el recorrido primero en profundidad: </li></ul>Grafo => DFS(50)=50,17,12,9,14,23,19,72,54,67,76
  5. 5. Recorrido en Anchura (BFS) : <ul><li>Supone recorrer el grafo, a partir de un nodo dado, en niveles, es decir, primero los que están a una distancia de un arco del nodo de salida, después los que están a dos arcos de distancia, y así sucesivamente hasta alcanzar todos los nodos a los que se pudiese llegar desde el nodo salida. </li></ul><ul><li>Este método comienza visitando el vértice de partida A, para continuación visitar los adyacentes que no estuvieron ya visitados. Así sucesivamente con los adyacentes. Este método utiliza una cola como estructura auxiliar en la que se mantienen los vértices que se vayan a procesar posteriormente. </li></ul>
  6. 6. Ejemplo de BFS : <ul><li>Analice el siguiente grafo y realice el recorrido primero en anchura: </li></ul>Grafo => DFS(50)=50,17,72,12,23,54,76,9,14,19,67
  7. 7. Recorridos <ul><li>Primero en profundidad </li></ul><ul><ul><li>Visitar vértice inicial v i </li></ul></ul><ul><ul><li>Visitar vértice adyacente a v i </li></ul></ul><ul><ul><li>... proceder así hasta encontrar uno ya visitado... </li></ul></ul><ul><ul><li>Volver atrás hasta llegar a un vértice con adyacentes sin visitar </li></ul></ul><ul><ul><li>El recorrido termina cuando volviendo atrás llegamos al vértice inicial v i y no quedan adyacentes por recorrer </li></ul></ul><ul><li>Primero en anchura </li></ul><ul><ul><li>Visitar vértice inicial v i </li></ul></ul><ul><ul><li>Visitar todos los vértices adyacentes a v i </li></ul></ul><ul><ul><li>Al terminar, comenzar a visitar los adyacentes a los adyacentes a v i </li></ul></ul><ul><ul><li>... proceder así hasta que no queden vértices por visitar </li></ul></ul>
  8. 8. Recorridos <ul><li>Profundidad </li></ul><ul><li>DFS(v i ){ </li></ul><ul><li>marcar v i como visitado </li></ul><ul><li>para cada v k adyacente a v </li></ul><ul><li>si v k no visitado </li></ul><ul><li>entonces DFS(v k ) </li></ul><ul><li>} </li></ul><ul><li>Anchura </li></ul><ul><li>BFS(v i ){ </li></ul><ul><li>marcar v i como visitado </li></ul><ul><li>meter v i en cola q </li></ul><ul><li>mientras cola q no vacía </li></ul><ul><li>sacar v de cola q </li></ul><ul><li>para cada v k adyacente a v </li></ul><ul><li>si v k no visitado </li></ul><ul><li>entonces </li></ul><ul><li>marcar v k visitado </li></ul><ul><li>meter v k en cola q </li></ul><ul><li>} </li></ul>
  9. 9. Recorridos: operaciones auxiliares <ul><li>Marcar vértice como visitado </li></ul><ul><ul><li>Si los vértices están identificados por algún tipo ordinal, emplear un conjunto que contenga los identificadores de los vértices visitados </li></ul></ul><ul><li>Encontrar los vértices adyacentes </li></ul><ul><ul><li>Con matrices de adyacencia: recorrer la fila correspondiente al vértice, buscando columnas a TRUE </li></ul></ul><ul><ul><li>Con listas de adyacencia: recorrer la lista </li></ul></ul><ul><li>Cola de vértices visitados en anchura </li></ul><ul><ul><li>Operaciones del TAD Cola </li></ul></ul>
  10. 10. Recorrido primero en profundidad 1, 3, 6, 10, 13, 12, 9, 5, 2, 4, 7, 8, 11 1 2 3 4 6 7 8 5 10 11 9 13 12 1 10 2 11 6 8 3 9 7 4 5 12
  11. 11. Recorrido primero en anchura 1, 3, 4, 2, 6, 7, 8, 5, 10, 11, 9, 13, 12 1 2 3 4 6 7 8 5 10 11 9 13 12 1 2 3 4 5 6 7 8 9 10 11 12
  12. 12. Implementación de DFS : <ul><li>Se utilizara una composición de la class conjunto, para llevar la cuenta de los vértices marcados: </li></ul>void DFS(int v) { Conjunto v; DFS(v,c); } void DFS(int v1,Conjunto c) { cout<<v1; c.insertar(v1); for( w.adyancente(v1)) if(!c.pertenece(w)) DFS(w,c); } void DFS(int v1,Conjunto c) { cout<<v1; puntero L=V[v1]; while( L!=Tierra) { int w=Data(L); if(!c.pertenece(w)) DFS(w,c); } }
  13. 13. Implementación de BFS : <ul><li>Se utilizara una composición de la class conjunto, para llevar la cuenta de los vértices marcados: </li></ul>void grafo:: DFS(int v) { Conjunto v; Cola q; q.meter(v); do{ int w; q.sacar(w); if(!c.pertenece(w))//no marc { cout<<w; q.insertar(w);//marc for(x.adyacente(w)) { if(!c.pertecene(x)) q.meter(x); } } } while(!q.vacia()) }
  14. 14. ¿Ahora a Trabajar?
  15. 15. GRACIAS INF-310 Estructura de Datos II

×