19_grafos
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/