Recorridos de Grafos

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    3 Favorites

    Recorridos de Grafos - Presentation Transcript

    1. ESTRUCTURA DE DATOS II RECORRIDOS DE GRAFOS UNIVERSIDAD AUTONOMA GABRIEL RENE MORENO FACULTAD DE CIENCIAS EXACTAS Y TECNOLOGIA
      • PROFESOR:
      • Ing. Evans Balcazar Veizaga
    2. Recorridos en Grafos:
      • 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.
      • Así, para recorrer un grafo consiste en visitar todos los vértices alcanzables a partir de uno dado. Hay dos formas.
        • Recorrido en profundidad (DFS).
        • Recorrido en anchura (BFS).
    3. Recorrido en Profundidad (DFS) :
      • 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.
      • 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.
    4. Ejemplo de DFS :
      • Analice el siguiente grafo y realice el recorrido primero en profundidad:
      Grafo => DFS(50)=50,17,12,9,14,23,19,72,54,67,76
    5. Recorrido en Anchura (BFS) :
      • 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.
      • 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.
    6. Ejemplo de BFS :
      • Analice el siguiente grafo y realice el recorrido primero en anchura:
      Grafo => DFS(50)=50,17,72,12,23,54,76,9,14,19,67
    7. Recorridos
      • Primero en profundidad
        • Visitar vértice inicial v i
        • Visitar vértice adyacente a v i
        • ... proceder así hasta encontrar uno ya visitado...
        • Volver atrás hasta llegar a un vértice con adyacentes sin visitar
        • El recorrido termina cuando volviendo atrás llegamos al vértice inicial v i y no quedan adyacentes por recorrer
      • Primero en anchura
        • Visitar vértice inicial v i
        • Visitar todos los vértices adyacentes a v i
        • Al terminar, comenzar a visitar los adyacentes a los adyacentes a v i
        • ... proceder así hasta que no queden vértices por visitar
    8. Recorridos
      • Profundidad
      • DFS(v i ){
      • marcar v i como visitado
      • para cada v k adyacente a v
      • si v k no visitado
      • entonces DFS(v k )
      • }
      • Anchura
      • BFS(v i ){
      • marcar v i como visitado
      • meter v i en cola q
      • mientras cola q no vacía
      • sacar v de cola q
      • para cada v k adyacente a v
      • si v k no visitado
      • entonces
      • marcar v k visitado
      • meter v k en cola q
      • }
    9. Recorridos: operaciones auxiliares
      • Marcar vértice como visitado
        • Si los vértices están identificados por algún tipo ordinal, emplear un conjunto que contenga los identificadores de los vértices visitados
      • Encontrar los vértices adyacentes
        • Con matrices de adyacencia: recorrer la fila correspondiente al vértice, buscando columnas a TRUE
        • Con listas de adyacencia: recorrer la lista
      • Cola de vértices visitados en anchura
        • Operaciones del TAD Cola
    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. 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. Implementación de DFS :
      • Se utilizara una composición de la class conjunto, para llevar la cuenta de los vértices marcados:
      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. Implementación de BFS :
      • Se utilizara una composición de la class conjunto, para llevar la cuenta de los vértices marcados:
      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. ¿Ahora a Trabajar?
    15. GRACIAS INF-310 Estructura de Datos II

    + U.A.G.R.M.U.A.G.R.M., 3 years ago

    custom

    3472 views, 3 favs, 5 embeds more stats

    Recorridos de Grafos

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 3472
      • 3362 on SlideShare
      • 110 from embeds
    • Comments 0
    • Favorites 3
    • Downloads 0
    Most viewed embeds
    • 69 views on http://practicoferrari.blogspot.com
    • 34 views on https://virtual.fcet.uagrm.edu.bo
    • 4 views on http://www.practicoferrari.blogspot.com
    • 2 views on http://virtual.fcet.uagrm.edu.bo
    • 1 views on http://www.frameworkmx.com

    more

    All embeds
    • 69 views on http://practicoferrari.blogspot.com
    • 34 views on https://virtual.fcet.uagrm.edu.bo
    • 4 views on http://www.practicoferrari.blogspot.com
    • 2 views on http://virtual.fcet.uagrm.edu.bo
    • 1 views on http://www.frameworkmx.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories