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.