SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
Algorithmic Graph Theory
David Joyner, Minh Van Nguyen, Nathann Cohen
                 Version 0.3




   RESUMEN DEL CAPÍTULO 1 Y 2 PREPARADO POR:
           KENNETH ROBLES RAMOS
         OSVALDO MEDINA IRIZARRY
         HÉCTOR L. RODRÍGUEZ TORO
           PARA LA CLASE: MATH-5500
      MATEMÁTICAS DISCRETAS AVANZADAS          1
Dado el mapa de Königsberg, con el río Pregolya
dividiendo el plano en cuatro regiones distintas,
que están unidas a través de los siete puentes, ¿es
posible dar un paseo comenzando desde
cualquiera de estas regiones, de modo de
recorrerlas todas pasando sólo una vez por cada
puente, y regresando al mismo punto de origen?
INTRODUCCIÓN A LA TEORÍA DE GRAFOS

 El trabajo de Leonhard Euler, en 1736, sobre el
 problema de los puentes de Königsberg es
 considerado el primer resultado de la teoría de
 grafos. También se considera uno de los
 primeros resultados topológicos en geometría
 (que no depende de ninguna medida). Este
 ejemplo ilustra la profunda relación entre la
 teoría de grafos y la topología.
¿QUÉ ES UN GRAFO?

 Un grafo G es un conjunto de objetos o par
 ordenado G = (V,E), donde: V es un conjunto de
 vértices o nodos, y E es un conjunto de arcos o
 aristas, que relacionan estos nodos.
Desde un punto de vista práctico, los
grafos permiten estudiar las
interrelaciones entre unidades que
interactúan unas con otras. Por ejemplo,
una res de computadoras puede
representarse y estudiarse mediante un
grafo, en el cual los vértices representan
terminales y las aristas representan
conexiones (las cuales, a su vez, pueden
ser cable o conexiones inalámbricas).
Prácticamente cualquier problema
puede representarse mediante un
grafo, y su estudio trasciende a las
diversas áreas de las ciencias
exactas y las ciencias sociales.
G=(V,E)
V={v1, v2, v3, v4, v5, vn}
E={e1, e2, e3, e4, e5, e6, en}
TIPOS DE GRAFOS

 Grafos simple - Un
 grafo es simple si sólo
 1 arista une dos
 vértices cualesquiera.
 Esto es equivalente a
 decir que una arista
 cualquiera es la única
 que une dos vértices
 específicos.
GRAFO DIRIGIDO

 En un grafo dirigido
 las aristas están
 formadas por
 flechas que indican
 la dirección de la
 arista.
GRAFOS NO DIRIGIDO

  Grafos no dirigido- e = (v,w) o (w,v)
GRAFOS NO SIMPLE

  Este es un grafo no dirigido que tiene lazos y
  aristas paralelas. Un grafo que no es simple
  se denomina Multigráfica o Grafo múltiple.
GRAFO PONDERADO

 Se presentan los pesos de
 cada arista y se puede
 determinar la longitud de una
 ruta, que es la suma de todos
 los pesos de las aristas.
GRAFOS COMPLETO
GRAFOS DE SIMILITUD

   Son aquellos grafos de los cuales se
   derivan otros grafos
GRADO DE UN VÉRTICE

 Comprende el número de
 aristas que inciden en el
 vértice.

þa = 2
þb = 3
þc = 4
þd = 3
þe = 2
þf = 2 lazo
þg = 0
CAMINO O TRAYECTORIA
  Es el recorrido desde un vértice inicial hasta
  un vértice final.

         þa,b,c,d,e,f
         þa,c,b,d,e,f
         þa,b,e,c,d,f
         þa,c,d,b,e,f
         þ
         þ
MATRIZ DE ADYACENCIA
  Se colocan en las filas y en las columnas los
  vértices del grafo para determinar si los vértices
  son adyacentes
MATRIZ DE INCIDENCIA
  Se determina la incidencia de las aristas con los
  vértices
Isomorfismo de Grafos

Dos grafos G y H son isomorfos si existe una
función f uno a uno, sobre los vértices de G a
los vértices de H y una función g uno a uno
sobre las aristas de G a las aristas de H, de
manera que si una arista e incide en v y w en
G, si y sólo si la arista g(e) es incidente en
f(v) y f(w) en H.
Continuación

En otras palabras, un grafo G es isomorfo a
un grafo H si puede ser etiquetado de manera
tal que si u y v son adyacentes en G,
entonces su contraparte en V(H) son también
adyacentes en H. Para verificar si dos grafos
son isomorfos hay que verificar si son
estructuralmente equivalentes.
Ejemplo:
Propiedad de Invariante

Un concepto importante en la teoría de
grafos es la propiedad de invariante. Una
propiedad P es invariante siempre que G y H
sean grafos isomorfos.

Si G tiene una propiedad P, entonces H
también tiene la propiedad P.
Continuación

Así que si G y H son isomorfos tienen el
mismo número de vértices y aristas, por lo
que los vértices y las aristas son un ejemplo
de la propiedad invariante.
Ejemplo:

¿Son isomorfos los siguientes grafos?




      G                         H


No son isomorfos porque G tiene 7 aristas
y H tiene 6 aristas
Matrices de adyacencia

Los grafos G y H son isomorfos si y sólo si
para algún orden de su vértices sus matrices
de adyacencia son iguales.

Esto implica que la clase de permutación de
la matriz de adyacencia es un ejemplo de
invariante.
Ejemplo de la matriz de adyacencia
Invariantes Revisados

La siguiente lista contiene algunos elementos
para comprobar que dos grafos no son
isomorfos.
 Ambos grafos deben tener el mismo
número de aristas.
 Ambos grafos deben tener el mismo
número de vértices.
 El grado de los vértices.
Unión e intersección de grafos


Unión de grafos
Para dos grafos G = (V1, E1) y H = (V2, E2),
su unión está definida de la siguiente
manera:

  G U H = (V1, U V2 , E1 U E2 )
Intersección de grafos
La intersección de dos grafos está definida
de la siguiente manera:
Para dos grafos G = (V1, E1) y
H = (V2, E2),

  G I H = (V1, I V2 , E1 I E2 )
Ejemplo:
Diferencia simétrica


En un grafo la diferencia simétrica es
definida de la siguiente forma:
Si G = (V1, E1) y H = (V2, E2), entonces

         GDH = (V , E )
 donde V = V1D V2 y

  E = E1DE 2  {uv  u Î V1 I V2 o v Î V1 I V2 }
Continuación
Cuando V1 = V2 entonces G DH es
simplemente el gráfico vacío.
Ejemplos
Supresión de vértices

El subgrafo de supresión de vértices de G se
denota como G - {v}. Éste se obtiene
suprimiendo de G un vértice v y toda las
aristas que incidan en el mismo.
Ejemplo:
Supresión de aristas

Si G = (V, E) con al menos una arista,
entonces la supresión de arista de subgrafo
obtenida de G se denota G {e}. Donde se
elimina la arista e ,pero no los vértices
incidentes en ella.
Ejemplo:
Capítulo 2 Algorítmos para Grafos
 Los algorítmos de grafos se pueden usar en
 aplicaciones para encontrar la ruta más
 corta entre dos ciudades o la más barata,
 donde el vértice representa la ciudad y la
 línea la distancia más corta o el costo de
 viajar de una ciudad a otra.
 Los algorítmos para encontrar la ruta más
 corta son de los más importantes en la
 teoría de algorítmos de grafos.

                                              37
Sección 2.1 Búsqueda de Grafos
          Breadth-First search
 Breadth-First search (BFS) es una estrategia
para recorrer un grafo a través de los nodos.
Supongamos que queremos contar el
número de vertices (o edges) que
satisfacen una propiedad P. (por ejemplo:
contar todo vértice cuya distancia hacia un
vértice a sea de dos o más edges.)
El siguiente algoritmo nos muestra un ejemplo
para encontrar la distancia desde un vértice v0 a
cualquier otro vértice.

                                                    38
Sección 2.1 Búsqueda de Grafos
     Breadth-First search




                                 39
#============================================================================
# Breadth-first search algorithm to find the distance from a fixed vertex v0 to any other vertex. =
# INPUT:                                                                                          =
#             G - a connected graph                                                               =
#             v0 - a vertex                                                                       =
# OUTPUT:                                                                                         =
#             D - a list of distances to every other vertex                                       =
#============================================================================
def graph_distance(G, v0):
   V = G.vertices()
   Q = [v0]
   T=[]
   D=[]
   while Q<>[ ] and T< >V:
      for v in Q:
          if not(v in T):
              D.append([v,G.distance(v0,v)])
          if v in Q:
              Q.remove(v)
          T.append(v)
          T = list(Set(T))
          Q = Q+[x for x in G.neighbors(v) if not(x in T+Q)]
          if T == V:
              break
  D.sort()
  print Q, T
  return D


                                                                                                      40
41
Referencia:
Joiner, D., Nguyen, M., & Cohen, N. (2010). Algorithmic graph theory

Johnsonbaugh, R., (2005). Matemáticas discretas. (6ta ed.). México:
Pearson Prentice Hall.

Más contenido relacionado

La actualidad más candente (20)

GRAFOS
GRAFOSGRAFOS
GRAFOS
 
Teoria de grafos. introducción
Teoria de grafos. introducciónTeoria de grafos. introducción
Teoria de grafos. introducción
 
I1M2010-T22: Algoritmos sobre grafos en Haskell
I1M2010-T22: Algoritmos sobre grafos en HaskellI1M2010-T22: Algoritmos sobre grafos en Haskell
I1M2010-T22: Algoritmos sobre grafos en Haskell
 
Presentacion del Proyecto de Construccion de una Wiki - Grupo 3
Presentacion del Proyecto de Construccion de una Wiki - Grupo 3Presentacion del Proyecto de Construccion de una Wiki - Grupo 3
Presentacion del Proyecto de Construccion de una Wiki - Grupo 3
 
Teoría de grafos
Teoría de grafosTeoría de grafos
Teoría de grafos
 
Diapo teoria de grafos
Diapo teoria de grafosDiapo teoria de grafos
Diapo teoria de grafos
 
Teoria de Grafos. Conceptos básicos.
Teoria de Grafos. Conceptos básicos.Teoria de Grafos. Conceptos básicos.
Teoria de Grafos. Conceptos básicos.
 
Catedra grafos
Catedra grafosCatedra grafos
Catedra grafos
 
Tema grafos
Tema grafosTema grafos
Tema grafos
 
Unidad 6 grafos
Unidad 6  grafosUnidad 6  grafos
Unidad 6 grafos
 
19 Grafos 1
19 Grafos 119 Grafos 1
19 Grafos 1
 
Grafos - Figuras Planas
Grafos - Figuras PlanasGrafos - Figuras Planas
Grafos - Figuras Planas
 
Grafos
GrafosGrafos
Grafos
 
Grafos
GrafosGrafos
Grafos
 
Teoria de grafos
Teoria de grafosTeoria de grafos
Teoria de grafos
 
Grafos
GrafosGrafos
Grafos
 
Grafos
GrafosGrafos
Grafos
 
Grafos
GrafosGrafos
Grafos
 
Tema 8 Álgebra Lineal: Teoría de Grafos
Tema 8 Álgebra Lineal: Teoría de GrafosTema 8 Álgebra Lineal: Teoría de Grafos
Tema 8 Álgebra Lineal: Teoría de Grafos
 
Grafo bipartito
Grafo bipartitoGrafo bipartito
Grafo bipartito
 

Similar a Teoría de Grafos en sage (20)

Grafos
GrafosGrafos
Grafos
 
Presentación1 grafos
Presentación1 grafosPresentación1 grafos
Presentación1 grafos
 
Presentación1 grafos
Presentación1 grafosPresentación1 grafos
Presentación1 grafos
 
Grafos
GrafosGrafos
Grafos
 
Grafos
GrafosGrafos
Grafos
 
Material de grafos.pdf
Material de grafos.pdfMaterial de grafos.pdf
Material de grafos.pdf
 
Grafos (angel)[1]
Grafos (angel)[1]Grafos (angel)[1]
Grafos (angel)[1]
 
Teoría de Grafos.
Teoría de Grafos.Teoría de Grafos.
Teoría de Grafos.
 
Grafos
GrafosGrafos
Grafos
 
Grafos
GrafosGrafos
Grafos
 
Grafos.ppt
 Grafos.ppt Grafos.ppt
Grafos.ppt
 
19. Grafos.ppt
19. Grafos.ppt19. Grafos.ppt
19. Grafos.ppt
 
Grafos
Grafos Grafos
Grafos
 
Grafos
Grafos Grafos
Grafos
 
4.Grafos.pdf
4.Grafos.pdf4.Grafos.pdf
4.Grafos.pdf
 
Catedra grafos
Catedra grafosCatedra grafos
Catedra grafos
 
Catedra grafos
Catedra grafosCatedra grafos
Catedra grafos
 
TRABAJO DE GRAFOS
TRABAJO DE GRAFOSTRABAJO DE GRAFOS
TRABAJO DE GRAFOS
 
Grafos
GrafosGrafos
Grafos
 
Grafoscuestionario
GrafoscuestionarioGrafoscuestionario
Grafoscuestionario
 

Teoría de Grafos en sage

  • 1. Algorithmic Graph Theory David Joyner, Minh Van Nguyen, Nathann Cohen Version 0.3 RESUMEN DEL CAPÍTULO 1 Y 2 PREPARADO POR: KENNETH ROBLES RAMOS OSVALDO MEDINA IRIZARRY HÉCTOR L. RODRÍGUEZ TORO PARA LA CLASE: MATH-5500 MATEMÁTICAS DISCRETAS AVANZADAS 1
  • 2. Dado el mapa de Königsberg, con el río Pregolya dividiendo el plano en cuatro regiones distintas, que están unidas a través de los siete puentes, ¿es posible dar un paseo comenzando desde cualquiera de estas regiones, de modo de recorrerlas todas pasando sólo una vez por cada puente, y regresando al mismo punto de origen?
  • 3. INTRODUCCIÓN A LA TEORÍA DE GRAFOS El trabajo de Leonhard Euler, en 1736, sobre el problema de los puentes de Königsberg es considerado el primer resultado de la teoría de grafos. También se considera uno de los primeros resultados topológicos en geometría (que no depende de ninguna medida). Este ejemplo ilustra la profunda relación entre la teoría de grafos y la topología.
  • 4. ¿QUÉ ES UN GRAFO? Un grafo G es un conjunto de objetos o par ordenado G = (V,E), donde: V es un conjunto de vértices o nodos, y E es un conjunto de arcos o aristas, que relacionan estos nodos.
  • 5. Desde un punto de vista práctico, los grafos permiten estudiar las interrelaciones entre unidades que interactúan unas con otras. Por ejemplo, una res de computadoras puede representarse y estudiarse mediante un grafo, en el cual los vértices representan terminales y las aristas representan conexiones (las cuales, a su vez, pueden ser cable o conexiones inalámbricas).
  • 6. Prácticamente cualquier problema puede representarse mediante un grafo, y su estudio trasciende a las diversas áreas de las ciencias exactas y las ciencias sociales.
  • 7. G=(V,E) V={v1, v2, v3, v4, v5, vn} E={e1, e2, e3, e4, e5, e6, en}
  • 8. TIPOS DE GRAFOS Grafos simple - Un grafo es simple si sólo 1 arista une dos vértices cualesquiera. Esto es equivalente a decir que una arista cualquiera es la única que une dos vértices específicos.
  • 9. GRAFO DIRIGIDO En un grafo dirigido las aristas están formadas por flechas que indican la dirección de la arista.
  • 10. GRAFOS NO DIRIGIDO Grafos no dirigido- e = (v,w) o (w,v)
  • 11. GRAFOS NO SIMPLE Este es un grafo no dirigido que tiene lazos y aristas paralelas. Un grafo que no es simple se denomina Multigráfica o Grafo múltiple.
  • 12. GRAFO PONDERADO Se presentan los pesos de cada arista y se puede determinar la longitud de una ruta, que es la suma de todos los pesos de las aristas.
  • 14. GRAFOS DE SIMILITUD Son aquellos grafos de los cuales se derivan otros grafos
  • 15. GRADO DE UN VÉRTICE Comprende el número de aristas que inciden en el vértice. þa = 2 þb = 3 þc = 4 þd = 3 þe = 2 þf = 2 lazo þg = 0
  • 16. CAMINO O TRAYECTORIA Es el recorrido desde un vértice inicial hasta un vértice final. þa,b,c,d,e,f þa,c,b,d,e,f þa,b,e,c,d,f þa,c,d,b,e,f þ þ
  • 17. MATRIZ DE ADYACENCIA Se colocan en las filas y en las columnas los vértices del grafo para determinar si los vértices son adyacentes
  • 18. MATRIZ DE INCIDENCIA Se determina la incidencia de las aristas con los vértices
  • 19. Isomorfismo de Grafos Dos grafos G y H son isomorfos si existe una función f uno a uno, sobre los vértices de G a los vértices de H y una función g uno a uno sobre las aristas de G a las aristas de H, de manera que si una arista e incide en v y w en G, si y sólo si la arista g(e) es incidente en f(v) y f(w) en H.
  • 20. Continuación En otras palabras, un grafo G es isomorfo a un grafo H si puede ser etiquetado de manera tal que si u y v son adyacentes en G, entonces su contraparte en V(H) son también adyacentes en H. Para verificar si dos grafos son isomorfos hay que verificar si son estructuralmente equivalentes.
  • 22. Propiedad de Invariante Un concepto importante en la teoría de grafos es la propiedad de invariante. Una propiedad P es invariante siempre que G y H sean grafos isomorfos. Si G tiene una propiedad P, entonces H también tiene la propiedad P.
  • 23. Continuación Así que si G y H son isomorfos tienen el mismo número de vértices y aristas, por lo que los vértices y las aristas son un ejemplo de la propiedad invariante.
  • 24. Ejemplo: ¿Son isomorfos los siguientes grafos? G H No son isomorfos porque G tiene 7 aristas y H tiene 6 aristas
  • 25. Matrices de adyacencia Los grafos G y H son isomorfos si y sólo si para algún orden de su vértices sus matrices de adyacencia son iguales. Esto implica que la clase de permutación de la matriz de adyacencia es un ejemplo de invariante.
  • 26. Ejemplo de la matriz de adyacencia
  • 27. Invariantes Revisados La siguiente lista contiene algunos elementos para comprobar que dos grafos no son isomorfos. Ambos grafos deben tener el mismo número de aristas. Ambos grafos deben tener el mismo número de vértices. El grado de los vértices.
  • 28. Unión e intersección de grafos Unión de grafos Para dos grafos G = (V1, E1) y H = (V2, E2), su unión está definida de la siguiente manera: G U H = (V1, U V2 , E1 U E2 )
  • 29. Intersección de grafos La intersección de dos grafos está definida de la siguiente manera: Para dos grafos G = (V1, E1) y H = (V2, E2), G I H = (V1, I V2 , E1 I E2 )
  • 31. Diferencia simétrica En un grafo la diferencia simétrica es definida de la siguiente forma: Si G = (V1, E1) y H = (V2, E2), entonces GDH = (V , E ) donde V = V1D V2 y E = E1DE 2 {uv u Î V1 I V2 o v Î V1 I V2 }
  • 32. Continuación Cuando V1 = V2 entonces G DH es simplemente el gráfico vacío. Ejemplos
  • 33. Supresión de vértices El subgrafo de supresión de vértices de G se denota como G - {v}. Éste se obtiene suprimiendo de G un vértice v y toda las aristas que incidan en el mismo.
  • 35. Supresión de aristas Si G = (V, E) con al menos una arista, entonces la supresión de arista de subgrafo obtenida de G se denota G {e}. Donde se elimina la arista e ,pero no los vértices incidentes en ella.
  • 37. Capítulo 2 Algorítmos para Grafos Los algorítmos de grafos se pueden usar en aplicaciones para encontrar la ruta más corta entre dos ciudades o la más barata, donde el vértice representa la ciudad y la línea la distancia más corta o el costo de viajar de una ciudad a otra. Los algorítmos para encontrar la ruta más corta son de los más importantes en la teoría de algorítmos de grafos. 37
  • 38. Sección 2.1 Búsqueda de Grafos Breadth-First search Breadth-First search (BFS) es una estrategia para recorrer un grafo a través de los nodos. Supongamos que queremos contar el número de vertices (o edges) que satisfacen una propiedad P. (por ejemplo: contar todo vértice cuya distancia hacia un vértice a sea de dos o más edges.) El siguiente algoritmo nos muestra un ejemplo para encontrar la distancia desde un vértice v0 a cualquier otro vértice. 38
  • 39. Sección 2.1 Búsqueda de Grafos Breadth-First search 39
  • 40. #============================================================================ # Breadth-first search algorithm to find the distance from a fixed vertex v0 to any other vertex. = # INPUT: = # G - a connected graph = # v0 - a vertex = # OUTPUT: = # D - a list of distances to every other vertex = #============================================================================ def graph_distance(G, v0): V = G.vertices() Q = [v0] T=[] D=[] while Q<>[ ] and T< >V: for v in Q: if not(v in T): D.append([v,G.distance(v0,v)]) if v in Q: Q.remove(v) T.append(v) T = list(Set(T)) Q = Q+[x for x in G.neighbors(v) if not(x in T+Q)] if T == V: break D.sort() print Q, T return D 40
  • 41. 41
  • 42. Referencia: Joiner, D., Nguyen, M., & Cohen, N. (2010). Algorithmic graph theory Johnsonbaugh, R., (2005). Matemáticas discretas. (6ta ed.). México: Pearson Prentice Hall.