Vous êtes sur la page 1sur 30

1

CA P T U L O 1 ( 8 )
GRAF OS


1.1.- Conceptos Generales
El inters de la Teora de Grafos reside en su amplio campo de aplicacin
para resolver problemas que se puedan representar mediante una red o grafo:
camino mnimo, inventarios, etc.
La Teora de Grafos proporciona algoritmos eficientes para resolver
problemas en distintos campos de la ciencia.
La eficiencia puede medirse en funcin de:
i) La capacidad de almacenamiento requerida.
ii) El tiempo de ejecucin: complejidad.

La complejidad depende del nmero de operaciones elementales f(n) y de la
dimensin del problema n.

Damos, a continuacin una serie de definiciones.

Definicin 1.1. Un grafo G es un triple conjunto (V (G); A(G); I(G)) donde:
V (G) es un conjunto cuyos elementos son llamados vrtices.
A(G) es otro conjunto cuyos elementos son llamados aristas o arcos.
I(G) es una relacin (la relacin de incidencia), que le asocia a cada arista
aA(G) dos vrtices, llamados los extremos de a.
Generalmente un grafo es dibujado en forma tal que cada vrtice queda
representado por un punto en el plano, y cada arista, por una curva que une los
representantes de sus extremos. As, tenemos

G= {(i,j) A; i, j V }= {(i,j) A; (i, j) VxV }

2 Investigacin Operativa II



j j
Arista
Arco
i
i


Un arco es una arista con orientacin.
Definicin 1.2. Orden de un grafo: o(G) = n, es el nmero de vrtices o nodos
que tiene.
Definicin 1.3. Tamao de un grafo: t(G) = m, es el nmero de aristas o arcos
que tiene.
Definicin 1.4. Incidencia: dado un vrtice i, su grado de incidencia es el
nmero de extremos de i y lo denotamos por g(i).
Definicin 1.5. Grado de incidencia de salida: g
+
(i): nmero de extremos que
parten o salen de i.
Definicin 1.6. Grado de incidencia de llegada: g
-
(i): nmero de extremos
que tienen a i como destino.
Definicin 1.7. Grado de incidencia : g(i) =g
+
(i) + g
-
(i)
1.2. Grafos no orientados
Los grafos no orientados (no dirigidos) son aquellos en los que sus vrtices se
encuentran unidos por aristas. La figura siguiente muestra un grafo de este tipo.

x
2
x
3

x
1

x
4



x
6
x
5



Figura 1.1
Grafos 3



En el grafo no orientado de la Figura 1.1, tenemos los elementos siguientes:

Vrtices (nodos): {x
1
, x
2
, x
3
, x
4
, x
5
, x
6
}
Aristas:
2 1
x x ,
6 1
x x ,
3 2
x x
, etc. x
1
y x
2
son extremos de una arista.
Definicin 1.1. Cadena: Es una secuencia de aristas consecutivas o secuencia
alternativa de vrtices y aristas, por ejemplo,
5 3 2 1
x x x x
.
Definicin 1.9. Longitud de una cadena: Es el nmero de aristas que la
componen; la longitud de la cadena del ejemplo anterior es 3.
Definicin 1.10. Ciclo: Es una cadena que empieza y termina en el mismo
vrtice, por ejemplo,
1 6 2 1
x x x x .
Definicin 1.11. Bucle: Ciclo de una arista, por ejemplo,
1 1
x x .
1.3. Grafos orientados
Los grafos dirigidos o digrafos son aquellos en los que sus vrtices se
encuentran unidos por arcos. La figura siguiente muestra un grafo de este tipo.


x
1
x
2





x
4
x
3


Figura 1.2

El grafo anterior consta de los elementos siguientes:

Vrtices: {x
1
, x
2
, x
3
, x
4
, x
5
, x
6
}
Arcos:
2 1
x x ,
3 2
x x , x
1
y x
2
son extremos del arco
2 1
x x ; x
1
es el extremo
inicial, y x
2
, el extremo final.

4 Investigacin Operativa II

Definicin 1.12. Vrtices y arcos adyacentes: Dos vrtices son adyacentes si
estn unidos por un arco (arista) que los une. Dos arcos son adyacentes si tienen
al menos un vrtice en comn.
Adaptando al caso de grafo orientado las definiciones dadas para el caso de
grafos no orientados, tenemos
Definicin 1.13. Camino: Es la secuencia de arcos consecutivos o secuencia
alternativa de vrtices y arcos, por ejemplo,
3 2 1
x x x .
Definicin 1.14. Camino elemental: Un camino es elemental si pasa una sola
vez por los vrtices por los que pasa.
Definicin 1.15. Camino simple: Un camino es simple cuando pasa una sola
vez por los arcos por los que pasa.
Definicin 1.16. Longitud de un camino o cadena: Es el nmero de arcos
(aristas) que lo componen. La longitud del camino del ejemplo anterior es 3.
Definicin 1.17. Circuito: camino que empieza y termina en el mismo vrtice,
por ejemplo,
1 4 2 1
x x x x .
Definicin 1.11. Bucle: Es un circuito con un solo arco.
Definicin 1.19. Dimetro de un grafo: Es la longitud del camino mayor
existente en un grafo.
1.4. Tipo de grafos
Los grafos se pueden clasificar bajo diferentes puntos de vista:
i) En cuanto al nmero de vrtices y segmentos:
- Infinito: Cuando el nmero de vrtices o aristas (arcos) es infinito.
- Finito: Cuando el nmero de vrtices o aristas (arcos) es finito.

ii) En cuanto a la situacin relativa y nmero de aristas (grafos):
- Espacial: Cuando se cruzan los segmentos (aristas o arcos) sin cortarse.
- Plano: Un grafo se dice plano si admite una representacin grfica en el
plano de modo que dos aristas pueden cortarse nicamente en un
vrtice.
Una representacin grfica de este tipo se llama un mapa.

Grafos 5


Decimos que un mapa es conexo si representa a un grafo conexo.
Ejemplo:








Un mapa divide al plano en varias partes llamadas regiones. Cada regin de un
mapa est delimitada por un ciclo si el mapa es conexo.

- Grafo regular: Es aquel grafo con el mismo grado en todos los vrtices.
Si ese grado es k lo llamaremos k-regular.
- Simple: Cada par de vrtices est unido a lo sumo por una arista (en el
caso de grafos no orientados) o por dos arcos, uno en cada sentido (en
el caso de grafos orientados). Un ejemplo de este tipo de grfico es el
de la figura 1.3.
- Mltiple: Caso contrario al anterior. Ver figura.



Figura 1.3. Grafos mltiples (no orientado y orientado)


- Grafo completo: Si todo par de vrtices (i, j) se encuentra unido por una
arista o un arco como mnimo.
- Incompleto: Si no se cumple la condicin anterior.
- Grafo simtrico: Si para todo par (i, j) existe el par (j, i).
- Grafo no simtrico: Si no se cumple la condicin anterior.
- Grafo bipartito: Si V = V
1
U V
2
tal que V
1
V
2
= , con V
1
, V
2

, donde los extremos iniciales pertenecen a V
1
y los finales a V
2
.
- Grafo conexo: Si cualquier par (i, j) se encuentra asociado a un arco
(arista); es decir, para cualquier par de nodos existe al menos un
camino (cadena) que los une; siendo grafo no conexo en caso
contrario.





Grafo plano Mapa del grafo plano
6 Investigacin Operativa II


x
1
x
2
x
3
x
x
x
5
x
1
x
2
x
3
x
x
x
5
a) Grafo conexo Figura 1.4 b) Grafo inconexo

- Grafo fuertemente conexo: Si para todo par de vrtices (i, j) existe
siempre un camino o cadena que los une.
- Grafo valorado: Sobre las aristas o arcos de un grafo se escribe uno o
varios nmeros que cuantifican ciertas magnitudes relacionadas con
los mismos, como pueden ser costes de ir de un vrtice a otro,
beneficios, tiempos, distancias, capacidad mxima que admite un arco
o arista, etc.
0
1
2
3
4
5
6
5
6
8
4
8
10
14
8 7
9
8
10
6
6
5
4

Figura 1.4. Grafo orientado y valorado

- Subgrafo: Diremos que un grafo G={V, A} es un subgrafo de G={V,A}
si y slo si: V V ' , A A '

- Grafo parcial: diremos que un grafo G={V, A} es un grafo parcial de
G={V,A} si y slo si: V V = ' , A A '

- Cociclo (grafos no orientados): Dado un conjunto B, B V se denomina
cociclo asociado a B y se denota por w(B)

w(B) = {(i,j) A / i B y j (V-B) i (V-B) y j B }

Grafos 7


- Cocircuito (grafos orientados): Dado un conjunto B, B V los cocircuitos
asociados a B son:
- Cocircuito de salida:

w
+
(B) = {(i,j) A / i B y j (V-B) }

- Cocircuito de entrada:

w
-
(B) = {(i,j) A / i (V-B) y j B }

w(B) = w
+
(B) w
-
(B)

- Grafo generado por B: B V ; G
B
= {B, A
B
} = { (i,j) A
B
/ i, j B }

- Grafo complementario de G ={V, A} es { } A V G , = ={(i,j)A}

Proposicin 1.1. La suma de los grados de los vrtices es igual al doble del
nmero de aristas.

Demostracin
Al realizar la suma de los grados de todos los vrtices, como cada arista tiene
dos extremos se cuenta exactamente dos veces. Por tanto la suma de los grados de
los vrtices es igual al doble del nmero de aristas.

Definicin 1.20. Caminos eurelianos: Un camino se dice eureliano si contiene
a todas las aristas del grafo, apareciendo cada una exactamente una vez.

Un ciclo euleriano es un camino euleriano que comienza y acaba en el mismo
vrtice.

Definicin 1.21. Un grafo que admite un ciclo euleriano diremos que es un
grafo euleriano.

Ejemplo:








1 2
El primero no tiene ciclos ni caminos
euleriano.
7 5 3 El segundo tiene ciclo euleriano

6 4

8 Investigacin Operativa II

Proposicin 1.2. Si un grafo est formado por dos subgrafos eulerianos
unidos al menos por un vrtice y sin aristas en comn, entonces es euleriano.

Demostracin
Empezamos por uno de los vrtices en comn, vV. Partiendo de l podemos
recorrer el primer subgrafo con un ciclo euleriano, volviendo al vrtice de partida.
Ahora recorremos el segundo subgrafo con su ciclo euleriano. La unin de
estos dos ciclos vuelve a ser un ciclo que recorre todas las aristas exactamente
una vez, por tanto es un ciclo euleriano de todo el grafo.

Teorema 1.1. Un grafo conexo G=(V, A) es euleriano todo vrtice tiene
grado par.

Demostracin
Condicin suficiente: (por induccin en |A|=m)
El menor nmero posible de aristas es tres. En este caso el grafo es un
tringulo que es euleriano.
Suponemos que el teorema es cierto para grados en las mismas
condiciones y con menos de m aristas. Tenemos un grafo G con todos los vrtices
de grado par, dado que G es conexo vV, g(v) > 0. Empiezo por un vrtice v
cualquiera y voy recorriendo el grafo mientras pueda, con la condicin de no
repetir nunca arista. Si llego a un vrtice w que no sea el del principio, puede
pasar que no haya pasado antes por l o que no sea la primera vez que pase por w.
En el primer caso, la nica arista elegida es la que haya usado ahora para
llegar a w. En el segundo caso, cada vez que haya pasado antes por w habr
escogido dos aristas (una para llegar y otra para salir) y, finalmente, habr
escogido una ms para llegar esta ltima vez a w.
En cualquiera de los dos casos, he cogido un nmero impar de aristas en
w. Como w tiene grado par, tiene que haber alguna que no haya cogido todava.
En consecuencia, puedo seguir recorriendo el grafo.
Como el nmero de aristas es finito, llegar un momento en que tenga que
pararme, es decir, llegar un momento en que al llegar a un vrtice no pueda
seguir porque ya haya elegido todas las aristas que haba en ese vrtice. Por lo
que hemos dicho antes, en ese momento debo estar de vuelta en el vrtice v y
hemos construido un ciclo.
Consideremos el subgrafo formado por el ciclo anterior que es claramente
euleriano. Si ese subgrafo tiene todas las aristas del grafo, el grafo original
coincide con el subgrafo, por lo que G es euleriano. En otro caso, consideremos
el subgrafo formado por las aristas que no hayamos elegido. Este subgrafo tiene
un nmero menor de aristas que G. Adems, el grado de los vrtices ha de seguir
siendo par. En efecto, el grado de los vrtices ser el grado original (que era par),
menos las aristas que hayamos quitado. Pero, como lo que hemos quitado es un
ciclo, el nmero de aristas que quitamos en cada vrtice es un nmero par (igual a
dos veces el nmero de ocasiones en que el ciclo pase por ese vrtice). En
Grafos 9


consecuencia, el grado de cada vrtice es ahora par - par = par. Descomponiendo
en componentes conexas, tendremos ahora una unin disjunta de grafos que, por
el principio de induccin, deben de ser eulerianos.

Ahora bien, la unin de estos grafos es G que era conexo, as que deben tener
vrtices en comn. Pero ya vimos que la unin de grafos eulerianos sin aristas en
comn y unidos por vrtices es euleriano.

Condicin necesaria: Como todas las aristas estn una vez y slo una en
el ciclo, el grado de un vrtice es el nmero de aristas del ciclo que pasan por l.
Si recorremos el ciclo, cada vez que pasamos por un vrtice tendremos dos aristas
(una de llegada y otra de salida). Por tanto el grado de cada vrtice ser dos veces
el nmero de ocasiones que pase por l el ciclo euleriano. En consecuencia el
grado es par

Teorema 1.2. Un grafo conexo tiene un camino abierto euleriano tiene
exactamente dos vrtices de grado impar.

Demostracin
Condicin suficiente: Aadimos un nuevo vrtice junto con dos aristas
que lo unan a los dos vrtices que tenan grado impar. Ahora estos vrtices, al
haberles aadido una arista a cada uno, tienen grado par y el nuevo vrtice tiene
grado 2, por tanto, todos los vrtices son de grado par. Por el teorema anterior,
tendremos un ciclo euleriano. Si en dicho ciclo quitamos ahora el vrtice y las
dos aristas que habamos aadido, obtendremos un camino abierto que contiene
exactamente una vez a cada arista de nuestro grafo original.
Condicin necesaria: La demostracin es similar.

Definicin 1.22. Caminos hamiltonianos: Un camino se dice hamiltoniano
cuando es simple y pasa exactamente una vez por todos los vrtices del grafo.
Otra forma de definirlo es: Un camino hamiltoniano es un camino que recorre
todos los vrtices de un grafo sin pasar dos veces por el mismo vrtice. Si el
camino es cerrado se dice un ciclo hamiltoniano
Un grafo G se dice hamiltoniano si tiene un ciclo hamiltoniano.
1.5. Representaciones matriciales
A cada grafo se le puede asociar una matriz:
i) Matriz de adyacencia (vrtice-vrtice): Es una matriz M=(a
ij
) cuyo elemento de la
fila i, columna j es el nmero de aristas (arcos) que van del vrtice x
i
al vrtice x
j
.
10 Investigacin Operativa II

Este tipo de representacin matricial puede usarse tanto con grafos simples como
mltiples, orientados o no orientados.
Veamos la matriz de adyacencia para el caso de grafos orientados o no
orientados:
a) Grafo no orientado

Sea M
nxn
= (a
i j
) =(a
ji
) donde

(a
i j
)=

caso otro en
x y x unen que aristas de n
j i
0




x1
x2
x4
x3


|
|
|
|
|

\
|
0 1 1 1
1 0 1 0
1 1 0 1
1 0 1 0
x
x
x
x
x x x x
4
3
2
1
4 3 2 1


Matriz booleana simtrica
Figura 1.5. Un grafo simple, no orientado, y su matriz de adyacencia

Un grafo simple, no orientado, tiene una matriz simtrica y booleana.
x1
x2
x4
x3



|
|
|
|
|

\
|
0 2 3 1
2 0 1 0
3 1 1 1
1 0 1 0
x
x
x
x
x x x x
4
3
2
1
4 3 2 1


Matriz simtrica
Figura 1.6. Un grafo mltiple, no orientado, y su matriz de adyacencia

b) Grafo orientado

Sea M
nxn
= (a
i j
) donde

a
i j
=

caso otro en 0
(destino) x y (origen) x entre arcos de n
j i

Grafos 11


x1
x2
x4
x3


|
|
|
|
|

\
|
0 0 1 1
1 0 1 0
1 1 0 0
0 0 1 0
x
x
x
x
x x x x
4
3
2
1
4 3 2 1


Matriz booleana
Figura 1.7. Un grafo simple, orientado, y su matriz de adyacencia

Un grafo simple, orientado, tiene una matriz booleana.
x1
x2
x4
x3


|
|
|
|
|

\
|
0 0 1 1
1 0 1 0
2 1 0 0
0 0 1 0
x
x
x
x
x x x x
4
3
2
1
4 3 2 1

Figura 1.1. Un grafo mltiple, orientado, y su matriz de adyacencia

ii) Matriz complementaria: Cuando los grafos son mltiples, en la matriz
asociada se colocan nmeros que representan el nmero de aristas (arcos) entre
cada par de vrtices. La matriz complementaria es aquella cuyos elementos son
las diferencias entre el nmero mximo de aristas (arcos) que existen entre dos
vrtices (en todo grafo) y los nmeros que figuran en la matriz asociada. C
ij
=p-a
ij

El grafo siguiente nos sirve para el clculo de la matriz complementaria.
x1
x2
x4
x3

|
|
|
|
|

\
|
3 3 2 2
2 3 2 3
1 2 3 3
3 3 2 3
4
3
2
1
4 3 2 1
x
x
x
x
x x x x

12 Investigacin Operativa II


Teorema 1.3: Si M es la matriz asociada a un grafo de vrtices x
1
, x
2
, ,x
n
,
orientado o no, entonces el elemento (i,j) de M
k
representa el nmero de caminos
o cadenas de longitud k que van del vrtice x
i
al vrtice x
j
.

Demostracin
Vamos a efectuar una demostracin por induccin sobre k; para ello,
observemos que el teorema es vlido para k=1, ya que el elemento (i, j) de M es
el nmero de arcos o aristas que van del vrtice i al vrtice j. Supongamos ahora
que el teorema es vlido para un valor k=h y vamos a probar que tambin es
vlido para k=h+1; en efecto:

M
h+1
= M
h
M

por tanto,

(M
h+1
)
i j
=

=
n
1 s
(M
h
)
i s
M
s j


Ahora bien, por la hiptesis de induccin (M
h
)
is
representa el nmero de
caminos o cadenas de longitud h que van de x
i
a x
s
, y M
s j
, el nmero de caminos
o cadenas de longitud 1 que van de x
s
a x
j
, en consecuencia, su producto nos
dar el nmero de caminos o cadenas de longitud h+1 que van de x
i
a x
j
pasando
por x
s
en la ltima etapa, por ello, si sumamos para todos los valores posibles de
s, obtendremos el nmero total de caminos o cadenas de longitud h+1 que van del
vrtice x
i
al x
j
, con lo cual queda probado el teorema.

Ejercicio 1.1. a) Represente el grafo cuya matriz asociada es:

M=
|
|
|
|
|

\
|
0 1 0 1
1 0 0 0
0 1 1 0
1 0 1 0


b) Calcular M
2
y M
3
, represente a su vez los grafos asociados y compruebe lo
establecido en el teorema 3.






Grafos 13


Ejercicio 1.2. Dado el grafo:
1
2
4
3
6
5
7


1) Obtener la matriz del grafo
2) Nmero de caminos de longitud 2 que van del vrtice 1 al 5.

iii) Matriz de incidencia (vrtice-arista o arco): Otra forma de representar un
grafo es por medio de la denominada matriz de incidencias, M
nxm
, en este tipo de
representacin matricial las filas representan vrtices y las columnas aristas o
arcos, segn que el grafo sea no orientado u orientado, respectivamente.

a) Grafo no orientado

M
nxm
= (a
i j
)=

caso otro en
A arista la de extremo es x si
j i
0
1

x1
x2
x3
x4
A2
A1 A3
A4
A5

|
|
|
|
|

\
|
1 1 0 0 0
0 1 1 0 0
0 0 1 1 1
1 0 0 0 1
4
3
2
1
5 4 3 2 1
x
x
x
x
A A A A A


Figura 1.9. Un grafo simple, no orientado, y su matriz de incidencias

b) Grafo orientado: Para formar la matriz, M
nxm
, se escribe un 1 en la casilla
(i, j) si el vrtice x
i
es el extremo inicial del arco A
j
, un -1 si se trata del extremo
final, un 2 si hay un bucle en x
i
y un 0 si x
i
no es un extremo de dicho arco. Es
decir,

M
nxm
= (a
i j
)=

caso otro en
bucle un hay x en si
A arco del final extremo es x si
A arco del inicial extremo es x si
i
j i
j i
0
2
1
1

14 Investigacin Operativa II

A4
A5
A7
A8
A9
A1
A2
A3 A6
1
2
3
4
5


|
|
|
|
|
|

\
|

0 1 1 0 1 0 0 0 0
0 0 0 1 1 1 0 0 0
1 1 1 1 0 0 0 0 0
0 0 0 0 0 1 1 1 1
1 0 0 0 0 0 1 1 1
5
4
3
2
1
9 8 7 6 5 4 3 2 1
x
x
x
x
x
A A A A A A A A A


Figura 1.10. Un grafo simple, orientado, y su matriz de incidencias

Ejemplo: En la figura anterior aparece el grafo y su matriz asociada. Numere
los nodos del grafo.
1.6. Algoritmo de bsqueda de caminos hamiltonianos
Recordando que se denomina camino hamiltoniano a cualquier camino de un
grafo que pasa una y slo una vez por cada vrtice del grafo, este algoritmo nos
permitir, entre otras cosas, resolver el problema del viajante.

Teorema 1.4. (Teorema de Konig) Si el grafo es completo, posee al menos
un camino hamiltoniano.

Para la bsqueda de caminos hamiltonianos se define una operacin
denominada multiplicacin latina.

Definicin 1.23. La multiplicacin latina es una multiplicacin de matrices
con las propiedades siguientes:


1) A
1
=[a
1
, a
2
, ...., a
n
]
B
1
=[b
1
, b
2
, ...., b
m
]
A
1
x B
1
=[a
1
, a
2
, ...., a
n
, b
1
, b
2
, ...., b
m
] si existe el arco
1
b a
n

A
1
x B
1
=0 en otro caso

2) A
1
x0=0

3) A
1
= [a
1
, a
2
, ...., a
r
]
B
1
= [a
r
, a
r+1
, ...., a
n
]
A
1
x B
1
=[a
1
, a
2
, ... a
r
, a
r+1,
.., a
n
]

Grafos 15


Para la bsqueda de caminos hamiltonianos en un grafo, G={V, A} se utiliza
el algoritmo siguiente:

1.- Se calcula la matriz de arcos, M
nxn
= (a
i j
), donde

(a
i j
)=

caso otro en
destino x y origen x entre arco existe si j i
j i
0
) ( ) ( ) , (


2.-Se calcula M
n-1
mediante la multiplicacin latina de matrices, con la
condicin de que no se repitan dos nodos en el camino.
3.- Los caminos que aparecen en la matriz M
n-1
y sin contener ningn vrtice
repetido son los caminos hamiltonianos del grafo o red.
4.- Los circuitos hamiltonianos aparecen, si existen, en la matriz M
n
.

En resumen, un grafo conexo G es euleriano requiere que cada arista sea
recorrida una vez y slo una. Para determinar si en un grafo se puede construir un
grafo de Euler se debe tener en cuenta que el grado de los vrtices debe ser par.
Un Grafo es Hamiltoniano si partiendo de cualquier vrtice, podemos recorrer
todos los vrtices sin repetir ninguno, y finalmente podemos llegar al vrtice
origen. Para este caso las aristas se pueden recorrer una o ms veces.

Ejercicio 1.3. Hallar los caminos hamiltonianos del grafo representado en la
figura adjunta











La matriz de arcos asociada al grafo anterior es:

X
1
X
2
X
3
X
4
X
5

X
1
13
X
2
24 25
X
3
35
X
4
43 45
A=
X
5
51 52
1 3
5 4
2
16 Investigacin Operativa II


X
1
X
2
X
3
X
4
X
5

X
1
135
X
2
251 243 245
X
3
351 352
X
4
451 452 435



A
2
=AxA=

X
5
513 524

X
1
X
2
X
3
X
4
X
5

X
1
1352
X
2
2451 2513 2435
X
3
3524
X
4
4351 4352 4513



A
3
=A
2
xA=

X
5
5243


X
1
X
2
X
3
X
4
X
5

X
1
13524
X
2
24351 24513
X
3

X
4

A
4
=A
3
xA=
X
5


Los caminos hamiltonianos del grafo son:
4 2 5 3 1
x x x x x
,
3 1 5 4 2
x x x x x y
1 5 3 4 2
x x x x x
.
1.7. Bsqueda de caminos mnimos para grafos valuados
En este apartado abordamos el problema de calcular el camino mnimo o
caminos de coste mnimo de un grafo valuado entre dos vrtices arbitrarios del
mismo.
1.7.1. Programacin Dinmica de Bellman

Supongamos que la resolucin de un problema de optimizacin puede
descomponerse en etapas, de forma que el coste asociado a una solucin sea la
suma de los costes de las etapas correspondientes, para estos tipos de problemas
el matemtico americano Richard Bellman estableci el siguiente principio:
Todo procedimiento ptimo slo puede estar formado por subprocedimientos
ptimos
Grafos 17


Esta aseveracin, conocida como Principio de Bellman, no es realmente un
principio matemtico, sino un teorema, ya que se puede demostrar; en efecto, si
un procedimiento ptimo contuviera un subprocedimiento que no fuera ptimo,
se podra sustituir ste por otro mejor, o sea, con un coste menor, con lo cual el
nuevo procedimiento as construido tendra un coste menor que el inicial, lo que
contradice la hiptesis de partida sobre la optimalidad del mismo.
x
u c(u,v) v
z
c(v,z)
c(x,u)
w
c(u,w) c(w,v)

Figura 1.11. Representacin grfica del principio de Bellman

Si el camino ptimo para ir de x a z pasa por u y v, lnea llena, con un coste
mnimo total c(x, z):

c(x, z) = c(x, u) + c(u, v) + c(v, z)

entonces el camino ptimo para ir de u a v es el coste c(u, v), el de lnea llena, en
vez del que pasa por w, lnea discontinua, cuyo coste es:

c(u, w) + c(w, v) c(u, v)

pues, en caso contrario, sera ms econmico ir de x a z pasando por w.

Ecuacin de Bellman: supongamos que tenemos un grafo valorado, G={V, A,
C}, con los costes de las transiciones de un vrtice a otro en una etapa.
Representaremos con c(x, y) el valor o coste del arco o arista que va del vrtice x
al vrtice y. Para cada par de puntos del grafo denotaremos con V(x, y) el valor o
coste ptimo de las cadenas o caminos que unen el vrtice x con el y, V(x, y)
ser, por tanto, el valor o coste de la solucin ptima que pasa de x a y.
Supongamos que queremos pasar desde un vrtice inicial x
I
a un vrtice final x
F

con un coste mnimo y que, para ello, denotamos con V(x) el coste ptimo de
alcanzar el estado final x
F
a partir de x, esto es, V(x) = V(x, x
F
), donde x es un
vrtice arbitrario del grafo, entonces esta funcin V(x), que se denomina funcin
de retorno optimal, satisface la siguiente ecuacin en recurrencia:

V(x) =
y
mn { c(x, y) + V(y)}, con V(x
F
) = 0 (1.1)
18 Investigacin Operativa II

pues en efecto, si lo ptimo para ir de x a x
F
es pasar por y* en la etapa siguiente,
entonces, segn el principio de Bellman, se tendr:

V(x) = c(x, y*) + V(y*) < c(x, y) + V(y)

y esto para cualquier estado y que se pueda alcanzar desde x en una etapa, de
donde se deduce la recurrencia establecida en (1), ya que V(x
F
) = 0,
evidentemente. Grficamente tenemos:
x
y
y*
xF
V(xF)=0
V(y*)
V(y
V(x
)

As pues, por recurrencia hacia atrs, la ecuacin (1) de Bellman permite ir
calculando el valor de la funcin de retorno optimal V(x) en cada uno de los
vrtices del grafo, adems, si a partir de un vrtice x se tiene otro vrtice y en el
que se satisface V(x) = c(x, y) + V(y), entonces la arista
xy
o el arco y x ,
segn que el grafo est sin orientar u orientado, forma parte de la cadena o
camino ptimo que une x con el vrtice final x
F
.

Obsrvese que, al aplicar las frmulas de recurrencia de la Programacin
Dinmica de Bellman, se obtiene una solucin global para alcanzar un
determinado vrtice a partir de cualquier otro.
Ejercicio 1.4. Obtener la funcin de retorno optimal y caminos ptimos para
alcanzar el vrtice del grafo siguiente:
Grafos 19


0
1
2
3
4
5
6
5
6
8
4
8
13
10
14
8 7
9
8
10
6
6
5
4


Aplicando las frmulas de recurrencia de la Programacin Dinmica de
Bellman, llegamos a la solucin que aparece en la grfica.

1
5
0
6
8
8
3
2
4
6
8
6
V=20
V=20
V=8
V=0
V=6 V=14
6
V=12



1.7.2. Algoritmo de Bellman y Kalaba

Se trata de un procedimiento sistemtico basado en las frmulas de
recurrencia de Bellman, que es fcilmente programable y que da las soluciones
ptimas para alcanzar un vrtice final o un grupo de vrtices finales.
Supongamos que el grafo contiene n vrtices. Se comienza por definir la
matriz C= (c(x, y)) en donde c(x, y) es el coste de la transicin xy en una etapa,
se pone c(x, y)= + si dicha transicin no es posible. Denotemos por:
V(x): Funcin de retorno optimal.
V
k
(x): Funcin que da el coste mnimo para alcanzar el vrtice final (o
vrtices finales), desde el vrtice x, en k etapas o menos.

El algoritmo de Bellman y Kalaba desarrollado en cuatro pasos es:

Paso 1: (k=0)
20 Investigacin Operativa II

V
0
(x) =

+ caso otro en
final vrtice un es x si 0


Paso 2: (k k+1): V
k
(x) = mn {
x y
mn

{c(x,y)+ V
k-1
(y) }, V
k-1
(x) }

Paso 3: Comparamos V
k
(x) con V
k-1
(x). Si difieren para algn vrtice x, ir al
paso 2; en caso contrario, los valores obtenidos son los ptimos, por lo que
tenemos los valores de la funcin de retorno optimal V(x) = V
k
(x) = coste
mnimo para alcanzar desde x el vrtice o los vrtices finales.

Paso 4: (Reconstruccin de las cadenas o caminos ptimos) Desde un vrtice
x se pasa al vrtice y que satisfaga la ecuacin
V(x) = c(x, y) + V(y)
Ejercicio 1.5. Aplicar el algoritmo anterior al grafo de la figura para encontrar
los caminos ptimos que conducen al vrtice 6.
0
1
2
3
4
5
6
5
6
8
4
8
13
10
14
8 7
9
8
10
6
6
5
4

Aplicando el algoritmo de Bellman y Kalaba, y recogiendo los pasos en una
tabla, tenemos

Vrtices
k 0 1 2 3 4 5 6
0

0
1

6 8 0
2

14 12 6 8 0
3 20 20 14 12 6 8 0
4 20 20 14 12 6 8 0

Cada fila de la tabla con k1 se construye a partir de la fila anterior sin ms
que aplicar lo establecido en el paso 2. En el momento en que se repiten los
valores de dos filas consecutivas, se para el proceso y esos valores finales son
Grafos 21


precisamente los de la funcin de retorno optimal V(x). La reconstruccin de los
caminos ptimos para ste ejemplo conduce a la solucin mostrada en la
siguiente grfica:

1
5
0
6
8
8
3
2
4
6
8
6
V=20
V=20
V=8
V=0
V=6 V=14
6
V=12


La grfica recoge la solucin ptima para alcanzar el vrtice 6.
1.1. Algoritmos de la ruta ms corta
En esta seccin se presentan dos algoritmos para obtener la ruta ms corta:

i) Algoritmo de Dijkstra.
ii) Algoritmo de Floy.

El algoritmo de Dijkstra est diseado para encontrar las rutas ms cortas
entre el nodo origen y cada uno de los otros nodos de la red. El algoritmo de
Floyd es ms general al permitir determinar la ruta ms corta entre cualquier par
de nodos de la red.


1.1.1. Algoritmo de Dijkstra

Para el desarrollo del algoritmo de Dijkstra tomamos dos conjuntos, el de
distancias V y el de nodos M y de una variable auxiliar, p, que recoge el ltimo
nodo que ha proporcionado la distancia mnima en V y no est en M.
V={recoge el valor de la distancia mnima existente entre el nodo
origen y el nodo que se va a tratar}
M={nodos elegidos}
p: variable que contiene el ltimo nodo elegido

Las distancias que recoge V se calculan de la forma siguiente:
22 Investigacin Operativa II


V
k
(j) = Min { V
k-1
(j) , V
k-1
(p) + d(p,j)}

Etapa inicial: k=0, nodo 1.

V
0
( 1) = 0
V
0
(j) =
V
k
(j) = longitud mnima del nodo 1 al j, en la etapa k-sima.

Etapa k-sima: k=k+1

El proceso se repite hasta haber recorrido todos los nodos de V.

Ejercicio 1.6. Dado el grafo valorado que aparece en la figura, calcule la
distancia mnima entre el nodo 1 y el 4.

1
2
3 4
1
3 8
5
2
6 7


Aplicando el algoritmo de Dijkstra, tenemos como resultado final:

V 0 1 6 4

M 1 2 3 4

d(1,4)=4

1.1.2. Algoritmo de Floyd

El algoritmo de Bellman y Kalaba da todas las soluciones ptimas para
alcanzar un determinado vrtice de un grafo. Con un esfuerzo computacional
similar, el algoritmo de Floyd permite encontrar los caminos ptimos entre dos
pares cualesquiera de vrtices. Para proceder con este algoritmo se comienza por
numerar los vrtices del grafo de 1 a n, a continuacin se designa por C
ij
el coste
asociado con el arco que va del vrtice i al j, y se pone C
ij
= + si dicho arco no
existe:

Grafos 23


C
ij
=

+ existe no j i arco el si
j i arco del te cos


de este modo se tiene la matriz C =(C
ij
) que de momento representa los costes
para pasar de un vrtice a otro en una etapa. Se define otra matriz cuadrada de
orden n D =(D
ij
) cuyos elementos van a ser los penltimos vrtices de caminos
que vayan del vrtice i al j, inicialmente se comienza con caminos de longitud 1
(o en una etapa), por lo que D
ij
=i

Los pasos a dar en la aplicacin del algoritmo de Floyd son los siguientes:

Paso 1: Formar las matrices iniciales C (matriz de costes) y D (matriz de
penltimos nodos)
Paso 2: Se toma k=1.
Paso 3: Se selecciona la fila y la columna k de la matriz C y entonces, para i,j
distintos de k, hacemos:


. ,
C C C
y
D D
C ) C C (
kj ik ij
kj ij
ij kj ik
est como deja se contrario caso En
Si

+ =
=
< +




En la siguiente figura se refleja lo anterior.
i j
k
Di k Ci k C k j D k j
Ci j Di j

Figura 1.12. Representacin grfica del algoritmo de Floyd

Paso 4: (k k+1) Si kn, aumentamos k en una unidad y vamos al paso 3; en
caso contrario, paramos las iteraciones.

24 Investigacin Operativa II

Paso 5: (reconstruccin de las soluciones ptimas) la matriz final C contiene
los costes ptimos para ir de un vrtice a otro, mientras que la matriz D contiene
los penltimos vrtices de los caminos ptimos que unen dos vrtices, lo cual
permite reconstruir cualquier camino ptimo para ir de un vrtice a otro.

Siguiendo con el ejercicio 1.6., ahora lo resolveremos mediante el algoritmo
de Floyd.

1
2
3 4
1
3 8
5
2
6 7



Aplicando ahora el algoritmo de Floyd, tenemos:

k=1 C=
|
|
|
|
|

\
|


2
5
3 7
6 8 1
D =
|
|
|
|
|

\
|
4 4 4 4
3 3 3 3
2 2 2 2
1 1 1 1


k=2 C=
|
|
|
|
|

\
|


2
5
3 7
6 8 1
D =
|
|
|
|
|

\
|
4 4 4 4
3 3 3 3
2 2 2 2
1 1 1 1


k=3 C=
|
|
|
|
|

\
|


2
5
3 7
4 8 1
D =
|
|
|
|
|

\
|
4 4 4 4
3 3 3 3
2 2 2 2
2 1 1 1


k=4 C=
|
|
|
|
|

\
|


7 2
5
3 7
4 8 1
D =
|
|
|
|
|

\
|
3 4 4 4
3 3 3 3
2 2 2 2
2 1 1 1


Grafos 25


C=
|
|
|
|
|

\
|


7 2
5 7
3 5
4 6 1
D =
|
|
|
|
|

\
|
3 4 4 4
3 4 3 3
2 4 2 2
2 4 1 1


Si queremos reconstruir el camino de coste mnimo que va del vrtice 1 al 3,
obtenemos:

1
2 3 4
1
2 3


puesto que el penltimo vrtice para ir de 1 a 3 es el 4 (D
13
=4 ), el penltimo
vrtice para ir de 1 a 4 es 2 (D
14
=2 ) y el penltimo vrtice para ir de 1 a 2 es el 1
(D
12
=1 ); el coste ptimo de todo el camino es C
13
=6= 1+3+2, que coincide con
la suma de los costes de los arcos que lo componen.

1.9. rboles
Un rbol es un grafo en el que existe un nico nodo desde el que se puede
acceder a todos los dems y cada nodo tiene un nico predecesor, excepto el
primero, que no tiene ninguno. Tambin podemos definir un rbol como:

- Un grafo conexo y sin ciclos.

- Un grafo sin ciclos y con n-1 aristas, siendo n el nmero de vrtices.

Un rbol consta de un nodo raz del que vamos a partir, de manera que con
los restantes nodos se puedan formar conjuntos disjuntos de nodos de forma que
cada subconjunto sea a su vez un rbol. En un rbol todo par de vrtices se
encuentra unido mediante una cadena y slo una. Los rboles son estructuras de
tipo jerrquico.

Definicin 1.24. rbol generador o de extensin (spanning tree): rbol que
incluye a todos los vrtices del grafo

Definicin 1.25. Grado de un nodo en un rbol es el nmero de subrboles de
aquel nodo.

Definicin 1.26. Denominamos hojas en un rbol a los nodos finales.
26 Investigacin Operativa II


Definicin 1.27. rbol binario: Es aquel cuyos nodos tienen dos sucesores,
excepto las hojas que no tienen ninguno.

Definicin 1.21. Un rbol de mximo alcance es aquel que obtenemos en un
grafo conexo y sin bucles o ciclos.

Definicin 1.29. rbol minimal (de expansin mnima): rbol de mximo
alcance cuyo valor es mnimo, es decir, la suma de sus aristas es mnima.

Definicin 1.30. rbol maximal (de expansin mxima): rbol de mximo
alcance cuyo valor es mximo, es decir, la suma de sus aristas es mxima.


1.9.1. Algoritmo de Kruskal

El Algoritmo de Kruskal permite hallar el rbol minimal y maximal de
cualquier grafo valorado (con capacidades).

Algoritmo de Kruskal para un rbol minimal:
1) Se marca la arista con menor valor. Si hay ms de una, se elige
cualquiera.
2) Se eligen todas las aristas no marcadas que partan (o lleguen) a uno de los
nodos que forman parte de la arista marcada.
3) Se contina el proceso hasta tener entre todo par de nodos una arista
marcada, teniendo en cuenta que no se podr marcar una arista si con ello
formamos un bucle.

Algoritmo de Kruskal para un rbol maximal:

El proceso es el mismo que en el caso anterior, cambiando el criterio de
eleccin de arcos. En lugar de tomar el valor mnimo, tomaramos los de valor
mximo.

Ejercicio 1.1. Para el siguiente grafo, determinar el rbol minimal y el
maximal

1 2
3
4
5
7
6
3
1
8
7
9
4
2
1
5
6

Grafos 27



Siguiendo el algoritmo de Kruskal para obtener un rbol minimal, tenemos:

i) Elegimos, por ejemplo, la arista (5,6) = 1 (menor valor ) y la marcamos.
ii) Tomamos las aristas conectadas con los vrtices de la arista que hemos
elegido con el menor valor (5, 6).

(5,7) = 2; (5,4) = 6; (5,2) = 5; (6,7) = 4 mnimo es (5,7)=2

iii) Tomamos las aristas conectadas con los vrtices de la arista que hemos
elegido con el menor valor (5, 7)

(5,4) = 6; (5,2) = 5; (7,4) = 9 mnimo es (5,2) = 5

iv) Tomamos las aristas conectadas con los vrtices de la arista que hemos
elegido con el menor valor (5, 2)

(5,4) = 6; (7,4) = 9; (2,1) = 3; (2,3) = 8; (2,4) =7 mnimo es (2,1)=3

v) Tomamos las aristas conectadas con los vrtices de la arista que hemos
elegido con el menor valor (2, 1)

(5,4) = 6; (7,4) =9; (2,3) = 8; (2,4) =7; (1,3) = 1 mnimo es (1,3)=1

vi) Tomamos las aristas conectadas con los vrtices de la arista que hemos
elegido con el menor valor (5, 6)

(2,4) = 7; (5, 4) = 6; (7,4) = 9 mnimo es (5,4)=6

La figura siguiente muestra rbol minimal:

1 2
3
4
5
7
6
3
1
2
1
5
6



Para obtener el rbol maximal operamos de la misma forma que para el rbol
minimal, cambiando slo mnimo por mximo.

28 Investigacin Operativa II

i) Elegimos, la arista (4,7) =9 (mayor valor ) y la marcamos.
ii) Mximo (4,2)=7
iii) Mximo (2,3)=8
iv) Mximo (4,5)=6
v) Mximo (7,6)=4
vi) Mximo (2,1)=3

El rbol maximal es el de la figura:

1 2
3
4
5
7
6
3
8
7
9
4
6




1.9.2. Algoritmo de Solin

Este algoritmo obtiene el rbol minimal de un grafo mediante la
representacin matricial, matriz de coste, del grafo. Consta de los pasos
siguientes:

1) Marcamos el elemento de valor mnimo. En el caso de que existan varios,
tomamos uno cualquiera. Se elimina la columna que posea el valor marcado
y marcamos la fila correspondiente a la columna eliminada.

2) Del conjunto de elementos de las filas marcadas y que no hayan sido
eliminados, tomamos aquel de valor mnimo y lo marcamos. Se elimina la
columna que posea este valor marcado.
3) Reiteramos el proceso desde el punto 2) hasta que no podamos seleccionar
ms valores.

Ejercicio 1.1. Determinar el rbol minimal para el grafo del Ejercicio 1.1.
utilizando el algoritmo de Solin

Grafos 29


1 2
3
4
5
7
6
3
1
8
7
9
4
2
1
5
6


La matriz asociada al grafo es:

M =
|
|
|
|
|
|
|
|
|

\
|







4 2 9
4 * 1
2 1 6 5
9 6 7
8 1
5 7 8 3
1 3



Siguiendo los pasos del algoritmo llegamos a la matriz final:


M =
|
|
|
|
|
|
|
|
|

\
|






4 2 9
4 * 1
* 2 * 1 * 6 * 5
9 6 7
8 1
5 7 8 * 3
* 1 3
3
1
2
7
6
4
5


En la matriz anterior, la matriz columna recoge el orden de los pasos que se
han seguido para obtener la matriz definitiva:

30 Investigacin Operativa II

M =
|
|
|
|
|
|
|
|
|

\
|







1
2 1 6 5
3
1



La matriz anterior reprensentada grficamente es:

1 2
3
4
5
7
6
3
1
2
1
5
6

Vous aimerez peut-être aussi