Tema VIII. Grafos 1. Grafos, digrafos y multigrafos 2. Grafos

Anuncio
Tema VIII. Grafos
1.
2.
3.
4.
Grafos 1
©2007 Carmen Moreno Valencia
Grafos, digrafos y multigrafos
Grafos eulerianos
Matrices de adyacencia e incidencia
Exploración de grafos pesados
1. Grafos, digrafos y multigrafos
Definición. Un grafo G es un par ordenado
G=(V,A), donde V es un conjunto cuyos
elementos se llaman vértices y A es el
conjunto de aristas que conectan dichos
vértices.
• u,v ∈V : adyacentes : uv∈A
u
v
Ejemplo 1
ei: empleados de una fábrica, i=1,2,3,4,5
tj: tareas, j=1,2,3,4
eitj ∈A : empleado ei está capacitado para
realizar la tarea tj
Grafos 2
V={e1, e2, e3, e4, e5, t1, t2, t3, t4}
A={e1t1, e2t1, e2t3, e3t1, e3t2, e3t3, e4t2, e5t3, e5t4}
9 Multigrafo
Es un grafo que puede contener más de una
arista entre dos vértices.
V={v1, v2, v3}, A={v1v2,v1v2, v2v3, v1v3, v1v3}
9 Pseudografo
V={v1, v2, v3}
A={v1v1, v1v2,v2v2, v2v3}
Grafos 3
9 Digrafo ó grafo dirigido
A cada arista se le asigna un orden de sus
extremos (flechas).
v1
v1
v2
v3
v2
v3
G=(V,A)
G´=(V´,A´)
V=V´={v1, v2, v3}. A={v1v2, v2v3, v3v1},
A´={v2v1, v3v1, v2v3}
¾ Grado de un vértice
G=(V,A). Se llama grado del vértice u ∈V al
número de aristas que tienen a u por extremo.
¾ Isomorfismo de grafos
Sean G=(V,A) y G´=(V´,A´). Un isomorfismo
de G en G´es una aplicación f: VÆV´ biyectiva
que cumple: uv ∈A ⇔ f(u)f(v) ∈A´
• f preserva la adyacencia
• C.N: G y G´deben tener el mismo nº vértices
Grafos 4
Los grafos G y G´son isomorfos:
u1
y
u2
x
z
G=(V,A)
f: V
x
y
z
t
t
→
6
6
6
6
u4
u3
G´=(V´,A´)
V´
f ( x ) = u1
f ( y ) = u2
f ( z ) = u3
f (t ) = u4
Proposición. Si los grafos G y G´ son
isomorfos y u∈V, entonces gr(u)=gr(f(u))
•f preserva el grado
G
no isomorfo a
G´
Grafos 5
G no isomorfo a G´
Teorema.(Primer teorema de la teoría de grafo
Sean G=(V,A) un grafo y V={v1, ..., vp} el
conjunto de sus vértices. Entonces
i =p
∑ gr (v ) = 2 ⋅ car ( A) (cantidad par)
i =1
i
• El nº de vértices de grado impar de un grafo
es cero o un número par
¾ Grafo Regular
Todos sus vértices tienen el mismo grado k
(k-regular)
•Un isomorfismo de grafos conserva la
regularidad.
Grafos 6
¾ Grafo Completo
Cada par de vértices son adyacentes.
•Dos grafos completos con el mismo nº de
vértices son isomorfos.
•Grafo completo de n vértices (y sus isomorfos)
Kn:
K3
K4
K5
• Todo grafo completo es regular.
2. Grafos eulerianos
¾ Camino
C= (v0, v0v1, v1, v1v2, v2, .., v n-1vn, vn)
•Conecta vo con vn
C= (v0, v1, ...., vn)
•Longitud =nº aristas
•Cerrado : v0=vn Simple: No repite vértices
Grafos 7
¾ Circuito
Camino cerrado que no repite aristas
¾ Grafo conexo
Para cada par de vértices, existe un camino
que los conecta. (Una componente conexa)
¾ Circuito Euleriano
Camino cerrado/ Todas las aristas/ Sin repetir
¾ Camino Euleriano
Camino / Todas las aristas/ Sin repetir
¾ Grafo Euleriano
Grafo que contiene un circuito euleriano.
Los siete Puentes de Königsberg
C
A
B
(s. XVIII)
D
Leonard Euler (1736)
Grafos 8
Trataban de
encontrar un circuito
euleriano en el grafo
G
Teorema 1
Sea G un grafo conexo. G posee un circuito
euleriano (G es euleriano) si y sólo si todos
sus vértices tienen grado par.
Teorema 2
Sea G un grafo conexo. G posee un camino
euleriano si y sólo si tiene exactamente dos
vértices de grado impar.
¾ Búsqueda de un circuito euleriano
• Construir un circuito inicial en G
• Insertar en él nuevos circuitos, hasta recorrer
todas las aristas
Grafos 9
¿Es G euleriano?. Encontrar un circuito
j
euleriano en G.
b
e
a
f
i
c
h
d
g
G=(V, A)
1) Circuito g=(a, b, c, d, a) Borramos las
aristas recorridas por g:
j
b
e
a
f
c
d
g
i
h
G´=(V, A´)
A´π∆
2) En G´construimos un circuito g´que
comience por un vértice de g (vertice b)
Grafos 10
g´=(b, i, c, h, d, f, a, e, b) Y lo insertamos en
g=(a, b, c, d, a) :
g∪g´=g1= (a, [b, i, c, h, d, f, a, e, b ], c, d, a)
Borramos las aristas recorridas por g1
j
b
e
a
f
i
c
d
g
h
G´´=(V,A´´)
A´´ π∆
3) En G´´ construimos un circuito g´´ que
comience por un vértice de g´ (vertice i)
Grafos 11
g´´=(i, h, g, f, e, j ,i) Y lo insertamos en
g1= (a, [b, i, c, h, d, f, a, e, b ], c, d, a):
g1 ∪g´´=g2=
(a, [b, [i, h, g, f, e, j ,i ], c, h, d, f, a, e, b ],c,d,a)
Borramos las aristas recorridas por g2:
j
b
e
c
a
d
f
i
g
h
G´´´=(V,A´´´)
A´´´=∆
g2: Circuito euleriano
3. Matriz de adyacencia y de incidencia
Grafos 12
¾ Matriz de adyacencia de un grafo
G=(V, A), V={v1, v2, ..., vp}.
M=(aij) ∈Mp dada por:
(adyacentes )
1 si vi v j ∈ A
aij = 
0 si vi v j ∉ A ( No adyacentes )
v1
v4
0 1 1
1 0 1

M
=
v
v3
2
1 1 0

1 0 0
¾ Matriz de adyacencia de un digrafo
M=(aij) ∈Mp
1
0

0

0
aij = 1 si vi v j ∈ A y
vi → v j

0 si vi v j ∉ A o vi v j ∈ A , pero v j → vi
Grafos 13
v1
v3
v4
v2
0
0
M =
1

1
1 0 0
0 1 0

0 0 0

0 0 0
¾ Matriz de adyacencia de un multigrafo
aij indica el número de aristas que conectan el
vértice i con el j.
El valor cij de Mn indica el nº de caminos de
longitud n que conectan el vértice vi con vj.
¾Matriz de incidencia vértice-arista
de un Grafo
G=(V,A), V= {v1, v2, ..., vp}, A={a1, a2, ..., ar}
Z=(zij) ∈Mpxr
1 la arista a j incide enel vertice vi
zij = 
en otro caso
0
¾Matriz de incidencia de un Digrafo
Grafos 14
Z=(zij) ∈Mpxr
1

zij = −1
0

vi es vertice inicial de la arista a j
vi es vertice final de la arista a j
en otrocaso
a5
v1
a1
v3
v4
a4
a3
v2
a2
v1
a1
v3 a2
a4
v4
a3
v2
1
0
Z =
1

0
0 1 1 1
1 1 1 0

1 0 0 0

0 0 0 1
 −1 0 1 −1
 0 1 −1 0 

Z =
 1 −1 0 0 


0 0 0 1
4. Exploración en grafos pesados
¾ Grafos pesados. Optimización
Grafos 15
• Árbol de Expansión Mínimo
• Ruta más corta: Algoritmo de DIJKSTRA
• Flujo máximo
Algoritmo del Árbol de Expansión Mínimo
¾ Árbol:
•Grafo conexo y sin ciclos
•Dado dos vértices, existe un único
camino simple que los conecta
•Ejemplo: Red de ferrocarril
¾ Árbol de expansión de un grafo: árbol
que contiene todos los vértices del grafo
¾ Árbol de expansión mínimo en un grafo
pesado: árbol que contiene todos los vértices
del grafo y cuyo peso sea mínimo.
S Conectados en un arbol A
Algoritmo
V =
S sin conectar
•En cada iteración se describe el estado: S, A, S
Grafos 16
Inicio
Fin
S=∆
S=V
(Conectados Arbol)
(Conectados Arbol Exp.Min.)
S =V
S=∅
(Sin conectar)
(Sin conectar)
Criterio: En cada iteración se transfiere a S el
vértice de S más próximo al arbol -”bloque”
Ej.
Descargar