Está en la página 1de 49

Estructuras Discretas en Computacin

Teora de Grafos

Profesor: Mag. Ing. Pavel Aliaga E.


Facultad de Ing. de Sistemas
Universidad de Lima
2009-2
Grafos: Conceptos
Bsicos
Qu es un Grafo?
Es un conjunto de: puntos (NODOS o VRTICES) unidos
por lneas (ARCOS o ARISTAS)
Por qu se estudian Grafos?
Porque permiten estudiar interrelaciones entre elementos que
interactan 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:
Ingeniera de Sistemas
Modelado de Redes
Ingeniera Industrial, Electrnica
Qumica
Geografa, etc.
Qu podemos representar con un Grafo?

Red de Computadoras
Conexiones de vuelo de una aereolnea
Carreteras que unen ciudades
Actividades de un proyecto Impresora

Circuitos electrnicos Modem PC1

Representacin de un mapa

Servidor

Practicamente cualquier problema


PC2
puede representarse mediante un grafo
Ejemplo de Aplicacin 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 ms corto


entre 2 cuidades cualesquiera
Grafo Definicin formal
Un grafo G = (V,E)

V, el conjunto de vrtices o nodos 1 4


V={v1, v2, ..vn}
5
Representan los objetos

E, el conjunto de arcos o aristas 7 9

Representan las relaciones

E ={vivj, vmvn, ..}


Vrtices Adyacentes: 2 vrtices 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)}
Grado de un Grafo
Grado de un NODO: Es el # de arcos que inciden en un vrtice
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 vrtices.


Teorema de Grado de un GRAFO: Suma de grados de vrtices
equivale al doble del nmero de arcos.
Tipos de Grafos x

Grafo Regular
u
Todos los vrtices 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 vrtices
a b a b

e
d
c d c

Grafo completo Grafo No completo


Tipos de Grafos
Grafo Bipartito
Bipartito significa que tiene 2 partes
G= { V1 u V2, E}
Sus vrtices son la unin de dos grupos de vrtices bajos las siguientes
condiciones:
V1 y V2 son conjuntos disjuntos
Cada arista del Grafo une un vrtice de V1 con uno de V2
No existen aristas uniendo vrtices del mismos conjunto V1 o V2

a b a b c

Grafos Bipartitos
c d e
Lazo o bucle
Tipos de Grafos
x u
Mulitgrafo
Es un grafo que tiene arcos mltiples
(paralelos) o lazos
y z

Arcos mltiples 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
Tipos de Grafos (direccin)
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 E
son ordenados, de tal forma que el arco se
puede 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)}
Grado de un Digrafo
En un grafo dirigido los arcos son
E
pares ordenados.
Implica que (u,v) (v,u)
M Las lneas se convierten en
flechas
El grado de entrada de un nodo es
B el nmero de arcos entrantes
L
El grado de salida de un nodo es el
P nmero de arcos salientes
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
aa bb aa bb
25 30 25 30
40 40

cc 15 dd cc dd
15
Grafo Dirigido con Grafo No Dirigido con
Costo Costo
Conectividad
Grafo conexo
Grafo Conexo
5
Existe un camino entre cualquier par de 3

nodos 9

2 7

Grafo inconexo Grafo conexo


Grafos: Caminos
Trayectorias en Grafos
Camino / recorrido 4 7
Un camino P desde u hasta v en el grafo G 10
es una secuencia finita de vrtices que
empieza en u y acaba en v. 11
6 9
Cada par de vrtices consecutivos son
adyacentes
Camino entre 4 y 7
Longitud de camino T1 = {4, 6, 9, 7}
El nmero de arcos que lo forman
Longitud: 3
Camino Simple
Todos los nodos que lo forman son
distintos (no se repite nodos)
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}

Cul es la longitud mnima que puede tener un ciclo? Rpta: 3


Ciclos de Euler y
Hamilton

Hacer el recorrido sin levantar el lpiz del papel


Puentes de Knigsberg
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 posicin inicial. Es
posible?
7 Puentes

2 Islas: B y C

2 Orillas: A y D
Puentes de Knigsberg
Un modelo de grafo de puentes de Knigsberg
Nodos:
Porciones de tierra (orillas, islas)
Arcos: 5
Puentes

Representacin
mediante un grafo

Origen de los grafos: Euler ide los grafos para ver si era posible
Recorrer toda la ciudad sin cruzar c/u de los puentes ms de una sola vez.
Caminos y Ciclos de Euler
Camino de Euler
Recorre TODOS los ARCOS sin repetirlos
Los vrtices se pueden repetir

Ciclo de Euler
Recorre TODOS los ARCOS sin repetirlos
Los vrtices se pueden repetir
Inicia y termina en el mismo vrtice

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
Teoremas de Euler
Teorema 1 (Grafo Euleriano)
Si G es un grafo conexo y TODOS sus vrtices 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 vrtices 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 vrtice de
grado impar y terminar en el otro.
Eulerizar un grafo
Objetivo: Minimizar la longitud total de arcos utilizados

Procedimiento:
1. Localizar los vrtices de grado impar
2. Aadir un arco a c/u de los vrtices para que tenga grado par

Cmo euleriza el problema de los puentes


de knigsberg?
Caminos y Ciclos de Hamilton
Camino de Hamilton
Recorre TODOS los VRTICES sin repetirlos

Ciclo de Hamilton
Inicia y termina en el mismo vrtice
Recorre TODOS los VRTICES sin repetirlos (excepto el vrtice del
cual parte y al cual llega)

Grafo Hamiltoniano
Es el aquel grafo que admite un circuito de Hamilton
Ciclo Hamiltoniano
El juego de Hamilton se resuelve
si se encuentra un ciclo que recorra
todos los vrtices pasando una sola
vez por cada uno de ellos (excepto
por el vrtice inicial y final).

Nodos= ciudades
Arcos=caminos entre ciudades

Viajero que recorre ciudades


Grafos: Relaciones en un
Digrafo
Relaciones en un Digrafo
A = (1, 2, 3, 4)
R = { (1, 2), (2, 2), (2, 3), (3, 4), (4, 3) }
Conjunto Relacin R: muestra todas las relaciones de
conectividad (trayectorias de longitud 1) entre los nodos del
grafo.

1 2 1 2 3 4
1
2
3
3 4 4

Digrafo G Matriz de una Relacin


Relaciones en un Digrafo
Se define la relacin 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
Grafos: Representacin
Matricial
Representacin de Grafos
Para representar un grafo en una computadora se puede
usar:
Matriz de Adyacencia [A]
V (vrtices) x V(vrtices)

Matriz de Incidencia [M]


V (vrtices) x A (arcos )

Matriz de Arcos [B]


A (arcos ) x V (vrtices)
Matriz de Adyacencia [A] (grafos
no dirigidos)
Dado un Grafo G = (V, E) V3
V0
4 V4 7
Est representado por una matriz
de V (vrtices) por V(vrtices) 10
V5
1= si hay un arco o existe 11
adyacencia entre los vrtices V1 6 9 V2

V 0 V1 V 2 V 3 V 4 V 5
1, si hay arco (Vi ,Vj ) V 0 0 1 0 0 0 0
aij V 1 1 0 1 0 0 0
0, si no hay arco (Vi , Vj ) V 2 0 1 0 1 0 0

V 3 0 0 1 0 0 0
V 4 0 0 0 0 0 1
Caso especial: cuando hay un lazo se considera aij=1
V 5 0 0 0 0 1 0
Matriz de Adyacencia [A]
(digrafos)
Para Digrafos

V1 V2 V4

V3

Caso especial: cuando hay un lazo se considera aij=1


Matriz de Adyacencia [A]
(Propiedades)
El Grado de un Vrtice 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 A n es


igual al nmero de caminos de longitud n del vrtice i al vrtice j
Matriz de Incidencia [M] (grafos
no dirigidos)
Dado un Grafo G = (V, E)
Est representado por una matriz de V (vrtices) por A (arcos)
1, [arco, vrtice] est conectado
aij 0 [arco, vrtice] no est conectado
1: Si el arco i incide en el vrtice j
En un grafo sin lazos, la suma de una fila d el grado del vrtice
identificado con esa fila.
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
Matriz de Arcos [B]
Dado un Grafo G = (V, E)
Est representado por una matriz de Arcos (A) x Vrtices (V)
Esta formada por los arcos del grafo representado

e1 e2
V1 V2 V4
e1 V1 V 2
e V2 V 4
[B] = 2
e3 e4 e3 V1 V 3
e4 V2 V 3
V3

La matriz es de: m (# de arcos) x 2 elementos


Matriz Distancia [D]
Dado un Grafo G = (V, E)
Est representado por una matriz de Vrtices (V) x Vrtices (V)
Almacena las distancias de un vrtice a otro

0, si i=j
dij X, si no hay camino entre Vi y Vj
# de arcos del camino ms corto entre Vi y Vj

V2 V4 V1 V 2 V3 V4
V1
V01 1 2 x
V2 0 1 x
[D] = 2
V33 2 0 x
V34 1 2 0
V3
Grafos: Algoritmos

Establecer el costo mnimo recorriendo todos los vrtices

Encontrar la distancia mnima entre 2 vrtices


Problema del vendedor viajero
El problema del vendedor viajero consiste en encontrar la ruta
ms 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

Definicin del Problema: Construir la ruta de costo mnimo


que visita a cada cliente exactamente una vez
Algoritmos para establecer
circuitos hamiltonianos
considerando el costo
1. Vecino ms cercano:
a. se visita el nodo ms cercano y a continuacin el siguiente nodo
ms cercano no visitado hasta regresar al origen.
b. Nota: Este mtodo 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
Algoritmos para establecer
circuitos hamiltonianos
considerando el costo
2. rbol del costo mnimo
a. Generar todos los recorridos hamiltonianos posibles
b. Elegir el camino con el peso mnimo 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 = 1877
M 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
Algoritmos para establecer
circuitos hamiltonianos
considerando el costo
3. 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 vrtice
-No se puede cerrar ciclo sin incluir todos los vrtices

{C, L, M, S, C} = 300 + 349 + 774 + 562 = 1985


L

541
774 349

S
562 300
M C
425
Algoritmos para encontrar
caminos ms cortos
Frecuentemente se desea conocer en un grafo cul es el
camino ms corto entre un par de vrtices
En este caso
S importa cuntos caminos existen
Si ya conozco un camino pero encuentro uno mejor,
sustuir
Aplicar algoritmos de:
1. Ford
2. Dikjstra
Algoritmo de Ford
1. Permite calcular la distancia mnima entre 2
puntos de 1 grafo.
2. Cada nodo se representa por : n
A
3. 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 ms corto que exista
desde el nodo origen al nodo Xj.
Edsger Dijkstra (1930
2002)
Cientfico de la computacin
de origen holands

Creador del Algoritmo de


caminos mnimos

Recibi el Premio Turing


Algoritmo de Dikjstra: grafos
conexos
1. Dado un V0, Dijkstra busca un conjunto D con
Las menores distancias de V0 al resto de vrtices

2. Al inicio, solo conocemos


Las distancias de los adyacentes
D es inicializada a
Factor de peso para los adyacentes, Infinito para los no adyacentes

3. D va ser mejorado sucesivamente


Escogiendo el vrtice 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 Vrtice restante del grafo
Pasando por V2, Distancia de V1 Pasando por V3,
a V5 seria 8, no hay mejora Distancia de V1 a V5
seria 7, CAMBIAR

EJEMPLO DE DIJKSTRA
V1 V2 V3 V4 V5 V6

Escogidos Vrtice 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 V5
3 V1,V2 V2 0 3 4 8
3
8 V1,V2,V3 V3 0 3 4 7
V6
V1 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 2

1. D[] se inicializa con F.P. de adyacentes al origen

2. Escoger vrtice Vk que no haya sido escogido, Repetir hasta k se hayan


con la menor distancia del Vevaluado a Vk visitado todos los vrtices

3. Revisar si alguna distancia puede ser mejorada


pasando por Vevaluado desde V1
Ejercicios Guiados y
Propuestos