1
Coordinación de Ciencias Computacionales - INAOE
Matemáticas DiscretasGrafos
Cursos Propedéuticos 2010
Ciencias Computacionales
INAOE
Dr. Luis Villaseñor Pineda
http://ccc.inaoep.mx/~villasen
2
Grafos
Definiciones básicas
Caminos y ciclos
Grafos eulerianos y hamiltonianos
Isomorfismo
Árboles
3
Generalidades
Los grafos son estructuras discretas compuestas por vértices y aristas que conectan pares de esos puntos
Son una abstracción útil para modelar situaciones tales como:
Redes de computadoras
Estructuras de datos
Redes eléctricas y telefónicas
Circuitos eléctricos
Sistemas carreteros
Sistemas de toma de decisiones
4
¿Qué son?
Un grafo es una representación gráfica de objetos y
relaciones binarias entre éstos.
Un grafo se representa gráficamente por medio de puntos o
pequeños círculos, que designan vértices, y líneas que los
unen, que representan las aristas
1
54
3
2
2
5
Grafos dirigidos
Un grafo dirigido/dígrafo G = (V, E) consiste de un
conjunto de vértices V (o nodos) y un conjunto de
aristas (o arcos) dirigidas E VV
Note que las aristas (a, b) tiene una dirección; un vértice
fuente/origen a y un vértice terminal b
V={1,2,3,4,5}
E = {(1,3), (2,3), (3,4),
(4,3), (5,3), (5,4), (5,5)}1
54
3
2
6
Grafos simples
Un grafo no dirigido G = (V,E) sin auto lazos se
denomina grafo simple
E se determina por una relación simétrica, antireflexiva, tal
que {a,b} E si y solo si (a,b)R
V={1,2,3,4,5}
E = {{1,2}, {1,3}, {2,3},
{3,4}, {3,5}, {4,5}, {2,5}} 1
54
3
2
7
Definiciones
Si e={u, v} es una arista entonces se dice que los
vértices u y v son los extremos de e
Un vértice y una arista son incidentes si el vértice es
uno de los extremos de la arista
Dos vértices u y v son adyacentes si {u, v} es una
arista
8
Representación de grafos simples
1 2
3 4
{3,4}
{2,4}{1,3} {2,3}
{1,4}
{1,2}
3
9
Ejemplo: vértices
¿Cuáles vértices son adyacentes a 1?
1 2
3 4
e3
e1
e2e4
10
Ejemplo: vértices
¿Cuáles vértices son adyacentes a 1? 1 es adyacente a 2 y 3
2 es adyacente a 1 y 3
3 es adyacente a 1 y 2
4 no es adyacente a vértice alguno
1 2
3 4
e3
e1
e2e4
11
Ejemplo: vértices
¿Cuáles aristas son incidentes a 1? e1, e2, e4 son incidentes a 2
2 es incidente con e1, e2, e4
3 es incidente con e2, e3
4 no es incidente con ninguna arista
1 2
3 4
e3
e1
e2e4
12
Definiciones
Dos aristas asociadas al mismo par de vértices son
aristas paralelas
Una arista incidente en un sólo vértice es un ciclo
Un vértice que no es incidente en ninguna arista es un
vértice aislado
4
13
Matriz de adyacencia
Forma de representar grafos y relaciones
1
2
3
4
1000
1100
1110
1111
14
Ejemplo
¿Cuál es la matriz de adyacencia del grafo de la
figura?
1 2
3 4
1000
0011
0122
0120
Tipos de grafos
Un grafo no dirigido sin auto lazos (un ciclo sobre un
mismo vértice) se denomina grafo simple
Un grafo con aristas paralelas (dos aristas pueden
conectar un mismo par de vértices) es llamado
multigrafo
Un grafo completo es un grafo con arcos entre cada par de vértices
Un grafo pesado es aquel que tiene pesos asociados a nodos y/o arcos
15 16
Grafos completos
Se llama grafo completo (o clique) en n vértices a un
grafo con n vértices v1, v2, …, vn donde para todo a y
b que pertenecen a V existe una arista {a, b}. Este
grafo se denota Kn, y el número de aristas de Kn es
n(n-1)/2
Cada par de vértices distintos comparte un arista
5
17
Grados
El grado de un vértice v de un grafo es el número
g(v) de aristas incidentes con él. Si g(v) = 0 se dice
que v es un vértice aislado
En grafos dirigidos existen grado de entrada y grado de
salida
La sucesión de grados de un grafo se obtiene
ordenando en forma creciente los grados de todos los
vértices
18
Ejemplo: grado de un vértice
¿Cuál es grado del vértice 2?
g(2)=1+1+1+2+2=7
1 2
3
e1
e3
e2e4
e5
e6
19
Ejemplo: grado de un vértice
¿Cuáles son los grado de entrada y salida de los
vértices del grafo mostrado en la figura?
g-(1) = 0
g-(2) = 3
g-(3) = 4
g+(1) = 2
g+(2) = 3
g+(3) = 2 1
2
3
20
Teorema de Euler
En todo grafo G=(V, E) se cumple
Las aristas se pueden contar considerando cuantas son
incidentes en cada vértice y sumando todos los números
obtenidos. Pero asi cada arista resulta contada dos veces,
una para cada uno de sus extremos
Vv
Evg
2)(
6
21
Ejemplos
Si un grafo tiene una sucesión de grados 0, 1, 1, 2,
3, 4, ¿Cuántas aristas tiene?
(0+1+1+2+3+4)/2=5
¿Existe algún grafo cuya sucesión de grados sea 1,
1, 2, 3, 4?
No, dado que 1+1+2+3+4=11 es impar
22
Subgrafos
Si G = (V, E) y H = (W, F) son grafos tales que
W V y F E, entonces se dice que H es un
subgrafo de G y que G es un supergrafo de H.
Cada arista de F es incidente con vértices en W
23
Ejemplo
b b b
a c e
d d
ca e
d
24
Caminos y ciclos
Un camino de longitud n es un grafo G = (V, E) con V = {v0, v1, v2, . . . , vn} y E = {v0v1, v1v2, . . . , vn−1vn}. Un camino se representa dando la sucesión v0v1 . . . vn de sus vértices, entendiendo que las aristas son v0v1, v1v2,. . . , vn−1vn. A v0 y vn se les llama extremos del camino.
Camino: Secuencia ordenada de vértices y arcos.
Camino cerrado: Cuyo inicio es igual que el final
Camino simple: Sin aristas repetidas.
Camino elemental: Sin vértices repetidos.
7
25
Caminos y ciclos
Un ciclo de longitud n es un grafo G = (V,E) de orden n≥3, con vértices v0, v1, . . . , vn−1 y aristas v0v1, v1v2,. . . , vn−2vn−1 y vn−1v0.
Ciclo: Camino elemental cerrado.
Circuito: Camino simple cerrado.
26
Ejemplo
Camino de a-b
{a, b},{b, d}, {d, c}, {c, e},
{e, d}, {d, b}
Camino de b a f
b – c – d – e – c – f
Camino de f a a
{f, c}, {c, e}, {e, d}, {d, a}
Camino de c a c
c – e – d – c
a
b
d
c
fe
27
Distancia y diámetro
La distancia d(u, v) entre dos vértices u y v de un
grafo es la longitud del camino más corto de u a v. Si
no existe ningún camino de u a v entonces d(u, v) =
∞.
El diámetro de G es la máxima distancia entre dos
vértices de G y se denota diam(G).
28
Grafo conexo
Un grafo G = (V, E) es conexo si para cualquier par
de vértices u, y v existe un camino en G que los une,
es decir un camino con extremos u y v.
Equivalentemente, G es conexo si diam(G) < ∞
8
29
Ejemplo
Sea G=(V, E) un grafo no dirigido en V={a, b, c, d, e,
f, g}
El grafo no es conexo
Los dos sub-grafos son conexos
a
b
df
c
e g
30
Problemas de Caminos y Circuitos
Encontrar si existe un camino entre un par de vértices
Encontrar el camino más corto entre un par de vértices
Encontrar camino que pase por cada arista una sola vez (Euler)
Encontrar circuito que pase por cada vértice una sola vez (Hamilton)
31
Camino simple de Euler
Un camino simple de Euler es un camino que pasa
por todas las aristas exactamente una sola vez.
Los puentes de Königsberg
Camino simple de Euler
Teorema:
(a) Si un grafo conexo tiene más de dos nodos con
grado impar, no existe un camino simple de Euler.
(b) Si existen exactamente dos vértices de grado
impar, el grafo se puede recorrer, pero el camino ha
de empezar en uno de los dos vértices de grado impar
y terminar en el otro.
(c) Si no existen vértices de grado impar, el grafo se
puede recorrer. El camino siempre será cerrado.
32
9
33
Ciclo de Hamilton
Sean G=(V, E) un grafo, se dice que G tiene un ciclo
de Hamilton si existe un ciclo en G que incluye todos
y cada uno de los vértices en V.
34
Ejemplo
En el grafo de la figura, las aristas {a, b}, {b, c}, {c,
f}, {f, e}, {e, d}, {d, g}, {g, h} y {h, i} producen una
camino de Hamilton
a b
ed
c
f
hg i
¿Existe solución?
Dado un grafo cualquiera, ¿es posible determinar si
posee un camino Hamiltoniano?
Es una pregunta muy parecida a la de Euler, así que
se esperaría una respuesta del mismo tipo…
Sin embargo, se trata de un problema NP-completo
(Teorema de Garey-Johnson)
35 38
Clique
Grafo completo: cada par de nodos distintos son
adyacentes
Conjunto completo: subconjunto W de G que induce
un subgrafo completo de G
Clique: subconjunto de nodos que es conjunto
completo y máximo (no hay un conjunto completo
que lo contenga)
10
39
Cliques
40
Cliques
41
Cliques
42
Isomorfismo
Dos grafos G={V, E} y G’={V’, E’} son isomorfos si existe una biyección f: V V’ que preserva la relación de adyacencia, es decir tal que
{u, v} E si y solo si {f(u), f(v)} E’
Dos grafos isomorfos deben tener el mismo número de vértices. Todas las propiedades que se deriven de la relación de adyacencia deben ser idénticas: mismo número de aristas y sucesiones de grado
11
43
Ejemplo: isomorfismo
Los dos grafos representados en la figura son
isomorfos:
44
Ejemplo
a b
dc
w x
zy
Grafos isomorfos
45
Ejemplo
a
x ze
b
w
yf
c
v
u
d
Grafos no isomorfos
46
Tipos de isomorfismos
Isomorfismo de grafos
correspondencia 1:1 entre dos grafos G1 - G2
Isomorfismo de subgrafos
correspondencia entre un grafo G1 y los subgrafos de G2
Doble isomorfismo de subgrafos
correspondencia entre los subgrafos de G1 y los subgrafosde G2
12
47
Búsqueda con backtracking
Se construye un árbol en el que las trayectorias corresponden a isomorfismos:
se toma un nodo de G1 y todas sus posibles correspondencias en G2 (primer nivel)
se buscan los nodos conectados a los nodos correspondientes del primer nivel (segundo nivel)
se continua hasta que no existan correspondencias
las trayectorias en el árbol corresponden a isomorfismos de subgrafos entre G1 y G2
48
Búsqueda con backtracking
A/A’ A/A’’
B/B’
C/C’ C/C’’
49
Árboles
Un árbol es un grafo conexo y acíclico
Sea G(V, E) un grafo. Las afirmaciones siguientes son equivalentes:
G es un árbol
Dos vértices cualesquiera de G están unidos por un único camino
G es conexo pero si se le quita cualquier arista deja de serlo
G es acíclico pero si se le agrega una arista cualquiera deja de serlo
50
Ejemplo
El grafo de la izquierda es un árbol pero el de la
derecha no
ba
c
e
d
f
ba
c
e
d
f
13
51
Árbol
Hoja o nodo terminal: grado 1
Nodo rama o interno: grado > 1
52
Árbol
Propiedades:
Hay una trayectoria simple entre cada par de nodos
El número de nodos = número de aristas + 1
Un árbol con 2 o más nodos tiene al menos dos nodos hoja
53
Árboles dirigidos
Árbol (enraizado): un nodo con grado de entrada 0
(raíz) y los demás con 1
Poliárbol (árbol dirigido): se vuelve un árbol al
quitar las direcciones
54
Árbol dirigido
Terminología:
Raíz: vértice con grado de entrada 0
Hoja: vértice con grado de salida 0
Interno: vértice con grado de salida > 0
Hijo / Padre: arista de A a B, A es padre de B y B es hijo de A
Hermanos: tienen el mismo padre
Descendientes / Ascendientes: camino de A a B, A es ascendiente de B y B es descendiente de A
14
55
Árbol dirigido
Terminología:
Subárbol con raíz A: A y todos sus descendientes
Subárbol de A: subárbol con hijo de A como raíz
Árbol ordenado: aristas salientes de cada nodo etiquetados con enteros
Árbol de aridad “m”: cada nodo rama (raíz o interno) tiene máximo m hijos. Es regular si c/u tiene exactamente m hijos (binario m =2)
56
Teoremas
Si G=(V, E) es un grafo no dirigido, entonces G es
conectado si y sólo si G tiene un árbol de cobertura
En cualquier árbol T=(V, E), |V|=|E|+1
57
Recorridos en árboles
Sea T un árbol con raíz r. Si t no tiene otros vértices,
entonces las raíz constituye los recorrido pre-order y post-
order. Si |V| > 1, sean T1, T2, …, Tk los subárboles de T de
izquierda a derecha:
El recorrido en pre-order de T primero visita r y después recorre los
vértices de T1 en pre-order, luego los vértices de T2 en pre-order y así
sucesivamente hasta que los vértices de Tk son recorridos en pre-
orden
El recorrido post-order de T recorre en post-order los subárboles T1,
T2, .., Tk y después visita la raíz
58
Ejemplos
1
2 3
5
4
6 7 8 9 10
11 12 13 14 171615
Recorrido en pre-order: 1, 2, 5, 11, 12, 13, 14, 3, 6, 7, 4, 8, 9, 10, 15, 16, 17
Recorrido en post-order: 11, 12, 13, 14, 5, 2, 6, 7, 3, 8, 9,15, 16, 17, 10, 4, 1
15
59
Recorrido in-order
Sea T=(V, E) un árbol binario con raíz en el
vértice r:
Si |V| = 1, entonces el vértice r constituye el recorrido
in-order de T
Si |V| > 1, sea TL y TR los subárboles izquierdo y
derecho de T. El recorrido in-order de T visita primero
los vértices de TL in-order y después visita la raíz y
finalmente recorre in-order los vértices de TR
60
Ejemplo
Recorrido en orden: f, c, p, j, q, a, d, r, h, e, t, n, u
r
a
c
e
hd
f j u
n
t
qp