Está en la página 1de 29

Estructuras de datos para

Grafos
Estructura de Datos
Facultad de Ciencias de la computacin
BUAP.
Verano 2005
Estructura de
Datos
Grafos - 2
Introduccin

Los grafos sirven para representar relaciones


arbitrarias (no necesariamente jerrquicas) entre
objetos de datos
PA!A DE
CA"#$A
%UEV&"
'$%$"#E($&"
G(EG&($&
'A(A)*%
CA%A
GU!'A%
E BUE%&
CUA#(&
CA'$%&"
AVDA. DE
A'+($CA
Estructura de
Datos
Grafos - 3
juan
david
pablo
uc3m.es
otro.net
inf.uc3m.es
rediris.net
telefonica.net
it.uc3m.es
Lab-a02 lab-a01
Introduccin: aplicaciones

Circuitos electrnicos
Tarjetas impresas
Circuitos integrados

Redes de transporte
utopistas
!uelos

Redes de ordenadores
L"s
Internet
#eb

$ases de datos
%iagramas entidad&relacin
Estructura de
Datos
Grafos - 4
Introduccin: aplicaciones(Cont')

(odelar conectividad en computadoras ) redes


de comunicaciones'

Representar un mapa como un conjunto de


localidades con distancias entre ellas* usado para
calcular las rutas ms cortas entre localidades'

(odelar capacidades de flujo en redes de


transporte'

(odelar relaciones en familias+ negocios u


organi,aciones militares'

(odelar algoritmos de computadora+ mostrando


las transiciones del estado de un programa a
otro'
Estructura de
Datos
Grafos - 5
-undamentos: definiciones

.n ,rafo consiste en un conjunto de -.rtices o nodos )


un conjunto de arcos' /e representa con el par 0 1 (!+)'

.n arco o arista est formado por un par de nodos u ) v+


) se representa por (u+v)

.n grafo es diri,ido si los pares de nodos que forman los


arcos son ordenados ) se representan u v' .n grafo no
dirigido es aquel que los arcos estn formados por pares
de nodos no ordenados+ se representa u v'

/i (u+v) es una arista en (0)+ entonces u ) v se dice que


son v2rtices ad/acentes'

.n arco tiene+ a veces+ asociado un factor de peso+ en


cu)o caso se dice que es un grafo -alorado o ponderado
0con pesos1'
Estructura de
Datos
Grafos - 6
-undamentos: grafos dirigidos
Grafo no diri,ido
!(03) 1 4a+b+c+d5
(03) 1 4(a+b)+(a+d)+(b+c)+(b+d)5
Grafo diri,ido
!(06) 1 43+7+8+9+:5
(06) 1 4(3+7)+(7+3)+(:+3)+
(7+8)+(8+9)5
a
b
d
c
3
7
8
9
:
Estructura de
Datos
Grafos - 7
-undamentos

Grado de un nodo
;n un grafo dirigido
<0rado de un nodo u 1 n= de aristas que contienen a u
;n un grafo dirigido
<0rado de entrada de u 1 n= de arcos que llegan a u
<0rado de salida de u 1 n= de arcos que salen de u

Grafos cone2os
.n grafo no dirigido es cone>o si e>iste un camino
entre cualquier par de nodos que forman el grafo
;jemplos:
grafo conexo
grafo no conexo con dos
componentes conexas
Estructura de
Datos
Grafos - 8
-undamentos: camino

.n camino ? de longitud n en
el grafo 0 desde u
@
a u
n
es la
secuencia de nA3 v2rtices ? 1
(u
@
+ u
3
+ '''+ u
n
) tal que (u
i
+u
i
A3)
son arcos de 0 para @ i n

.n camino es simple si todos


los nodos que forman el
camino son distintos+ pudiendo
ser iguales los e>tremos del
camino

;jemplo:
?
3
es simple
?
6
no es simple
P
1
X U
V
W
Z
Y
a
c
b
e
d
f
g
h P
2
Estructura de
Datos
Grafos - 9
-undamentos: ciclos ) bucles

.n ciclo es un camino
simple cerrado con u
@
1u
n
+
compuesto al menos por
tres nodos

.n ciclo es simple si todos


sus v2rtices ) arcos son
distintos

.n arco que va desde un


v2rtice a sB mismo (u+u) se
denomina 3ucle

;jemplo
C
3
es un ciclo simple
C
6
es un ciclo no simple

1
X U
V
W
Z
Y
a
c
b
e
d
f
g
h
2
Estructura de
Datos
Grafos - 10
T% 0R-C: Cperaciones
recorrer(grafo,tipoRecorrido) Recorrido del grafo
borrarArista(grafo,arista)
borrarVertice(grafo, referenciaVertice)
Eliminacin de vrtices
insertarVertice(grafo, vertice)
crearGrafo (grafo)
Creacin del grafo
Inclusin de vrtices
Borrar aristas
insertarArista(grafo, vertice1, vertice2)
Inclusin de aristas
Estructura de
Datos
Grafos - 11
T% 0R-C: Cperaciones
asignarInfo(referenciaVertice, valorInformacion)

Modificacin de vertices
info(referenciaVertice) Informacion
grado(referenciaVertice) Entero
gradoEntrante(referenciaVertice) Entero
gradoSaliente(referenciaVertice) Entero
adyacentes(referenciaVertice) {referenciaVertice}
incidentes{referenciaVertice) {referenciaVertice}
esAdyacente(refenciaVertice1, referenciaVertice2)
Boolean
Acceso a los vertices
asignarEti!eta(referenciaArista, valorEti!eta)

Modificacin de aristas
vertices(referenciaArista) (refVertice,
refVertice)
destino(referenciaArista) refVertice
origen(referenciaArista) refVertice
eti!eta((referenciaArista) eti!eta
Acceso a las aristas
Estructura de
Datos
Grafos - 12
Representacin: matri, de ad)acencia

'atri4 de ad/acencias
/ea 0 1 (!+) un grafo de n nodos+ suponemos
que los nodos ! 1 4u
3
+'''+u
n
5 estn ordenados )
podemos representarlos por sus ordinales
43+6+'''+n5'
La representacin de los arcos se Dace con una
matri, de n>n elementos a
i5
definida:
3 si Da) arco (u
i
+u
j
)
a
i5

@ si no Da) arco (u
i
+u
j
)
Estructura de
Datos
Grafos - 13
Representacin: matri, de ad)acencia
6
3
E
7
6
7
8
E
3
@ 3 3 3
3 @ @ 3
3 @ @ @
3 3 @ @
@ 3 @ @ @
@ @ 3 @ @
@ 3 @ @ 3
@ @ @ @ @
@ @ @ 3 @
6
7
8
E
3
6
2
7
2
6
@ 3 @ @ @
@ @ 6 @ @
@ F @ @ 6
@ @ @ @ @
@ @ @ 3 @
Estructura de
Datos
Grafos - 14
Representacin

(atri, de ad)acencia
?oco eficiente si el n= de v2rtices varBa a lo largo del
tiempo de vida del grafo
?uede darse el caso de que el n= de v2rtices sea ma)or
del previsto inicialmente
?oco eficiente cuando el grafo tiene pocos arcos (la
matri, es GdispersaH)

Listas de ad)acencia
Representar una lista de todos los v2rtices
Cada objeto v2rtice guarda una lista de ad)acencia con
un objeto arista para cada v2rtice alcan,able desde 2l
Estructura de
Datos
Grafos - 15
Representacin: listas de ad)acencia

;jemplo
3
7
6
8
E
3
6
8
E
7
7 E
7
3
3 6 E
Estructura de
Datos
Grafos - 16
Representacin de 0rafos
Estructura de
Datos
Grafos - 17
Recorridos

Primero en profundidad
!isitar v2rtice inicial v
i
!isitar v2rtice ad)acente
a v
i
''' proceder asB Dasta
encontrar uno )a
visitado'''
!olver atrs Dasta llegar a
un v2rtice con ad)acentes
sin visitar
;l recorrido termina
cuando volviendo atrs
llegamos al v2rtice innicial
v
i
) no quedan ad)acentes
por recorrer

Primero en anc8ura
!isitar v2rtice inicial v
i
!isitar todos los v2rtices
ad)acentes a v
i
l terminar+ comen,ar a
visitar los ad)acentes a
los ad)acentes a v
i
''' proceder asB Dasta que no
queden v2rtices por
visitar
Estructura de
Datos
Grafos - 18
Recorridos

Profundidad
R??(v
i
)
4
marcar v
i
como visitado
para cada v
I
ad)acente a v
si v
I
no visitado
entonces R??(v
I
)
5

Anc8ura
R?(v
i
)
4
marcar v
i
como visitado
meter v
i
en cola q
mientras cola q no vacBa
sacar v de cola q
para cada v
I
ad)acente a v
si v
I
no visitado
entonces
marcar v
I
visitado
meter v
I
en cola q
5
Estructura de
Datos
Grafos - 19
Recorridos: operaciones au>iliares

(arcar v2rtice como visitado


/i los v2rtices estn identificados por algJn tipo ordinal+
emplear un conjunto que contenga los identificadores
de los v2rtices visitados

;ncontrar los v2rtices ad)acentes


Con matrices de ad)acencia: recorrer la fila
correspondiente al v2rtice+ buscando columnas a TR.;
Con listas de ad)acencia: recorrer la lista

Cola de v2rtices visitados en ancDura


Cperaciones del T% Cola
Estructura de
Datos
Grafos - 20
Recorrido primero en profundidad
3+ 7+ F+ 3@+ 37+ 36+ :+ 8+ 6+ E+ 9+ K+ 33
3
6
7
E
F
9
K
8
3@
33
:
37
36
6
60
2
66
7
9
:
;
<
=
5
62
Estructura de
Datos
Grafos - 21
Recorrido primero en profundidad
@ 3 3 3 @ @ @ @ @ @ @ @ @
3 @ @ 3 3 @ @ @ @ @ @ @ @
3 @ @ 3 @ 3 3 @ @ @ @ @ @
3 3 3 @ @ 3 3 3 @ @ @ @ @
@ 3 @ @ @ @ @ 3 3 @ @ @ @
@ @ 3 3 @ @ @ @ @ 3 @ @ @
@ @ 3 3 @ @ @ @ @ 3 @ @ @
@ @ @ 3 3 @ @ @ @ @ 3 @ @
@ @ @ @ 3 @ @ @ @ @ 3 3 @
@ @ @ @ @ 3 3 @ @ @ 3 @ 3
@ @ @ @ @ @ @ 3 3 3 @ @ 3
@ @ @ @ @ @ @ @ 3 @ @ @ 3
@ @ @ @ @ @ @ @ @ 3 3 3 @
3
6
E
7
F
3@
9
33
K
8
:
36
37
3
6
7
E
8
F
9
K
:
3@
33
36
37
3 6 7 E 8 F 9 K : 3@ 33 36 37
Estructura de
Datos
Grafos - 22
Recorrido primero en ancDura
3
6
7
E
F
9
K
8
3@
33
:
37
36
6
2
:
=
5
7
<
9
;
60
66
62
3+ 7+ E+ 6+ F+ 9+ K+ 8+ 3@+ 33+ :+ 37+ 36
Estructura de
Datos
Grafos - 23
Recorrido primero en ancDura
@ 3 3 3 @ @ @ @ @ @ @ @ @
3 @ @ 3 3 @ @ @ @ @ @ @ @
3 @ @ 3 @ 3 3 @ @ @ @ @ @
3 3 3 @ @ 3 3 3 @ @ @ @ @
@ 3 @ @ @ @ @ 3 3 @ @ @ @
@ @ 3 3 @ @ @ @ @ 3 @ @ @
@ @ 3 3 @ @ @ @ @ 3 @ @ @
@ @ @ 3 3 @ @ @ @ @ 3 @ @
@ @ @ @ 3 @ @ @ @ @ 3 3 @
@ @ @ @ @ 3 3 @ @ @ 3 @ 3
@ @ @ @ @ @ @ 3 3 3 @ @ 3
@ @ @ @ @ @ @ @ 3 @ @ @ 3
@ @ @ @ @ @ @ @ @ 3 3 3 @
3
6
7
E
8
F
9
K
:
3@
33
36
37
3
6
7
E
8
F
9
K
:
3@
33
36
37
3 6 7 E 8 F 9 K : 3@ 33 36 37
Estructura de
Datos
Grafos - 24
Lrbol reducido&de e>pansin

.n rbol puede verse como un


caso particular de un grafo: un
grafo cone>o acBclico

?ara obtener el >r3ol


reducido de un grafo Da) que
eliminar todas las aristas que
producen ciclos+ pero
manteni2ndolo cone>o
plicacin: encaminamiento en
redes de comunicaciones

"o e>iste un Jnico rbol


reducido de un grafo+ pues
depender del nodo de partida
) de la forma de recorrerlo

Cuando el grafo es valorado+


puede calcularse el rbol de
e>pansin de coste mBnimo
grafo
!rbol de
expansi"n
Estructura de
Datos
Grafos - 25
Lrbol reducido (ancDura)
3
6
7
E
F
9
K
8
3@
33
:
37
36
Estructura de
Datos
Grafos - 26
Lrbol reducido (profundidad)
3
6
7
E
F
9
K
8
3@
33
:
37
36
Estructura de
Datos
Grafos - 27
Lrbol reducido: MrusIal

lgoritmo de MrusIal
?ara grafos no dirigidos+
valorados+ de n v2rtices
;l rbol reducido tiene nN
3 aristas

Cbtencin:
?artir de un grafo 0 sin
aristas ) aOadir una cada
ve,+ Dasta tener nN3
aristas
Ir suprimiendo aristas del
grafo de forma que no
contenga ningJn ciclo )
siga siendo cone>o
/eleccionar cada ve, la
de menor peso

lgoritmo:
Iniciali,ar arbol()
para cada vi 0
Incluir v2rtice vi en
mientras "= aristas() P nN3
/eleccionar arista a de 0
con menos peso*
;liminar arista a de 0*
si a no forma ciclo en
entonces
Incluir arista a en *
Estructura de
Datos
Grafos - 28
Caminos de longitud mBnima: %ijIstra

lgoritmo de %ijIstra
%etermina el camino de longitud mBnima entre un v2rtice
origen ) todos los posibles destinos
!lido para grafos dirigidos ) no dirigidos

%escripcin
signa eti?uetas temporales a cada v2rtice+ que son cotas
superiores de las distancias mBnimas del v2rtice origen a cada
uno de los dems
Las etiquetas temporales se van convirtiendo en
permanentes en cada iteracin+ representando entonces la
distancia mBnima del origen a cada v2rtice
Comien,a con etiqueta permanente 1 @ para el v2rtice origen
) etiquetas temporales 1 distancia directa desde el origen al
resto
/i no e>iste arco directo desde el origen+ su distancia es
Estructura de
Datos
Grafos - 29
Caminos de longitud mBnima: %ijIstra

lgoritmo:
3' signar etiqueta permanente 1 @ al v2rtice origen
6' signar etiquetas temporales a los nN3 v2rtices
restantes igual a
dij si cone>in directa
si no cone>in directa
7' Qacer permanente la mBnima de las etiquetas
temporales' /i Da) varias+ elegir una arbitraria
E' /ea j el v2rtice que Da recibido la etiqueta permanente
en el paso anterior' La nueva etiqueta temporal de
cada v2rtice i ser 1 min(etiqueta
i
+ etiqueta
j
A d
ij
)
8' Qacer permanente la mBnima de todas las etiquetas
temporales' /i Da) varias+ elegir una arbitraria' /i la
elegida es la del v2rtice destino+ parar' /i no+ volver al
paso E'