El documento presenta un resumen de los capítulos 1 y 2 de un libro sobre teoría de grafos algorítmica. Introduce conceptos básicos como qué es un grafo, tipos de grafos, y operaciones como unión e intersección. También explica el algoritmo de búsqueda en anchura para encontrar la distancia entre vértices en un grafo conectado.
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.
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.
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.
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.
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 }
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
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
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.