19_grafos

Upload: victor-maldonado

Post on 17-Feb-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/23/2019 19_Grafos

    1/39

    Grafos

    Felipe Restrepo [email protected]

    Departamento de Ingeniera de Sistemas e IndustrialFacultad de Ingeniera

    Universidad Nacional de ColombiaSede Bogot

    mailto:[email protected]:[email protected]
  • 7/23/2019 19_Grafos

    2/39

    1. Conceptos bsicos

    2. Representacin

    3. Algoritmos

    GrafosConceptos Representacin Algoritmos

    Estructuras de Datos Grafos 2

  • 7/23/2019 19_Grafos

    3/39

    Estructuras de Datos Grafos 2

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    4/39

    Estructuras de Datos Grafos 4

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    5/39

    Terminologa Un grafoG= (N,A) est formado por un conjunto de:

    o Nodos(tambin se llaman vrtices)o Aristas(tambin son llamadas arcos)

    Las aristasconectan pares de nodos.Cada arista es un par (v,w) N

    Si el nodo xy el nodo ycompartenuna arista, se dice que dichos nodosson adyacentes:(x,y) A

    Estructuras de Datos Grafos 5

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    6/39

    Terminologa Las aristas/arcos pueden tener pesos/costosasociados

    Estructuras de Datos Grafos 6

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    7/39

    Terminologa Las aristas/arcos pueden ser dirigidaso no-dirigidas

    Grafo dirigido Grafo no-dirigido

    Estructuras de Datos Grafos 7

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    8/39

    Terminologa Un caminoes:

    o una serie de nodos/vrtices adyacenteso una secuencia de vrtices w1, w2, w3, , wN,

    tal que (wi, wi+1) Apara 1 i < N

    La longitud de un caminoes:o La cuenta de aristas/arcosa lo largo del camino (en un

    grafo no-ponderado) =N 1o La suma de los pesos de las aristas/arcosa lo largo delcamino (en un grafo ponderado)

    Estructuras de Datos Grafos 8

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    9/39

    Terminologa Un camino simple es un camino tal que todos sus nodos son

    distintos, excepto posiblemente el primero y el ltimo

    Un cicloes un camino que empieza y termina en el mismo nodo:o En un grafo dirigido:un ciclo es un camino de longitud al menos 1

    tal que w1= wN; el ciclo es simple, si el camino es simpleo En un grafo no-dirigido: se requiere que todos los arcos sean

    distintos

    Esto implica que el camino u, v, u en un grafo no-dirigido no debeser considerado como un ciclo porque (u, v) y (v, u) se refieren almismo arco. Sin embargo, en un grafo dirigido, dichos arcos serandiferentes, por lo que si tiene sentido considerarlo como un ciclo

    Estructuras de Datos Grafos 9

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    10/39

    Terminologa Un grafo dirigido sin ciclos es una clase de grafo muy utilizada

    llamada Grafo Dirigido Acclico (DAG - directed acyclic graph)

    Ejemplo 1:

    Estructuras de Datos Grafos 10

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    11/39

    Terminologa Un grafo dirigido sin ciclos es una clase de grafo muy utilizada

    llamada Grafo Dirigido Acclico (DAG - directed acyclic graph)

    Ejemplo 2:

    Estructuras de Datos Grafos 11

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    12/39

    Terminologa Un grafo est conectadosi:

    existe un camino entre cada par de nodos/vrtices (en ungrafo no dirigido)

    Un grafo dirigido con esta propiedad se llama fuertementeconectado

    Un grafo completotiene un arco para todos los pares devrtices

    Estructuras de Datos Grafos 12

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    13/39

    Aplicaciones Redes de computadores

    WWW

    Redes sociales

    Sistema de transporte pblico

    Red de aeropuertos

    Diagramas de flujo

    Inferencia probabilstica

    Muchas otrasEstructuras de Datos Grafos 13

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    14/39

    Quiz1

    Pregunta 1:

    1 Tomado de: https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphs

    Estructuras de Datos Grafos 14

    GrafosConceptos Representacin Algoritmos

    10

    https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphs
  • 7/23/2019 19_Grafos

    15/39

    Quiz1

    Pregunta 2:

    1 Tomado de: https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphs

    Estructuras de Datos Grafos 15

    GrafosConceptos Representacin Algoritmos

    Audrey Ilana Dave

    https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphs
  • 7/23/2019 19_Grafos

    16/39

    Quiz1

    Pregunta 3:

    1 Tomado de: https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphs

    Estructuras de Datos Grafos 16

    GrafosConceptos Representacin Algoritmos

    https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphs
  • 7/23/2019 19_Grafos

    17/39

    Quiz1

    Pregunta 3:

    1 Tomado de: https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphs

    Estructuras de Datos Grafos 17

    GrafosConceptos Representacin Algoritmos

    https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphs
  • 7/23/2019 19_Grafos

    18/39

    Quiz1

    Pregunta 4:

    1 Tomado de: https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphs

    Estructuras de Datos Grafos 18

    GrafosConceptos Representacin Algoritmos

    Hartford Sturbridge Weston - Canton

    https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphs
  • 7/23/2019 19_Grafos

    19/39

    Quiz1

    Pregunta 5:

    1 Tomado de: https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphs

    Estructuras de Datos Grafos 19

    GrafosConceptos Representacin Algoritmos

    https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphs
  • 7/23/2019 19_Grafos

    20/39

    Quiz1

    Pregunta 5:

    1 Tomado de: https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphs

    Estructuras de Datos Grafos 20

    GrafosConceptos Representacin Algoritmos

    https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphs
  • 7/23/2019 19_Grafos

    21/39

    Quiz1

    Pregunta 6:

    1 Tomado de: https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphs

    Estructuras de Datos Grafos 21

    GrafosConceptos Representacin Algoritmos

    https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphs
  • 7/23/2019 19_Grafos

    22/39

    Quiz1

    Pregunta 6:

    0 11 20 12 11 12 2

    1 Tomado de: https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphs

    Estructuras de Datos Grafos 22

    GrafosConceptos Representacin Algoritmos

    https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--describing-graphs
  • 7/23/2019 19_Grafos

    23/39

    Representacin de grafos

    Estructuras de Datos Grafos 23

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    24/39

    Implementacin

    Opcin 1: matriz de adyacencia

    Opcin 2: lista de adyacencia

    Estructuras de Datos Grafos 24

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    25/39

    Implementacin: matriz de adyacencia Un Grafo G=(V,E) se puede representar con una Matriz de

    |V|x|V| booleanos.o Si (u,v) E, G[u][v] = true;o sino G[u][v] = false.

    Esta representacin consume bastante memoria.o til para Grafos Densos (con muchas aristas).

    Memoria: O(|V|2)

    Tiempo de acceso: O(1)

    Estructuras de Datos Grafos 25

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    26/39

    Implementacin: matriz de adyacencia Si el grafo es no-dirigido, la matriz de adyacencia es simtrica

    Estructuras de Datos Grafos 26

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    27/39

    Implementacin: matriz de adyacencia Ejemplo:

    Estructuras de Datos Grafos 27

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    28/39

    Implementacin: lista de adyacencia Cada nodo almacena una lista con referencias a sus vecinos

    Un Grafo Dirigido G=(V,E) se suele representar con un arreglo de |V|Listas de Vrtices: G[v] es una Lista de los Vrtices Adyacentes a v (v

    V).

    Memoria: O(|V|+|E|)

    Estructuras de Datos Grafos 28

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    29/39

    Implementacin: lista de adyacencia Un Grafo No Dirigido G=(V,E) se representa con un array de |V|

    Listas de Vrtices: G[v] es una Lista de los Vrtices Adyacentes a v(v V)

    Memoria: O(|V|+2*|E|)

    Estructuras de Datos Grafos 29

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    30/39

    Implementacin: lista de adyacencia Ejemplo:

    Estructuras de Datos Grafos 30

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    31/39

    Implementacin: lista de adyacencia Para obtener la lista de nodos adyacentes rpidamente, existen

    dos implementaciones habituales:o Usar un Map(HashMap/TreeMap) en el cual las llaves/claves son

    los nodos y sus valores son las listas de adyacenciaMap

    o Mantener la lista de adyacencia como una propiedad de la claseNodo/Vrtice.

    class Vertex

    {

    public List adj; // Adjacency list

    // Other fields and methods as needed

    }

    Estructuras de Datos Grafos 31

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    32/39

    Quiz:Pregunta 1:

    Tomado de: https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--representing-graphs

    Estructuras de Datos Grafos 32

    GrafosConceptos Representacin Algoritmos

    https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--representing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--representing-graphs
  • 7/23/2019 19_Grafos

    33/39

    Quiz:Pregunta 1:

    Tomado de: https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--representing-graphs

    Estructuras de Datos Grafos 33

    GrafosConceptos Representacin Algoritmos

    f

    https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--representing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--representing-graphs
  • 7/23/2019 19_Grafos

    34/39

    Quiz:Pregunta 2:

    Tomado de: https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--representing-graphs

    Estructuras de Datos Grafos 34

    GrafosConceptos Representacin Algoritmos

    f

    https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--representing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--representing-graphs
  • 7/23/2019 19_Grafos

    35/39

    Quiz:Pregunta 2:

    Tomado de: https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--representing-graphs

    Estructuras de Datos Grafos 35

    GrafosConceptos Representacin Algoritmos

    G f

    https://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--representing-graphshttps://www.khanacademy.org/computing/computer-science/algorithms/graph-representation/e/quiz--representing-graphs
  • 7/23/2019 19_Grafos

    36/39

    Quiz:Pregunta 3:We've seen two ways to store graphs - adjacency matrices, and adjacency lists. Foran directed graph like the one shown below, how much space do we need for eachtype of storage?

    Assuming Eis the number of edges and Vis thenumber of vertices, categorize the space below:

    Estructuras de Datos Grafos 36

    GrafosConceptos Representacin Algoritmos

    G f

  • 7/23/2019 19_Grafos

    37/39

    Quiz:Pregunta 3:We've seen two ways to store graphs - adjacency matrices, and adjacency lists. Foran directed graph like the one shown below, how much space do we need for eachtype of storage?

    Assuming Eis the number of edges and Vis thenumber of vertices, categorize the space below:

    Estructuras de Datos Grafos 37

    GrafosConceptos Representacin Algoritmos

    G f

  • 7/23/2019 19_Grafos

    38/39

    Algoritmos Siguiente clase de teora

    Estructuras de Datos Grafos 38

    GrafosConceptos Representacin Algoritmos

  • 7/23/2019 19_Grafos

    39/39

    Grafoshttps://sites.google.com/a/unal.edu.co/estructuras-de-datos-2015-1/

    Felipe Restrepo [email protected]

    Departamento de Ingeniera de Sistemas e IndustrialFacultad de Ingeniera

    Universidad Nacional de ColombiaSede Bogot

    https://sites.google.com/a/unal.edu.co/estructuras-de-datos-2015-1/https://sites.google.com/a/unal.edu.co/estructuras-de-datos-2015-1/mailto:[email protected]:[email protected]://sites.google.com/a/unal.edu.co/estructuras-de-datos-2015-1/