Está en la página 1de 25

ESTRUCTURA DE DATOS

Dado un escenario
donde ciertos objetos
se relacionan, se
puede “modelar el
grafo” y luego aplicar
 Los grafos son estructuras de datos algoritmos para
resolver diversos
 Representan relaciones entre objetos problemas

◦ Relaciones arbitrarias, es decir


◦ No jerárquicas Impresora
 Son aplicables en
◦ Química Modem PC1
◦ Geografía
◦ Ing. Eléctrica e Industrial, etc.
◦ Modelado de Redes
Servidor
 De alcantarillado
 Eléctricas
 Etc.
PC2
Coruña Oviedo 304
Bilbao
171
45
5

32
0
28
Vigo 356 Gerona

4
Zaragoza 0

3 95
29 6 10
32
5 Barcelona

19
Valladolid

9
34
Madrid
3 25
40 1
19 1 Valencia
3 35

Badajoz

241
15
Jaén
2 0
24
99

Sevilla Murcia
25 6 278
5
12

Cádiz Granada
 No hay restricciones para formar un grafo

 Puede haber varias aristas entre dos vértices

 El vértice de partida y el de llegada puede ser


el mismo.–Las aristas pueden o no llevar
flechas.
 Un grafo G = (V,A)
1 4
 V, el conjunto de vértices o nodos
◦ Representan los objetos 5

 A, el conjunto de arcos 7 9
◦ Representan las relaciones

V = {1, 4, 5, 7, 9}
A= {(1,4), (5,1), (7,9), (7,5), (4,9), (4,1), (1,5), (9,7), (5, 7), (9,4)}
C E  Grafos dirigidos
◦ Si los pares de nodos tienen
un sentido.
◦ Existe un camino
F preestablecido
D H
1 4
V = {C, D, E, F, H}
A= {(C,D), (D,F), (E,H), (H,E), (E,C)}
5
 Grafos no dirigidos
 Si los pares de nodos no tienen un 7 9
sentido
Grafo del ejemplo anterior
 Arista
◦ Es un arco de un grafo no dirigido
 Vértices adyacente Guayaquil
9
Quito
◦ Vértices unidos por un arco 7 8
 Factor de Peso
◦ Valor que se puede asociar con un Ambato
5
Cuenca
arco 7
◦ Depende de lo que el grafo
represente 5
◦ Si los arcos de un grafo tienen F.P.
 Grafo valorado Riobamba
 Ciclos
5
3
 Grafo No Dirigido
◦ Conexo (enlazado) 9
 Existe un camino entre 2 7
cualquier par de nodos

4  Grafo Dirigido
5 8  Fuertemente Conexo
6  Existe un camino entre cualquier par
de nodos
A
 Conexo (débilmente enlazado)
B
H  Existe una cadena entre cualquier
D par de nodos
C E
 En Grafo No Dirigido
◦ Grado(V)
 Numero de aristas que contiene a V F
D H
Grado(Guayaquil) = 3
9
Gradoent(D) = 1 y Gradsal(D) = 1
Guayaquil Quito
8
7
 En Grafo Dirigido
Ambato  Grado de entrada, Graden(V)
5
Cuenca
7
 Numero de arcos que llegan a V

5
 Grado de Salida, Gradsal(V)
 Numero de arcos que salen de V
Riobamba
A B C

D E F
 Definición
◦ Un camino P en un grafo G,
desde V0 a Vn Camino A y A
◦ Es la secuencia de n+1 vértices P = {A, E, B, F, A}
◦ Tal que (Vi, Vi+1)  A para 0 i 
n
◦ Trayectoria de un punto a otro 4 7
10

11
6 9
 Longitud de camino
 El número de arcos que lo Camino entre 4 y 7
forman P = {4, 6, 9, 7}

Longitud: 3
 Un trayectoria o recorrido es
una secuencia de nodos
w1,w2,…,wn tal que (wi,wi+1) 
E E.
210

M  Un recorrido es una lista


450 ordenada de nodos.
60 190

B ◦ Longitud: número de ramas en


200 el recorrido.
130
L ◦ Costo o peso: suma de los
P pesos de las ramas del
recorrido
◦ Ciclo: es un recorrido que
vuelve al nodo de partida.
 Datos
◦ Vértices y
◦ Arcos(relación entre vértices)
 Operaciones
◦ void AñadirVertice(Grafo G, Vértice V)
 Añadir un nuevo vértice
◦ void BorrarVertice(Grafo G, Genérico clave)
 Eliminar un vértice existente
◦ void Union(Grafo G, Vertice V1, Vertice V2)
 Unir dos vértices
◦ Void BorrarArco(Grafo G, Vertice V1, Vertice
V2)
 Eliminar un Arco
◦ bool EsAdyacente(Grafo G, Vertice V1,
Vertice V2)
 Conocer si dos vértices son o no adyacentes
 Dos posibles representaciones
◦ Estática: Matriz de Adyacencia
 Los vértices se representan por indices(0…n)
 Las relaciones de los vértices se almacenan en una
Matriz
◦ Dinámica: Lista de Adyacencia
 Los vértices forman una lista
 Cada vértice tiene una lista para representar sus
relaciones(arcos)
Si el grafo fuese valorado, en vez
de 1, se coloca el factor de peso

 Dado un Grafo G = (V,


A) V3
V0
4 7
 Sean los Vértices V = V4
{V0, V1, … Vn} 10
◦ Se pueden representar V5
por ordinales 0,1,..n 11
V1 6 9 V2
 Como representar los
Arcos? V 0 V1 V 2 V 3 V 4 V 5
◦ Estos son enlaces entre V 0 0 1 0 0 0 0
vértices V 1 1 0 1 0 0 0
 Puede usarse una V 2 0 1 0 1 0 0
matriz 
V 3 0 0 1 0 0 1

1, si hay arco (Vi ,Vj ) V 4 0 0 0 0 0 1


aij   
V 5 0 0 0 1 1 0
0, si no hay arco (Vi ,Vj )
 Crear la matriz de adyacencia del siguiente
grafo
 Ejemplificar los nodos y aristas
 Si una matriz
◦ Tiene muchos vértices y
◦ Pocos arcos
◦ La Matriz de Adyacencia
 Tendrá demasiados ceros
 Ocupara mucho espacio

 Los vértices
◦ Pueden formar una lista, no un vector

 Los arcos
◦ Son relaciones entre vértices
◦ Se pueden representar con una lista x cada vértice
 Crear la lista de adyacencia del siguiente
grafo
0 0 1 2 3 4
0 0 1 0 1 0
1 1 0 1 1 0
Matriz de
1 adyacencia
2 0 1 0 1 1
3 1 1 1 0 0
4 0 0 1 0 0

2
0 1 3
3 1 0 2 3
Lista de
2 1 3 4
4 adyacencia
3 0 1 2
4 2
0 1 2 3 4
0 0 0 210 0 450 0
210 1 210 0 60 190 0 Matriz de
2 0 60 0 130 200 adyacencia
1 3 450 190 130 0 0
450 4 0 0 200 0 0
60 190

2
200
0 1;210 3;450
130 1 0;210 2;60 3;190
3
2 1;60 3;130 4;200
4
3 0;450 1;190 2;130
4 2;200 Lista de
adyacencia
0 1 2 3 4
0 0 0 1 0 0 0
1 0 0 0 1 0
Matriz de
2 0 1 0 1 0
1 adyacencia
3 1 0 0 0 0
4 0 0 1 0 0

2
0 1
Lista de 1 3
3
adyacencia 2 1 3
4 3 0
4 2
 Recorrer un grafo significa visitar todos sus
nodos partiendo de un nodo de salida.
 Es muy importante asegurarnos de no ir en
círculos (i.e., caer en un ciclo).
 Dos tipos básicos de recorridos:
◦ En anchura: recorrer el grafo en niveles (de los
nodos más cercanos a los más lejanos).
◦ En profundidad: buscar caminos que parten desde
el nodo de salida hasta que ya no es posible
avanzar más, después volver atrás en busca de
caminos alternativos inexplorados.
EN PROFUNDIDAD EN ANCHURA

A-B-E-I-F-C-G-J-K-H-D A-B-C-D-E-G-H-I-J-K-F
a b c

d e f

En anchura En profundidad
1 2 4 1 2 3
a b c
a b c

d e f
5 6 d e f
3 5 4 6

También podría gustarte