Grafos y Árboles

March 30, 2018 | Author: Victor Zelada Cueva | Category: Graph Theory, Computer Science, Discrete Mathematics, Mathematical Relations, Theoretical Computer Science


Comments



Description

TEORÍA DE LOS GRAFOSUn grafo G es un par ordenado G (V,E), donde: V es un conjunto no vacio, cuyos elementos son llamados vértices. E es un conjunto de pares de elementos de V, que son llamados arcos Ej.: a 2 G1 G2 1 3 b c TEORÍA DE LOS GRAFOS Un arco es (no) orientado o (no) dirigido si (no) hay una dirección asignada a él. Un grafo es (no) orientado si todos sus arcos son (no) orientados <i,j> denota el arco dirigido de i a j (i,j) denota el arco no dirigido Ej.: G1 = (V1,E1) V1 = {1,2,3} E1 = {(1,2),(2,3),(1,3)} G2 = (v2,E2) V2 = {a,b,c} E2 = {<a,b>,<a,c>} GRAFOS NO ORIENTADOS: G = (V,E) 1. Los vértices i y j son adyacentes si (i,j) ϵ E, y se dice que (i,j) es incidente sobre i y j. Por lo tanto es adyacente si existe un arco que los conecte. 1 G3 1 y 2 son adyacentes 41 y 3 son adyacentes 2 (1,4) es incidente sobre 1 y 4 3 2. El grado o valencia del vértice i (di) es el número de arcos incidentes sobre i. Ej.: En G3.- d1 = 3, d2 = 2, d3 = 2, d4 = 1 GRAFO COMPLETO G es completo si tiene n(n1) 2 arcos (Kn) Donde Kn = el grafo completo de n vértices Ej.: 1 2 K4 SUBGRAFO: Dado un grafo G, el grafo no orientado H = (V1,E1) es un subgrafo de G = (V,E) si V1 ᴄ V, E1 ᴄ E Ej.: Un subgrafo de K4 es: 1 n=4 Kn = 6 3 4 2 K3 3 K3 es subgrafo de K4 3.: en K4. ij+1) ϵ E. CAMINO SIMPLE: El camino P es simple si ningún vértice se repite.: En K4.2. k-1 Ej. P = 1.CAMINO CAMINO: Un camino del vértice i1 al vértice ik es una secuencia de vértices P = i1 i2 i3 i4……ik.1 (no es camino simple) P = 1.2.3.1 (si es simple y es un camino cerrado) P = 1.4 es un camino de 1 a 4. . Ej. tal que (ij.4 (es simple) .. exceptuando posiblemente el primero y el último vértices.2.2. …. j = 1. P = 1.2. y los arcos son diferentes. 1. En k4: P = 2.3.CICLO Un ciclo es un camino simple y cerrado (los vértices extremos son idénticos) Ej.4.1.2 es ciclo .2 es ciclo P = 2.3. GRAFO CONEXO Un grafo G = (V.j.: E B G8 F C A NO ES CONEXO D A D F G9 NO ES CONEXO E G B C .E) es conexo (conectado). existe un camino de i a j. Ej. si para cada par de vértices distintos i. E2) conexo tal que V1 ᴄ V2 y E1 ᴄ E2. esto es.E1) del grafo G = (V. si G1 es un subgrafo conexo maximal.COMPONENTE CONEXO El subgrafo G1 = (V1. B G8 E C A D F . no existe un subgrafo G2 = (V 2.E) es una componente conexa. BICONEXIDAD 1. tal que v está en todo camino de x a w. G esAbiconexo si B no tiene puntos de articulación. 4 1 2 2 4 3 6 Componentes básicas de G11 . 2. 5 G10 1 2 4 6 G11 3 C D 3. v es un punto de articulación para un grafo G si existen vértices distintos x y w <> v. Una componente biconexa de un grafo G es un 5 subgrafo de G que es biconexo maximal. D B A C Un árboles un grafo acíclico y conexo A B C D . si no tiene ciclos.ÁRBOLES Un grafo es acíclico. j> es incidente a j. ) es el .2> es incidente a 2 es incidente desde 1 1 3 in • INVALENCIA: El grado de entrada del vértice i (d i ) es el número de arcos incidentes a i.GRAFOS ORIENTADOS • El arco orientado <i. 2 <1. y j es adyacente desde i. El vértice i es adyacente a j. incidente desde i. out • EXVALENCIA: El grado de salida del vértice i (d i número de arcos incidentes desde i. si tiene n(n-1) arcos K0n • Un Subgrafo es otro grafo con un subconjunto de vértices del conjunto de vértices. • Un camino orientado es una secuencia de vértices • Un ciclo orientado es un camino orientado. donde el vértice inicial es a su vez el vértice final.• G es completo. El ciclo orientado a su vez se conoce como Circuito. 2 B CDE no es un camino C ABCD es un camino simple ABCEA es un ciclo orientado A 1 3 E D . : 3 2 4 2 3 H1 4 G2 H1 y H2 son comp.• Un grafo es fuertemente conexo si para cada par de vértices distintos i ≠ j existe un circuito que los contiene. 1 1 H2 Ej. fuertemente conexas de .: 3 2 3 2 4 4 G20 G21 Si es fuertemente conexo No es fuertemente conexo • Una componente fuertemente conexa es un subgrafo fuertemente conexo maximal. 1 1 Ej. 2. ij+1> ϵ E ó <ij+1. • Semiciclo: es un semicamino simple cerrado .4 es un semicamino • Semicamino simple: es un camino en el cual. ……. i2. 4 2 G23 3 P = 1. ik. ij> ϵ E. es un semicamino o cadena en G si <ij. ningún vértice o arco se repite.3. ó ambos 1 están en E.• Una secuencia de vértices P = i1. Ej.: 1 H1 2 4 3 H1 y H2 son las componentes H2 débilmente conexas de G24 G24 G23 sí es débilmente conexo G24 no es débilmente conexo .E) es débilmente conexo si para cada par de vértices distintos i ≠ j existe un semicamino en G de i a j.• Un grafo orientado G = (V. 1 Ej.: Raíz 2 4 3 .: G23 • ÁRBOL CON RAIZ: Un árbol con raiz o enraizado es un árbol orientado en la que un solo vértice tiene grado de entrada 0 y los otros tienen grado de entrada 1.ÁRBOL ORIENTADO • Un árbol orientado es un grafo orientado que es débilmente conexo y que no posee semiciclos. Ej. REPRESENTACIÓN DE GRAFOS . : 1 2 3 4 0 1 1 0 0 1 0 1 1 0 A1= 1 0 0 1 0 1 0 0 1 0 0 1 1 0 5 En general. la diagonal principal es nula .1. MATRIZ DE ADYACENCIA A = [aij] .j) ϵ E aij = 0: de otro modo Ej. A es simétrica.1: si existe el arco (i. A : n * n A) CASO NO ORIENTADO. MATRIZ DE ADYACENCIA B) CASO ORIENTADO.: 1 2 4 3 0 A0= 0 0 1 0 0 1 0 1 0 0 En general.1: si <i.1.j> ϵ E aij = 0: de otro modo Ej. A no es simétrica 0 0 0 0 . Si W es costo.j) : si (i.: 1 25 10 G26 2 6 5 14 3 16 (C: Constante) 4 32 C C A5 = C C 25 C C 6 C C 10 C C C C 14 C C 32 C C 16 C C 5 C: Valor muy grande si es utilidad (M). MATRIZ DE ADYACENCIA C) GRAFO (ORIENTADO O NO) CON PESOS.j> ϵ E C : de otro modo Ej.j) ϵ E aij = <i. M es peque .1.W(i. : Lista de adyacencia de G25: 1 2 3 4 5 2 1 1 2 3 3 N I L 3 2 5 N I L 4 N I L 4 N I L 5 N I L . LISTAS ENLAZADAS DE ADYACENCIA N I L Vértice Ej.2. LISTAS ENLAZADAS DE ADYACENCIA Ej.: Lista de adyacencia de G26: 1 2 3 4 5 2 4 1 2 4 25 N I L 14 3 5 5 6 N I L 32 N I L 10 16 N I L N I L .2. E) es un subgrafo que es árbol y contiene a todos los vértices de G.ÁRBOLES PARCIALES MÍNIMOS • Un árbol parcial para un grafo G = (V.E. Un árbol parcial mínimo es un árbol parcial de peso mínimo o de costo mínimo.W) un grafo con pesos.: Sus 1 1 árboles 2 2 Parciales 2 El árbol parcial Mínimos: 2 1 Mínimo no es 3 1 2 3 único 1 2 2 1 3 . el peso de un subgrafo es la suma de los pesos de los arcos del subgrafo. Sea G = (V. Ej. Añadir tal arco y vértice vecino al árbol Fin Mientras . Vértice vecino: es un vértice que no es del árbol. 3.y) con x vértice del árbol que es de peso mínimo. Vértice de árbol: es un vértice que ya está en el árbol que se ha construido hasta ese momento. es el arco (x. El algoritmo sería: Seleccionar un vértice vecino Mientras hay vértices vecinos hacer: Seleccionar un arco de peso mínimo entre un vértice de árbol y un vértice vecino. pero que es adyacente a uno.ALGORITMO DIJKSTRA / PRIM 1. 2. Un arco candidato del vértice vecino “y”. Vértice no visto: es un vértice que no es del árbol y tampoco es vecino. ALGORITMO DIJKSTRA / PRIM Ej.: 7 6 3 F 1 5 A 2 A I 2 B 3 7 G F G 4 B 4 C 3 H 2 A 2 B 3 G 7 F 4 C Árbol Vecinos . 1 3 G I 1 3 3 H A 7 2 B 4 I 3 G 5 F A F 2 4 B C I 1 3 F A 2 5 G 3 H 2 C B H WT = 16 C . . . • La solución del algoritmo de Dijkstra / Prim sí es óptima.ALGORITMO VORAZ • Un algoritmo voraz es un algoritmo para problemas de optimización en la que se hacen elecciones óptimas localmente en cada paso. • El algoritmo de Dijkstra / Prim es voraz. • El resultado final no es necesariamente óptimo. . ÁRBOLES PARCIALES DE COSTO MÍNIMO 1. ALGORITMO DE DIJKSTRA / PRIM Seleccionar un vértice vecino Mientras hay vértices vecinos hacer: Seleccionar un arco de peso mínimo entre un vértice de árbol y un vértice vecino. Añadir tal arco y vértice vecino al árbol Fin Mientras . w)} i=i+1 Fin Si Fin Mientras Fin Procedimiento Kruskal . E´ = E .w)} Si (u.E).w) un arco de costo mínimo de E´ E´ = E´.T. ALGORITMO DE KRUSKAL Procedimiento Kruskal (G.ÁRBOLES PARCIALES DE COSTO MÍNIMO 2. N = |V|} ET = 0 .w) no crea un ciclo en T entonces ET = ET U {(u. i = 0 Mientras E´≠ 0 AND i ≠ n-1 hacer Sea (u.n) {G = (V.{(u. ALGORITMO KRUSKAL Ej.: 7 7 1 I G 6 1 I G 4 4 C H 2 3 B 3 4 A F 5 6 3 F 5 2 A B 2 4 C 3 H 2 ARCO IG HC AB AG GH BC IH FI GB FA COSTO 1 2 2 3 3 4X 4X 5 6X 7X WT = 16 (1+2+2+3+3+5) El algoritmo Kruskal es voraz La solución que proporciona sí es óptima . v2. vk. entonces existe un camino más corto de v a vk. v1.z) = d (v. Hallar un camino más corto de v a w. v2. w ϵ V. SOLUCIÓN: Utilizando el siguiente algoritmo de Dijkstra: Sea z un vértice vecino. …. v1.W) un grafo con pesos. y sean v. El peso o longitud de P se define: k-1 PROBLEMA: W(P) = Ʃ W (ui. vk un camino => P´= v. Z es un camino de v a z dist (v.vk) + w(vkz) distancia temporal distancia permanente .PROBLEMA DE CAMINOS MÁS CORTOS Sea G = (V.E. ui+1) i=1 Sea G = (V. …. Sea P = u1. tal que z es adyacente a por lo menos un vértice del árbol Vk. uk un camino de u1 al uk.E.W) grafo orientado o no con pesos. …. Sea P = v.. u2. y) al árbol d (v.y) = d(v.x) + w(xy) x=y Fin Mientras mplo: 9 6 5 F 1 2 A 2 I G 4 B 4 C 5 H 5 Hallar un camino más corto de A a F .x) + w(xy) es mínimo entre todos los vértices veci añadir y.algoritmo: x=v Mientras x ≠ w hacer Seleccionar un arco candidato xy tal que dist (v. (x.y) = d (v. SOLUCIÓN: Iteración 1: A 2 B 9 F 5 G Árbol dist (A.I) = 7 dist (A.B) = 2 dist (A.F) = 9 dist (A.F) = 9 dist (A.C) = 6 dist (A.G) = 5 dist (A.C) = 6 G C Vecinos dist (A.F) = 9 F A 5 Vecinos C 5 I H dist (A.G) = 5 Iteración 3: 4 B 2 9 2 G Iteración 2: 9 A 2 B 5 6 4 F dist (A.H) = 10 . F) = 8 dist (A.H) = 10 .I) = 7 H dist (A.Iteración 4: C 4 9 B 2 2 A 5 5 F dist (A.H) = 10 G 4 Iteración 5: C B 2 F A 5 1 5 G 2 I H dist (A.F) = 9 I dist (A. entonces su costo es C k-1(i. para generar Ck se consideran dos cas El camino más corto de i a j que no pasa por ningún vértice intermedio mayor a k.j) El camino más corto de i a j que no pasa por ningún vértice intermedio mayor a k. l que i ≠ j.j) = longitud de un camino más corto de i a j que no pasa por vértices intermedios con índices mayor que k k ∞ i=j 0 (i.j). tampoco pasa por k.allar los caminos más cortos entre todos los pares de vértices i. utilizando el algoritmo de Warshall. sí pasa por k.j> ϵ E) upongamos que ya se generó Ck-1.j) k >= 1 .j) ϵ E (<i.k) + Ck-1(k. j. entonces su costo es C k-1(i.j) (i.j) ϵ E (<i.j) ntonces: Ck(i.j) = min (Ck-1(i.j> ϵ E) W(i.j) = ∞ (i.k) + Ck-1(k. Ck-1(i. (i. j).j) = min {C(i. N FOR J = 1.ALGORITMO DE WARSHALL: FOR K = 1. N C (i. C(i.j)} END END END 6 4 V1 11 V2 2 ∞ 4 C06 = ∞ 3 ∞ 11 2 ∞ ∞ 4 C16 =10 3 7 11 2 14 10 4 C2 6= 10 3 7 6 2 9 9 4 3 C5 = 9 3 7 6 2 9 3 V3 .k) + C(k. N FOR I = 1. marcar v Insertar v en Q Mientras Q ≠ 0 hacer x = valor en el frente de la cola eliminar x de Q Para cada vértice w adyacente a x no marcado hacer visitar y marcar w insertar w en Q Fin Para .BÚSQUEDA Se realiza una búsqueda por niveles. Procedure BFS (v)y [Breadth First Search) Los vértices soncola visitados en el orden {Q es una inicializada en 0}de su distancia del vértice de partida. Visitar. luego. los vértices que estén a continuación del vértice de partida. así. Se visitan los vértices que están más cerca al vértice de partida. sucesivamente.RECORRIDO DE GRAFOS Recorrer significa visitar cada vértice del grafo Esto implica examinar. visitar o procesar todos los vértices y arcos del grafo PRIMERO A LO ANCHO A. A F B G I C H BFS (A) Q: A F B I G C H X= A F B I G C H (H: Vértice más alejado del origen A) . BÚSQUEDA PRIMERO EN PROFUNDIDAD PROCEDURE DFS (v) [Depth First Search] Visitar y marcar v Mientras hay un vértice w no marcado adyacente a v hacer DFS (w) Fin Mientras B A C F G N I L B N I L .B. mH DFS (I) v. mB DFS (C) v.A F B G I C H DFS (A) v. mI DFS (G) v. mC DFS (H) v.mG Fin Fin Fin Fin Fin DFS (F) v. mF . mA DFS (B) v.
Copyright © 2024 DOKUMEN.SITE Inc.