Vous êtes sur la page 1sur 39

Grafos

Felipe Restrepo Calle


ferestrepoca@unal.edu.co

Departamento de Ingeniera de Sistemas e Industrial


Facultad de Ingeniera
Universidad Nacional de Colombia
Sede Bogot

Grafos
Conceptos

Representacin

Algoritmos

1. Conceptos bsicos
2. Representacin
3. Algoritmos

Estructuras de Datos

Grafos

Grafos
Conceptos

Estructuras de Datos

Representacin

Grafos

Algoritmos

Grafos
Conceptos

Estructuras de Datos

Representacin

Grafos

Algoritmos

Grafos
Conceptos

Representacin

Algoritmos

Terminologa
Un grafo G = (N, A) est formado por un conjunto de:
o Nodos (tambin se llaman vrtices)
o Aristas (tambin son llamadas arcos)

Las aristas conectan pares de nodos.


Cada arista es un par (v, w) N
Si el nodo x y el nodo y comparten
una arista, se dice que dichos nodos
son adyacentes: (x, y) A
Estructuras de Datos

Grafos

Grafos
Conceptos

Representacin

Algoritmos

Terminologa
Las aristas/arcos pueden tener pesos/costos asociados

Estructuras de Datos

Grafos

Grafos
Conceptos

Representacin

Algoritmos

Terminologa
Las aristas/arcos pueden ser dirigidas o no-dirigidas

Grafo dirigido

Estructuras de Datos

Grafo no-dirigido

Grafos

Grafos
Conceptos

Representacin

Algoritmos

Terminologa
Un camino es:
o una serie de nodos/vrtices adyacentes
o una secuencia de vrtices w1, w2, w3, , wN,
tal que (wi, wi+1) A para 1 i < N

La longitud de un camino es:


o La cuenta de aristas/arcos a lo largo del camino (en un
grafo no-ponderado) = N 1
o La suma de los pesos de las aristas/arcos a lo largo del
camino (en un grafo ponderado)

Estructuras de Datos

Grafos

Grafos
Conceptos

Representacin

Algoritmos

Terminologa

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


distintos, excepto posiblemente el primero y el ltimo

Un ciclo es un camino que empieza y termina en el mismo nodo:


o
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 simple
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 debe


ser considerado como un ciclo porque (u, v) y (v, u) se refieren al
mismo arco. Sin embargo, en un grafo dirigido, dichos arcos seran
diferentes, por lo que si tiene sentido considerarlo como un ciclo
Estructuras de Datos

Grafos

Grafos
Conceptos

Representacin

Algoritmos

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

Grafos
Conceptos

Representacin

Algoritmos

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

Grafos
Conceptos

Representacin

Algoritmos

Terminologa
Un grafo est conectado si:

existe un camino entre cada par de nodos/vrtices (en un


grafo no dirigido)
Un grafo dirigido con esta propiedad se llama fuertemente
conectado

Un grafo completo tiene un arco para todos los pares de


vrtices

Estructuras de Datos

Grafos

12

Grafos
Conceptos

Representacin

Algoritmos

Aplicaciones
Redes de computadores
WWW
Redes sociales
Sistema de transporte pblico

Red de aeropuertos
Diagramas de flujo
Inferencia probabilstica
Muchas otras
Estructuras de Datos

Grafos

13

Grafos
Conceptos

Representacin

Algoritmos

Quiz1
Pregunta 1:

10

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

Estructuras de Datos

Grafos

14

Grafos
Conceptos

Representacin

Algoritmos

Quiz1
Pregunta 2:
Audrey Ilana Dave

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

Estructuras de Datos

Grafos

15

Grafos
Conceptos

Representacin

Algoritmos

Quiz1
Pregunta 3:

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

Estructuras de Datos

Grafos

16

Grafos
Conceptos

Representacin

Algoritmos

Quiz1
Pregunta 3:

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

Estructuras de Datos

Grafos

17

Grafos
Conceptos

Representacin

Algoritmos

Quiz1
Pregunta 4:
Hartford Sturbridge Weston - Canton

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

Estructuras de Datos

Grafos

18

Grafos
Conceptos

Representacin

Algoritmos

Quiz1
Pregunta 5:

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

Estructuras de Datos

Grafos

19

Grafos
Conceptos

Representacin

Algoritmos

Quiz1
Pregunta 5:

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

Estructuras de Datos

Grafos

20

Grafos
Conceptos

Representacin

Algoritmos

Quiz1
Pregunta 6:

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

Estructuras de Datos

Grafos

21

Grafos
Conceptos

Representacin

Algoritmos

Quiz1
Pregunta 6:

0
1
0
2
1
2
1

1
2
1
1
1
2

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

Estructuras de Datos

Grafos

22

Grafos
Conceptos

Representacin

Algoritmos

Representacin de grafos

Estructuras de Datos

Grafos

23

Grafos
Conceptos

Representacin

Algoritmos

Implementacin
Opcin 1: matriz de adyacencia
Opcin 2: lista de adyacencia

Estructuras de Datos

Grafos

24

Grafos
Conceptos

Representacin

Algoritmos

Implementacin: matriz de adyacencia

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


|V|x|V| booleanos.
o
o

Si (u,v) E, G[u][v] = true;


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

Grafos
Conceptos

Representacin

Algoritmos

Implementacin: matriz de adyacencia

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

Estructuras de Datos

Grafos

26

Grafos
Conceptos

Representacin

Algoritmos

Implementacin: matriz de adyacencia

Ejemplo:

Estructuras de Datos

Grafos

27

Grafos
Conceptos

Representacin

Algoritmos

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

Grafos
Conceptos

Representacin

Algoritmos

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

Grafos
Conceptos

Representacin

Algoritmos

Implementacin: lista de adyacencia

Ejemplo:

Estructuras de Datos

Grafos

30

Grafos
Conceptos

Representacin

Algoritmos

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 adyacencia
Map<Nodo, ListaAdyacencia>

Mantener la lista de adyacencia como una propiedad de la clase


Nodo/Vrtice.
class Vertex
{
public List adj; // Adjacency list

// Other fields and methods as needed


}

Estructuras de Datos

Grafos

31

Grafos
Conceptos

Representacin

Algoritmos

Quiz:
Pregunta 1:

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

Estructuras de Datos

Grafos

32

Grafos
Conceptos

Representacin

Algoritmos

Quiz:
Pregunta 1:

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

Estructuras de Datos

Grafos

33

Grafos
Conceptos

Representacin

Algoritmos

Quiz:
Pregunta 2:

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

Estructuras de Datos

Grafos

34

Grafos
Conceptos

Representacin

Algoritmos

Quiz:
Pregunta 2:

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

Estructuras de Datos

Grafos

35

Grafos
Conceptos

Representacin

Algoritmos

Quiz:
Pregunta 3:
We've seen two ways to store graphs - adjacency matrices, and adjacency lists. For
an directed graph like the one shown below, how much space do we need for each
type of storage?
Assuming E is the number of edges and V is the
number of vertices, categorize the space below:

Estructuras de Datos

Grafos

36

Grafos
Conceptos

Representacin

Algoritmos

Quiz:
Pregunta 3:
We've seen two ways to store graphs - adjacency matrices, and adjacency lists. For
an directed graph like the one shown below, how much space do we need for each
type of storage?
Assuming E is the number of edges and V is the
number of vertices, categorize the space below:

Estructuras de Datos

Grafos

37

Grafos
Conceptos

Representacin

Algoritmos

Algoritmos

Siguiente clase de teora

Estructuras de Datos

Grafos

38

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

Felipe Restrepo Calle


ferestrepoca@unal.edu.co

Departamento de Ingeniera de Sistemas e Industrial


Facultad de Ingeniera
Universidad Nacional de Colombia
Sede Bogot

Vous aimerez peut-être aussi