Grafos en sage

42
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

Transcript of Grafos en sage

Page 1: Grafos en sage

1

Algorithmic Graph TheoryDavid Joyner, Minh Van Nguyen, Nathann Cohen

Version 0.3

RESUMEN DEL CAPÍTULO 1 Y 2 PREPARADO POR:KENNETH ROBLES RAMOS

OSVALDO MEDINA IRIZARRYHÉCTOR L. RODRÍGUEZ TORO

PARA LA CLASE: MATH-5500 MATEMÁTICAS DISCRETAS AVANZADAS

Page 2: Grafos en sage

• 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?

Page 3: Grafos en sage

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.

Page 4: Grafos en sage

¿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.

Page 5: Grafos en sage

• 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).

Page 6: Grafos en sage

• 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.

Page 7: Grafos en sage

• G=(V,E)• V={v1, v2, v3, v4, v5,… vn}• E={e1, e2, e3, e4, e5, e6,… en}

Page 8: Grafos en sage

TIPOS DE GRAFOS

• Grafos simple - Un grafo es simple si sólo1 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.

Page 9: Grafos en sage

GRAFO DIRIGIDO

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

Page 10: Grafos en sage

GRAFOS NO DIRIGIDO

• Grafos no dirigido- e = (v,w) o (w,v)

Page 11: Grafos en sage

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.

Page 12: Grafos en sage

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.

Page 13: Grafos en sage

GRAFOS COMPLETO

Page 14: Grafos en sage

GRAFOS DE SIMILITUD

• Son aquellos grafos de los cuales se derivan otros grafos

Page 15: Grafos en sage

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

Page 16: Grafos en sage

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þ…þ…

Page 17: Grafos en sage

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

Page 18: Grafos en sage

MATRIZ DE INCIDENCIA• Se determina la incidencia de las aristas con los

vértices

Page 19: Grafos en sage

Isomorfismo de Grafos

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

Page 20: Grafos en sage

Continuación

En otras palabras, un grafo G es isomorfo aun grafo H si puede ser etiquetado de maneratal que si u y v son adyacentes en G,entonces su contraparte en V(H) son tambiénadyacentes en H. Para verificar si dos grafosson isomorfos hay que verificar si sonestructuralmente equivalentes.

Page 21: Grafos en sage

Ejemplo:

Page 22: Grafos en sage

Propiedad de Invariante

Un concepto importante en la teoría degrafos es la propiedad de invariante. Unapropiedad P es invariante siempre que G y Hsean grafos isomorfos.

Si G tiene una propiedad P, entonces Htambién tiene la propiedad P.

Page 23: Grafos en sage

Continuación

Así que si G y H son isomorfos tienen elmismo número de vértices y aristas, por loque los vértices y las aristas son un ejemplode la propiedad invariante.

Page 24: Grafos en sage

Ejemplo:

¿Son isomorfos los siguientes grafos?

No son isomorfos porque G tiene 7 aristasy H tiene 6 aristas

G H

Page 25: Grafos en sage

Matrices de adyacencia

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

Esto implica que la clase de permutación dela matriz de adyacencia es un ejemplo deinvariante.

Page 26: Grafos en sage

Ejemplo de la matriz de adyacencia

Page 27: Grafos en sage

Invariantes Revisados

La siguiente lista contiene algunos elementospara comprobar que dos grafos no sonisomorfos.

• Ambos grafos deben tener el mismonúmero de aristas.• Ambos grafos deben tener el mismonúmero de vértices.• El grado de los vértices.

Page 28: Grafos en sage

Unión e intersección de grafos

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

1, 2 1 2( , )G H V V E E=U U U

Unión de grafos

Page 29: Grafos en sage

La intersección de dos grafos está definidade la siguiente manera:Para dos grafos G = (V1, E1) yH = (V2, E2),

1, 2 1 2( , )G H V V E E=I I I

Intersección de grafos

Page 30: Grafos en sage

Ejemplo:

Page 31: Grafos en sage

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

( , )G H V E∆ =

Diferencia simétrica

donde y1 2V V V= ∆

1 2 1 2 1 2\ { \ }E E E uv u V V o v V V= ∆ ∈ ∈I I

Page 32: Grafos en sage

Cuando entonces es simplemente el gráfico vacío.

G H∆Continuación

1 2V V=

Ejemplos

Page 33: Grafos en sage

El subgrafo de supresión de vértices de G sedenota como G - {v}. Éste se obtienesuprimiendo de G un vértice v y toda lasaristas que incidan en el mismo.

Supresión de vértices

Page 34: Grafos en sage

Ejemplo:

Page 35: Grafos en sage

Si G = (V, E) con al menos una arista,entonces la supresión de arista de subgrafoobtenida de G se denota G – {e}. Donde seelimina la arista e ,pero no los vérticesincidentes en ella.

Supresión de aristas

Page 36: Grafos en sage

Ejemplo:

Page 37: Grafos en sage

37

Capítulo 2 – Algorítmos para Grafos

• Los algorítmos de grafos se pueden usar en aplicaciones para encontrar la ruta máscorta 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áscorta son de los más importantes en la teoría de algorítmos de grafos.

Page 38: Grafos en sage

38

Sección 2.1 – Búsqueda de Grafos“Breadth-First search”

• “Breadth-First search” (BFS) es una estrategiapara recorrer un grafo a través de los nodos.

• Supongamos que queremos contar elnúmero de vertices (o edges) quesatisfacen una propiedad P. (por ejemplo:contar todo vértice cuya distancia hacia unvértice ‘a’ sea de dos o más edges.)

• El siguiente algoritmo nos muestra un ejemplopara encontrar la distancia desde un vértice “v0’’ acualquier otro vértice.

Page 39: Grafos en sage

39

Sección 2.1 – Búsqueda de Grafos“Breadth-First search”

Page 40: Grafos en sage

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:

breakD.sort()print Q, Treturn D

Page 41: Grafos en sage

41

Page 42: Grafos en sage

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

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