Teoria de grafos

47,808 views

Published on

Published in: Technology
7 Comments
46 Likes
Statistics
Notes
No Downloads
Views
Total views
47,808
On SlideShare
0
From Embeds
0
Number of Embeds
95
Actions
Shares
0
Downloads
1,366
Comments
7
Likes
46
Embeds 0
No embeds

No notes for slide

Teoria de grafos

  1. 1. Estructuras Discretas en ComputaciónTeoría de Grafos Profesor: Mag. Ing. Pavel Aliaga E. Facultad de Ing. de Sistemas Universidad de Lima 2009-2
  2. 2. Grafos: Conceptos Básicos
  3. 3. ¿Qué es un Grafo? Es un conjunto de: puntos (NODOS o VÉRTICES) unidos por líneas (ARCOS o ARISTAS)
  4. 4. ¿Por qué se estudian Grafos? Porque permiten estudiar interrelaciones entre elementos que interactúan unos con otros Dado un escenario donde ciertos objetos se relacionan se puede “modelar el grafo” y luego aplicar algoritmos para resolver diversos problemas Son aplicables en:  Ingeniería de Sistemas  Modelado de Redes  Ingeniería Industrial, Electrónica  Química  Geografía, etc.
  5. 5. ¿Qué podemos representar con unGrafo? Red de Computadoras Conexiones de vuelo de una aereolínea Carreteras que unen ciudades Impresora Actividades de un proyecto Circuitos electrónicos Modem PC1 Representación de un mapa… ServidorPracticamente cualquier problema PC2puede representarse mediante un grafo
  6. 6. Ejemplo de Aplicación de los Grafos  Recorrer cada carretera exactamente una vez y regresar al punto de partida  Recorrer cada ciudad una vez y regresar a la ciudad de origen y todo al menor costo posible  Encontrar el camino más corto entre 2 cuidades cualesquiera
  7. 7. Grafo – Definición formal Un grafo G = (V,E) V, el conjunto de vértices o nodos 1 4  V={v1, v2, ..vn} 5  Representan los objetos 7 9 E, el conjunto de arcos o aristas  Representan las relaciones  E ={vivj, vmvn, ..} Vértices Adyacentes: 2 vértices unidos por un arco V = {1, 4, 5, 7, 9} E= {(1,4), (4,9), (9,7), (7,5), (5,1), (4,1), (1,5), (5,7), (7, 9), (9,4)}
  8. 8. Grado de un Grafo Grado de un NODO: Es el # de arcos que inciden en un vértice Caso especial (lazo): se considera 2 C E Grado (D) = 3 Grado (F) = 3 Grado (H) = 3 Grado (C) = 3 Grado (E) = 4 F D H Grado del Grafo = 16 = 2 * 8 arcos Grado de un GRAFO: Suma de los grados de los vértices. Teorema de Grado de un GRAFO: Suma de grados de vértices equivale al doble del número de arcos.
  9. 9. Tipos de Grafos x Grafo Regular u  Todos los vértices tienen el mismo grado  Si el grado es k, el grafo es k-regular y z Grafo 3 - regular Grafo Completo  Tiene una arista entre cualquier par de vértices a b a b e d c d c Grafo completo Grafo No completo
  10. 10. Tipos de Grafos Grafo Bipartito  “Bipartito” significa que tiene 2 partes  G= { V1 u V2, E}  Sus vértices son la unión de dos grupos de vértices bajos las siguientes condiciones:  V1 y V2 son conjuntos disjuntos  Cada arista del Grafo une un vértice de V1 con uno de V2  No existen aristas uniendo vértices del mismos conjunto V1 o V2 a b a b c Grafos Bipartitos c d e
  11. 11. Lazo o bucleTipos de Grafos x u Mulitgrafo  Es un grafo que tiene arcos múltiples (paralelos) o lazos y z Arcos múltiples o paralelos Multigrafo Grafo Simple  Es un grafo o digrafo que no tiene bucles x u y que no es un multigrafo y z Grafo simple
  12. 12. Tipos de Grafos (dirección) 1 4 Grafos no dirigidos  Si los pares de nodos de los arcos 5 no son ordenados El arco se puede recorrer en ambos sentidos 7 9 Ej.: u-v Grafos dirigidos o Digrafos  Si los pares de nodos que forman arcos C Eson ordenados, de tal forma que el arco sepuede recorrer en un solo sentido. Ej.: (u->v) F D H V = {C, D, E, F, H} E= {(E,H), (H,E), (E,C), (C,D), (D,F)}
  13. 13. Grado de un Digrafo  En un grafo dirigido los arcos son E pares ordenados.  Implica que (u,v) ≠ (v,u) M  Las líneas se convierten en flechas  El grado de entrada de un nodo es B el número de arcos entrantes L  El grado de salida de un nodo es elP número de arcos salientes
  14. 14. Grafos ponderados Costo o Factor de Peso  Valor que se puede asociar con un arco  Depende de lo que el grafo represente  Si los arcos de un grafo tienen un costo: Grafo valorado o ponderado 20 20 a b a b 40 25 30 25 30 40 c 15 d c d 15 Grafo Dirigido con Grafo No Dirigido con Costo Costo
  15. 15. Conectividad Grafo conexo Grafo Conexo 5 Existe un camino entre cualquier par de 3 nodos 9 2 7 Grafo inconexo Grafo conexo
  16. 16. Grafos: Caminos
  17. 17. Trayectorias en Grafos Camino / recorrido 4 7  Un camino P desde u hasta v en el grafo G 10 es una secuencia finita de vértices que empieza en u y acaba en v. 11 6 9  Cada par de vértices consecutivos son adyacentes Camino entre 4 y 7 Longitud de camino T1 = {4, 6, 9, 7}  El número de arcos que lo forman Longitud: 3 Camino Simple  Todos los nodos que lo forman son distintos (no se repite nodos)
  18. 18. Trayectorias en Grafos Ciclo / Circuito (camino cerrado)  Es un camino que inicia y termina en el mismo nodo  No se recorre dos veces por la misma arista A B C D E F Camino A y A P = {A, E, B, F, A} ¿Cuál es la longitud mínima que puede tener un ciclo? Rpta: 3
  19. 19. Ciclos de Euler y Hamilton “Hacer el recorrido sin levantar el lápiz del papel…”
  20. 20. Puentes de Königsberg El problema consiste en recorrer toda la ciudad partiendo de cualquier lugar (A, B, C o D) caminando sobre cada puente exactamente una vez y regresar a la posición inicial. ¿Es posible? 7 Puentes 2 Islas: B y C 2 Orillas: A y D
  21. 21. Puentes de Königsberg Un modelo de grafo de puentes de Königsberg Nodos:  Porciones de tierra (orillas, islas) Arcos: 5  Puentes Representación mediante un grafoOrigen de los grafos: Euler ideó los grafos para ver si era posibleRecorrer toda la ciudad sin cruzar c/u de los puentes más de una sola vez.
  22. 22. Caminos y Ciclos de Euler Camino de Euler  Recorre TODOS los ARCOS sin repetirlos  Los vértices se pueden repetir Ciclo de Euler  Recorre TODOS los ARCOS sin repetirlos  Los vértices se pueden repetir  Inicia y termina en el mismo vértice Grafo Semieuleriano  Es aquel grafo conexo que admite un camino de Euler Grafo Euleriano  Es el aquel grafo conexo que admite un circuito de Euler
  23. 23. Teoremas de Euler Teorema 1 (Grafo Euleriano)  Si G es un grafo conexo y TODOS sus vértices tienen grado PAR, entonces existe un circuito de Euler en G. Teorema 2 (Grafo Semieuleriano)  Si G es un grafo conexo y tiene exactamente 2 vértices de grado IMPAR y el resto de grado PAR, entonces existe un recorrido de Euler en G. Cualquier recorrido de Euler debe comenzar en un vértice de grado impar y terminar en el otro.
  24. 24. Eulerizar un grafo Objetivo: Minimizar la longitud total de arcos utilizados Procedimiento:1. Localizar los vértices de grado impar2. Añadir un arco a c/u de los vértices para que tenga grado par ¿Cómo euleriza el problema de los puentes de königsberg?
  25. 25. Caminos y Ciclos de Hamilton Camino de Hamilton  Recorre TODOS los VÉRTICES sin repetirlos Ciclo de Hamilton  Inicia y termina en el mismo vértice  Recorre TODOS los VÉRTICES sin repetirlos (excepto el vértice del cual parte y al cual llega) Grafo Hamiltoniano  Es el aquel grafo que admite un circuito de Hamilton
  26. 26. Ciclo Hamiltoniano El juego de Hamilton se resuelve si se encuentra un ciclo que recorra todos los vértices pasando una sola vez por cada uno de ellos (excepto por el vértice inicial y final). Nodos= ciudades Arcos=caminos entre ciudadesViajero que recorre ciudades
  27. 27. Grafos: Relaciones en unDigrafo
  28. 28. Relaciones en un Digrafo A = (1, 2, 3, 4) R = { (1, 2), (2, 2), (2, 3), (3, 4), (4, 3) } Conjunto Relación R: muestra todas las relaciones de conectividad (trayectorias de longitud 1) entre los nodos del grafo. 1 2 1 2 3 4 1 0 1 0 0 0 1 1 0 𝑀𝑅 =2 3 0 0 0 1 3 4 4 0 0 1 0 Digrafo G Matriz de una Relación
  29. 29. Relaciones en un Digrafo Se define la relación Rn en A por:  xRny si y solo si existe una trayectoria de longitud “n” de x a y  xR ∞ y si y solo si existe una trayectoria de cualquier longitud de x ay R2 = { (1,2), (1,3), (2,2), (2,3), (2,4), (3,3), (4,4) } trayectorias de long. 2 R3 = { (1,2), (1,3), (2,2), (2,3), (2,4), (3,4), (4,3) } trayectorias de long. 3 R∞ = { (1,2), (1,3), (1,4), (2,2), (2,3), (2,4), (3,3), (3,4), (4,3), (4,4) } 1 R2 2 = {1, 2, 2} 1 2 1 R2 3 = {1, 2, 3} 2 R2 2 = {2, 2, 2} 2 R2 3 = {2, 2, 3} 2 R2 4 = {2, 3, 4} 3 4 3 R2 3 = {3, 4, 3} 4 R2 4 = {4, 3, 4} Digrafo G
  30. 30. Grafos: RepresentaciónMatricial
  31. 31. Representación de Grafos Para representar un grafo en una computadora se puede usar:  Matriz de Adyacencia [A]  V (vértices) x V(vértices)  Matriz de Incidencia [M]  V (vértices) x A (arcos )  Matriz de Arcos [B]  A (arcos ) x V (vértices)
  32. 32. Matriz de Adyacencia [A] (grafos no dirigidos)  Dado un Grafo G = (V, E) V3 V0 4 V4 7  Está representado por una matriz 10 de V (vértices) por V(vértices) V5  1= si hay un arco o existe 11 adyacencia entre los vértices V1 6 9 V2 V 0 V1 V 2 V 3 V 4 V 5 1, si hay arco (Vi,Vj) V0 0 1 0 0 0 0 aij V1 1 0 1 0 0 0 0, si no hay arco (Vi,Vj) V2 0 1 0 1 0 0 V3 0 0 1 0 0 0 V4 0 0 0 0 0 1Caso especial: cuando hay un lazo se considera aij=1 V5 0 0 0 0 1 0
  33. 33. Matriz de Adyacencia [A] (digrafos) Para Digrafos V1 V2 V4 V3 Caso especial: cuando hay un lazo se considera aij=1
  34. 34. Matriz de Adyacencia [A] (Propiedades) El Grado de un Vértice se obtiene sumando la fila o la columna correspondiente (solo para grafos no dirigidos).  Nota: Si la arista es un bucle entonces se suma 2 en vez de 1 Teorema: Si A es la matriz de adyacencia, el elemento ij de An es igual al número de caminos de longitud “n” del vértice i al vértice j
  35. 35. Matriz de Incidencia [M] (grafos nodirigidos) Dado un Grafo G = (V, E) Está representado por una matriz de V (vértices) por A (arcos) 1, [arco, vértice] está conectado aij 0 [arco, vértice] no está conectado 1: Si el arco i incide en el vértice j En un grafo sin lazos, la suma de una fila dá el grado del vértice identificado con esa fila.
  36. 36. Matriz de Incidencia [M] (digrafos) Para Digrafos  Ai,j =1, arco sale del nodo  Aij=-1, arco entra al nodo  Aij=2, si el nodo es origen y final del arco (lazo)  Aij=0, si el arco no inicide en el nodo
  37. 37. Matriz de Arcos [B] Dado un Grafo G = (V, E) Está representado por una matriz de Arcos (A) x Vértices (V) Esta formada por los arcos del grafo representado e1 e2 V1 V2 V4 e1 V1 V2 e V2 V4 [B] = 2 e3 e4 e3 V1 V3 e4 V2 V3 V3 La matriz es de: m (# de arcos) x 2 elementos
  38. 38. Matriz Distancia [D] Dado un Grafo G = (V, E) Está representado por una matriz de Vértices (V) x Vértices (V) Almacena las distancias de un vértice a otro 0, si i=j dij X, si no hay camino entre Vi y Vj # de arcos del camino más corto entre Vi y Vj V2 V4 V1 V2 V3 V4 V1 V1 0 1 2 x V 2 0 1 x [D] = 2 V3 1 2 0 x V4 3 1 2 0 V3
  39. 39. Grafos: AlgoritmosEstablecer el costo mínimo recorriendo todos los vérticesEncontrar la distancia mínima entre 2 vértices
  40. 40. Problema del vendedor viajero El problema del vendedor viajero consiste en encontrar la ruta más corta en la que el agente viajero pueda visitar en cada ciudad a sus clientes una vez comenzando y terminando en la misma cuidad. Ciudades = Nodos Caminos entre ciudades = Arcos Definición del Problema: Construir la ruta de costo mínimo que visita a cada cliente exactamente una vez
  41. 41. Algoritmos para establecer circuitos hamiltonianos considerando el costo1. Vecino más cercano: a. se visita el nodo más cercano y a continuación el siguiente nodo más cercano no visitado hasta regresar al origen. b. Nota: Este método tiene una ventaja en las primeras selecciones, sin embargo en los últimos pasos puede elegir aristas de longitud muy grande por tanto no necesariamente encuentra el costo min. L {C, S, L, M, C} = 300 + 541 + 774 + 425 = 2040 541 774 349 S 562 300 M C 425
  42. 42. Algoritmos para establecer circuitos hamiltonianos considerando el costo2. Árbol del costo mínimo a. Generar todos los recorridos hamiltonianos posibles b. Elegir el camino con el peso mínimo C M S L L S L L M M S L S M L S M 541 774 349 C C C C C C S {C, M, L, S, C} = 425 + 774 + 541 + 300 = 2040 562 300 {C, M, S, L, C} = 425 + 562 + 541 + 349 = 1877M C {C, S, M, L, C} = 300 + 562 + 774 + 349 = 1985 425 {C, S, L, M, C} = 300 + 541 + 774 + 425 = 2040 {C, L, S, M, C} = 349 + 541 + 562 + 425 = 1877 {C, L, M, S, C} = 349 + 774 + 562 + 300 = 1985
  43. 43. Algoritmos para establecer circuitos hamiltonianos considerando el costo3. Arcos clasificados (costo medio) a. Ordenar los arcos: 300, 349, 425, 541, 562, 774 b. Menor: 300, siguiente menor 349, etc. Construir el ciclo hamiltoniano: -No se pueden juntar 3 arcos en un vértice -No se puede cerrar ciclo sin incluir todos los vértices {C, L, M, S, C} = 300 + 349 + 774 + 562 = 1985 L 541 774 349 S 562 300 M C 425
  44. 44. Algoritmos para encontrar caminos más cortos Frecuentemente se desea conocer en un grafo cuál es el camino más corto entre un par de vértices En este caso  Sí importa cuántos caminos existen  Si ya conozco un camino pero encuentro uno mejor, sustuir Aplicar algoritmos de: 1. Ford 2. Dikjstra
  45. 45. Algoritmo de Ford1. Permite calcular la distancia mínima entre 2 puntos de 1 grafo.2. Cada nodo se representa por : n A3. Pasos: 1. Asignar el valor 0 al nodo origen 2. Mediante un proceso iterativo se le asignará a cada nodo Xi un valor n igual a la longitud del camino más corto que exista desde el nodo origen al nodo Xj.
  46. 46. Edsger Dijkstra (1930 – 2002)  Científico de la computación de origen holandés Creador del Algoritmo de caminos mínimos Recibió el Premio Turing
  47. 47. Algoritmo de Dikjstra: grafos conexos1. Dado un V0, Dijkstra busca un conjunto D con  Las menores distancias de V0 al resto de vértices2. Al inicio, solo conocemos  Las distancias de los adyacentes  D es inicializada a  Factor de peso para los adyacentes, Infinito ∞ para los no adyacentes3. D va ser mejorado sucesivamente  Escogiendo el vértice Vk no elegido antes  Que tenga la distancia mas corta V0, Vk  Probamos si pasando por Vk  Se puede obtener distancias mas cortas de las que tenemos  Para cada Vértice restante del grafo
  48. 48. Pasando por V2, Distancia de V1 Pasando por a V5 seria 8, no hay mejora V3, Distancia de V1 a V5 seria 7, CAMBIAREJEMPLO DE DIJKSTRA V1 V2 V3 V4 V5 V6 Escogidos Vértice D[0] D[1] D[2] D[3] D[4] D[5] De V1 AL RESTO Evaluado 5 V1 V1 0 3 4 ∞ 8 ∞ V2 V53 V1,V2 V2 0 3 4 ∞ 8 ∞ 3 8 V1,V2,V3 V3 0 3 4 ∞ 7 ∞ V6V1 7 V1,V2,V3,V5 V5 0 3 4 14 7 10 3 V1,V2,V3,V5,V6 V6 0 3 4 12 7 10 4 V3 V4 21. D[] se inicializa con F.P. de adyacentes al origen2. Escoger vértice Vk que no haya sidoescogido, con la menor distancia del Vevaluado a Repetir hasta k se hayanVk visitado todos los vértices3. Revisar si alguna distancia puede ser mejoradapasando por Vevaluado desde V1
  49. 49. Ejercicios Guiados y Propuestos

×