Professional Documents
Culture Documents
Agenda
Qu son?
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.
Qu son?
Ejemplos de grafos
Vrtices: elementos del conjunto
Agenda
Qu son?
Implementacin
ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co
en Cupi2Collections
cik
Vk
A = { ( x, y, c ) | x, y
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
12min
1min
3min
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
10
Agenda
Qu son?
Formalismo abstracto de los grafos dirigido Conceptos Ejemplo: Red de distribucin de agua
en Cupi2Collections
11
Conceptos
Cada vrtice Vi del grafo tiene asociados dos
valores:
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
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:
14
Agenda
Qu son?
Formalismo abstracto de los grafos dirigido Conceptos Ejemplo: Red de distribucin de agua
en Cupi2Collections
15
Nombre Capacidad mxima de almacenamiento Estado actual Capacidad de transporte por minuto
16
capacidad de transporte por minuto c } vi = [idCiudadi, infoCiudadi] infoCiudadi = [nombrei, capacidadi, actuali]
ISIS1206 Estructuras de Datos http://cupi2.uniandes.edu.co
17
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
10
v4
18
asociada:
V2 = [ idv2, infov2 ]
19
asociada:
V3 = [ idv3, infov3 ]
infov3=[ciudad4, 500, 200]
V4 = [ idv4, infov4 ]
V5 = [ idv5, infov5 ]
20
Agenda
Qu son? Formalismo abstracto de los grafos dirigido Conceptos
en Cupi2Collections
21
Caminos y Ciclos
Camino entre un vrtice v1 y un vrtice v2:
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
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
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.
25
Caminos y Ciclos
Ciclo:
Grafo acclico:
No contiene ciclos
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
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:
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:
29
Caminos y Ciclos
Ejemplo de camino Hamiltoniano:
v2
v3
v4
v5
30
Caminos y Ciclos
Ejemplo de ciclo Hamiltoniano:
v2
v3
v4
v5
31
Caminos y Ciclos
Ejemplo de camino de Euler:
< v5, v3, v2, v5, v4, v3, v1, v2, v4 >
v1
v2
v3
v4
v5
32
Agenda
33
Cadenas
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:
34
Cadenas
Ejemplo de cadena:
v2
v3
v4
v5
35
Qu son?
Agenda
36
Tipos de grafos
Grafo completo:
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.
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
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.
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
42
Agenda
en Cupi2Collections
43
44
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.
45
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.
46
Identificacin de la genericidad
47
Identificacin de la genericidad
48
Identificacin de la genericidad
49
Identificacin de la genericidad
50
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.
51
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.
52
Agenda
Qu son? Formalismo abstracto de los grafos dirigido Conceptos
en Cupi2Collections
53
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.
54
55
Agenda
56
Clase Grafo
Llave de tipo K
57
Clase Vrtice
58
Clase Vrtice
59
Clase Vrtice
60
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 )
62
Clase Arco
63
Clase Arco
El vrtice destino es de tipo Vertice
64
Clase Arco
La informacin
65
Clase Arco
Mtodos empleados:
public A darInfoArco( )
public Vertice<K, V, A> darVerticeDestino( ) public Vertice<K, V, A> darVerticeOrigen( )