You are on page 1of 65

1

NIVEL 17: ESTRUCTURAS NO LINEALES


Grafos, definiciones y tipos de problemas

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

Agenda
Qu son?

Formalismo abstracto de los grafos dirigido


Conceptos Ejemplo: Red de distribucin de agua Caminos y Ciclos

Cadenas Tipos de grafos


Del anlisis al diseo Trabajo sobre un caso

Implementacin
ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

en Cupi2Collections

Qu son?
Los grafos:

Son estructuras de datos ms generales que los rboles. Permiten modelar relaciones no necesariamente jerrquicas entre elementos de un conjunto. Se utilizan para representar mapas de rutas, organizacin de procesos, espacios de bsqueda para juegos, circuitos lgicos, etc.

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

Qu son?
Ejemplos de grafos
Vrtices: elementos del conjunto

Arcos: relaciones entre los elementos del conjunto


ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

Agenda
Qu son?

Formalismo abstracto de los grafos dirigido


Conceptos Ejemplo: Red de distribucin de agua Caminos y Ciclos

Cadenas Tipos de grafos


Del anlisis al diseo Trabajo sobre un caso

Implementacin
ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

en Cupi2Collections

Formalismo abstracto de un grafo dirigido


G = ( V, A )
V = { v1, , vn }

V: Conjunto de vrtices A: Conjunto de arcos ( vi, vk, cik ) Establece:


Una relacin entre los vrtices vi y vk de V Un sentido de la relacin (vi vk) Un valor o peso asociado (cik ) Puede tener una informacin asociada

Un arco es una tripleta de la forma:

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

Formalismo abstracto de un grafo dirigido


Grficamente, un arco es:
Vi

cik

Vk

A = { ( x, y, c ) | x, y

V, x y, x e y estn relacionados con un valor c }

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

Formalismo abstracto de un grafo dirigido


Ejemplo : Camin repartidor

Un camin repartidor debe visitar diferentes puntos de la ciudad para dejar su producto. Ciudad = grafo
Vrtices = puntos de la ciudad Arcos = tiempo que toma ir de un punto a otro

3min 5min 9min 10min 7min 6min 2min 5min

12min

1min
3min

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

Conceptos
Sucesor y Predecesor:

Se dice que un vrtice B es sucesor de un vrtice A si existe un arco entre A y B talque A es el vrtice origen y B el vrtice destino. En ste mismo caso se dice que A es un predecesor de B.
A

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

10

Agenda
Qu son?
Formalismo abstracto de los grafos dirigido Conceptos Ejemplo: Red de distribucin de agua

Caminos y Ciclos Cadenas


Tipos de grafos Del anlisis al diseo

Trabajo sobre un caso Implementacin


ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

en Cupi2Collections

11

Conceptos
Cada vrtice Vi del grafo tiene asociados dos

valores:

Identificador: lo distingue como elemento nico de V. Informacin asociada con el elemento

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

12

Conceptos
Restriccin en un grafo dirigido:

No puede haber ms de un arco entre cualquier par de vrtices en cada uno de los dos sentidos.
vi cik cki cik cki vk

vi

vk

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

13

Conceptos
Orden de un grafo:

Nmero de elementos = Cardinalidad del conjunto de vrtices. Grafo de orden cero. Vrtice que no tiene predecesores.

Grafo vaco:

Fuente:

Sumidero:

Vrtice que no tiene sucesores.

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

14

Agenda
Qu son?
Formalismo abstracto de los grafos dirigido Conceptos Ejemplo: Red de distribucin de agua

Caminos y Ciclos Cadenas


Tipos de grafos Del anlisis al diseo

Trabajo sobre un caso Implementacin


ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

en Cupi2Collections

15

Ejemplo: Red de distribucin de agua


Modelar una red de distribucin de agua entre

N ciudades de una regin. Cada ciudad tiene:


Nombre Capacidad mxima de almacenamiento Estado actual Capacidad de transporte por minuto

Cada tubo tiene:

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

16

Ejemplo: Red de distribucin de agua

Modelo del grafo


V = { v1, , vn | vi es una ciudad} A = { ( x, y, c ) | hay un tubo entre x e y, con

capacidad de transporte por minuto c } vi = [idCiudadi, infoCiudadi] infoCiudadi = [nombrei, capacidadi, actuali]
ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

17

Ejemplo: Red de distribucin de agua


Representacin

Grfica:

El orden del grafo es 5 v1 No hay fuentes ni ciudad1 100.000 sumideros 80.000 Los sucesores de v1 5 10 son v2 y v5 y su nico predecesor es ciudad5 ciudad2 v4 . 3
v5 3.000 2.000 5.000 1.000

50

v2 ciudad3 2.000 2.000 5 5 ciudad4 500 200 v3

10

v4

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

18

Ejemplo: Red de distribucin de agua


Informacin

asociada:

G = ( V, A ) V = { v 1 , v2 , v 3 , v 4 , v5 } A = { (v1, v2 , 50 ), (v2, v3 , 5 ), (v3, v2 , 5 ), (v4, v2 , 10 ), (v4, v1 , 10 ), (v5, v4 , 3 ), (v1, v5 , 5 ) } V1 = [ idv1, infov1 ]

infov1=[ciudad1, 100.000, 80.000]

V2 = [ idv2, infov2 ]

infov2=[ciudad3, 2.000, 2.000]

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

19

Ejemplo: Red de distribucin de agua


Informacin

asociada:

V3 = [ idv3, infov3 ]
infov3=[ciudad4, 500, 200]

V4 = [ idv4, infov4 ]

infov4=[ciudad2, 5.000, 1.000]


infov5=[ciudad5, 3.000, 2.000]

V5 = [ idv5, infov5 ]

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

20

Agenda
Qu son? Formalismo abstracto de los grafos dirigido Conceptos

Ejemplo: Red de distribucin de agua Caminos y Ciclos


Cadenas Tipos de grafos

Del anlisis al diseo Trabajo sobre un caso


Implementacin
ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

en Cupi2Collections

21

Caminos y Ciclos
Camino entre un vrtice v1 y un vrtice v2:

Secuencia de vrtices <x1, , xn>, con las siguientes caractersticas:


xi V, 1 <= i <= n x1 = v1, xn = v2 xi xi+1, 1 <= i <= n

v1 = origen V2 = destino El camino pasa por los vrtices x2, , xn-1

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

22

Caminos y Ciclos

Longitud = n-1 Existe camino de longitud 0: parte de cualquier vrtice y termina en l mismo. Existen caminos infinitos: repiten un ciclo indefinidamente

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

23

Caminos y Ciclos
Camino simple:

Todos los vrtices por los cuales pasa son diferentes entre s y diferentes del origen y del destino. Puede comenzar y terminar en el mismo vrtice, pero NO puede pasar dos veces por un mismo vrtice.
c
V

Vrtice con caminos < v, v > y < v >

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

24

Caminos y Ciclos
Costo de un camino C:

Suma de los valores asociados con los arcos que lo componen. Si los arcos tienen un valor asociado 1:

Costo = Longitud

Ciclo simple:

Camino simple, de longitud mayor o igual a 1, que comienza y termina en el mismo vrtice.

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

25

Caminos y Ciclos
Ciclo:

Camino de longitud diferente de 0, cuyo origen y destino son iguales

Grafo acclico:

No contiene ciclos

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

26

Caminos y Ciclos

Ejemplo de caminos:

V6

5 4

V1
2

V2
4

7
6

V3
7 Costo

V5
Camino
Caminos no simples

V4

Longitud

Caminos simples

Ciclos simples

Ciclos no simples

Camino ms corto de v1 a v3 Camino ms barato de v1 a v3

Camino simple ms largo

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

27

Caminos y Ciclos

Conceptos:
Camino hamiltoniano:

Camino que pasa exactamente una vez por cada uno de los vrtices de un grafo. No siempre existe. No siempre es nico. Ciclo que pasa exactamente una vez por cada uno de los vrtices de un grafo.

Ciclo hamiltoniano:

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

28

Caminos y Ciclos

Conceptos:
Camino de euler:

Camino que pasa exactamente una vez por cada uno de los arcos de un grafo. Ciclo que pasa exactamente una vez por cada uno de los arcos de un grafo.

Ciclo de euler:

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

29

Caminos y Ciclos
Ejemplo de camino Hamiltoniano:

< v5, v3, v1, v2, v4>


v1

v2

v3

v4

v5

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

30

Caminos y Ciclos
Ejemplo de ciclo Hamiltoniano:

< v1, v2, v5, v4, v3, v1 >


v1

v2

v3

v4

v5

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

31

Caminos y Ciclos
Ejemplo de camino de Euler:

< v5, v3, v2, v5, v4, v3, v1, v2, v4 >
v1

v2

v3

v4

v5

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

32

Qu son? Formalismo abstracto de los grafos dirigido

Agenda

Conceptos Ejemplo: Red de distribucin de agua


Caminos y Ciclos Cadenas Tipos de grafos

Del anlisis al diseo Trabajo sobre un caso


Implementacin en Cupi2Collections
ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

33

Cadenas

Conceptos: Vrtices adyacentes:

Existe en el grafo por lo menos un arco entre los dos, sin importar el sentido.
Secuencia < x1, , xn > de vrtices de V, tal que cualesquiera dos vrtices consecutivos son adyacentes.

Cadena:

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

34

Cadenas
Ejemplo de cadena:

< v1, v2, v3, v4, v5 >


v1

v2

v3

v4

v5

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

35

Qu son?

Agenda

Formalismo abstracto de los grafos dirigido Conceptos


Ejemplo: Red de distribucin de agua Caminos y Ciclos Cadenas

Tipos de grafos Del anlisis al diseo


Trabajo sobre un caso Implementacin en Cupi2Collections
ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

36

Tipos de grafos
Grafo completo:

Dos vrtices diferentes cualesquiera del conjunto V son adyacentes. v1

v2

v3

v4
ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

v5

37

Tipos de grafos
Grafo conexo:

Para cualquier par de vrtices v, w del conjunto V, existe una cadena que los une.

Grafo fuertemente

conexo:

Para cualquier par de vrtices v, w del conjunto V, existe una camino que vaya de v a w.

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

38

Tipos de grafos
Ejemplos
v1 v1

v2

v3

v2

v3

v4

v5

v4

v5

Grafo NO conexo
ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

Grafo fuertemente conexo

39

Tipos de grafos

Grafo planar:

Es posible dibujarlo en un plano sin que se crucen los arcos. Problema tpico:
3 casas y 3 servicios. Se trata de establecer si es posible llevar las tuberas de agua, gas y electricidad, sobre un mismo plano, a 3 casas vecinas. El problema se reduce a determinar si el grafo que representa la solucin es planar. Vrtices: casas y servicios. Arcos: tuberas.

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

40

Tipos de grafos
Ejemplo:

GAS

AGUA

ELECTRICIDAD

Se pueden dibujar sin cruces 8 de los arcos, pero est demostrado que es imposible poner los 9
ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

41

Tipos de grafos
Grafos isomorfos:

Tienen la misma estructura, aunque tengan diferentes contenidos y/o identificadores de los vrtices.
v1 v2
v2

v3
v3 v4

v1

v4

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

42

Qu son? Formalismo abstracto de los grafos dirigido Conceptos

Agenda

Ejemplo: Red de distribucin de agua Caminos y Ciclos


Cadenas Tipos de grafos

Del anlisis al diseo Trabajo sobre un caso


Implementacin
ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

en Cupi2Collections

43

Del anlisis al diseo


Diagrama de clases del anlisis

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

44

Del anlisis al diseo

Operaciones crticas:

Retornar un vrtice dado su id. Retornar un arco dados los ids de los dos vrtices. Retornar los arcos que llevan a los sucesores de un vrtice, dado su id. Retornar los arcos que llevan a los predecesores de un vrtice, dado su id.

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

45

Del anlisis al diseo

Operaciones crticas:

Agregar un vrtice al grafo, dado un id y la informacin relacionada con el vrtice. Eliminar un vrtice del grafo, dado su id. Agregar arco, dados los ids de los vrtices y la informacin relacionada con el arco. Eliminar arco, dado los ids de los vrtices. Dar el orden del grafo.

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

46

Del anlisis al diseo

Identificacin de la genericidad

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

47

Del anlisis al diseo

Identificacin de la genericidad

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

48

Del anlisis al diseo

Identificacin de la genericidad

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

49

Del anlisis al diseo

Identificacin de la genericidad

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

50

Del anlisis al diseo

Clculo de complejidades:

Retornar un vrtice dado su id. Retornar un arco dados los ids de los dos vrtices. Retornar los arcos que llevan a los sucesores de un vrtice, dado su id. Retornar los arcos que llevan a los predecesores de un vrtice, dado su id.

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

51

Del anlisis al diseo

Clculo de complejidades:

Agregar un vrtice al grafo, dado un id y la informacin relacionada con el vrtice. Eliminar un vrtice del grafo, dado su id. Agregar arco, dados los ids de los vrtices y la informacin relacionada con el arco. Eliminar arco, dado los ids de los vrtices. Dar el orden del grafo.

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

52

Agenda
Qu son? Formalismo abstracto de los grafos dirigido Conceptos

Ejemplo: Red de distribucin de agua Caminos y Ciclos


Cadenas Tipos de grafos

Del anlisis al diseo Trabajo sobre un caso


Implementacin
ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

en Cupi2Collections

53

Trabajo sobre un caso


Enunciado del problema:

Se desea realizar una aplicacin para el calcular los movimientos de las tropas de soldados de un ejrcito. El ejrcito tiene divididas las tropas en diferentes ciudades estratgicas, y en caso de guerra o problema interno, es necesario transportar las tropas hacia una ciudad especfica, en un nmero de das dados. Para poder realizar esto, es necesario tener en cuenta que las ciudades tienen una capacidad mxima de soldados que no puede ser sobrepasada, y que los medios de conexin entre ciudades son nicamente vas frreas dirigidas (solo hacia una direccin), con una capacidad mxima de pasajeros diarios. Se puede asumir que la ciudad destino de todo el movimiento tiene capacidad infinita.

La aplicacin debe recibir por medio de un archivo XML (especificado en la seccin Archivo XML de ste documento), la informacin de las ciudades con sus capacidades y cantidad de soldados inicial y las vas frreas entre las ciudades con su capacidad diaria de transporte, y luego debe preguntar al usuario la ciudad destino y los das que se tienen para llevar las tropas. Al finalizar los clculos, la aplicacin debe mostrar en pantalla el resultado del movimiento de las tropas, informando en datos consolidados la cantidad de soldados que se pudo llevar a la ciudad, y un resumen detallado con el estado de cada una de las ciudades para cada da de la simulacin.

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

54

Trabajo sobre un caso

Clases empleadas en la solucin

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

55

Qu son? Formalismo abstracto de los grafos dirigido

Agenda

Conceptos Ejemplo: Red de distribucin de agua


Caminos y Ciclos Cadenas Tipos de grafos

Del anlisis al diseo Trabajo sobre un caso


Implementacin en Cupi2Collections
ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

56

Clase Grafo

Llave de tipo K

Valor de tipo Vertice

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

57

Clase Vrtice

La informacin del vrtice es un objeto de tipo V

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

58

Clase Vrtice

Los predecesores son un ArrayList de objetos de tipo Arco

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

59

Clase Vrtice

Los sucesores son un ArrayList de objetos de tipo Arco

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

60

Clase Vrtice Se declara un atributo para verificar si el vrtice est marcado

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

61

Clase Vrtice
Mtodos empleados:

public K darId( ) public V darInfoVertice( ) public ArrayList<Arco<K, V, A>> darSucesores( ) public ArrayList<Arco<K, V, A>> darPredecesores( )

public Arco<K, V, A> darArco( K idDestino ) Clase Vrtice - Mtodos public void eliminarArco( K idDestino )

private void eliminarArcoPredecesor( Arco<K, V, A> arco )


public void agregarArco( Arco<K, V, A> arco )

private void agregarArcoPredecesor( Arco<K, V, A> arco )


public void eliminarArcos( )

public boolean esSucesor( K idDestino )


public int darNumeroSucesores( )

public int darNumeroPredecesores( )

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

62

Clase Arco

El vrtice origen es de tipo Vertice

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

63

Clase Arco
El vrtice destino es de tipo Vertice

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

64

Clase Arco
La informacin

del arco es de tipo A

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

65

Clase Arco
Mtodos empleados:

public A darInfoArco( )
public Vertice<K, V, A> darVerticeDestino( ) public Vertice<K, V, A> darVerticeOrigen( )

public int darPeso( )

ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co

You might also like