Tema. Grafos
4.1. Introduccin, notacin y definiciones
4.2. Representacin de grafos
4.3. Problemas y algoritmos sobre grafos
4.3.1. Recorridos sobre grafos
4.3.2. rboles de expansin mnimos
4.3.3. Problemas de caminos mnimos
4.3.4. Algoritmos sobre grafos dirigidos
4.3.5. Algoritmos sobre grafos no dirigidos
4.3.6. Otros problemas con grafos
A.E.D.
Tema 4. Grafos
C o ru a
B ilb a o
V ig o
Z a ra g o z a
G e ro n a
B a r c e lo n a
V a lla d o lid
M a d rid
V a le n c ia
B a d a jo z
Jan
M u r c ia
S e v illa
C d iz
G ra n a d a
A.E.D.
Tema 4. Grafos
Problemas
Cul es el camino ms corto de Murcia a Badajoz?
Existen caminos entre todos los pares de
ciudades?
Cul es la ciudad ms lejana a Barcelona?
Cul es la ciudad ms cntrica?
Cuntos caminos distintos existen de Sevilla a
Zaragoza?
Cmo hacer un tour entre todas las ciudades en el
menor tiempo posible?
A.E.D.
Tema 4. Grafos
b
a
a
a
A.E.D.
Tema 4. Grafos
Problemas
La expresin: a b b a b a b b b a, es una
expresin vlida del lenguaje?
Cul es la expresin vlida ms corta?
Transformar el grafo en una expresin regular y
viceversa.
A.E.D.
Tema 4. Grafos
Pintar
pirmide
Comprar
piedras
Hacer
camino
Cincelar
piedras
Colocar
piedras
A.E.D.
Tema 4. Grafos
Problemas
En cuanto tiempo, como mnimo, se puede
construir la pirmide?
Cundo debe empezar cada tarea en la
planificacin ptima?
Qu tareas son ms crticas (es decir, no pueden
sufrir retrasos)?
Cunta gente necesitamos para acabar las
obras?
A.E.D.
Tema 4. Grafos
Modelo 1
4
3
7
5
6
Modelo 2
e
d
A.E.D.
Tema 4. Grafos
Problemas
Cuntos grupos hay en la escena?
Qu objetos estn visibles en la escena y en qu
posiciones?
Qu correspondencia hay entre puntos del
modelo y de la escena observada?
Qu objetos son isomorfos?
A.E.D.
Tema 4. Grafos
191
15
inicio
99
Sevilla
24
Albacete
Jan
Valencia
24 1
Badajoz
25
3
40
2 56
27 8
Murcia
Granada
A|6
B|4
D|3
C|2
E|8
F|9
G|3
A.E.D.
Tema 4. Grafos
10
Tipos de grafos
Grafo no dirigido.
v
Las aristas no estn ordenadas:
(v, w) = (w, v)
Grafos dirigidos (o digrafos).
v
Las aristas son pares ordenados:
<v, w> <w, v>
<v, w> w = cabeza de la arista, v = cola.
A.E.D.
Tema 4. Grafos
11
12
13
14
A.E.D.
Tema 4. Grafos
15
16
A.E.D.
Tema 4. Grafos
17
Mediante
1
3
5
0 de0adyacencia.
0
1
0
listas
4
5
4
A.E.D.
Tema 4. Grafos
18
1
3
4
19
Grafos etiquetados:
tipo GrafoEtiq[E]= array [1..n, 1..n] de E
El tipo E tiene un valor infinito, para el caso de no existir
arista.
1
3
2
4
0
2
2
4
3
20
Uso de memoria
k2 bytes/etiqueta
Memoria usada: k2n2
Ventajas
Representacin y operaciones muy sencillas.
Eficiente para el acceso a una arista dada.
Inconvenientes
El nmero de nodos del grafo no puede cambiar.
Si hay muchos nodos y pocas aristas (a<<n2) se desperdicia mucha memoria (matriz escasa).
A.E.D.
Tema 4. Grafos
21
1
3
4
22
2
d
c
3
2 a
4 b
1 a
2 c
4 d
23
Uso de memoria
Ventajas
Ms adecuada cuando a<<n2.
Inconvenientes
Representacin ms compleja.
Es ineficiente para encontrar las aristas que llegan
a un nodo. Alternativa: usar estructuras de listas
mltiples.
A.E.D.
Tema 4. Grafos
24
A.E.D.
Tema 4. Grafos
25
26
A.E.D.
Tema 4. Grafos
27
28
4
6
7
8
A.E.D.
Tema 4. Grafos
9
5
29
9
3
arcos del
rbol
arcos de
retroceso
30
Bosque de expansin
a
arco de
arco de retroceso
cruce
d
a
arco de
avance
31
32
33
Ejemplo:
grafo no
dirigido.
4
6
4
3
5
7
Arcos de
cruce
A.E.D.
Tema 4. Grafos
34
Bosque de expansin
a
a
Cunto es el tiempo de ejecucin de la bpa?
Cmo comprobar si un arco es de avance, cruce, etc.?
Solucin: construir el bosque explcitamente.
A.E.D.
Tema 4. Grafos
35
36
10
4
9
37
Prueba de aciclicidad
Grafo no dirigido. Hacer una bpp (o bpa). Existe algn
ciclo si y slo si aparece algn arco que no es del rbol
de expansin.
Grafo dirigido. Hacer una bpp (o bpa). Existe un ciclo si
y slo si aparece algn arco de retroceso.
A.E.D.
Tema 4. Grafos
38
A.E.D.
Tema 4. Grafos
39
3
1
40
Esquema:
1. Empezar en un vrtice cualquiera v. El rbol
consta inicialmente slo del nodo v.
2. Del resto de vrtices, buscar el que est ms
prximo a v (es decir, con la arista (v, w) de
coste mnimo). Aadir w y la arista (v, w) al rbol.
3. Buscar el vrtice ms prximo a cualquiera de
estos dos. Aadir ese vrtice y la arista al rbol
de expansin.
4. Repetir sucesivamente hasta aadir los n
vrtices.
A.E.D.
Tema 4. Grafos
41
3
3
2
2
2
6
5
5
4
3
6
A.E.D.
Tema 4. Grafos
42
43
44
3
3
2
2
6
5
5
4
3
6
45
Esquema: G= (V, A)
1. Empezar con un grafo sin aristas: G= (V, )
2. Seleccionar la arista de menor coste de A.
3. Si la arista seleccionada forma un ciclo en G,
eliminarla. Si no, aadirla a G.
4. Repetir los dos pasos anteriores hasta tener n-1
aristas.
Cmo saber si una arista (v, w) provocar un
ciclo en el grafo G?
A.E.D.
Tema 4. Grafos
46
3
3
2
2
2
6
5
5
4
3
6
A.E.D.
Tema 4. Grafos
47
A.E.D.
Tema 4. Grafos
48
49
Conclusiones
Ambos algoritmos (Prim y Kruskal) encuentran
siempre la solucin ptima.
La solucin obtenida ser la misma, o no...
La estructura de los dos algoritmos es muy
parecida:
Empezar con una solucin vaca.
Aadir en cada paso un elemento a la solucin
(Prim: un nodo; Kruskal: una arista).
Una vez aadido un elemento a la solucin, no se
quita (no se deshacen las decisiones tomadas).
A.E.D.
Tema 4. Grafos
50
3
19
Valladolid
Zaragoza
2 96
25
335
Badajoz
Albacete
5
12
256
Valencia
99
Cdiz
24
15
Jan
Sevilla
191
241
25
Gerona
Barcelona
Madrid
40
0
10
34
9
395
Vigo
356
28
0
45
Bilbao
4
32
17 1
Corua
2 78
Murcia
Granada
A.E.D.
Tema 4. Grafos
51
52
T
9
53
A.E.D.
Tema 4. Grafos
54
55
D[v]
1
D[w]
C[v, w]
w
56
Salida:
D: array [2..n] de real Costes de caminos mnimos
P: array [2..n] de entero Nodos de paso
Inicializacin:
57
58
3
8
2
3
4
1
2
5
S
F
D
1
P
1
Nodo
59
A.E.D.
Tema 4. Grafos
60
Posibilidades
Aplicar el algoritmo de Dijkstra n veces, una por
cada posible nodo origen:
Con matrices de adyacencia: O(n3)
Con listas de adyacencia: O(anlog n)
Aplicar el algoritmo de Floyd:
Con listas o matrices: O(n3)
Pero ms sencillo de programar...
A.E.D.
Tema 4. Grafos
61
Algoritmo de Floyd
D:= C
para k:= 1, ..., n hacer
para i:= 1, ..., n hacer
para j:= 1, ..., n hacer
D[i, j]:= min ( D[i, j] , D[i, k] + D[k, j] )
A.E.D.
Tema 4. Grafos
62
63
D[i, k]
i
D[k, j]
D[i, j]
64
Algoritmo de Floyd
D:= C
P:= 0
para k:= 1, ..., n hacer
para i:= 1, ..., n hacer
para j:= 1, ..., n hacer
si D[i, k] + D[k, j] < D[i, j] entonces
D[i, j]:= D[i, k] + D[k, j]
P[i, j]:= k
finsi
Cul es el orden de complejidad del algoritmo?
A.E.D.
Tema 4. Grafos
65
Si k=0
Si k>0
escribe (i)
camino (i, j)
escribe (j)
66
8
3
2
2
3
P
1
2
3
Calcular el camino
mnimo entre 1 y 2.
A.E.D.
Tema 4. Grafos
1
0
0
0
2
0
0
0
3
0
0
0
67
Algoritmo de Warshall
Es una simple adaptacin del algoritmo de Floyd a
valores booleanos.
A:= M
para k:= 1, ..., n hacer
para i:= 1, ..., n hacer
para j:= 1, ..., n hacer
A[i, j]:= A[i, j] OR (A[i, k] AND A[k, j])
A.E.D.
Tema 4. Grafos
68
Conclusiones
Caminos mnimos: problema fundamental en
grafos. Diferentes problemas, con diversas
aplicaciones.
Desde un origen hasta todos los dems nodos
algoritmo de Dijkstra.
Idea: nodos escogidos y candidatos.
Entre todos los pares algoritmo de Floyd.
Idea: pivotar sobre cada nodo.
Ambos algoritmos pueden modificarse para
resolver otros problemas.
A.E.D.
Tema 4. Grafos
69
Definicin:
Una componente conexa de un grafo G es un
subgrafo maximal y conexo de G.
En grafos dirigidos: componente fuertemente
conexa. Existen caminos entre todos los pares de
nodos y en los dos sentidos.
Problema: dado un grafo, calcular sus
componentes (fuertemente) conexas.
A.E.D.
Tema 4. Grafos
70
10
4
9
71
72
A.E.D.
Tema 4. Grafos
73
74
D, E
A.E.D.
Tema 4. Grafos
75
*
+
+
A
Aplanar
terreno
(A+B)*(D+D*(A+B))
Pintar
pirmide
A.E.D.
Tema 4. Grafos
Comprar
piedras
Hacer
camino
Cincelar
piedras
Colocar
piedras
76
Ejemplo: La relacin de
{ 1, 2 }
inclusin propia
entre conjuntos, .
{1}
A.E.D.
Tema 4. Grafos
{ 1, 3 }
{ 2, 3 }
{2}
{3}
{ }
77
78
Aplanar
terreno
2
4
7
Comprar
piedras
Hacer
camino
Pintar
pirmide
de obras
Cincelar
piedras
Colocar
piedras
79
A.E.D.
Tema 4. Grafos
80
7
81
82
83
2
4
3
7
84
85
1
9
3
7
86
Ejemplo.
nbpp[1]= 1, bajo[1]= 1
2, 1 3
3, 3 9
4, 1 7
5, 1 8
2 6, 6
7, 6 4
8, 8
9, 6
87
1
2
3
6
7
Pregunta: es posible dibujar estas figuras con un
bolgrafo, pintando cada lnea una sola vez, sin levantar el
bolgrafo y acabando donde se empez?
A.E.D.
Tema 4. Grafos
88
89
90
2
4
5
7
A.E.D.
Tema 4. Grafos
91
Problema
con grafos
Algoritmo
genrico
con grafos
Algoritmo para
el problema de
inters
92
93
94
Restricciones:
2
A.E.D.
Tema 4. Grafos
4
95
b
1
t
2
b
0
t
2
96
4
5
4
5
6
A.E.D.
Tema 4. Grafos
6
97
98
25
5
50
2
55
40
25
45
30
20
3
15
99
50
5
50
15
TOTAL
135
2
2
0
55
40
25
30
10
25
25
2
55
40
25
45
TOTAL
140
2
45
10
30
3
15
100
Coloracin de grafos
Un grafo no dirigido G representa ciertos elementos.
Una arista (v, w) representa una incompatibilidad
entre los elementos v y w.
La coloracin de un grafo consiste en asignar un
color (o etiqueta) a cada nodo, de forma que dos
nodos incompatibles no tengan el mismo color.
Problema de coloracin de grafos:
Realizar una coloracin del grafo utilizando un
nmero mnimo de colores.
A.E.D.
Tema 4. Grafos
101
Modelamos el
problema con una
representacin de
grafos.
A.E.D.
Tema 4. Grafos
102
RHUN
ERIADOR
COMARCA
ROHAN
MORDOR
GONDOR
103
Isomorfismo
Definicin: dos grafos G= (VG, AG) y F= (VF, AF) se dice
que son isomorfos si existe una asignacin de los nodos
de VG con los nodos de VF tal que se respetan las aristas.
Isomorfismo entre grafos. El isomorfismo es una funcin:
104
4
3
1
1
3
7
5
105
Conclusiones
4. Grafos
106