T ES IS presenta Guadalupe Aida Guillén Gémez132.248.9.195/pd2000/285439/285439.pdf · 2021. 2....
Transcript of T ES IS presenta Guadalupe Aida Guillén Gémez132.248.9.195/pd2000/285439/285439.pdf · 2021. 2....
DE MEXICO
UNIVERSIDAD NACIONAL AUTONOMA
FACULTAD DE CIENCIAS
RUTAS MAS CORTAS Y SU APLICACION EN
PROBLEMAS DE FLUJOS
T ES IS Que para obtener el titulo de
ACTUARIA
presenta Guadalupe Aida Guillén Gémez
Directora: M. 1. O.
Wn, del ee Hernandez Ayuso ge
% £, ~*,
ma wr
FACULTAD DE CIENCIAS
UNAM
FACULTAD DE CIENCIAS SECCION ESCOLAR
UNAM – Dirección General de Bibliotecas
Tesis Digitales
Restricciones de uso
DERECHOS RESERVADOS ©
PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL
Todo el material contenido en esta tesis esta protegido por la Ley Federal del Derecho de Autor (LFDA) de los Estados Unidos Mexicanos (México).
El uso de imágenes, fragmentos de videos, y demás material que sea objeto de protección de los derechos de autor, será exclusivamente para fines educativos e informativos y deberá citar la fuente donde la obtuvo mencionando el autor o autores. Cualquier uso distinto como el lucro, reproducción, edición o modificación, será perseguido y sancionado por el respectivo titular de los Derechos de Autor.
VAIVER DAD Nacional AVENMA DE MEXICO
MAT. MARGARITA ELVIRA CHAVEZ CANO Jefa de la Division de Estudios Profesionales de la Facultad de Ciencias Presente
Comunicamos a usted que hemos revisado el trabajo de Tesis:
RUTAS MAS CORTAS Y SU APLICACION EN PROBLEMAS DE FLUJOS
realizado por GUILLEN GOMEZ GUADALUPE AIDA
con numero de cuenta 8401371-0 , pasante de la carrera de ACTUARTA
Dicho trabajo cuenta con nuestro vote aprobatorio.
Atentamente
Director de Tesis lM Darryn
Propietario M. en I.0. Ma. DEL CARMEN HERNANDEZ avusd
Propietario M. en C. BEATRIZ EUGENIA RODRIGUEZ FERNANDEZ aaa oi ¢ {
Propietario =, en €. Ma. GUADALUPE ELENA IBARGUENGOITIA conzasie Sle oe “
Suplente = Mat. ADRIAN GIRARD ISLAS r
Suplente
M. en 1.0. VICTOR RAFAEL PEREZ PEREZ
mA gn TERA ACT CT te
A Dios:
_ Por haberme permitido llegar a este punto de mi vida.
A mi mama: Que siempre me guia, me acompaiia y confia en mi.
A Rafa mi espeso: Por motivarme siempre a seguir a delante.
A mis hermanas Ana y Claudia: Que aun cuando estamos separadas siempre estaremos unidas.
A mi directora de tesis Carmen: : Por todo el apoyo y los consejos que me dio para ver realizado este logro. Gracias
por tu confianza, paciencia y hermosa amistad.
A mis sinodales:
Por haber enriquecido este trabajo con sus acertadas sugerencias y por tomarse el tiempo para hacerlas.
A mis amigos: Por haberme apoyado.
GRACIAS
Indice
Introduccion
Capitulo 1. Teoria de Redes
1.1 Antecedentes
1.2 Conceptos basicos
1.3 El problema de ratas mAs cortas
1.4 Los problemas de flujos
Capitulo 2, Rutas mas Cortas
2.1 Ruta mas corta de un origen a un destino
2.2 Ruta mas corta de un origen a todos los nodos
2.2.1 Propiedades de las soluciones
2.3 Ruta mas corta entre todo par de nodos
2.4 Métodos de solucién
2.4.1 Ruta mds corta de o a d y arborescencia de rutas mas cortas
2.4.1.1 Algoritmo de Dijkstra
2.4.1.2 Prueba del algoritmo de Dijkstra
2.4.1.3 Algoritmo General
2.4.1.4. Justificacién del algoritmo
2.4.2 Ruta mds corta entre todo par de nodos
2.4.2.1 Algoritmo de Floyd
2.4.2.2 Algoritmo de Dantzing
Capitulo 3. Flujo en redes
3.1 Aspectos tedéricos de flujo en redes
3.2 Flujo Maximo
wom
Mom,
12
13
IS
15
18
ig
26
26
27
27
33
34
42
43
43
35
58
58
64
3.3 Métodos de solucién
3.3.1 Algoritmo de Ford y Fulkerson (Flujo maximo)
3.3.2 Variantes del problema
3.3.2.1 Redes con cotas inferiores en los arcos
3.3.2.2 Redes con capacidades en arcos y nodos
3.3.2.3 Redes con varios origenes y varios destinos
3.4 Flujo maximo a costo minimo
3.4.1 Propiedades de las soluciones
3.4.1.1 Método primal
3.4.1.2 Método dual
3.4.1.3 Método out of kilter
3.5. Métodos de solucién
3.5.1 Algoritmo basado en Ia eliminacion de circuitos negativos (primal)
3.5.2 Algoritmo basado en rutas mds cortas (dual)
3.3.3 Algoritmo Out-Of-Kilter
3.5.3.1. Justificacién del Algoritmo
Capitulo 4. Desarrollo del sistema
4.1 Estudio Técnico
4.1.1 Hardware Utilizado
4.1.2 Software Utilizado
4.2 Caracteristicas del Sistema
4.3 Alcances y Limitaciones del Sistema
4.4 Técnicas de Programacién
4.5 Estructura de los programas
4.5.1 Algoritmo Dijkstra: Ruta mds corta deoad
4.5.2 Algoritmo General: Arborescencia
4.5.3 Algoritmo de Floyd: Ruta entre todo par de nodos
4.5.4 Algoritmo de Ford y Fulkerson: Flujo Maximo
4.6 Cédigo de Subrutinas Importantes
Capitulo 5. Presentacion del Sistema
5.1 Requisitos de Instalaci6n
5.2 Preparacién Inicial
5.3 Instrucciones para Instalar a “Redes” en su computadora
5.4 Como utiliza Redes las vias de acceso y los directorios
5.5 Inicio de Sesién
Indice
69
69
76
716
86
91
94
93
95
104
105
120
120
126
131
132
142
142
142
142
142
143
143
147
150
154
158
160
164
169
169
170
170
171
171
5.6 Introduccién o Modificacién de Datos
5.6.1 Pantallas de entrada de un problema nuevo
5.6.2 Pantallas de un problema almacenado
5.7 Resultados
5.7.1 DIJKSTRA: Ruta deo a d
r 5.7.2 DLUIKSTRA: Arborescencia
3.7.3 General
3.7.4 FLOYD y DANTZING 3.7.5 FORD y FULKERSON: Flujo maximo
5.7.6 Flujo a costo minimo
5.7.6.1 Primal
5.7.6.2 Dual
5.7.6.3 Out of kilter
Conclusiones
Bibliografia
Indice
177
177
183
186
186
187
189
190
193
197
197
202
206
213
216
Introduccién
EI constante cambio en el mercado laboral exige que las personas egresadas de las diversas
universidades cuenten con un nivel de conocimientos, practica y hasta cierto punto, experiencia en el rea que desean desarrollar. Estos requerimientos obligan a que las universidades mantengan un nivel de constante actualizacién en sus planes de estudio en general y en sus
métodos de asignacién en particular.
La Universidad Nacional Auténoma de México, en vias de lograr que los estudiantes alcancen
la excelencia en las diversas dreas de ensefianza, mantiene una politica de actualizacién con la finalidad de cubrir las expectativas externas. En particular, en la Facultad de Ciencias se desea
desarrollar una metodologia de ensefianza con mayor didactica que facilite el aprendizaje y
maximice los conocimientos adquiridos.
Como parte de esta tendencia de mejora y dada la actual facilidad de acceso que se tiene a equipos de cémputo, se ha planeado que se desarrolien diferentes trabajos de tesis en los que se
implementen sistemas computacionales que resuelvan diferentes problemas de origen
matematico. Asif los profesores de las areas involucradas pueden impartir sus catedras apoyados con dichos sistemas.
El presente trabajo se ha desarrollado como un sistema de material didactico para la Facultad
de Ciencias, en el area de investigacién de operaciones, en particular para la materia de Teoria
de redes abarcando los temas de rutas mas cortas y flujo en redes. A través del texto se ofrecen
las bases teéricas que permiten entender Ja naturaleza de estos problemas, se presentan algunos
de los algosritmos que los resuelven y se demuestra que los algoritmos de rutas mAs cortas
pueden ser aplicados como subrutinas a los algoritmos que resuelven problemas de fiujos. Como resultado de estos planteamientos teéricos se ha desarrollado un sistema computacional que resuelve cada uno de ellos.
En el Capitulo 1 se presentan los antecedentes de la teorfa de redes y se introducen los conceptos fundamentales que integran esta materia. Se definen diferentes tipos de redes y finalmente se describe brevemente cémo esta herramienta matemética es esencialmente util en ja solucién de problemas de rutas mas cortas y de flujos.
Introduccién
En el Capitulo 2 se examinan los conceptos de teorfa de redes en fos que estan basados los _
algoritmos que resuelven los siguientes problemas: ruta més corta de un origen a un destino,
ruta mds corta de un origen a todos los nodos y la ruta mas corta entre todo par de nodos. Para
cada uno de estos problemas se analiza el algoritmo que debe ser aplicado de acuerdo al tipo de
red en el que esté modelado es decir, si es una red con costos no negativos o una red sin restricciones en sus costos. Se establecen las condiciones bajo las cuales se encuentran
soluciones 6ptimas para cada uno de los casos.
En el Capitulo 3 se plantean los conceptos de la teoria de redes en la que se apoyan fos diferentes algoritmos que resuelven los problemas de flujos que se estudian. Se introduce el
problema basico de flujo maximo y sus variantes y el concepto de cortadura minima, se demuestra la relacién que existe entre un flujo maximo y la cortadura minima en una red y
finalmente se estudia el problema de flujo m4ximo a costo minimo. Para el problema de flujo
maximo se plantea el algoritmo de soluci6n y se determinan las modificaciones que debe sufrir
éste para resolver cada una de sus variantes. Para el problema de flujo maximo a costo
minimo, se dan tres métodos de solucién: 1) por el método de circuitos negativos (primal), 2)
por el método de deteccién de rutas mas cortas (dual), y 3) por un método combinado de rutas
mas cortas y circuitos (primai-dual).
Ei Capitulo 4 ofrece documentacién técnica del sistema, asi como del disefio y los algoritmos considerados como subrutinas en la programacién, en lo que compete al Capitulo 5, se presenta
el manual de usuario, con el fin de orientar al interesado en el correcto manejo del sistema para
su maximo aprovechamiento, desde su instalacién hasta la consideracidn de casos especificos.
Por Ultimo se presentan fas conclusiones que se obtuvieron como consecuencia de este trabajo de investigacién, asi como una serie de consideraciones acerca de la misma, de este modo se finalizar con todo el esfuerzo que se llevo a cabo a lo largo del tiempo invertido, para poder concluir con este documento.
ii
Capitulo 1. Teoria de Redes
El objetivo de este trabajo, es el desarrollar un tutorial de material diddctico para la asignatura
de teorfa de redes en la facultad de ciencias de la UNAM, en este capitulo se presentan los
conceptos b4sicos y fundamentales de las teorfas de redes y de graficas asi como los modelos
matem4ticos relacionados con las teorfas referidas.
1.1 Antecedentes
La teorfa de redes es una herramienta matemética muy ttil en la modelacion de diversos
fenémenos naturales y sociales. Esta materia comenz6 a desarrollarse a principios del siglo
XVII a partir de la siguiente situacién: la antigua ciudad universitaria de K6nigsberg era
atravesada por un rio en el cual habia dos islas dividiendo la ciudad en cuatro partes, las cuales
estaban unidas a través de siete puentes. Una imagen de lo que seria la ciudad se muestra en la
figura 1.1.
Figura 1.1 Ciudad de Kénigsberg y sus 7 puentes
Fuente: Cured, 1989.
Capitulo 1. Teoria de Redes
En aquella época se discutia la posibilidad de planear un paseo, que permitiera visitar las cuatro partes de la ciudad, atravesando todos sus puentes exactamente una vez concluyéndolo en el mismo lugar donde habia comenzado. Se realizaron innumerables pruebas que condujeron a la
conclusién de que dicho recorrido era imposible; sin embargo no fue sino hasta 1735 que el matematico suizo Leonar Euler estudié el problema y lo demostré bajo un modelo matematico.
Euler represent6 cada una de las partes de la ciudad por un punto y cada puente con una recta,
obteniendo asi una grafica similar a la de la figura 1.2. Después de un razonamiento que esta
fuera del alcance de este trabajo logr6é resolver el problema (conocido como “El problema de los puentes de K6nigsberg”) y fund6 las bases para resolver problemas similares.
Figura 1.2 Modelo matematico desarrollado por Euler para el estudio del problema de los 7 puentes de
yy
D A partir de esta modelacién se logr6é que varias disciplinas utilizaran este recurso grafico para representar diferentes fendmenos, por ejemplo en 1789 William Higgins utilizé puntos y rectas para mostrar tres de los 6xidos de nitrégeno (quimica). En las ciencias sociales también se utiliz6 este recurso para representar la relacidn entre personas, paises, conceptos u otros sujetos de comparacién; para un esquema de esta naturaleza se considera la modalidad en Ja grafica de darle direcci6n a las rectas, implicando con esto la preferencia de una persona por otra.
Cada una de las diferentes situaciones que se han esbozado y muchas més pueden ser representadas bajo un modelo de puntos y rectas, lo cual ha dado lugar a que se realicen innumerables estudios y se desarrollen razonamientos que den respuesta a las interrogantes planteadas. Asi de manera natural surgen diferentes tipos grdficos que sirven de apoyo para resolver problemas tan cotidianos como ,En cuanto tiempo se terminar4 la construcci6n de una casa?, ~Cémo se puede minimizar el costo en la construccién de carreteras que unan a x niimero de poblaciones?, {Un determinado grupo de alumnos puede trabajar en equipo?, etc.
Bajo estas interrogantes surge lo que se ha llamado “teorfa de redes” que es, por asi decirlo, una rama de la teoria de graficas, dado que muchos de los conceptos que se utilizan en 1a teoria
Capitulo 1. Teoria de Redes -
de redes estén basados en resultados andlogos de Ja teoria de graficas. La diferencia entre ellas
radica en que en la teorfa de redes las rectas que unen a los puntos tienen direccién y se les
asocian valores que pueden indicar por ejemplo: costo, tiempo, longitud, capacidad,
preferencia etc. Ademés también los puntos pueden tener valores asociados.
1.2 Conceptos basicos
Son muchas las situaciones que se pueden representar bajo un modelo donde los puntos
representan cosas y las rectas unién entre ellas. Por ejemplo los puntos pueden representar
ciudades y las lineas vias de comunicacién entre ellas; o bien los puntos pueden representar
procesos y las lineas relaci6n entre ellos; también puede ser que los puntos simbolicen personas
y las lineas relacidn entre ellas. Asi lo importante en esta representaci6n es el hecho mismo de
que los puntos estén o no. relacionados. Bajo este marco de ideas surge el concepto de grafica
que queda asentado en la siguiente definicién:
Grafica: Una grafica G=(X, A) es un conjunto finito no vacio de objetos x), X2,.... Xr» llamados nodos
el cual es denotado por X y un conjunto de lineas: a,, a), ..., a, denotado por A, las cuales
unen a todos 0 a algunos de Jos elementos de X.
Un ejemplo claro de una grAfica es el de Ja figura 1.2. En el caso del problema de los puentes
de Kénigsberg no importa cémo se recorra cualquiera de ellos para Hevar a cabo el paseo; esto
significa en términos del modelo grafico que las lineas de la grafica no tienen orientacién.
Existen varios tipos de grAficas, las cuales son las siguientes:
Grafica no dirigida.
Grafica dirigida.
Grafica parcial. Subgrafica.
Multigréfica. Gréfica completa. Grafica simétrica.
Grafica fuerte.
Rea.
Gréficas no dirigidas:
Una grafica no dirigida es aquélla en Ja cual las lineas de A no tienen direccién y se llaman
aristas. (El ejemplo de los puentes es una grafica no dirigida.)
Capitulo 1. Teoria de Redes
Si se tratara de una representacién de carreteras donde la circulacién de los vehiculos no se
permita en ambos sentidos en algunos tramos, es importante dar una “orientacién” a las
aristas. A una modelacién grafica asi se le denomina:
Grafica dirigida: Una grafica dirigida es aquélla en la que las Ifneas de A tienen direccién y se llaman arcos. Un
arco puede representarse como el par ordenado (i, j), donde i, j ¢ X son el nodo inicial y el
nodo final del arco respectivamente.
En este trabajo se manejaran graficas dirigidas dado que las modelaciones que se requieren para
los problemas que se plantean en los capitulos 2 y 3 estén sustentadas en este esquema grafico.
Dada la importancia que tiene el hecho de cémo estén relacionados fos dos conjuntos que
forman una grafica es interesante el estudiar como se relacionan algunos subconjuntos de éstos.
Se puede observar entonces que se pueden obtener incluso otras graficas.
Gréfica parcial:
Dada una grafica G(X,A) una grafica parcial G, de G es la grafica (X,A,) con A,cA. Asi, una
grfica parcial es una grafica con los mismos nodos de G pero solamente con un subconjunto de
arcos de la grafica original.
En la figura 1.3 a) se representa la grafica G y 1.3 b) ilustra una grafica parcial G, de G.
Figura 1.3 Ejemplos de graficas parcial y subgrafica
from 2 to mL 2 J cy - 2N
4. _ 4. 4 6 4 6
yor © roe * 3~ 5 3 5
a) Grafica G - b) Gréfica parcial G, de G
Capitulo 1. Teoria de Redes
1 2 1 2 ~ C - =
AL ~ 4 i (4)
yy ¢ 1
3
c) Subgrafica de G d) Subgréfica parcial del inciso c.
Subgrdfica:
Dada una grafica G = (X, A) una subgrafica G, = es la grafica (X;, As) con Xsc X; y para
cadai € X, As(i) = A(i) m As. Asi que, una subgrafica tiene un subconjunto X, de nodos de la
grfica original pero contiene todos los arcos cuyos nodos iniciales y finales estén ambos en
este subconjunto.
La figura 1.3 c) muestra una subgrafica de la gréfica 1.3 a) con los nodos 1, 2, 3 y 4 y los
arcos que inciden entre ellos.
Subgrdafica parcial: En la figura 1.3 d) se muestra una subgrdfica parcial.
Otro tipo de grficas que se presenta muy frecuentemente en la practica representando sistemas
en ingenieria, sistemas de comunicacién 0 redes carreteras son aquéllas en las que existen
varios arcos en el mismo sentido entre un par de nodos. Esta representacién grafica tiene la
siguiente definici6n:
Multigrdfica:
Son graficas en las que mds de un arco en la misma direccién puede existir entre dos nodos i, j
cA. Si el nimero mas grande de arcos repetidos es s, entonces la grafica es llamada s-grdfica.
En la ingenieria eléctrica las graficas que representan redes eléctricas son casi sin excepci6n, s-
graficas, dado que muchos componentes eléctricos pueden estar en paralelo.
La red de la figura 1.4 ilustra una 3-grafica.
Capitulo 1. Teoria de Redes
Figura 1.4 Ejemplo de 3-grafica
1 —— 3
« 4
Wy 7 a 2 -~——--— me 5
Una forma alternativa, y también muy frecuente, de describir una grafica dirigida es
especificando el conjunto X de nodos y una funcién de correspondencia T, la cual indica c6mo
se relacionan los nodos unos con otros. T' es tlamada “mapeo de X en X” y la grafica generada
asi, se denota como: G=(X, I).
Por ejemplo: Sea X={A, B, C, D, E, F, G}
Sea T de la siguiente forma: T(A)={A, B} T)={A,C} T(B)= {D, E, F, G} T(F)={D, E} C)= {C, F, G} r(G)= 6
T(D)= {A}
Por lo tanto el conjunto X={A, B, C, D, E, F, G} y las correspondencias dadas constituyen
una grafica, la cual se muestra en Ia figura 1.5
Figura 1.5 Grafica generada aplicando Ia funcién "
Bo Ee
ao a“ ™~ a ~~. Ac7 "Gort »: .
wv” wv ~ - \ _- vw ae
y EF
Deo
Capitulo 1. Teoria de Redes
En el caso de graficas no dirigidas la correspondencia I se supone como un caso equivalente al
de una gréfica dirigida, en la que cada arista es reemplazada por dos arcos en direccién
opuesta.
Dada la definicion de (i) como el conjunto de nodos j € X para los que un arco (i,j) existe en
la grafica, es natural el escribir I “G) como el conjunto de nodos k, para los que un arco (k,i)
existe en G. Esta relacién es llamada la “correspondencia inversa”, asi para la grafica de la
figura 1.5, se tiene que:
T(E) = {B, F} I) = {B,C}
Si se supone que la siguiente grafica corresponde a una red carretera, los nodos numerados del
1 al 8 corresponden a diferentes poblaciones por las que se pasa a través de ésta.
Figura 1.6 Ejemplo de un red carretera
1 —— 2 m7 oY 4
a _ /
4 i 6 ' fo
al qe 3 ~ 5 - ~ 8,
Si se supone que se desea conocer por cudles segmentos de carretera se puede llegar al poblado 4 y a cuales se puede llegar saliendo del poblado 6. Se puede observar que se puede llegar al poblado 4 por los arcos (1,4) y (3,4); y se puede Ilegar a los poblados 2, 7 y 8, saliendo del
poblado 6, puesto que existen los arcos (6,2), (6,7) y (6,8).
En el modelo gr4fico la respuesta a estos planteamientos es muy importante y tiene una
definici6n sumamente sencilla:
Sea G=(X,A) una grAfica dirigida.
Predecesores:
Se llaman predecesores de ic X a todo nodo jeX tal que existe (j,i)eA.
Capitulo 1. Teoria de Redes
Sucesores: Se llaman sucesores de ic X a todo nodo jeX tal que existe (i,j)eA.
Se observa entonces que las respuestas a los planteamientos hechos corresponden a identificar
los predecesores de 4 y los sucesores de 6.
Conocer cual es el nimero de predecesores o de sucesores también es un concepto importante y
existe notacién para determinar cada caso, asi que la siguiente definicién puntualiza este
concepto e integra dicha notacién:
Grados de un nodo:
Sea G =(X,A) una grafica dirigidae i, j ¢ X:
El grado exterior de i denotado por g*(i) = al nimero de arcos tales que tienen a i como
extremo inicial.
e= |{ a=(i,j) eA,j eX} 1 = Ir *@ |
E]| grado interior de i= g(i) = ntmero de arcos tales que tienen a i como extremo final.
g@= |{a=Gi) eA, jeX}1= Ir@ |
Considerando la red de la figura 1.7 pagina 10, tenemos que:
g*(5)= |r*6) |=1 g(5) = IP) |=3
Es claro que la suma de los grados interiores o exteriores de todos los nodos es igual al nimero total de arcos de G, es decir:
=") = x g(i) =m
donde n es el nimero total de nodos y m el nimero total de arcos de G. Para una grAfica no dirigida G{ X,I’ ) el grado de un nodo es definido similarmente por g(i) =
Ii), y para evitar confusiones sera escrito como g(i).
Continuando con la grafica de la figura 1.6, se supone que ahora se quiere determinar una forma de Ilegar del poblado 1 al poblado 7. Si se sigue la secuencia de segmentos de carretera (1,2), (2,5), (5,6), (6,2), (2,7) se observa que se logra Iegar al lugar indicado. Este también
es un concepto sumamente importante llamado:
Capitulo 1. Teoria de Redes
Camino:
Un camino en una grafica dirigida es una secuencia de arcos donde el nodo final de uno es el
nodo inicial del siguiente en la secuencia.
Considerando la red de la figura 1.6 las secuencias de arcos
a) (1,4), (4,5), (5,0, (6,8) b) (1,2), (2,5), (5,6), (6,2), (2,7) c) (1,2), (2,5), (5,6), (6,2), (2,5), (5,8) son ejemplos de caminos.
Existen diferentes tipos de caminos y esta clasificacién se da a partir de las veces que se pase
por un arco y por un nodo; es decir si se observa la secuencia de arcos de los puntos a) y b) se
observa que ningtin arco se repite. A este tipo de camino se le llama:
Camino Simple: Un camino simple es en el que no se usa el mismo arco més de una vez.
Si se observa el camino del ejemplo b) se puede notar que atin cuando no se repitid ningdn
arco, si se repitié el nodo 2, en algunos casos se requiere que no se dé esta situaciOn. Este tipo
de caminos, en los que no se repinten nodos se les llama:
Camino Elemental: Un camino elemental es en el que no se usa el mismo nodo mas de una vez. Asi el camino a) es
elemental pero los caminos b) y c) no lo son.
Es claro que un camino elemental es siempre un camino simple, sin embargo lo contrario no
siempre es cierto. Por ejemplo el camino b) es un camino simple pero no es elemental. La
cadena a) es simple y elemental y la cadena c) no es ni simple ni elemental.
Se supone ahora que se puede considerar cualquier arco no importando su direccién, para ir de
un nodo a otro; en términos del ejemplo de la red carretera suena poco légico, pero en algunos
problemas de flujo que se plantean en el capitulo 3 se vera que esto tiene sentido si se piensa en
términos de “regresar” por ese arco. Este tipo de “caminos” reciben un nombre especial y
quedan determinados por la siguiente definicién:
Cadena: Una cadena es, en graficas no dirigidas, lo equivalente a un camino y aplica a graficas dirigidas
no considerando la direccién de los arcos. Asi una cadena es una secuencia de aristas o nodos.
Considerando 1a figura 1.6 las secuencias:
d) (1,2), (2,4), (4,3), G,5)
e) (1,3), (3,5), (5,2), (2,6), (6,5), (5,8)
f) (1,4), (4,5), (5,2), (2,6), (6,5), (5,2), (2,7) Son ejemplos de cadenas.
Capitulo 1. Teoria de Redes
Grafica Fuertemente conexa:
Una grafica se dice que esta fuertemente conectada o que es fuerte, si para cualesquiera dos
nodos distintos i, j, existe al menos un camino de ia j.
En Ja seccion 1.1 se mencioné que la teoria de redes es una rama de la teoria de graficas; ahora
se explica en qué consiste la separacién de estas materias. La teorfa de graficas generalmente se
desarrotla sobre modelos gr4ficos donde los nodos y las aristas o arcos no tienen parametros
asociados, es decir, no se les aplica ninguna ponderacién. Sin embargo los problemas de rutas
mas cortas y los de flujos que se tratan en este trabajo si tienen asociados valores en los arcos y
en algunos problemas de flujos se pueden asociar valores a los nodos.
Asi todas las graficas que tengan algin valor de ponderacién sobre sus arcos 0 sobre sus nodos
caen dentro del estudio de la teoria de redes. Esto conduce a la siguiente definicion:
Red: Una red R=(X,A,C) es una grafica (X,A) con una funcién C del conjunto de arcos (0 de los
nodos) a los reales que define una ponderacién asociada a cada arco (0 nodo).
A la funcién C se le asocian los valores c,, lo que significa que es el valor asociado al arco que
tiene como nodo inicial y final i y } respectivamente; este nimero puede representar peso,
longitud o costo.
1.3 El problema de rutas mas cortas
El problema de rutas mds cortas surge de preguntas tan sencillas como (1) ,Qué camino se debe
tomar para llegar lo mas pronto posible de un lugar a otro?, 0 (2) ;Qué carreteras construir
para unir a x ntimero de poblaciones minimizando los costos ? En ocasiones, cuando las
opciones son pocas, resolver el problema es sencillo, sin embargo éste se complica cuando se habla por ejemplo, de una linea aérea que requiere conocer las rutas de navegaci6n entre todo par de ciudades donde presta servicio de manera que minimicen sus costos 0 sus tiempos de
vuelo (3).
Las respuestas a estas interrogantes no son triviales por lo que se han desarrollado muchas herramientas para encontrar soluciones 6ptimas a problemas de esta naturaleza. Por ejemplo Dijkstra desarroll6é un algoritmo considerado como el mAs eficiente para resolver problemas del
tipo i y 2 que se plantearon arriba; sin embargo este algoritmo, que lieva su nombre, esta
sujeto a ser aplicado solamente en redes con costos no negativos asociados a los arcos; esto es una limitante cuando la modelacién de algtin problema implique costos negativos en los arcos por esta razén otro grupo de investigadores desarrollaron otro algoritmo, Hamado “General”
12
Capitulo 1. Teoria de Redes
porque se aplica a redes en general, que resuelve estos mismos tipos de problemas pero sin restringir el tipo de costo asociado a los arcos de la red. Para resolver los problemas del tipo 3
existen varios algoritmos eficientes, entre ellos se pueden nombrar los desarrollados por Floyd,
y por Dantzing. Este altimo se aplica generalmente a redes con costos no negativos o en redes
donde se tenga la seguridad de que no existan circuitos negativos.
1.4 Los problemas de flujos
Los problemas de flujo son ejemplos que se pueden representar muy naturalmente en redes, de hecho casi siempre se refieren a redes carreteras, a redes de comunicacién o a la red de bombeo de agua, etc. Cada uno de estos son claros ejemplos de diferentes situaciones que
pueden modelarse graficamente para plantear diferentes problematicas. Por ejemplo, en una red
carretera se desea conocer cudntas y dénde colocar casetas de cobro de forma que todos los
automovilistas paguen al menos una vez; en una red que simbolice procesos se desea conocer
cual puede ser la produccién méxima por dia.
A diferencia de los problemas de rutas mas cortas los problemas de flujos tienen una extensi6n extraordinaria. Existen muchas situaciones que se pueden representar bajo algin modelo de
flujo. De hecho los problemas de ruta mds corta se pueden considerar como un problema muy
especifico de flujo.
Dada la diversidad de aplicaci6n de este modelo matemético es l6gico imaginar que existe un
sin fin de herramientas que permiten resolver situaciones de diversas indoles, sin embargo los
modelos mas sofisticados de flujo en redes, parten de un problema basico que se puede plantear
de la siguiente forma: Se supone que se tiene una red hidrdulica que trata de abastecer la
maxima cantidad de liquido de la planta generadora a una ciudad cualquiera, el tendido de la red tiene diferentes intersecciones para llegar a la ciudad y las tuberias tienen diferentes
capacidades de conduccién del liquido. Se desea conocer la cantidad maxima de liquido que puede ser enviada a través de la red desde donde se genera hasta la ciudad especifica. El obtener este dato permitira resolver si se lograra abastecer la demanda de la ciudad, es decir si
lo que se envia es mayor o por lo menos igual a lo que se requiere en dicha ciudad.
Existen muchos algoritmos que resuelven este tipo de problemas, pero el que se considera mas
eficiente es el desarrollado por Ford y Fulkerson.
Otro modelo de flujo en redes que es muy comin en muchas situaciones es aquel en el que
conductos de flujo (los arcos ) tienen asociado, ademas de la restricci6n de capacidad, un costo por unidad de flujo. Asi la problematica que se plantea ahora es cémo obtener la mAxima
cantidad de flujo minizando el costo. Para este tipo de problemas también se han desarrollado
varios algoritmos que los resuelven, entre ellos estén el Hamado primal (haciendo una analogia
13
Capitulo 1. Teoria de Redes
con los términos de programacién lineal dado que parte de una solucién factible hasta obtener
una Optima.) El Dual que parte de la optimalidad hasta legar a la factibilidad y finalmente el
algoritmo Primal-Dual (Out-of-kilter) que combina en diferentes fases ambas técnicas para
obtener una soluci6n 6ptima.
14
Capituio 2. Rutas mas Cortas
En este capitulo se desarrolla la teoria de los modelos de rutas mds cortas y los métodos de
solucion relacionados con ellos. Se inicia presentando el problema basico de rutas més cortas
conocido como el de ruta mas corta de un origen a un destino. Se presenta el planteamiento del problema de localizar una ruta més corta de un origen a todos los nodos. Se indican las
propiedades que debe tener una red para que se pueda obtener una solucién 6ptima en ambos casos. Mas adelante se plantea del siguiente problema que es el de encontrar la ruta mas corta entre todo par de nodos. Finalmente en la seccién métodos de solucién se dan los algoritmos
para resolver estos tres tipos de problemas.
2.1 Ruta mas corta de un origen a un destino
Para explicar la problematica de Ia teoria de las rutas ms cortas, aqui se empieza planteando
el problema més simple, que es el de la ruta mas corta de un origen a un destino. Para este
problema se establecen las condiciones necesarias para la existencia de soluci6n.
E] problema basico de rutas més cortas es el de encontrar la ruta de longitud mas corta de un
nodo origen o a un nodo destino d.
La red asociada con este problema se denota: R=(N,A,J, donde:
N es el conjunto de nodos
A es el conjunto de arcos y 1 es una funcién de! conjunto de arcos a los reales que define la longitud asociada a cada
arco.
Asi dada una red en la que cada arco (i,j) tiene asociado el parametro Jjj, la longitud de la
ruta se define como: “La suma de las longitudes de los arcos en la ruta”.
15
Capitulo 2. Rutas mas Cortas
Se considera el siguiente ejemplo: Una ciudad cuenta con una Estacién de Bomberos que ha
hecho un convenio con una ciudad vecina para prestarle servicio en caso de emergencia. Las
dos ciudades estén enlazadas por varias carreteras que se interceptan unas con otras. Los
dirigentes de ambas ciudades necesitan conocer por cuéles carreteras debe conducir el chofer
dei camién de Bomberos para llegar lo mas pronto posible de la estaci6n a la otra ciudad. La
red asociada con este problema se muestra en la figura 2.1.
En Ja red de Ja figura 2.1, el nodo 1 indica Ja sede de Ja estacién y el nodo 14 la ciudad
donde se prestara el servicio en caso de requerirlo; los nodos dei 2 al 13 son las intersecciones de las carreteras y los arcos son segmentos de carretera entre las
intersecciones. Cada longitud J, representa el tiempo estimado que lleva el atravesar el
segmento de carretera que va de la intersecci6n i a Ja j.
Entonces el problema es encontrar la ruta m4s corta en tiempo, del nodo 1 (estacién) al nodo
14 (ciudad vecina).
Figura 2.1 Red asociada con el problema de !a estacién de bomberos.
(3). aan (2)
nN ’ 4 . {4) gv!
° ®@ ay @ @) Ai
vw 2 " v8 2) M ) Y @ ” Y
2 w& 3 a. 4
1 oO 75 @ 42° Om aq w icaaes
Y 4 Y @w 4 2 & (2) OM a>
3 (4) v- (2)
a AC) 4) % nn) <-
43 , Y 2) x 10° QB)
Es importante notar que en el modelo de red dependiendo del contexto del problema la longitud
asociada a los arcos se puede entender con un significado diferente, es decir, se le da una interpretaci6n especial. Por ejemplo; en el caso de los bomberos se interpreta la longitud de los arcos como unidad de tiempo; esto es, se desea conocer la ruta que minimice el tiempo de
recorrido entre una ciudad y otra. En otros problemas, se podria requerir la ruta més econdmica y entonces las longitudes de los arcos corresponderian a unidades de dinero.
16
Capitulo 2. Rutas més Cortas
Otra observacién importante es que generalmente las longitudes J, no siempre son iguales a las
I,, ¥ en algunos casos los nodos i y j no estan conectados en ambas direcciones.
En términos del ejemplo, esto significa que no existe un segmento de carretera en el que se pueda circular en ambos sentidos o que el tiempo de recorrido del poblado i al poblado j es diferente al recorrido del poblado j al i.
Una consideracién importante también es el hecho de que no siempre existe una solucién al
problema de ruta mas corta; esto se da en dos circunstancias:
1. Cuando no existe un camino del nodo origen al nodo destino y 2. Cuando existe un circuito negativo en la red y éste forma parte de la ruta que une al origen
con el destino.
Para el caso 1 es claro que no exista alguna solucién, por lo que a continuacién se explica el caso 2 de cémo afecta la existencia de un circuito negativo en la bisqueda de una solucién en el
modelo de rutas mas cortas.
Parece natural pensar que las longitudes en la red sean consideradas como cantidades no
negativas, sin embargo existen problemas en los que estas longitudes representan costos
negativos, por ejemplo descuentos, ahorros o pérdidas. Por esta razén el problema de rutas mds
cortas puede generalizarse para cualquier tipo de red.
En la figura 2.2. se presenta una red con circuito negativo.
Figura 2.2 Red con un circuito negativo.
ene oe ee ee 7
¢ 2 6) » 1 @) — e m 5 (4)
wT wo .
.o Vy e re ‘. tooo 3 —e
wv 4 v~ ft 7 ) a 8) 7 é 6° Aa)
o “>
a! aa ' 4 a ey cee 9
En la red de la figura 2.2 se forma un circuito con los nodos 6, 8 y 5.
7
Capitulo 2. Rutas mas Cortas
Este circuito tiene la caracteristica de que su longitud total es negativa, es decir 4 + O + (-5) = -1, asi que si se desea encontrar la ruta de mas corta de 1 a 10, y se considera como una solucién factible, la ruta: 1, 3, 6, 8, 5, 6, 9, 10; de longitud 6 existe una ruta mejor si se vuelve a incluir este circuito en la ruta, esto es, si la ruta ahora es: 1, 3, 6, 8, 5, 6, 8, 5 6, 9, 10, la cual tiene una longitud de 5, es decir 6 -1 (donde -1 es la longitud del circuito negativo).
Este ejemplo conduce a la siguiente conclusién:
Si se considera en la ruta un circuito negativo un nimero M de veces (M > 0), Ja longitud de la ruta sera: L+qM, donde L es la suma de las longitudes de los arcos fuera del circuito negativo y q es el valor de éste. Por lo tanto si M se hace tan grande como se desee, la longitud de la ruta tiende a menos infinito; cuando se dan estos casos se dice que la solucién del problema es “no acotada”.
Bajo este orden de ideas se puede decir que para modelar problemas en términos de red donde se desee resolver problemas de rutas m4s cortas, se puede caer en alguno de estos casos:
Cuando todos los arcos tienen longitudes no negativas. Algunos arcos tienen longitudes negativas pero no forman circuitos negativos. Se presentan uno o mas circuitos con longitud negativa.
Cabe sefialar que el concepto de circuitos negativos en las redes es muy importante tanto en este modelo de ruta mas corta (de un origen a un destino), como para los otros modelos que se estudian més adelante en este mismo capitulo y en los problemas de flujo que se exponen en el capitulo 3.
Con todo esto en mente se debe destacar que los métodos de solucién que se plantean en este capitulo, estan basados en el modelo de rutas mAs cortas que se desea resolver y en el tipo de restricciones que tenga la red.
2.2 Ruta mas corta de un origen a todos los nodos
Continuando con el ejemplo de la estacion de bomberos, ver la red de Ja figura 2.2. Se supone que los nodos del 2 al 13 no s6lo son intersecciones de Jas carreteras, sino que corresponden a poblados entre las dos ciudades donde se presta el servicio de Bomberos.
El director de la Estacién considera que ahora que si presta sus servicios a esta ciudad, podrian también auxiliar a los poblados que las unen. Para ello es necesario conocer la forma de llegar 1o mas pronto posible de la Estacion de Bomberos a cada uno de los poblados. En este caso la soluciOn consiste en conocer las rutas m4s cortas de la Estacion a cada uno de ellos.
En este caso se observa que para que el problema tenga soluci6n es necesario que:
18
Capitulo 2. Rutas mas Cortas
Exista por lo menos una ruta de la Estacién a cada uno de los poblados,
Que no exista un circuito negativo en la ruta de Ja Estacién a algin poblado.
En este ejemplo no se puede dar el caso 2, porque las longitudes asociadas a los arcos son todas
no negativas.
Hasta ahora se han introducido dos de los problemas de rutas més cortas, sin embargo, antes de continuar con el tercero, se deben incorporar algunas definiciones y teoremas de Teoria de Graficas que son sumamente importantes en el desarrollo de los métodos de solucién que se
expondran mas adelante.
2.2.1 Propiedades de las soluciones
Un concepto desarrollado en la teoria de graficas, en el que se basan algunas de las propiedades
de las soluciones de los problemas de rutas mas cortas es el de “Arbol”.
En términos generales, un Arbol es una grafica que tiene ciertas cualidades, las cuales permiten
literalmente plantear varias definiciones de arbol, que son equivalentes entre si. Antes de
puntualizar las caracterfsticas de un arbol, es necesario conocer algunas propiedades de graficas
que permiten demostrar las equivalencias de las definiciones que se daran.
La primera proposicion que a continuacién se enuncia, analiza el efecto de agregar una arista a una grafica.
Proposicion 1:
Sea G = (X,A) una grafica. Se supone que se agrega una arista a = (i,j) a la grafica G.
Entonces:
i) El namero de componentes conexas de G disminuye una unidad si los extremos de a
pertenecen a dos componentes conexas distintas. En este caso la arista a no pertenece a ningtin
ciclo de la grafica G' = (X,A U {a}).
ii) El nimero de componentes conexas de G permanece igual si los extremos de a pertenecen a
la misma componente conexa. En este caso, la arista a pertenece a un ciclo de la grafica G' = (X,A U {a}).
Demostracién
i) Sean G, = (X,,A,) y G, = (%,,A,) dos componentes conexas distintas de G, tales que
xeX, y yeX,. Entonces la grafica GJUG, = (X, U X,, A,U A,U{a}) es una componente
conexa de G'. Sean x,y dos nodos de X, U X, como G, y G, son graficas conexas, se tiene
19
Capitulo 2. Rutas mas Cortas
que: Si x y y pertenecen ambos a X, (0 a X,), entonces existe la cadena (x=X,,X,X5,.-.,%,=Y)
que unen a x con y en G, (0 en G,) y por lo tanto en G'.
Six ¢X, y y eX, entonces existen la cadena (x = X,,X),....X, = i) que une a x con i en G, y
la cadena (j = Y1,Ya.---.¥i1= ¥) que une j con y en G,. Entonces (x = X,,X),....% = i,j =
Ys,Yoo-»-.¥;= ¥) es una cadena que une a x con y en G'. Si yeX, y xeX, el razonamiento es
andlogo. Se supone que a pertenece a un ciclo de G’. Sea (i =i,,,...,.1, = j, i) este ciclo de G'. Esto es una contradiccién puesto que i y j pertenecen a componentes conexas distintas de
G. por lo tanto a no pertenece a ningtin ciclo de G'.
ii) Si i y j pertenecen a Ja misma componente conexa, entonces G y G' tienen Jas mismas componentes conexas. Por otro lado, existe la cadena (i=i,,i),...,i,=j) que une a i con j en G. Entonces (i=i,,i),...,j,=j,i) es un ciclo en G' que contiene a Ja arista a.
La segunda proposicién que a continuacién se enuncia, relaciona el niimero de arcos con el
numero de nodos en un grafica.
Proposicién 2
Sea G = (X,A) una grafica con n nodos y m aristas.
a) Si G es conexa entonces m > n-]
b) Si G es aciclica entonces m <n-1
Demostracion
Se supone que se construye la grafica G= (X,A) agregando una a una, sus aristas a la grafica
Gg = (X,®) que consiste de n componentes conexas.
Se observa que cada vez que se agrega una arista, el nimero de componentes conexas
disminuye a lo m4s en una unidad. Por lo tanto, para obtener la grafica conexa G a partir de la grafica Go con n Componentes conexas se necesita agregar, al menos n-1 aristas.
Es inmediato que toda grafica parcial de G por como se esta construyendo es aciclica, entonces
cada vez que se agrega una arista, el nimero de componentes conexas disminuye exactamente
en una unidad. Dado que G tiene, al menos, una componente conexa se concluye que el niimero de aristas que hay que agregar es a lo més n-1.8
Con estas proposiciones en mente se define ahora la estructura bdsica para modelar los problemas de rutas mas cortas asi como sus propiedades.
Arbol
Un arbol es una Grafica G = (X,A) que cumple con las siguientes propiedades: Es conexa y aciclica. En la figura 2.3 se muestra un ejemplo de una grafica que es drbol
20
Capitulo 2. Rutas mas Cortas
Figura 2.3 Ejemplo de Arbol
“So——@
Caracterizacién de arboles Un 4rbol tiene muchas propiedades importantes que permiten definirlo de diferentes maneras, en el siguiente Teorema 1 se plantean estas diferentes definiciones. Ademas estas propiedades de los arboles proporcionan herramientas sumamente ttiles para un concepto andlogo en redes que es el de arborescencia el cual es el modelo grafico que esta intimamente relacionado con los métodos de solucién que se exponen mas adelante. A continuacién se plantea el teorema 1. La demostracién de este teorema se realiza con base en los postulados 1 y 2 sefialados
anteriormente.
Teorema 1.
Sea G = (X,A) una grafica con n nodos y m aristas. n = 2. Los siguientes postulados son
equivalentes y caracterizan un Arbol:
a) Ges conexa y aciclica. b) G es conexa pero deja de serlo si se elimina una _arista.
c) En G existe una tnica cadena entre todo par de nodos.
d) Ges conexa y tiene n-1 aristas.
e) Ges aciclica y tiene n-1 aristas. f) Ges aciclica y si se agrega una arista se forma exactamente un ciclo.
Demostracién: a>b
Por hipétesis G es conexa y aciclica. De la proposicién 2 se obtiene que G tiene n-1 aristas.
Sea a una arista de G, Sea G'= (X,A -{a}).
E] namero de aristas de G' es n-2. por Jo tanto G’ no es conexa.
boc
Por hipdtesis G es conexa y deja de serlo si se elimina una arista. Siendo G conexa, existe al
menos una cadena entre todo par de nodos. Se supone que entre los nodos x y y existen, por lo
21
Capitulo 2. Rutas mas Cortas
menos dos cadenas que los unen. Sean c, y c, dichas cadenas. Si a es una arista de c, que no
esté en c,, entonces la grafica G'= (X,A-{a}) es conexa, lo cual contradice la hipétesis. Por le tanto se concluye que existe una tinica cadena entre todo par de nodos.
c => d Por hipotesis existe en G una tnica cadena entre todo par de nodos. Que en G exista una cadena entre todo par de nodos implica que G es conexa. Por la Proposicién 2 se tiene que
m 2 n-l. Si se supone que m > n-1 entonces existe en G al menos un ciclo. Sea éste de la
forma: (X,,%),..-,X;,X;), entonces existe en G dos cadenas que unen al nodo x, y al nodo x, a
saber (X,,Xz,-.-X;) y (X;,X)), lo cual es una contradiccién, por lo tanto m = n-1.
d = e Por hipétesis G es conexa y tiene n-1 aristas. De Ja hipétesis se desprende que G tiene n-1 aristas. De la proposicién 2 se tiene que G es aciclica porque el ndmero de aristas es n-1.
e => f Por hipétesis G es aciclica y tiene n-1 aristas. Que G es aciclica se desprende de la hipotesis. Infiriendo que a= (x,y) se agrega a G, entonces, G'=(X,A') donde A'=AU {a} tiene
n aristas y por la proposicién 2 G' tiene por lo menos un ciclo. Supéngase que G' tiene al
menos dos ciclos. Sean éstos (K = X,,X),....X,= Y, X) ¥ (K = Y).¥o,--.5¥, = Y, X); entonces
(K=X),Xa.-X) = Y = VeoVepVage--s¥is=X) eS un ciclo que no contiene a la arista a y por lo
tanto esta contenida en G, lo cual contradice la hipédtesis. Por lo tanto G' tiene exactamente un
ciclo.
f > a Por hipétesis G es aciclica y si se agrega una arista se forma exactamente un ciclo. De
la hip6tesis es inmediato que G es aciclica. Suponiendo que G no es conexa entonces existen, por lo menos dos nodos para los cuales no existe una cadena que Ios une, sean éstos x y y. De aqui que x y y estén en dos componentes conexas distintas entonces G' = (X,A U {(x,y)}),
por la proposicién 1, es aciclica. Sin embargo esto contradice la hipétesis. Por lo tanto G es conexa.
Una vez expuestas las caracteristicas de arbol es importante saber que se puede obtener un arbol a partir de una grafica conexa cualquiera. Esta propiedad se plantea con la siguiente definicion.
Arbol expandido:
Sea G = (X,A) una grdfica no dirigida, un arbol expandido de G es una grafica parcial G' =
(X,A'), donde A' CA y G' es Arbol.
22
Capitulo 2. Rutas mas Cortas
Figura 2.4 Ejemplo de cémo obtener un 4rbol expandido de una grAfica
SL ao | : “7 Ae ae ~
os =~ oN
“3 6 a)
a 1. 4) ~
go 6 >)
En este ejemplo, la figura 2.4 b) es una arbol expandido de la grafica 2.4 a).
Como se puede observar, hasta ahora se han planteado definiciones y teoremas que son
aplicados Gnicamente a graficas no dirigidas. Esto se debe a que dichas definiciones y teoremas
son las bases que fundamentan definiciones andlogas para graficas dirigidas.
A continuacién se dan algunas definiciones y teoremas validos sdélo en graficas dirigidas; las demostraciones de los teoremas que se plantean, estén sustentados en Ja caracterizacién de
Arbol que se planteé anteriormente.
Raiz:
Sea G = (X,A) una grafica dirigida y o € X tal que existe un camino de 0 a x para todo x €
X, entonces a o se le Hama raiz de G.
Una analogia de esta definicién es el ejemplo de la estacin de bomberos que se presento en la
seccién 2.2, donde se desea conocer la ruta mas corta de la estacién de bomberos a cada uno de
los poblados, se requiere para encontrar una solucién, que la estacién de bomberos sea raiz de
la red.
Una grafica especial que contiene una raiz se define a continuacié6n:
Arborescencia:
Una arborescencia es un Arbol que tiene raiz.
23
Capitulo 2. Rutas m4s Cortas
La figura 2.5 muestra un ejemplo de arborescencia:
Figura 2.5 Ejemplo de arborescencia
En una arborescencia el camino de la raiz a cada nodo es tinico, por lo tanto se tiene que
determinar la arborescencia de rutas més cortas.
Arborescencia de rutas mas cortas:
Dada una red R = (N,A,J. Una arborescencia de rutas mas cortas de R es aquélla que la
Gnica ruta de o a x, para todo x €N, es una ruta mas corta deoa x.
Al igual que en la definicién de arbol existen ciertas propiedades equivalentes que caracterizan
a una arborescencia, El teorema 2 que se establece enseguida proporciona dichas propiedades.
Teorema 2
Sea G==(X,A) una grafica con n nodos, n22. Los postulados siguientes son equivalentes y
caracterizan una arborescencia:
a) G es conexa, g-(o) = 0 y g(x)=1, para todo nodo x #0.
b) G es aciclica, g-(0)= 0 y g-(x)=1 para todo nodo x #0.
c) G tiene como raiz ao y es aciclica. d) G tiene como raiz ao y posee n-1 arcos.
e) G es un Arbol y tiene un nodo o que es raiz.
f) Para todo nodo x existe un inico camino de 0 a x.
g) G tiene un nodo o que es raiz y si se elimina un arco entonces ya no es raiz.
Demostraci6n:
a => b Por hipétesis G es conexa y tiene n-1 arcos puesto que g(0)=0 y g-(x)=1 para todos x
# o. Entonces, G es un 4rbol y por lo tanto es aciclica.
b > c Por hipétesis G es aciclica y g-(0)=0 y g-(x)=1 para todo x # 0. Suponiendo que 0 no
es raiz entonces existe un circuito en G puesto que g-(x)=1 para toda x # 0. Sin embargo, esto
contradice la hipdtesis, por lo tanto o es raiz de G.
24
Capitulo 2. Rutas mas Cortas
c => d Por hipétesis G tiene como raiz a o entonces es conexa ademés es aciclica y por lo tanto es un 4rbol lo cual implica que tiene n-1 arcos.
d => e Por hipétesis G tiene a o como raiz lo cual implica que G es conexa y ademas posee n-1
arcos y por lo tanto es un 4rbol.
e => f Por hipétesis G tiene a 0 como raiz y es un Arbol. Debido a que o es raiz, existe un
camino de o a x, x ¢ X. Suponiendo que existen dos caminos de o a x, entonces existe un
ciclo esto sin embargo, contradice la hipétesis de que G es un 4rbol. Por lo tanto el camino de
0 ax es tinico.
f > g Por hipdtesis existe un tinico camino de 0 a x para todo nodo de X. Esto implica que 0
es raiz.
Se tiene que a=(x,,x,) es un arco de G. Sea G'=(X,A-{a}); por lo tanto se infiere que o también es raiz de G', entonces existe un tnico camino de o a x para todo x en G’, en
particular para x,, este camino, sin embargo no contiene al arco a. Por otra parte, también debe existir un camino de 0 a x,, luego entonces este camino y el arco a forman un camino de 0 a x;;
esto implica que existen dos caminos distintos en G de 0 a x,, lo cual es una contradiccién con
la hipétesis. Por lo tanto si se elimina un arco de G, o deja de ser raiz.
g = aPor la hipétesis se concluye que G es conexa. Supdéngase ahora que g°(o) = 0,
esto indica que existe un arco a = (x,0); esto significa que existe un camino de o a x, puesto que o es raiz, entonces si el arco a = (x,0) es eliminado, o contimta siendo raiz, lo cual es una
contradiccién con la hipdtesis, por lo tanto g-(0) = 0.
Por otra parte como o es raiz g(x) 2 1 para todo x # o. Supéngase que g-(x)> 1, por lo tanto
existen por lo menos dos arcos de la forma a,=(%;,X) y a. =(X;,x). Si se suprime alguno de estos
arcos 0 continiia siendo raiz de G pero es una contradiccién a la hipétesis, por lo tanto g-(x)=1
para todo x distinto de o.™
Bajo éste modelo matematico de arborescencia, se puede afirmar que la solucién al problema de encontrar la ruta mas corta de la estacién de bomberos a cada uno de los poblados, consiste
en encontrar la arborescencia de rutas més cortas de la red, con raiz en la ciudad donde esta la
estaci6n.
25
Capitulo 2. Rutas mas Cortas
2.3 Ruta més corta entre todo par de nodos
Continuando con los planteamientos considérese otro problema, el cual es un caso general de los dos anteriores; éste consiste en encontrar Ja ruta mas corta entre todo par de nodos.
Se puede pensar en la posibilidad de encontrar dichas distancias determinando las arborescencias de rutas mds cortas considerando cada vez a un nodo distinto como raiz. Sin
embargo, en la practica esto es poco eficiente, por tal razén se han estudiado métodos alternativos para resolver éste problema.
2.4 Métodos de solucién
En los textos especializados se pueden encontrar métodos muy variados para obtener soluciones
a los problemas que se han planteado en las secciones anteriores; de éstos métodos se han seleccionado los que se consideran mas eficientes para resolver cada uno de los problemas.
El primer método que se presenta resuelve e] problema de rutas mds cortas en redes con costos
no negativos; este método fue desarrollado por Dijkstra (1959) y es el mas eficiente en su
género. Los problemas que se pueden resolver con este algoritmo son Ios de ruta mas corta de
un origen a un destino y el de arborescencia de rutas mAs cortas.
EI siguiente método que se plantea se llama General; se ha nombrado asi porque es aplicable a
redes con costos de cualquier tipo. Resuelve los mismos problemas que el anterior.
Los siguientes dos métodos que se plantean fueron desarrollados uno por Floyd y el otro por
Dantzing. Ambos se especializan en resolver el problema de rutas mas cortas entre todo par de
nodos. Los dos algoritmos pueden resolver el problema en redes con costos reales. La
diferencia entre ellos es que el algoritmo de Floyd determina cuando en la red existe al menos
un circuito negativo, mientras que el algoritmo de Dantzing requiere que la red no posea
circuitos de éste tipo dado que no los detecta.
26
Capitulo 2. Rutas mas Cortas
2.4.1 Ruta mas corta de o a d y arborescencia de rutas mas cortas
2.4.1.1 Algoritmo de Dijkstra
El algoritmo de Dijkstra, como ya se mencioné, est4 desarrollado para ser aplicado en redes
que tienen costos no negativos. El] método se basa en asignar iterativamente etiquetas temporales a los nodos, correspondiendo éstas a una cota superior de la distancia mds corta desde el nodo origen o raiz hasta el nodo etiquetado. En la primera iteraci6n las etiquetas asignadas a cada nodo, distinto del origen o raiz son muy grandes (infinito), mientras que la
etiqueta de éste es cero y permanente. Las etiquetas de los demas nodos se van mejorando en cada iteracién, ademas de ir estableciendo la permanencia de una etiqueta cada vez. EI
etiquetar permanentemente un nodo significa que se ha obtenido la ruta més corta del origen o raiz a él. Dado que la red tiene sdlo longitudes no negativas en sus arcos, siempre puede
encontrarse una ruta mas corta del origen o raiz al nodo x que pase sdlo por nodos que tienen etiquetas permanentes. Finalmente si se busca la arborescencia, esta se encuentra una vez que
todos los nodos tengan etiquetas permanentes y las etiquetas de los nodos corresponderan a las
longitudes mas cortas desde la raiz. En el caso que se desee la ruta mas corta de un origen a un
destino, ésta se obtiene cuando se etiqueta como permanente el nodo destino.
Es importante mencionar que el algoritmo determina si el problema no tiene solucién cuando el nodo indicado como raiz no lo es, 0 bien si no existe un camino del origen al destino. Cabe seflalar que no es posible la existencia de circuitos negativos por la restriccién de costos no
negativos en la red.
ALGORITMO DE DIJKSTRA
Objetivo: Proporcionar la arborescencia de rutas mas cortas de raiz o en una red con costos no
negativos en los arcos.
Paso 1.- Inicializacién de etiquetas: Sea (0) = 0, marcar esta etiqueta como permanente.
Sea [(x) = ©, para todo x # 0, considerar estas etiquetas como temporales.
Sea a(x) = X, esta asignacién indicara el predecesor de x en la arborescencia.
Seap =o
Paso 2.- Actualizacion de etiquetas.
Para todo rt que tenga etiqueta temporal, actualizar etiquetas de acuerdo a:
ix) = min {l(x) , Kp) + p,x) }
Si (x) se modifica, hacer a(x) = p.
27
Capitulo 2. Rutas mas Cortas
Sea x* tal que: i(x*) = min {1(x) \ (x) es temporal}.
Si Kx*) = 0, terminar, en este caso no existe arborescencia alguna de raiz o. En otro caso,
marcar la etiqueta /(x*) como permanente,
Sea p = x*
Paso 3.- i) Si sélo se desea la ruta de oad
Sip = d terminar, /(d) es la longitud del camino mas corto de o a d.
ii) Si se desea la arborescencia.
Si todos los nodos tienen etiquetas permanentes terminar; los valores de cada etiqueta
corresponden a la longitud de la ruta ms corta de 0 ax y el conjunto de arcos (a(x),x), x € X
forman la arborescencia de rutas més cortas.
En otro caso ir a 2.
A continuacion se aplica el algoritmo a algunos ejemplos:
Ejemplo 1
Una persona desea disponer de un automévil durante los siguientes 5 afios. Actualmente puede
adquirir una gran variedad de vehiculos con diferentes esperanzas de vida y costos; ademas hay
una gran variedad de planes.
Entre los diferentes planes que encontré ha elaborado la siguiente tabla:
Afio de adquisicién Ao de]Costo de la
Terminaci6n Adquisicién
2000 2001 7 2000 2002 11 2000 2003 10 2001 2002 2 2001 2003 4 2001 2004 12 2002 2003 7 2002 2004 4 2003 2004 5
Esta persona desea obtener la mejor combinacién de compra-venta en el sentido de que el costo
involucrado sea el minimo.
Con los datos de la Tabla se puede generar una red si se considera cada fecha de compra-venta como un nodo, asi el afio 2000 es el nodo 1 y el afio 2004 el afio 5. Los arcos (a,, a,) de la red corresponderdn al posible evento compra-venta en el afio a, y el afio a, ; las longitudes de los
28
Capitulo 2. Rutas mas Cortas
arcos (a,, a,) estén dadas por los costos derivados de la transacci6n realizada del afio a, al afio i 5
aj.
Figura 2.5 Red de transacciones de compra-venta
m %2 wy (10) 2 4 oO. - ne
(1) MT 36" 4&
La red entonces se puede interpretar como sugieren los siguientes ejemplos: Comprar en el afio 1 (2000) vender y comprar en el afio 3 (2002) y vender en el afio 5 (2004). Esta alternativa corresponde a la ruta 1,3,5 la cual conduce a un costo de 11+4 =15, Otra alternativa puede ser: comprar en el afio 1, comprar y vender en el afio 2 y finalmente vender en afio 5, incurriendo con esto en un costo de 7+12=19.
Asi es facil ver que toda alternativa para el automovilista corresponde a una ruta en la red y viceversa.
Se infiere entonces, que la mejor combinacién compra-venta debe corresponder a la longitud del camino mas corto del nodo 1, que representa la fecha actual al que representa el inicio del afio 5.
Como todas las longitudes son no-negativas se puede resolver este problema con el algoritmo de Dijkstra.
Iteracién 1:
Paso 1.
Inicializacién de etiquetas:
1) = 0. Etiqueta permanente.
I(x) = 0 para toda x © N excepto para x = 1. Etiquetas temporales. p= 1.
Paso 2.
Actualizacién de etiquetas:
Sucesores de p = { 2,3 }.
12) = Min {i(2), (p) + Kp,2)} = Min { 0, 0 + 7} = 7.
13) = Min {1(3), Mp) + Up,3)} = Min { , 0 + 11} = 11.
29
Capitulo 2. Rutas mas Cortas
Como /{2) y 1(3) se modific6é entonces:
a(2) = 1,
a(3) = 1.
Entonces x* = 2, dado que ((2) = Min {i(2), i(3), (4), 1(5)}, se etiqueta como permanente. p= 2.
Paso 3.
p #5 entonces se repite el paso 2.
Iteracion 2
Paso 2
Actualizacién de etiquetas:
Sucesores de p = { 3,4,5 }. (3) = Min {/(3), Up) + Xp,3)} = Min { 11, 7 + 2} = 9. (4) = Min {1(4), Up) + 1(p,4)} = Min {0 , 7 + 4} = 11.
(5) = Min {((5), Up) + \(p,5)} = Min {0 , 7 + 12} = 19. Como (3), /(4) y 1(5) se modificaron entonces:
a(3) = 2.
a(4) = 2.
a(5) = 2.
Entonces x* = 3, dado que 1(3) = Min {1(3), (4) + U(5)}, se etiqueta como permanente. p=3.
Paso 3.
P # 5 entonces se repite el paso 2.
Iteracion 3.
Paso 2
Actualizacion de etiquetas:
Sucesores de p= { 4,5 }.
(4) = Min (4), Up) + lp.4} = Min { 11,9 + R= 11. 5) = Min {1(5), Ap) + Up,5)} = Min { 19, 9 + 4} = 13. Como i(5) se modificé entonces:
a(5) = 3.
Entonces x* = 4, dado que /(4) = Min {i(4), (5)}, se etiqueta como permanente. p=4.
Paso 3.
p #5 entonces se repite el paso 2.
30
Capitulo 2. Rutas mds Cortas
Iteracién 4.
Paso 2 Actualizacion de etiquetas:
Sucesores de p = { 5}.
15) = Min {1(5), Up) + Up,5)} = Min { 13, 114 5} = 23. Entonces x*=5, dado que (5) = Min {2(5)}, se etiqueta como permanente.
p=5S.
Paso 3.
Pp = 5 entonces terminar, se ha encontrado la ruta més corta de 1 a 5.
La recuperacién de Ja Ruta se obtiene a partir de las etiquetas a(x). La ruta en sentido inverso
es 5, a(5) = 3, a(3) = 2, a(2) = 1. Y en el sentido deseado es: 1,2,3,5. Por lo tanto la
estrategia 6ptima de compra-venta es: Comprar el automdvil en el afio 1 cambiarlo en el afio 2,
conservarlo hasta el afio 3 y comprar otro en el afio 5.
Ejemplo 2
Con la Red de los poblados y la Estacién de Bomberos que se planteé en la secci6n anterior,
se resolvera el problema de la arborescencia de rutas mas cortas.
Itera- | P | Sucesores | Etiq. de sucesores x* Todas las etiquetas cién de p permanentes?
1 1 2,3 12)=1 a(2)=1 2 no,
13)=2 a(3)=1 entonces repetir
2 2 3,4,5 13)=2 a(3)=1 3 no,
(a=4 a(4)=2 entonces repetir
1(5)=3 a(5)=2
3 3 5,6 1(5)=3 a(5)=2 5 no,
1(6)=6 a(6)=3 entonces repetir
4 5 6,8,9 1(6)=6 a(6)=3 4 no,
1(8)=6 a(8)=5 entonces repetir
19)=4 a(9)=5
5 4 7,8 U7)=7 a(7)=4 9 no,
1(8)=6 a(8)=5 entonces repetir
6 9 10,12, 1(10)=9 a(10)=9 6 no,
13 112)=7 a(12)=9 entonces repetir
413)=9 a(13)=9
31
Capitulo 2. Rutas m4s Cortas
2.4.1.3 Algoritmo General
Se ha resaltado el hecho de que algunos problemas pueden quedar planteados en un modelo de
red que tenga arcos con longitud negativa, a continuacién se ver4 como el algoritmo de Dijkstra
no logra obtener una solucién 6ptima con redes de este tipo.
La red de la figura 2.7 tiene arcos con longitudes negativas.
Figura 2.7 Ejemplo de red con longitudes negativas asociadas a sus arcos.
MOK Bg Oe A
XN *
1 (6); 4 = i wo ON
Y ®
'3
De la red de la figura 2.7, considérese el nodo 1 como raiz, al aplicar el algoritmo de Dijkstra se obtiene la arborescencia de la figura 2.8.
Figura 2.8 Arborescencia obtenida utilizando el algoritmo de Dijkstra en una red con costos negativos
Atn cuando se ha obtenido una arborescencia ésta no es de rutas mas cortas, puesto que la ruta
obtenida de 1 a 3 es de longitud -2 y contiene al arco (1,3). Sin embargo, si se toma la ruta:
1,2,3 para llegar a 3 ésta es de longitud -3, que es menor a la obtenida con la aplicacién del
algoritmo. Asi pues, considerando que el algoritmo de Dijkstra no proporciona soluciones
6ptimas en redes con costos negativos se desarroll6 un algoritmo especial para obtener
soluciones en este tipo de redes.
34
Capitulo 2. Rutas mas Cortas
El aigoritmo que se presenta es una generalizacion del algoritmo de Dijkstra y consiste en
encontrar una arborescencia cualquiera (aplicando Dijkstra, por ejemplo), y posteriormente
obtener iterativamente otra arborescencia mejor que la anterior, hasta llegar a la Gptima si ésta existe. El algoritmo detecta cuando no hay solucién dandose esta situacién cuando se encuentra
un Circuito negativo.
En cada iteracién del algoritmo se verifica si la arborescencia que se tiene es la 6ptima o si ésta
puede mejorarse. La verificaci6n se realiza con base en los caminos tnicos que se tienen de la
raiz a cada uno de los nodos; de la siguiente manera: si a = (x,y) es un arco de la red que no
est4 contenido en la arborescencia, se comprueba si al ser agregado éste en la arborescencia, el
camino de la raiz al nodo y que contiene al arco a, es menor que la longitud de la raiz a y en la
arborescencia.
Si éste es el caso, es claro que entonces que ese camino es mejor que el actual por lo que se
realiza un cambio en la arborescencia, incluyendo el arco a y eliminando el tnico arco que
tiene como extremo final al nodo y. Si por el contrario, no se obtiene un camino mejor se
continéa con la verificacién de otro arco que esta fuera de la arborescencia; una vez que todos
estos arcos han sido analizados, se puede decir que se ha obtenido una arborescencia de rutas
mas cortas.
Se debe sefialar que dado que la red admite costos negativos es probable la existencia de
circuitos negativos en cuyo caso no puede existir solucién 6ptima acotada. Es importante
entonces saber determinar en cada cambio de arcos que se efectie, si existe algin circuito de
éstos. Para lo cual hay que observar si el extremo final de un arco que mejora una ruta es la
raiz, en cuyo caso se habr4 encontrado un camino de o a o con longitud negativa (en otras
palabras, un circuito negativo).
Otra situacién que se puede dar para la no existencia de solucién es en el momento de agregar
el arco que mejora la ruta y eliminar el correspondiente; si éste forma parte de un ciclo
entonces la red resultante no es una arborescencia.
35
Capitulo 2. Rutas mas Cortas
ALGORITMO GENERAL
Objetivo: Dada una red R = (N,A,j), la cua] admite costos negativos en Jos arcos, obtener una
arborescencia de rutas mas cortas de raiz 9.
Paso 1: Por algin método (Dijkstra por ejemplo), obtener una arborescencia de raiz 9.
Paso 2: (Prueba de optimalidad) Para todo (i,j), que no pertenezca a la arborescencia, calcular la longitud j(i) + (i,j).
-Si () + 10.3) > 1G) v Gj) © A, terminar, se ha obtenido la arborescencia de rutas mas
cortas. - Si 7G) + 7G,j) < 1) para algin (i,j) « A, seguir en el paso 3.
Paso 3: (Nueva arborescencia)
“Sij = 9 terminar, existe un circuito negativo. - Sij #9 sea (kj) ¢ A el dnico arco que en la arborescencia actual, es incidente al nodo j,
reemplazar el arco (k,j) por el (i,j).
- Si la grafica resultante no es una arborescencia, terminar, ya que en este caso, existe un
circuito negativo y por lo tanto el problema no tiene solucién.
- Si la grafica resultante es una arborescencia, actualizar las etiquetas de los nodos x, para los
que la ruta de 9 a x contenga como node intermedio o final al nodo j. Realizar la actualizacién
de la siguiente forma: sea j' = jj) - ii) - 7(i,j). entonces (x) = j(x) - ;'. Continuar en el paso 2.
A Ccontinuacién, se presenta un ejemplo de la aplicacién del algoritmo.
Ejemplo 1:
Un pequefio inversionista debe decidir como invertir éptimamente sus fondos en los siguientes 6 meses. En el mercado estan disponibles una gran variedad de instrumentos de inversién, pero
Unicamente se pueden realizar transacciones al final de cada mes.
Si se representa con nodos los tltimos dias de cada mes y con arcos (i,j) el hecho de que se
pueda realizar una inversién al final del mes i con vencimiento en el mes j, con la longitud de
cada arco el rendimiento que se obtendria si Ja inversién se realiza durante ese perfodo, se puede obtener una red; ahora bien, como el problema del inversionista es encontrar el rendimiento mAximo, se debe considerar la longitud de cada arco igual al negativo de la rentabilidad en la correspondiente inversién para formular esta problema como uno de rutas mas cortas. Se obtiene asi la red de la figura 2.9. Sobre esta red, se desea obtener la ruta mas
36
Capitulo 2. Rutas mas Cortas
corta, (en términos del problema original nos daria la inversién mas préspera) del nodo 0 ( mes
inicial), ai nodo 6 (mes final).
Figura 2.9 Red obtenida por el inversionista.
~_
Qe yg ed) . (2) ‘aA
-- FD | 7) 6 0 : : : a -™ wr
wo wo LS a
(4) 3 NB
Iteracién 1
Paso 1
Al aplicar el algoritmo de Dijkstra, se obtiene la arborescencia de la figura 2.10.
Figura 2.10 Arborescencia obtenida al aplicar Dijkstra a a red del inversionista.
fa ~ [6] ae — — >
eA £10]
1-41 1-81
Paso.2
Para todo arco (i,j) que no esta en la arborescencia, se calcula la longitud /(j) + ((i,j). La
figura 2.11 muestra dichos arcos, el niimero asociado a cada nodo representa el calculo
anterior.
37
Capitulo 2. Rutas mas Cortas
Figura 2.11 Arcos que no estan en la arborescencia obtenida al apticar Dijkstra a la red del inversionista.
<2 a (a gy 8
we 4 (4)
10] ty < Eo] 0 Ton 6
Po agp a> 3 5
[4] [-8}
Para el arco (1,2):
(1) + 1,2) = -4 < K2) = -2 por lo que es conveniente agregar el arco (1,2) a la
arborescencia obtenida por Dijkstra.
Paso 3
EI Gnico arco con extremo final en 2 es el (0,2), por lo cual se reemplaza éste por el (1,2),
obteniéndose Ja red de la figura 2.12. Como ningiin camino pasa por 2 en la arborescencia, sdlo se actualiza a 2 como sigue:
I’ = 2) - IC) - 11,2) = -2 = C1) - 3) = 2. (2) = (2) -1' = 2-2 =-4.
Figura 2,12 Arborescencia obtenida al hacer el primer cambio en los arcos
[4] 161 v 2 “
(0) ae _ EN [-10] dee) on L 78 a 7
“3 L-.—5 [-4] 1-8)
Siendo esta red (figura 2.12) una arborescencia, se va al paso 2.
38
Capitulo 2. Rutas mas Cortas
Iteraci6n 2 Paso 2
Para todo arco (i,j) que no esta en la arborescencia, se calcula la longitud /(i) + Ki,j). La
figura 2.13 muestra dichos arcos. El mimero asociado a cada nodo representa la longitud
obtenida del calculo anterior.
Figura 2.13 Arcos que estén fuera de Ja arborescencia 4 ={ 4) sy (6)
4. (4 wr ne
[0] a (-4) Me Ca \; [-10} 0 ne)
[-1] eS (SPR a any
4) [-8]
Para el arco (1,3):
i(1) + 10,3) = -6 < 13) = -4
Por lo que es conveniente agregar el arco (1,3) a Ja arborescencia obtenida en la iteracién
anterior.
Paso 3.
El tnico arco con extremo final en 3 es el (0,3), por lo cual se reemplaza éste por el (1,3)
obteniendo asi la red de la figura 2.14. Se actualizan la etiquetas:
[ = (3) - (A) - 11,3) = -4- (-1)- (5) =2
13) = 13)-l =-4-2 =-6
U4) = W4)-0 = -6-2 8
5) = 5)- = -8-2 = -10
16) = (6) -l' = -10-2 = -12
Figura 2.14 Arborescencia obtenida en la iteracion 2
44 - £8) v2 o ~~
[0] a _ E-1] — E42) nen Oe ‘6
oO “~ v~
AS Yo
[-6] [-10]
39
Capitulo 2. Rutas mas Cortas
como esta red es una arborescencia, ir al paso 2.
Iteracién 3 Paso 2
Para todo arco (i,j) que no esté en la arborescencia se calcula la longitud Mi) + i,j). La figura
2.15 muestra dichos arcos. El niamero asociado a cada nodo representa la longitud obtenida del
calculo anterior.
Figura 2.15 Arcos que estan fuera de la arborescencia
sg » re 4. (4)
My ” “psa QO. te Pee 7 5
[83 “E-10)
Para el arco (2,4):
2) + 12,4) = -9 < 4) = -8 por lo que es conveniente agregar el arco (2,4) a la
arborescencia obtenida en Ia iteracién anterior.
Paso 3.
El tinico arco con extremo final en 4 es el (3,4), por lo cual se reemplaza éste por el (2,4)
obteniendo asj la red de la figura 2.16. Se actualizan las etiquetas:
P = 14) - (2) - 12,4) = -8- (4)- (5) = 1 Ma) = (4) -T = 8-1 = 9.
Figura 2.16 Arborescencia obtenida en la iteracién 3
pon ~ 19] 2B
(0) . 1 ~ [-12]}
oe 6 a (6) Eto). A
Mg) 5
40
Capitulo 2. Rutas mas Cortas
siendo esta red una arborescencia, ir al paso 2.
Iteracion 4.
Paso 2.
Para todo arco (i,j) que no esta en la arborescencia se calcula la longitud /(i)'+ /(i,j). La figura
2.17 muestra dichos arcos. El niimero asociado a cada nodo representa la longitud obtenida del
célculo anterior.
Figura 2.17 Arcos gue estan fuera de la arborescencia
4) 1-9]
[03 yee wy ne Ea
0. aL a ” 8
aan "3 tal Ss [-10]
Para el arco (4,6):
4) + 44,6) = -13 < 6) = -12 por lo que es conveniente agregar el arco (4,6) a la
arborescencia obtenida en la iteraci6n anterior.
Paso 3.
E) tinico arco con extremo final en 6 es el] (5,6), por lo cual se reemplaza éste por el (4,6)
obteniendo asi la red de la figura 2.18. Se actualizan las etiquetas: ,
U = 16) - (4) - 4,6) = -12 - (-9)- (4) = 1
6) = K6)-f' = -12-1 = -13.
Figura 2.18 Arborescencia obtenida en la iteracion 4
iI | v2 ~4
(0] on QR 4g 0 4 C1} (-13}
(3 Ll 5S
~~ [6] ~ [40]
siendo esta red una arborescencia, ir al paso 2.
Al
Capitulo 2. Rutas mas Cortas
Paso 2. Para todo arco (i,j) que no est4 en la arborescencia se calcula la longitud (i) + /(i,j). La figura
2.19 muestra dichos arcos. El ntimero asociado a cada arco representa la longitud obtenida del
calculo anterior.
Figura 2.19 Arcos que estan fuera de la arborescencia
4] aa 2 4
[0] a ay [43] Tee EY (-2) ~
Oe wf (Ay men 8)
3 pe 5 Eto]
En esta red todas las longitudes calculadas:
ii) + Gj) 2 Ig).
Por lo tanto la arborescencia obtenida en la iteracién anterior (fig. 2.18) corresponde a la de
rutas mas cortas.
En términos del problema, Ja estrategia 6ptima que debe considerar el inversionista, es: invertir
al final del mes 0, hasta finales del primer mes, reinvertir al final del mes 2; después invertirlo
durante 2 meses, es decir hasta finales del mes 4 y volver a invertir por dos meses, hasta
finales del mes 6, obteniendo con esto un rendimiento de: 13 unidades.
2.4.1.4. Justificacién del algoritmo
En primera instancia el algoritmo es finito, puesto que termina en el paso 3 con una
arborescencia si /(i) + i(i,j) > 1G) para todo (i,j) € A.
Resta demostrar que la arborescencia obtenida es de rutas mas cortas. Se har4 por contradiccién.
Sup6niendo que al terminar la aplicacién del algoritmo no se obtiene la arborescencia de rutas mas cortas, es decir, existe al menos una etiqueta /(x) que no es igual a la longitud de una ruta
mas corta de o a x para algin nodo x ¢ N.
42
Capitulo 2. Rutas mas Cortas
Sea y aquel nodo que cumple con la caracterfstica anterior y con Ja condici6n adicional de que
la ruta de o a él es la de menor cardinalidad.
Como la etiqueta [(z) de un nodo z es un nimero finito que determina la longitud de un camino
de 0 az, se sigue que I(y) es igual a la longitud de algtin camino de 0 ay y por lo tanto I(y) es
mayor que la longitud de Ja ruta mds corta de o a y. Sea x el predecesor de y en Ja ruta mas
corta de 0 a x, entonces /(x) es igual a la longitud del camino mas corto de 0 a x, y I(y) > I(x)
+ (x,y), lo cual es una contradiccién.
Por lo tanto I(y) es la longitud de Ja ruta mds corta para todo y en N. Por lo tanto Ja
arborescencia generada es de rutas mas cortas.
2.4.2 Ruta mas corta entre todo par de nodos
En la presente secci6n se considera un método para resolver el problema de ruta mas corta
entre todo par de nodos en una red. Se puede observar que éste es un caso general comparado
con los planteados anteriormente. En particular este problema puede ser resuelto aplicando el
algoritmo de Dijkstra para cada nodo en la red.
Sin embargo, el seguir esta metodologia conduce a realizar un gran namero de operaciones
volviendo ineficiente la btisqueda de soluciones. Por esta razén se desarrollaron varios
algoritmos especializados en resolver este problema con lo que el obtener una solucién se
vuelve mucho mas eficiente.
Se presentan dos algoritmos que resuelven dicho problema. Uno de ellos fue desarrollado por
Floyd (1962) y el otro fue elaborado por Dantzing (1967). En ambos métodos son permitidos
los arcos con longitudes negativas, El de Dantzing requiere que la red no tenga longitudes
negativas, mientras que el de Floyd detecta cuando en la red existen circuitos negativos.
2.4.2.1 Algoritmo de Floyd
El primer método que se plantea es el desarrollado por Floyd y consiste a grandes rasgos en lo siguiente:
Los nodos de la red son numerados, siendo éstos: 1,2,...,n. El método indica cémo construir
una matriz C de nxn, con la cual se iran encontrando las longitudes de las rutas mds cortas
entre todo par de nodos, asi que al terminar de aplicar el algoritmo, Ja longitud de la ruta mas
corta del nodo i al nodo j estara dada por la entrada (i,j) de la matriz.
Las longitudes de las rutas mas cortas se obtienen en una secuencia de n iteraciones que van
transformando a Ja matriz C. Esta transformacién se realiza de forma tal que en la k-ésima
43
Capitulo 2. Rutas mas Cortas
iteracion, la matriz contiene las distancias de las rutas mas cortas entre todo par de nodos, pero
con la restriccién de que el camino de i aj, contiene finicamente nodos del conjunto restringido
{1,2,...k}, como nodos intermedios.
Para recuperar las rutas mas cortas se construira también, una matriz M de nxn; dénde el
elemento m, de M, indicara e1 predecesor del elemento j en Ja ruta de i aj encontrada en cada
iteracion del algoritmo.
ALGORITMO DE FLOYD
Objetivo: Encontrar las rutas mas cortas entre todo par de nodos en una red R = (N,A,) conn
nodos.
Paso 1
Se construye la matriz C, de nxn, de elementos c,, como sigue:
0 sii=j C= jo silij)eA
c, si Gij)e A y
Se jnicializa la matriz M, de nxn de Ia siguiente forma:
m, = i, para todo par de nodos ije N.
Hacer k = 0.
Paso 2
Sehacek = k + 1.
Para todo i+ k tal que c, # © y para todo j #k tal que c, # 0, se hace:
c, = min { cy, Cy + Oy
Se modifica M de la siguiente forma:
Mm, 7 SIC, + Cy < Cy
No cambia, Si cy < cy + Gy
44
Capitulo 2. Rutas mas Cortas
Paso 3
i) Sic; < 0 para algtin i, terminar. En este caso existe un circuito negativo que contiene al nodo i y por Jo tanto no hay solucién.
ii) Sic, = 0, para todo i, y k = n, terminar; c, es la longitud del camino mAs corto de i aj.
iii) Sic, 2 0 para todo i, y k < niral paso 2.
Ejemplo 1:
Determinar tas rutas mds cortas entre todo par de nodos utilizando el algoritmo de Floyd en la siguiente red:
Figura 2.20 Red para aplicar el algoritmo de Floyd ejemplo1
7 .
v2 Ch ae 5 - (3) ® My ®)
(4) & a”
4 6). 4 (4) 7
~ ¢ SA ~ 3 oy: a (3) (24% | 4)
3 we A U6
Iteraci6n 1.
Paso 1
Al construir las matrices C y M se obtiene lo siguiente:
032000 © Y1ididdi
704670 2222222 7003 wm ow 3333333
_— | 50003 20 [4444444
C= moan 04 3 M= 5555555
woo 4aoao 0 4 6666666
caw ccc co 0 T777777
Se hace k = 0.
Paso 2
Se hace k = 1.
Se actualizan los elementos de C y M:
Cy =Minfo,5+3}=8 m,=m,=1
45
Capitulo 2. Rutas mas Cortas
Cy =Minfo,5+2}=7 myg=my,=1
las matrices resultantes son:
WAU
BW
SD UH WN
AA we Whe
SAW
NS
SNAU EWN
SAW RWN
aNUW dW
Paso 3
C, 2 0 para todo i y ademas k = 1 < n = 7, entonces se regresa al paso 2.
Iteracién 2
Paso 2
Se hace k = 2.
Se actualizan los elementos de C y M:
C, = Minf 2,44+3}=2 m,, no cambia
C, = Minfo, 3+6}=9 m,, = m, = 2 C= Min{o, 8+7}=10 m5 = m5 = 2 Cy = Minf 7, 8+4}=7 m,3 no cambia Cy = Minf{ 0, 8+6}=0 ™,, no cambia Cy = Min{f 3, 84+ 7} =3 m,; no cambia
las matrices resultantes son:
032910 oa 11122141 00467 wo 2222222 0003 0 wo 3333333
58703 20 4114444 C=! wwe 0 43 M= 15555555
aao4ac0 0 4 6666666 wonwmon a 0 T7T77777
Paso 3
C, 2 0 para todo i y ademas k = 2 < n = 7, entonces se regresa al paso 2.
Iteracién 3
Paso 2
Se hace k = 3.
46
Capitulo 2. Rutas mas Cortas
Se actualizan los elementos de C y M:
C,, = Min {9,24+3} =5 My, = mM, = 3
Cu = Min{6,4+3}=6 m,, , no cambia
C, = Min {0,7+3}=0 my, , no cambia
Cy = Min {0,4 + 3} = 7 m, = m,, = 3
las matrices resultantes son:
032510 oa 1113211
00467 wo 2222222
nnV3 0 nao 3333333
5 8703 -2 4114444
C= | comm 0 43 M= |5555555 wo47a0 0 4 6663666
wconona wo 0 7777777
Paso 3 C, 2 0 para todo i y adem4s k = 3 < n = 7, entonces se regresa al paso 2.
Iteracién 4
Paso 2
Se hace k = 4.
Se actualizan los elementos de C y M:
C, = Min{0,5+5}=0 m,,, no cambia Cy, = Min {3,5+ 8} =3 M,, no cambia C= Min{2,5+7}=2 M3, no cambia Ci; = Min {10,5 +3} =8 m,; = m,; = 4 Cig = Min {00, 5 -2} = 3 My = My = 4
Cy, =Min{0,6+5}=11 Mm, =m, =4 C, = Min{0,6+ 8}=0 mM, no cambia Ca = Ming 4,64+7}=4 m,;, nO cambia
C; = Min{7,64+3}=7 m,;, no cambia Cy, = Min {w,6 -2} =4 My = My = 4
C3, = Min {0,3 +5} =8 m, =m, = 4 Cy = Min {o, 3 + 8} = 11 m, =m, = 4 C; = Min{0,3 +7} =0 m3, no cambia Cy, = Min {0,3 +3} =6 My, = My, = 4 Cyg = Min {o0, 3-2} =1 My = My = 4
47
Capitulo 2. Rutas mas Cortas
Cy = Min fo, -1+5}=4 Mg = My, = 4 Cy = Min {o,-1+ 8} =7 My = My. = 4 Co = Min { -4,-1 +7} = -4 ™,3, ho cambia
Cos = Min {-1,-1+3} = -1 M5, Ro cambia Cy, = Min { 0, -1 + -2} = -3 Myg = My, = 4
Las matrices resultantes son:
1113211 0325830 1104674 4222242 8 11036 -lo 4433443
C=]5 8 703 20 M= [4114444 waoaowd4 3 5555555
474-1034 4463646 moan woawcn 0 TIFVIFT7
Paso 3
Como Cz, < 0 = -3 existe un circuito negativo que contiene al nodo 6. El circuito esta formado por los nodos: 6,3,4,6. Por lo tanto no existe soluci6n para el problema.
Ejemplo 2:
Determinar las rutas mds cortas entre todo par de nodos utilizando el algoritmo de Floyd en la siguiente red:
Figura 2.21 Red para aplicar el algoritmo de Floyd ejemplol
- al 2 /_
1 6 my oe i 5 ia
Iteracion 1.
Paso 1
Se construyen las matrices C y M_ obteniendo lo siguiente:
48
Capitulo 2. Rutas mas Cortas
Iteracion 1:
d= [0] D'=[0]
Iteraci6n 2:
di, = min {d',, +} = {0+ 1}=1 (1,2) #, = min {a,, + @,} = (2+ 0}=2 20
D = Oo 1
2 0
Iteracién 3:
@,, = min{d’,, + @,, Py + @,}= min3+0, 442}=3 B,D @,, = minfd’,, + @, dy + @,,}= minf3+1, 44+0}= 4 (3,2) d@,, = min{d’,, + @,, @, + d°,}= minfO+4, 2+4}= 4 (1,3) &,, = min{e?,, + @,, Py + d,}= minf2+9, 04+9}= 9 (2,3) &), = min{d’,, + @,,, d,}= min{9+3, 2}= 2 (2,1) &, = minfd,, + @,, @,}= minf444, I}= 1 (4,2)
D= [014 209 3°40
Iteracion 4:
dé, = min {d°,, + Wy, d°2 + 4%, d%, + a} = min{i+0, 3 + 2,243} =1 4) = min {d°,, +2, +. + 2, +d% + &.}= minfl+1,3 + 0,2 +4} =2 (4,) (1,2)
d*,; = min {d°,, +d, +d°,. +d°,, + d°,, + d’,}= minfl+4,3 + 9,240} =2 (4,3) d‘,, = min {d?,, + d%4, d, + d°,, d's, + d%,} = min{O+7,2 + 5,3 +8} =7 (1,4) d‘,, = min {@,, + d°4, dy, + d°, d’. + 4°,,} = minfl+7,0+5,4 +8} =5 (2,4) d*,, = min {@?, + dy, da, + d%4, d's + d°5.} = minf4+7,9 + 5,0 + 8} = 8 (3,4)
Qa a®
&
|
mM WN O
Naot
NowF
oan
Como se ha lievado a cabo la cuarta iteracién se termina el algoritmo y D* es la matriz final de rutas mas cortas.
57
Capitulo 3. Flujo en redes
El objetivo de este trabajo, es el de desarrollar material diddctico para la materia de redes en la facultad de ciencias, a continuacién se presenta en este capitulo una breve introduccién a los conceptos fundamentales de teoria de flujo en redes. Se hace el planteamiento del problema
bAsico de flujos consistente en determinar e) flujo m4ximo en una red; se analizan tres variantes de esta modelacién que son: 1) cuando Ja red tiene cotas inferiores diferentes de cero para el flujo, asociadas a ellos, 2) cuando Jos nodos también tienen cotas superiores para el flujo
asociadas a los arcos y 3) cuando se cuenta con varios origenes y varios destinos. Se dan los algoritmos de solucién y las modificaciones de éste para resolver cada una las variantes indicadas.
Posteriormente se introduce otro problema de optimizacién llamado flujo a costo minimo, en el cual se considera el costo unitario del flujo a través de un arco. En este problema surgen subproblemas de rutas m4s cortas como los analizados en el capitulo anterior. Por esta razén los tres algoritmos presentados en esta parte del capitulo contienen como subrutina algunos de
los algoritmos vistos previamente.
3.1 Aspectos teéricos de flujo en redes
Existen un sin némero de problemas relacionados con flujos que surgen en diversas aplicaciones como son: redes carreteras, sistemas de distribucién (de agua, gas, petrdleo etc.), sistemas de lineas aéreas, entre otros. Cada uno. de estos problemas involucra determinar la
cantidad maxima posible de cierto producto (autos, agua, gas, petrdleo, personas) a transportar de un lugar (origen) sobre tubos, cables, camiones etc., a otro (destino), considerando
restricciones de capacidad.
Con esto en mente, se tiene que la cantidad del producto que se desea enviar a través de la red
es lo que se llama flyjo. En términos formales tenemos la siguiente definicién:
Sea R=(X,A,q) una red que representa alguno de estos sistemas. Sea 9 y d e X origen y destino respectivamente.
58
Capitulo 3. Flujo en Redes
E! problema de flujo m4ximo consiste en determinar 1a cantidad f,, llamada flujo a través del
arco (i,j), para todo (i,j) < A, tal que se obtenga la m4xima cantidad de flujo en q considerando los siguientes supuestos: f, est4 acotada inferiormente por 0 ( pues representa la cantidad de un
producto ) y superiormente por q, (capacidad del arco (i,j) ), ademds no se genera ni se pierde flujo a través de la red.
A Ja funciédn f que asocia el nimero fi, al arco (i,j) que cumpla con las restricciones
anteriormente descritas se le llama flujo factible, es decir:
Flujo Factible: - Un flujo factible en una red R = (X,A,q) es una funciénf: A » IR tal que: .
v sii =o
f, - 0 sii zod Sai “Re = y sii ad
Bd Os<fjs ay VGDEA 3.2
Donde 9, d « X representan el origen y el destino de la red respectivamente y y se Nama valor
del flujo f.
A las ecuaciones (3.1) se les llama Ecyaciones de Conservacién de Flujo e indican que a través
de una red no se puede generar ni destruir flujo .
En estas ecuaciones: .
af, ij jel *@
representa el flujo total que “sale” del nodo i, mientras que:
keF “(i)
el flujo total que “entra” al nodo i.
Se observa entonces, que la diferencia establece que el flujo que “entra” al nodo i es igual al flujo que “sale” del mismo nodo, excepto para los nodos origen y destino, en los que se genera y absorbe respectivamente una cantidad de flujo de valor y.
59
Capitulo 3. Flujo en Redes
La ecuacién (3.2) simplemente establece las restricciones de capacidad sobre los arcos de la
red.
A continuacién se define otro concepto que juega un papel importante como herramienta de
optimizacién.
Cortadura:
Sea R = (X,A,q) una red con una funcién de capacidad q asociada a los arcos.
Sea N cualquier conjunto de nodos en la red tal que N contiene al nodo © pero no al nodo d.
Entonces al conjunto de arcos formados por: (N,N*) = (N,N‘)* U (N,N‘)” donde:
(N,N‘)* = {i,j ieN, je N'}y (N, NY = {Gj ie N, jeN}
se le llama cortadura que separa al nodo o del nodo d.
Ejemplo: Red de la figura 3.1:
Figura 3. 1 Red para ejemplificar una cortadura
Oj
a
4 ew 2 } 5 ae
oye Me ae
ae
1 8G a
Algunas cortaduras que separan a los nodos 1 y 4 en esta red son las siguientes:
1.SiN = {J} entonces (N,N*)* = {(1,2),(1,3)} (N,N) = {6}
2. SiN = {1,2} entonces (N,N‘)* = {(1,3),(2,3),(2,4)} (N,N) = {$}
3. SiN = {1,2,3} entonces (N,N‘)* = {(2,4),(3,4)} (N,N‘Y = {6} 4. SiN = {1,3} entonces (N,N‘)* = {(1,2),(3,4)} (N,N‘) ={(2,3)}
Capacidad de una Cortadura. Sea R = (X,A,q) una red con una funcién de capacidad q.
Sea (N,N‘). cualquier cortadura en la red. Entonces a la cantidad
q (N,N) = Z gy - = gi Gj) € (NY Gj) © ONY
60
Capitulo 3. Flujo en Redes
se le {lama Capacidad de la Cortadura.
Por lo que, para fa red de la figura 3.1, se tiene que las capacidades de las cortaduras son:
1. q(N,N‘) = 5 2. q(N,N°) = 8 3. q((N,N) = 7
4, q(N,N‘) = 4
La definicién de cortadura es importante porque existen ciertas relaciones entre cortaduras y
flujos; una de ellas establece una cota superior para el problema de flujo m4ximo’y se enuncia
enseguida.
Proposicién 1.
Sea R = (X,A,q) una red. Sea f un flujo factible de valor v y sea (N,N*) una cortadura de R.
Entonces:
v< qN.N).
Demostracién:
Sumando las ecuaciones de conservacién de flujo para los nodos en N se tiene:
vez (lf, - 2h )= ieN jelt@ ker @
xy Lh -L Lh =
ieN jel*@ ieN keIM@
Df, + Df - Th - Dh
ieN ieN ieN ieN
jeN jeN® keN keN®
Por otro lado se conoce que para todo (i,j) <¢ A, Os fj < qy entonces
v=Zf - fe < Eqy +0 = (N,N), teN ieN ieN
jeN® keN® jeNn®
con lo que queda demostrada la proposicién.
Uno de los conceptos més importantes en el estudio de flujos es el de cadena aumentante. Las cadenas aumentantes en una red permiten enviar flujo de o a da través de ellas. A continuacién se define formalmente.
61
Capitule 3. Flujo en Redes
Cadena aumentante de flujo:
Sea R = (X,A,q) una red. Sea f un flujo factible en R. Sea C una cadena de o ad de la
siguiente forma:
_Cie= ij, ap bk, Ay,...5ig, ay, kei= d
. considera la siguiente particién de los arcos de C
= {aj € Cla = (i ’ i+.) } y
= {a «C/a = Gyan i) } j=l.-k
Esto significa que a F pertenecen los arcos cuya direccién esta en el sentido de o a d, mientras
que el conjunto B esta compuesto por los arcos que estan en sentido inverso.
Se tiene que una cadena aumentante de flujo de o a d se define como una cadena de oaden la
que se cumplen las siguientes caracteristicas:
i) para todo (i,j)<eF | fy << qi
ii) para todo (i,j) ¢ B fy > 0
El nombre de aumentante se debe a que a través de esa cadena el flujo puede ser modificado de
tal manera que se obtenga uno de mayor valor.
Ejemplos:
Figura 3. 2 Ejemplos de cadenas aumentantes
(fj, Gy)
1 (2,5) ae (2,3) . (1.4)
oO ee
(2,7) (1,5) (2,7)
En las cadenas de Ja figura 3.2 a) y b) todos los arcos pertenecen al conjunto F y al conjunto B
respectivamente, mientras que la cadena de 3.2 © Jos arcos (1,2) y (2,3) pertenecen a F y
solamente e) arco (4,3) pertenece a B. Entonces las tres cadenas son aumentantes.
62
Capitulo 3. Flujo en Redes
Se desea determinar la cantidad mdxima de flujo que se puede enviar a través de la cadena.
Esta cantidad se puede obtener considerando 1o siguiente:
Capacidad incremental de una cadena aumentante de flujo.
La capacidad incremental de una cadena aumentante de flujo es la cantidad maxima de flujo
que puede enviarse a través de ella de o a d. Esta capacidad se denota como D(C). La manera
de obtener la capacidad incremental de una cadena es la siguiente:
De= Min { [qy- fy] / Gi) eF } ay
Dy = Min { [fy] / Gj) € BY aj
y D(C) = Min [D;, Dyl.
Para las cadenas de la figura 3.2 se tiene que las capacidades incrementales son:
a) Dy = Min{ 5-2, 3-2, 4-1} ={3,1,3}=1, B ={}entonces D(C) = Dy = 1.
b) F {9}, D, =Min{ 1,3,2}=1 entonces D(C) = {1}
c) D; = Min{ 7-2, 5-1} = {5,4} = 4, D, =Min{2}=2 entonces D(C) =Min{4,2}=2
Una vez que se han obtenido las capacidades incrementales de Jas cadenas, se debe proceder de la siguiente forma, para actualizar Jos flujos fj y asi obtener otro flujo factible fj de mayor
valor.
f= f+ D(C) V Gi)F fi = f, ~ D(C) v Gj) B
Se observa que si el valor de f en la red es v, entonces el valor del f' sera de v + D(C). Los
flujos incrementados de la figura 3.2 se muestran en la siguiente figura.
Figura 3.2’ Ejemplos de cadenas aumentantes con flujo incrementado
fy ’ qi)
a) Oss Daa @ ar
b) Ge—G@—G 4) (0.2) (2,5) (1,7)
c) ‘a (2 2 y- (3 ~~(a) L van 7) ~~ (3,5) (0,7) 4
63
Capitulo 3. Flujo en Redes
3.2 Flujo Maximo
El} problema basico de Flujo MAximo consiste en encontrar la cantidad m4xima de fiujo que puede ser enviada de un nodo origen @ a un nodo destino d en una red con capacidades en los arcos. Es decir, el problema consiste en determinar el flujo f factible en la red cuyo valor v sea lo mas grande posible.
Ejemplo. Un agente de viajes debe contratar los vuelos de un grupo de veinte turistas que iran del aeropuerto de Chicago al aeropuerto de Estambul en un dia determinado.
En el aeropuerto de Chicago pudo conseguir informacién con respecto a los vuelos directos que hay, asi como de las diferentes rutas con escalas que puede seguir para llegar a Estambul en el dia indicado. Con la informacién conseguida el agente de viajes disefié la siguiente red:
Figura 3.3 Red de los vuelos de Chicago a Estambul
Gij
ae cn
adrid > oma
\8 ‘S \ 13/ \
9 ganas et et <Monaca: “Sofia >> Estambul> . s San a 9 _-
5 aL. ~ ae
{<a 13 Paris > Sarajevo~
EI agente de viajes construyé la red R=(X,A,q) de la figura 3.3, suponiendo que cada nodo representa una ciudad (Chicago, Madrid, Paris, etc.) y los arcos que enlazan cada uno de los nodos (0 ciudades) representan Ja existencia de un vuelo de una ciudad a otra. Cada uno de los
niimeros asociados a los arcos (funcién q) representa el nmimero de asientos libres en el respectivo vuelo.
Se supone que fj, = nimero de turistas que viajaran de Ja ciudad i a Ja ciudad j.
El agente de viajes puede resolver su problema encontrando el flujo de valor maximo en esta red. Si dicha red admite un flujo maximo, de Chicago (origen) a Estambul (destino), de valor mayor o igual a 20 entonces el agente puede enviar al grupo completo de turistas en el dia seleccionado.
Capitulo 3. Flujo en Redes
Existen variantes del problema de flujo de maximo que consideran restricciones adicionales a
las descritas anteriormente. Por ejemplo: si en este problema del agente de viajes, se supone
que algunos de los turistas deben visitar alguna ciudad en particular, se debe considerar esta
nueva restriccion en Ia modelacién del problema.
Se tiene entonces que:
1) 10 de los 20 deben hacer el recorrido Chicago-Madrid. 2) 4 deben ir directamente de Chicago a Estambul. 3) 9 deben hacer el vuelo de Paris a Sarajevo. 4) 3 deben hacer el recorrido de Ménaco a Roma
Se observa que estos nuevos requerimientos afectan la red de la siguiente forma:
A cada uno de los arcos afectados (vuelos que deben realizarse), se le debe afiadir un nimero
adicional que indique la cantidad minima de personas que deben de realizar dicho vuelo.
Figura 3.4 Red del agente viajero con restricciones de capacidad inferior en tos arcos
(Ej, 45)
(4,5)
Esta nueva situacién implica, en el modelo de redes, agregar restricciones de cotas inferiores
para el flujo a través de los arcos, es decir que el flujo a enviar a través de la red debe cumplir
para cada arco ser mayor o igual al requerimiento cuando éste es mayor que cero y al mismo tiempo, no sobrepasar la capacidad m4xima de dicho arco.
Continuando con el problema del agente de viajes se tiene ahora la siguiente situacién: Por problemas en las aduanas de algunas ciudades no es posible admitir mas de cierto nimero de turistas en un solo vuelo, por tal raz6n el agente ha agregado a los nodos respectivos a tales
ciudades el nimero m4ximo de tmristas que pueden pasar a cada ciudad, esto se muestra en Ja
65
Capitulo 3. Flujo en Redes
siguiente figura, los nodos a los que no se les ha asociado nimero son aquéllos que no tienen
ninguna restricci6n al respecto.
Figura 3.5 Red del agente viajero con restricciones de capacidad en los nodos
(hj,4i)
En este caso el problema se complica un poco ms porque ademés de no violar las capacidades
de los arcos, debe también respetarse una cota superior para el flujo que entra a cada nodo llamada capacidad del nodo.
Para la Ultima de las variantes de flujo m4ximo que se estudian se considera lo siguiente:
Como se mostr6 en el problema del agente de viajes, se deseaba transportar a un grupo de turistas de una ciudad a otra es decir, todo el grupo partia del mismo origen para Ilegar al
mismo destino; ahora sup6ngase que existen varios grupos de turistas que parten de diferentes
ciudades (varios origenes) y desean llegar a diferentes destinos (varios destinos).
Un ejemplo de lo anterior se muestra en la figura 3.6.
Figura 3.6 Red con varios origenes y varios destinos
(qi) (a1)
J
66
Capitulo 3. Flujo en Redes
El problema ahora es el de determinar el flujo m4ximo de la red desde todos ios origenes hasta todos los destinos.
Las variantes que se han expuesto en esta seccién se pueden resumir de la siguiente forma:
Existen capacidades inferiores 4j, diferentes de cero, asociadas a los arcos (i,j).
Asi como hay capacidades asociadas a los arcos, existen también cotas w, asociadas a cada
nodo i, las cuales representan la cantidad maxima de flujo que puede pasar por dicho nodo. Otra variante importante es aquélla en la no s6lo existe un origen o y un destino d, sino que hay varios origenes y destinos.
Un estudio més detallado, con respecto a estas variantes, se realiza en la seccién 3.3 donde se
plantean los métodos de solucién para cada una de ellas.
Prosiguiendo con el problema bdsico de flujo maximo, considérese una red R=(X,A,q), con capacidades qy, un nodo origen o y un nodo destino d.
El objetivo del problema de flujo maximo es el de encontrar un flujo factible que maximice la cantidad v.
Para resolver el problema los conceptos de cadena y corte juegan un papel muy importante. De hecho una manera natural de resolver el problema es determinar las cadenas aumentantes existentes para ir obteniendo flujos de valor cada vez mayor.
Cuando se haya detectado un corte tal que su capacidad sea igual a v y ya no sea posible determinar mds cadenas aumentantes se habra obtenido un flujo maximo.
Esto se establece en el siguiente Teorema.
Teorema 1. (Teorema de Flujo Maéximo-Cortadura Minima)
El valor del flujo maximo de o a d es igual a la capacidad de la cortadura minima (N,N‘) que separa a o de d.
Demostraci6n: . La demostracién del teorema de flujo m4ximo-cortadura minima se realiza por medio de una prueba constructiva, Ja cual sugiere de inmediato el algoritmno de etiquetado para resolver este problema el cual se presenta mas adelante.
Es claro (por la proposicién: 1) que el valor del flujo maximo de o a d no puede ser mds grande que la capacidad de cualquier cortadura.
67
Capitulo 3. Flujo en Redes
El propésito es construir un flujo y una cortadura que cumpla Ja igualdad.
Sea f un flujo factible de valor v en la red. Se construye una cortadura (N,N‘) de la siguiente
manera:
Sea N = {o}. SiieN y fj < qj 6 fj > O hacer N = N U {j} y repetir el paso hasta que N no pueda ser
incrementado.
Entonces alguno de los dos casos pueden ocurrir:
Caso 1l:de N.
De acuerdo con el paso anterior, d e N implica que existe una cadena C aumentante de o a d.
Esto es claro dado que cada arco de C cumple con que
fj < qy V Gj) eF
oO
fj > 0 VGje B
Si se obtiene la capacidad incremental de la cadena se puede construir un flujo mejor. Asi entonces si D(C) es la capacidad incremental de la cadena C, se redefine f y v como sigue:
fy+ D(C), v (i) e F fi= 4 6 -DO. v GideB
fj en otro caso
vev+ D(C)
Con este flujo incrementado se repite el paso anterior
Caso 2) d ¢N.
Es decir d < N* por lo que (N,N‘) es una cortadura de R. De acuerdo con la construccién de
N, fy=qy V«,j) €(N,N)' y fg = 0 V (k,i) en (N,N); entonces:
v= 2fj - lf = Zqy = (N,N) ieN ieN ieN .
jen® k EN’ jen®
Con el supuesto de que las qy son enteros se tiene que el flujo es incrementado en por lo menos
una unidad cada vez que ocurre el caso 1, lo que implica que el flujo mdximo puede ser obtenido en un namero finito de iteraciones, hasta que ocurre el caso 2. El valor de este flujo
68
Capitulo 3. Flujo en Redes
entonces es igual a la capacidad de la cortadura (N »N*), y por lo tanto se ha obtenido un flujo
m4ximo y una cortadura minima. ™@
El método constructivo de la demostracién del teorema sugiere de inmediato el algoritmo de etiquetado para el cAlculo del flujo mdéximo de o a d en una red con capacidades dicho algoritmo se expone en la siguiente seccién.
3.3 Métodos de solucién
3.3.1 Algoritmo de Ford y Fulkerson (Flujo maximo)
Un método de solucién para el problema de flujo m4ximo de un origen o a un destino d fue desarrollado por Ford y Fulkerson; ellos propusieron una “Técnica de Etiquetado" para la detecci6n de cadena aumentantes. Ademds este método es aplicado, con algunas
modificaciones, en la soluci6n de problemas que se consideran variantes o generalizaciones del
problema.
El algoritmo inicia con un flujo factible arbitrario (éste puede ser cero a través de todos los arcos) y para incrementar el valor del flujo se buscan todas las cadenas aumentantes de flujo de
o ad. La bisqueda de las cadenas aumentantes es la que conduce a etiquetar a los nodos. La
etiqueta de un nodo indica el arco por el cual puede ser enviado flujo, asi como Ja cantidad de flujo que puede enviarse.
Una vez que una cadena aumentante es encontrada, el flujo a través de los arcos de tal cadena
se modifica obteniendo un nuevo flujo de valor mayor que el anterior. Se empieza nuevamente
a etiquetar los nodos con el nuevo flujo como base.
Cuando no es posible encontrar cadenas aumentantes el algoritmo termina y el flujo obtenido es e] de valor maximo.
A continuacién se detalla tal algoritmo.
69
Capitulo 3. Flujo en Redes
ALGORITMO DE FORD Y FULKERSON (FLUJO MAXIMO)
Objetivo: Dada una red R = (X,A,q), encontrar el flujo mAximo de un origen o a un destino d.
Descripcién: Paso 1: Iniciar con cualquier flujo factibie f.
Paso 2: Etiquetar el origen 0 con [+0,%] Paso 3: Elegir un nodo etiquetado y no examinado; sea i este nodo y sean [+ k, f@] sus
etiquetas. . .
i) Para todo je *(i) que no esté etiquetado y tal que f; < qy asignar la etiqueta [+i,fG)],
donde f(j) = min {f(i), gy - fj }-
ii) Para todo jeI(i) que no esté etiquetado y tal que f > O asignar la etiqueta [-i,f()],
donde fj) = min { £(), fj }
Se dice entonces que el nodo i ha sido examinado.
Paso 4: Repetir el paso 3 hasta que suceda iti) o iv):
iii) El nodo destino d no tiene etiqueta y todos los nodos etiquetados han sido examinados.Terminar, ya que el flujo factible f es el de valor maximo.
iv) El nodo d recibe etiqueta. Ir al paso 5.
Paso 5: Seai = d.
Paso 6: vy) Si la etiqueta de i es de la forma [+k, f(i)] hacer fy = fig + f(d).
vi) Si la etiqueta de i es de la forma [-k, f(i)] hacer fy = fi, - f(d).
Paso 7: Sik = 0, borrar todas las etiquetas y regresar al paso 2.
Sik #0, hacer i = k y regresar al paso 6.
Es de resaltar que el algoritmo resuelve también el problema de cortadura minima.
Si N={nodos con etiqueta} al final del algoritmo entonces (N,N*) es un corte que cumple con las condiciones del teorema de flujo m4ximo-cortadura minima y por lo tanto es el 6ptimo.
Ejemplo1: Considere el siguiente problema:
Una cooperativa de una provincia cuenta con cantidades suficientes de frutas de la temporada; estas frutas deben ser transportadas de la cooperativa a la ciudad, donde son vendidas.
70
Capitulo 3. Flujo en Redes
Los tramos de carretera que separan la cooperativa de la ciudad, presentan ciertos
requerimientos en cuanto al peso de los camiones que pueden transitarlos, siendo este un
inconveniente al transportar Jas frutas.
Las personas de a cooperativa desean transportar la mayor cantidad de sus frutas por la red
carretera hasta el lugar de demanda.
La siguiente figura muestra la red carretera entre la cooperativa y la ciudad asi como los limites
maximos de peso entre cada uno de los tramos de carretera.
Figura 3.8 Red carretera de la cooperativa (1) a la ciudad (10) con restricciones de peso entre los tramos
ij
En esta red el nodo 1 indica la localizaci6n de la cooperativa, los nodos 2 al 9 indican los
poblados por los que puede realizarse el transporte hasta Hegar a la ciudad destino, indicada
como el nodo 10. Los arcos en la red representan los tramos de carretera entre cada uno de los
poblados y las ciudades. Los ntimeros asociados a éstos representan la cantidad maxima de peso
en toneladas que se puede transportar por la carretera.
A continuacién se aplica el algoritmo de flujo m&ximo para resolver el problema.
Iteracion 1.
Paso 1: Se inicia con un flujo factible igual a cero a través de todos los arcos.
o=1,d=10.
Paso 2:
La etiqueta para el nodo 1 = [ +1,}.
Paso 3: El Gnico nodo que esta etiquetado y no examinado es 1.
71
Capitulo 3. Flujo en Redes
i) Sucesores no etiquetados y tales que fy < qu son:{ 2,3 }
Etiquetas:
2:[ +1, min {o0, 7-0}] = [ +1, 7].
3: [ +1, min {co,; 5-0}] = [ +1, 5}.
ii) No tiene predecesores no etiquetados. Ei nodo 1 ha sido examinado.
Paso 4: El nodo 10 no ha recibido etiqueta y existen nodos etiquetados no examinados por lo
tanto se regresa al paso 3.
Paso 3. Un nodo etiquetado no examinado es el 2. i) Sucesores no etiquetados y tales que fy; < qy son:{ 4,5 }
Etiquetas:
4:[+2, min { 7, 3-0} = [ +2, 3]. 5: [ +2, min { 7, 7-0}] = [ +2, 7]. ii) No tiene predecesores no etiquetados. El nodo 2 ha sido examinado.
Paso 4: El nodo 10 no ha recibido etiqueta y existen nodos etiquetados no examinados por lo
tanto se regresa al paso 3.
Paso 3: Nodo etiquetado no examinado: 5. i) Sucesores no etiquetados y tales que fs; < qs; son:{ 7,8 }
Etiquetas:
7: +5, min { 7, 5-0}] = [ +5, 5]. 8: [ +5, min { 7, 9-0}] = [ +5, 7]. El nodo 5 ha sido examinado.
Paso 4: El nodo 10 no ha recibido etiqueta y existen nodos etiquetados no examinados por lo
tanto regresar al paso 3.
Paso 3: Nodo etiquetado no examinado: 8 i) Sucesor no etiquetados y tal que fa< gg es:{ 10 }
Etiquetas: 10: [ +8, min { 7, 7-0}] = [ +8, 7).
EI nodo 8 ha sido examinado.
Paso 4: El nodo destino = 10 recibié etiqueta ir al paso 5.
Paso 5: i= d= 10.
72
Capitulo 3. Flujo en Redes
Paso 6: Etiqueta de i = [+8,7] entonces: k = 8, f(10) =7
fg.10 = fgio+ £(10) =0475 7.
Paso 7: k #0 = 1 entoncesi = k = 8.
Ir al paso 6.
Paso 6: Etiqueta de i = [+5,7] entonces: k = 5
fs, = f5.8 + f(10) =O+7=7.
Paso 7: k #0 = 1 entoncesi = k = 5.
Ir al paso 6.
Paso 6: Etiqueta de i = [+2,7] entonces: k = 2
fs = fs + (10) =O +7=7.
Paso 7: i# 0 = 1 entoncesi = k = 2,
Ir al paso 6.
Paso 6: Etiqueta de i = [+1,7] entonces: k = 1 fi2= fir + f(10) =O+7=7.
Paso 7: k = o = 1 se borran la etiquetas y se regresa al paso 2.
Las etiquetas de la primera iteracion se muestran en la figura 3.9 y en la 3.10 se muestra el
flujo enviado a través de la cadena obtenida.
Figura 3.9 Etiquetas en la primera iteracién
(fij ai)
Iteracién 2.
En la iteracién 2 se obtuvo la cadena: 1,3,6,9,10 de capacidad 2.
Las etiquetas de la segunda iteracién se muestran en la figura 3.10 y en la 3.11 se muestra el flujo actualizado.
3
Capitulo 3. Flujo en Redes
Figura 3.10 Flujo obtenido en Ia primera iteracién y etiquetas de la segunda
(fij ai)
Iteracién 3.
En la iteracién 3 se obtuvo la cadena: 1,3,4,7,10 de capacidad 1
Las etiquetas de la tercer iteraci6n se muestran en Ia figura 3.11 y en la 3.12 se muestra el flujo
actualizado.
Figura 3.11 Flujo obtenido en la segunda iteracién y etiquetas de la tercera
(fij,4ij)
+431 [+5.21
(10) 27,17
(2.7) (2,2) RAS B33
Iteracién 4. En la iteraci6n 4 se obtuvo la cadena: 1,3,4,5,7,10 de capacidad 2.
Las etiquetas de la cuarta iteraci6n se muestran en la figura 3.11 y en la 3.12 se muestra el flujo actualizado.
74
Capitulo 3. Flujo en Redes
Figura 3.12 Flujo obtenido en la tercera iteracién y etiquetas de la cuarta
(fij-45))
Iteracién 5.
En la iteracién 5 el destino no recibié etiqueta y todos los nodos etiquetados estan examinados
entonces se ha obtenido el flujo de valor 12 que es el maximo. Por lo tanto la red de Ia figura 3.13
muestra el flujo maximo. :
Figura 3.13 Flujo obtenido en Ia cuarta iteracién, correspondiendo al flujo maximo
(fij- aij)
(7.7) 7,9)
ae “ > 2.7) (2,3 Mag (0,8.
=~ |---| 10
(3,5) ( /
(2,9)
(2,2)
Como N={nodos con etiqueta} = {1} entonces la cortadura minima es
(N,N*) = { (1,2),(1,3) } cuya capacidad es:
q(N, N°) =7+5=12=12 =v.
5
Capitulo 3. Flujo en Redes
3.3.2 Variantes del problema
En la seccién 3.1 se plantearon algunas de las posibles variantes que pueden darse en una red en la cual se busca encontrar un flujo maximo. En esta seccién se plantean los métodos de solucién para cada una de dichas variantes y se desarrollan ejemplos para cada uno de ellos
Como se menciono al inicio del capitulo las variantes que se presentan son tres, €stas son:
1) Determinar el flujo maximo en redes en las que los arcos, adem4s de las capacidades maximas, también admiten cotas inferiores distinto de cero para el flujo que pasa por ellos.
2) Determinar el flujo mAximo en redes en las que los nodos tienen capacidad mAxima para el
fiujo que pasa a través de ellos. : 3) Determinar el flujo m4ximo en redes que incluyen varios origenes y varios destinos.
Los métodos de solucién de cada una de las variantes mencionadas se basan principalmente en realizar "transformaciones” en Ja red original, de modo que el problema dado se reduzca a un problema de flujo m4ximo como el tratado en la seccién 3.2.
En cada uno de los casos a partir del flujo que es enviado en la red "transformada” se obtiene
un flujo factible en 1a red original.
3.3.2.1 Redes con cotas inferiores en los arcos
Sea R = (X,A,/,q) una red con capacidades qj y con cotas inferiores J, para el flujo a través de
los arcos.
Dada una Red con las caracteristicas anteriores se desea determinar si existe un flujo que satisfaga las condiciones:
fy < fyS gy para todos los arcos de R.
El problema es el de determinar un flujo que cumpla con las condiciones anteriores, esto se
debe a que un flujo inicial igual a cero a través de todos los arcos no corresponde a un flujo factible. Para resolver este problema, se realizan las siguientes transformaciones a la red original.
Sea X' = XU {o',d'}
Sea R'= (X', AU A'U {(d,0)}, q') la red construida a partir del R de la siguiente forma:
1) Introducir un origen o' y un destino d' artificiales. 2) Definir el conjunto de arcos A' del modo siguiente:
76
Capitulo 3. Flujo en Redes
Para cada arco (i,j) en el que /; # 0 construir un arco (0',j), cuya capacidad sea:
oj = Fj e introducir un arco (i,d') con capacidad
dia = hj
3) Definir la capacidad q', del arco (i,j) como qj - 4j-
4) Finalmente, se introduce un arco (d,o) con capacidad
q‘t = ©
Un ejemplo de esta construcci6n se muestra en las figuras 3.14 (a) y 3.14 (b). En esta red o=1
y d=6.
Figura 3.14 (a) Ejemplo de red con cotas inferiores
(kj,4y)
0.3)
En la red original se tienen cuatro arcos con cotas inferiores diferentes de cero para el flujo:
(1,2), 2,3), (4,6) y (5,6) entonces los arcos que se deben agregar son: (0',2), (0',3), (0',6) de capacidad 2,1 y 3, respectivamente, esto es porque dos arcos inciden en el nodo 6 y sélo se
77
Capitulo 3. Flujo en Redes
agrega uno con capacidad q'o6 igual a la suma de ljg+ls55 =2+1=3. De la misma forma, si
existen para algin ie X varios arcos de la forma (i,j), con 40, se define un sdlo arco (i,d') con
capacidad q', igual a suma de las cotas inferiores de estos arcos. Los arcos que inciden en d’
son: (1,d'), (2,d"), (4,d"), (5,d') con capacidades 2, 1, 1, 2 respectivamente; finalmente se
agrega el arco (6,1 ) de capacidad oo.
Ahora, se determina el flujo m4ximo de o’ ad’ en R’. Si el valor del flujo m4ximo en esta red, es igual a la suma de las Jj # 0 de la red original, entonces se tiene que existe un flujo
factible que satisface los requerimientos especificados en los arcos de la red original. Esta
afirmaci6n se basa en el siguiente:
Teorema 2. Sea F el flujo maximo de valor v' en R' y sea Fgg el flujo a través del arco (d,o). Si
V=Hzrh (ij) €A
entonces existe un flujo factible de valor Fgg en R.
Demostracién
Se tiene que F es un flujo factible en R', entonces cumple con:
vosii =o
.-S Fo 0 sii 407"? 3 # igo) ceo 8 ; -voosit =d’
(i)
O<Fy< qj V Gj) ¢ AUA'U {(d,0)} .. Gi)
Por hip6tesis se tiene que v' = = Jj Gj) €A
lo cual implica que los arcos de la forma (0',j) y de 1a forma (i,d') est4n saturados.
El flujo f definido en R como:
fj = Fy + lj vae A,
es factible de valor Fgo en R. Para probar esto se tiene que verificar que se cumplen:
f £ Fg sii =o
wo = 0 sii od ial aah Fe si a
..-(a)
ly < fj < ay VG EA (0)
Se comprueba (a) para cuando i # 0,d:
78
” Capitulo 3. Flujo en Redes
Efy - Sy = VR + Eh - LF a - Dla jeX keX jea' jed' k+o' kso’
jeX jeX keX keX
= z Fj + Fas - = Fu - Foi
jee! k#o! jeX keX
jex' keX'
= Opor (i).
Ahora sii = 0:
= fy - Xf ko = & Fy +2 |g - = Fro - Lhe
jeX keX jea' jea’ k#o! ko!
jeX jex ked ked 0 keX
= z Fj + Fon - 2 Fro - Foro
jea’ k¢o'
jeX ked keX
= x Fy ~ ZFro = 2 Fj -ZXF x + Fao
jeX ked jeX' ke X’
keX’
= Fa por (i)
Ahora sii = d: :
Lfg- Lfka = UFa +2ly- = Fea - Zhao jeX keX jed' je’ kzo' ko"
, jeo jeo keX keX
jeX jeX
= z Fy + Faa - z Fya - Fora
Jed’ kzo!
jeo : keX jex
= x Fy - Fao - ZFya
jex' jex’
= -Fao por (i)
79
Capitulo 3. Flujo en Redes
Para probar (b) se tiene que por (ii)
O+hsFy + hsqy th vajpea
bij < fj < Gy Vv (ij)e A
yaque fy = Fy + yj yq'y = ay - 4
De aqui se concluye que f es un flujo factible en R de valor Fy, y el teorema queda
demostrado B /
No obstante lo anterior, se tiene que no siempre existe un flujo factible en R. La forma de determinar si ésta situacién es la que ocurre en una red se basa en el siguiente:
Teorema 3: Sea F un flujo maximo de o' a d' en R' de valor v’. Si
vi4#lly GdeA
entonces no existe un flujo factible en R.
Demostraci6n Se supone que existe un flujo factible de valor v en R, entonces se cumplen:
v sii =90
fs - DA = 0 sii god iro? Kare wy sii cd
+i)
ysfj< ay VGj) eA ...Gi
Se define el flujo F en R' como sigue:
Fy = fj - Ly, Vv (i,j) € A.
Fag = V
Fa = 2 dj donde /; es la cota inferior de los arcos de la forma (i,j) « A j
Fy, = 2 Ay donde j,; es la cota inferior de los arcos de Ja forma (k,i) ¢ A : :
Para llegar a una contradiccién se tiene que verificar que F es un flujo factible en R' de valor
v=thy ade A
ESTA TESS NO DERE SAUR Lt ScusTeep °°
Capitulo 3. Flujo en Redes
Primeramente, se sabe que para que F sea un flujo factible debe cumplir con lo siguiente:
voosii =?
Si - de Fa = 0 sii yo’,@? jer k, je ef ) vosii =@
- (a)
O<Fys q'y VUE AUA' U {(d,0)} .-(b)
Se demuesira (a) paraiz#o',d',oyd.
2 Fj -UFy = z fj + Fg - 2 ky - = fig - Foi + Thy
jeX’ kex’ jed’ jeX k#o' keX
jexX’ keX’
Por otra parte se tiene que
Fig = 2h y jeX
Foi =z be
keX
de esto se desprende entonces que lo anterior es:
Zfy - = fa =0 por (i)
jeX keX
Si i = 0 se tiene:
ZFy-=UFe = Thy + Foa - D Ay - Uo - Foo - Fao + Dhko = jeX' keX' jed' jeX k¢o' keX
kex' ked
kex’
= Lh - Zfko - Fao = jed’ kzo'
jeX keX
= v-v=0.
Analogamente si i = d se tiene:
=z Fy -=z Fra =0
jeX’ keX’
Por otra parte se tiene que:
81
Capitulo 3. Flujo en Redes
To')=+2
. '@)=2...... (a)
por lo que
TF oy - TP =z Foy = hy
j k j Ge A
2Fyj - DFR = UFe = 2h j k j Gjed
Resta verificar (b). para lo cual se inicia de (ii):
iy - hy < fy - ly say - hy para todo (i,j) <¢ A
pero
By = fy-hy GQy=a-h vajea
de aqui que:
Os Fy <qy v ij)e A
Se tiene también que
Fig = rij = q'ia je X
Fy, ~ zy = q'o4 y
keX
q'ao= ©
Por lo tanto (b) se cumple para todo (i,j) «A U A’ U {(d,0)} concluyendo que F es un flujo
factible de valor ,
Gea enR'.
Finalmente esto conduce a observar que los arcos de R' de la forma (0’ i) forman una cortadura
de capacidad LA
ajpea
82
Capitulo 3. Flujo en Redes
por lo cual F es un flujo maximo en R', conduciendo a la contradiccién deseada, de aqui que se
confirme el teorema.
Una vez determinada la existencia de un flujo factible en la red R, si éste existe, se tiene que
verificar si es el m4ximo que puede ser enviado de 0 a do de no ser asi determinarlo, para lo
cual se utiliza el algoritmo de Ford y Fulkerson con una pequefia modificacién en el paso 3
inciso Gi), que se refiere al etiquetado de los predecesores. El inciso modificado queda de la
siguiente forma: .
ii) A todo j ¢ I (i) que no esté etiquetado y tal que fj > Jj asignar Ja etiqueta [-i,f@)], donde
fj) = min{f(@), fj - Gi}.
Esta modificacién surge de manera natural pues el minimo valor de flujo a través de (j,i) es Jj.
Por otra parte se tiene que la capacidad de la cortadura de una red con cotas inferiores es:
q(N.N') = Lqy - Dh icN ie Nt jeN’ jeN
Para ilustrar el método se resuelve el problema del agente de viajes que se mencion6 en la
seccién anterior, en el cual se requiere cubrir ciertos requerimientos. (Ver figura 3.4). Para
facilitar el manejo de la red sean los nodos 1 = Chicago, 2 = Madrid, 3 = Paris, 4=
Monaco, 5 = Sarajevo, 6 = Roma, 7 = Sofia y 8 = Estambul. Entonces la red queda como
sigue:
Figura 3.15 Red del agente viajero con restricciones de capacidad inferior
Primero se determina si existe un flujo factible en la red original, para lo cual se construye la
red R', ilustrada en Ja figura 3.16.
83
Capitulo 3. Flujo en Redes
Figura 3.16 Transformacién de la red del agente viajero con restricciones de capacidad inferior
@i)
Aplicando el atgoritmo de Ford y Fulkerson sobre la red R' para determinar el flujo maximo de
o' ad’, se obtiene un flujo de valor 26, que se muestra en la figura 3.17.
Figura 3.17 Flujo m4ximo en la red transformada F.q'y)
Como el valor del flujo es-igual a la suma de las cotas inferiores = 26, y Fyo es 16, se tiene
que existe un flujo factible de valor 16 en la red original, éste se muestra en la figura 3.18.
Capitule 3. Flujo en Redes
Figura 3.18 Flujo inicial factible en la red del agente de viajes
Cj fj tap)
(6,4,5) |
(0,0,
3 (9,9,17)
En términos del problema se puede decir que el agente de viajes podra cubrir los
requerimientos de los turistas que desean realizar los vuelos mencionados. Sin embargo atin no
se han cubierto eh su totalidad los itinerarios de todos los turistas, ya que el valor del flujo factible es de 16 y los turistas son 20. Por lo que se aplica el teorema de Ford y Fulkerson, con
la modificacién mencionada antes, sobre la red original.
En la primera iteracién se encuentra la cadena de flujo aumentante 1,8 con capacidad
incremental 1, El valor del flujo es 16 + 1 = 17.
La segunda iteraci6n determina la cadena aumentante 1,2,4,5,8 con capacidad incremental de
1. Valor del flujo = 17 + 1 = 18
La tercera y Ultima iteracién define la cadena aumentante 1,3,5,7,8 con capacidad incremental
de 5. Valor del flujo 18 + 5 = 23.
Con este flujo se concluye,
i) enviando solamente la diferencia que falta para alcanzar el valor del flujo deseado (20), o
ii) enviando todo el incremento posible.
La siguiente red muestra el flujo de valor 20 encontrado.
85
Capitulo 3. Flujo en Redes
Figura 3.19 Flujo de valor 20 en la red del agente de viajes Gj -ij-44)
(4,5,5)
|
| ; (a {0,4,8) (60s
(0,3,3) ~«
_
a NN (3,3, 3), mt
(9,11,17)
Se puede concluir entonces que el agente de viajes puede enviar a todo el grupo de turistas de
Chicago a Estambul, en el dia determinado, cubriendo los requerimientos en !os vuelos solicitados por ellos.
3.3.2.2 Redes con capacidades en arcos y nodos
Sea R=(X,A,q,w) una red donde los arcos tienen capacidades qj, y los nodos tienen
capacidades w; (j = 1,2,...,n). Entonces el flujo total que entra al nodo j debe tener un valor
menor 0 igual que W;, €s decir:
E fy < ie
Se desea encontrar el flujo m4ximo entre los nodos origen y destino que satisfaga la restriccién
anterior.
Sea R' una red de la siguiente manera: para cada nodo j de R con capacidad finita, corresponde
un arco (j,j*) con capacidad w;. Cada arco (i,j) de R incidente a j corresponde un arco (i,j) 0
(if) de R’ y para cada arco (j, k) de R, corresponde un arco (j*, kyo qr sk). Todos los arcos
de R conservan su capacidad.
Con R' definida de esa manera, se tiene que a partir de cualquier flujo definido en esta red se puede definir otro del mismo valor en R y viceversa. Esto se pude lograr si se define el flujo en
R como sigue:
~ 86
Capitulo 3. Flujo en Redes
Si f ' es un flujo factible en R' de valor v; sea f en R como sigue: fa = Pury fy = Pity V
ieX con capacidad finita, y fy = f 'y en otro caso. Es facil verificar que f asi definido es
factible en R.
Si jeX tiene capacidad finita w, y X’ es el conjunto de nodos de R' se tiene que:
Seajxoyd.
Lf =ZPj+i ieX ieX
= Pit
Thy = 2 fy keX’ keX
Por lo tanto ¥ f= 2 fy = 0 ieX keX
Andlogamente se prueba que la diferencia anterior es v para j=o y-vparaj =d.
v sii =o
fla. - ft. = 0 sii #o,d i Ki * jev 'S Kev vsti d
por otro lado:
Lfy =UPyp = Pjy+ S wy ie! G) ieV
entonces f es un flujo factible de valor v en R.
De aqui que el determinar el flujo m&ximo en R’ es equivalente a determinarlo en R. Por lo que
se puede utilizar el algoritmo de Ford y Fulkerson para resolver este tipo de problemas.
Cabe sefialar que en este tipo de redes, 1a cortadura puede quedar integrada por arcos y nodos.
Ejemplo: La siguiente figura muestra la red R y la correspondiente red R'.
87
Capitulo 3. Flujo en Redes
Figura 3.20 Ejemplo de red con cotas en arcos y nodos y su trapsformacién
(qj) [wl
( aN Oren, a
3 3) )
(7) 6)
Una vez mas se utiliza el ejemplo del agente de viajes para ilustrar el método planteado
anteriormente. La red original se muestra en la siguiente figura:
Figura 3.21 Red del agente de viajes con cotas en los nodos
qi) fj]
(5)
(13)
(5)
8&8
Capitulo 3. Flujo en Redes
Al aplicar los cambios sefialados, se obtiene Ja siguiente red R’:
Figura 3.22 Transformacién de la red del agente de viajes con cotas en los nodos
(q'ij)
(5) ~
ue (8
(9
3 —— |
oe
Nf an
Aplicando el algoritmo de Ford y Fulkerson, sobre R' se obtuvo el flujo m4ximo que se
muestra en la figura 3.23 a).
Figura 3.23 (a) Flujo maximo obtenido en Ia red R’
(f4,4'5)
(5,5)
(7,7)
rg
1 (283)
65)
(7,17)
En la Ultima iteracién tnicamente se pudieron etiquetar los nodos:
{1,27}
89
Capitulo 3. Flujo en Redes
los nodos no etiquetados son:
{27 ,3,4-,4+,5-5+,6,7,8}
Esto determina la cortadura {{1,3), (1 ,8),(2°,2+)}. Se observa que en este ejemplo Ja cortadura
esta conformada por los arcos definidos en R' para el nodo 2 con capacidad.
Por lo que la cortadura en este caso esta formada por dos arcos y un nodo; {(1,3), (1,8), 2}.
El flujo en la red original se muestra en la figura 3.23 (b).
Figura 3.23 (b) Flujo:m4ximo obtenido en la red R’
(fy,4'y)
(5,5)
En términos del ejemplo, se puede decir que como el valor del flujo m4ximo en la red con
restricciones en los nodos es menor que 20 y el nimero de turistas que desean viajar son 20, el
agente de viajes no podra enviar a todo el grupo en el dia sefialado.
3.3.2.3 Redes con varios origenes y varios destinos
Sea R = (X,A,q) una red con k nodos origen y r nodos destino; se supone que el flujo puede enviarse de cualquier origen a cualquier destino. En una situacién tal el problema consiste en
encontrar el flujo m4ximo de todos los origenes a todos los destinos.
Para convertir este problema en un simple problema de flujo maximo de o a d tnicamente se crea un nuevo nodo O Ilamado Superorigen y un nuevo nodo destino D llamado Superdestino.
90
Capitulo 3. Flujo en Redes
Se conecta el Superorigen con cada uno de los origenes 01, 02, 03,...,0, mediante un arco
(O,0,), (0,02), ... , (O,0,), cada uno con capacidad infinita.
Asi mismo, se conecta cada nodo destino original con el Superdestino D por medio de (dD),
— (d2,D), ... , (dD), también con capacidad infinita cada uno.
La ted R' asi obtenida es:
R' = (X',A',q') donde:
X' = XU {O,D} .
A'=AU{O,o)/i= 1,2,...,k} U{GD)/j = 1,2, ... ,r}
qy=a VGDeEA q'ou = ® i=1,2,...,k
q'ap = © j= 1,2,....r
Claramente un flujo factible en R’ restringida en los arcos de A es un flujo factible en R. Por lo
que un flujo maximo en la red R' corresponde a un flujo maximo en la red original.
Por lo tanto el algoritmo de Ford y Fulkerson puede ser aplicado a la red R' y el flujo maximo
generado por el algoritmo conduce a un flujo maximo en la red original.
Ejemplo:
Figura 3.24 (a) Red con varios origenes y varios destinos
(qi)
—_.
= .
Onn ot
La transformacién de la red R, como se indic6 arriba, nos proporciona la siguiente red R':
3
91
Capitulo 3. Flujo en Redes
Figura 3.24 (b) Transformacién de la red con varios origenes y varios destinos
(qi)
( ° 02 NN
a log
Al aplicar sobre R' el algoritmo de Ford y Fulkerson se obtiene un flujo maximo de valor 16,
mismo que se muestra a continuacién.
Figura 3.25 Flujo maximo en la red transformada
(Pj,45)
oi" 0) si
(20) 555 oo (5.9)
Y la red original queda como sigue:
92
Capitulo 3. Flujo en Redes
Figura 3.26 Flujo maximo en la red original
(fiji)
93
Capitulo 3. Flujo en Redes
3.4 Flujo maximo a costo minimo
Hasta el momento los problemas de flujo que se han estudiado han estado encaminados sobre redes dei tipo R=(X,A,1,q), es decir, redes que consideran funciones de capacidad inferior
superior, respectivamente, sobre sus arcos.
Si se considera una funci6n de costo c en la red, entonces ésta toma la siguiente forma: R =
(X,A,1,q,c).
La funcién c asocia a cada (i,j) < A el nimero c, denominado costo por unidad de flujo que es
enviado a través del arco (i,j).
En una red con estas caracteristicas se puede estar interesado en encontrar el mayor flujo posible al menor costo; o bien un flujo de valor v, igualmente, con el menos costo.
A la primera alternativa se le conoce con el nombre de determinar el Flujo Maximo a Costo Minimo. A \a siguiente alternativa se le conoce como determinar el Flujo de Valor v de Costo Minimo, cabe mencionar que el valor v dei flujo solicitado debe ser menor 0 igual al valor del
flujo m4ximo, pues de [o contrario el problema no tiene solucién.
En lo sucesivo se considerard y mientras no se sefiale lo contrario, redes que no tengan
asociada Ja funcién / de capacidad minima.
Costo de un flujo:
Considerese la red R= [X,A,q,c]. Una vez que se cuenta con un flujo inicial factible, se puede determinar su costo a partir de la siguiente definicién:
EI costo de un flujo factible f, se define como la cantidad
2 cy fi GpeA
El problema que se presenta ahora es el de determinar si este flujo es de costo minimo, o en caso de no serlo, saber c6mo obtenerlo.
A continuacién se incorporan los conceptos que permiten resolver este problema.
94
Capitulo 3. Flujo en Redes
3.4.1 Propiedades de las soluciones
3.4.1.1 Método primal
Algunas veces se desea representar un flujo factible como la suma de flujos factibles mas
simples. Esto, at cuando en la practica no es muy usual, es importante porque contribuye a un
mejor entendimiento de la naturaleza de los flujos en redes y sirve como una herramienta para
justificar algunos de los algoritmos de flujo que se estudian en el presente capitulo.
Sea S un camino de 0 a do un circuito en la red, se denota por h°(S) al vector que cumple fj =
h, si(i,j <So f; =O¢S.
Dados dos flujos factibles f y f', se denota por f + f' el flujo factible para el que el flujo en el
arco (i,j) es fj + f° y.
El teorema que se describe a continuacién establece que un flujo factible de valor v en una red
R, puede ser descompuesto como la suma de flujos unitarios a través de v caminos elementales
unitarios y k circuitos elementales unitarios.
Teorema 4.
Si f es algun flujo factible de o a d de valor v (v entero) en una red R, Entonces f puede ser
descompuesto por:
f = 1° (Py) +1°(P2) + ... +1°(P) +191) +19°(Gy) +... +1°G,).
donde P,, P2, ... ,P, son caminos elementales de 0 ad y @, @y,...,O, son circuitos
elementales de R. (El camino P, y el circuito @; no necesariamente son distintos).
Demostracién:
A partir de R = (X,A) con flujo factible f, se construye la red unitaria R’ como sigue:
R! = (X,A}) donde A’ est4 formada de 1a siguiente manera:
Si fj, unidades de flujo circulan por el arco (i,j) de R, entonces se introducen fj arcos paralelos
del nodo ial nodo j en R!. Si f = 0, entonces no hay ningtn arco de la forma (i,j).
La red R' es entonces wna s-grafica de R y dado que cada arco en R' corresponde a una unidad
de flujo a través del arco (i,j) en R, R' representa el flujo f en R.
95
Capitulo 3. Flujo en Redes
En la red R' los grados de los nodos deben ser, por la condicién de conservacién de flujo 3.1:
e@ = gi) para i¢o,d
g*(o)- g(o) = g(@) -g°@)
Si se agregan v arcos de d a o en R! entonces R! poseer4 un circuito Euleriano. La eliminacién
de estos v arcos del circuito Euleriano deja v caminos de o a d que en total atraviesan cada arco
de R! exactamente una vez. Sean P',, P'2,...,P’y dichos caminos. Los P'; caminos (i=1,2,...v)
no necesariamente son elementales, aunque (por la definicién de circuito Euleriano), son
simples. Sin embargo, algtin camino no elemental puede ser considerado como la unién de un
camino elemental de (0 a d ) y un ndmero de circuitos elementales ajepos, obteniendo asi:
f = 19(P,) +1°(P2)+ ... £19 (Py) +1° Gy) + 1° Gy) +... +1° Gy.
donde los P; son caminos elementales de 0 ad y Qj son circuitos elementales.
En general no todos los caminos y circuitos son distintos. Si solamente los primeros v’ caminos
y k' circuitos son distintos, con el camino P; apareciendo hj veces en la lista P,, Po, ...,Py y el
circuito Q, apareciendo J, veces en la lista O,,O2,...,0, entonces el flujo f puede ser escrito
como: v k'
f=Eh oR) +UG? I=1 i=l
En el curso de la demostracién del teorema se obtuvo otro resultado importante, éste es que los
flujos unitarios en que f ha sido descompuesto son conformables, es decir, que si fj es el flujo
neto en el arco (i,j) en R entonces hay un nimero total de fj flujos unitarios usando este arco en
la direccién de i aj en R’.
Figura 3.27 Ejemplo de descomposicién de flujo en circuitos y caminos
96
Capitulo 3. Flujo en Redes
Un concepto de fundamental importancia para verificar la optimalidad de un flujo es el de Red
Marginal o Incremental.
Red Incremental o Marginal
Sea R = [X,A,q,c] una red y sea f un flujo factible definido en R. La red marginal o
incremental de R, con respecto al flujo f, es la red:
R'() = [X, A,UAg,q',c’], donde:
(ip e Aro GjeAy fy < dy @.i) ¢ A, & ijpe Ay fj > 0
q'y = qy- fy . Ve Ad
ay = fi Ve Ag cy = Gy Ve Ay
cy = Ci Ve Ag
La siguiente figura muestra un flujo en la red y su correspondiente red marginal.
Figura 3.28 Ejemplo de red y su respectiva red marginal
(£5.49 i )
97
Capitulo 3. Flujo en Redes
Se pueden observar las siguientes caracteristicas en la red marginal R' de una red R con un
flujo f de valor v:
En general la existencia de un circuito en R' implica la existencia de un ciclo en R. A continuacién se explica como estos circuitos conducen a la determinacién de Ja optimalidad del
flujo a costo minimo en Ia red.
Todo arco (i,j) € A; en el ciclo, corresponde un arco (i,j)eA donde fj, < qj por lo que el flujo
puede aumentarse a través de él; y todo arco (i,j) € Az en el ciclo corresponde un (j,i) € A tal
que fj, > 0 por lo que el flujo puede ser disminuido a través de él.
Si el flujo a través del ciclo en R es modificado por una cantidad b de la siguiente forma:
f; si (ij) ¢ ciclo f’; =} fjt+b si (iJ) eA, y pertenece al ciclo ;
f; -b si Gi) e Az yel arco (i,j) pertenece al ciclo
se puede probar que el valor del flujo en R sigue siendo v y ademas sigue siendo factible.
Esto es facil de demostrar, si se verifica que las siguientes ecuaciones se cumplen:
v sii =o
Pi- a hy = 0 sii ,od jer) er -vosii =d
El cumplimiento de jas ecuaciones es valido para cuando i no pertenece al ciclo. En caso de
que i pertenezca al ciclo, existen dos vecinos n y m de i que también pertenecen a dicho ciclo.
En tal caso puede suceder alguna de estas circunstancias:
1.- Los vecinos de i sean sucesores de él en R.
(ne ay Om) 2.- Los vecinos de i sean predecesores de él en R.
98
Capitulo 3. Flujo en Redes
ooo,
—— 1 —
eb Om Cm)
3.- Los vecinos de i sean: n sucesor y m predecesor, es decir, que en la red R'(f) existen los
arcos: (k, i), Gm) € Ag
4- Las vecinos de i sean: n predecesor y m sucesor.
NT+b Com (m)
Para el caso 1 se tiene:
Zf'y - Dil =
j k
Lf y +f'int+f'lm-=Uf'w =
j#o,m k
j#nm k
vy sii =0
f,-> f= 0 sii god moi Led y si ca
Andlogamente se pueden realizar las verificaciones de los otros tres casos.
Se tiene entonces que con la red marginal se pueden encontrar circuitos y por lo tanto ciclos en
R a través de los cuales el flujo puede ser modificado sin cambiar su valor.
99
Capftulo 3. Flujo en Redes
El costo de un circuito en R' est4 determinado por los costos de los arcos que lo forman,
entonces el enviar una unidad de flujo a través de un arco que esté en el ciclo correspondiente
en R, incrementa el costo del flujo cy unidades si el arco Gj) € A: en R' 0 en -Cj unidades si
(j.)) € Ap en R’, por Io tanto el modificar una unidad de flujo a través de un ciclo en R, implica
que el costo del flujo se modifique en la misma cantidad que el costo del circuite en R'.
De aqui que se desee detectar aquellos circuitos de costo negativo para modificar el flujo a
través de ellos y asi disminuir el costo total dei flujo en R.
Se puede concluir que si existe algn circuito negativo en la red R'(f) es conveniente modificar
el flujo en la mayor cantidad posible b, por el correspondiente ciclo en R, obteniendo asi un
flujo del mismo valor y de costo menor.
El maximo valor de b que es posible modificar en un ciclo debe ser tal que las capacidades de
los arcos en R'(f) no sean sobrepasadas, puesto que éstas representan el maximo cambio
posible en los arcos de R. Por lo tanto:
b = Min { q' x / (i,j) esta en el circuito }
Ejemplo:
En la figura 3.28 (a) se tiene un flujo de valor v = 5 y de costo 42.
Si se observa en R'(f) figura 3.28 (b) que la secuencia de nodos: 1,3,2,1 forma un circuito de
costo -5; con lo expuesto anteriormente se infiere que por cada unidad. de flujo que pueda ser
modificada en el ciclo correspondiente en R se reduciré en 5 unidades el costo del flujo.
Tenemos entonces que: b = Min { q'13, q’32) 4'2,1 } = {1,12} = 1
Se obtiene el siguiente flujo de valor v = 5 y costo 37 = 42-5
Figura 3.29 Red con flujo igual y costo menor que el de Ia figura 3.28(a)
(Fj,.44.04))
(0,2,1)
(5,7,2) ~~
(8) Aaa
(0,6,2)
100
Capitulo 3. Flujo en Redes
Con lo expuesto hasta ahora se puede concluir que dado un flujo en una red y obteniendo su
respectiva red marginal, se puede determinar si el flujo dado es de costo minimo, verificando si
en la red marginal no existen circuitos negativos.
Esta afirmacién queda formalmente planteada con el siguiente
Teorema 5
Sea f un flujo factible de valor v en una red R=(X,A,q,c). Entonces el flujo f es de costo
minimo si y s6lo si no existen circuitos negativos en la red marginal R'(f).
Demostraci6n:
Sea c(f) el costo del flujo f.
Si O es un circuito en R'(f) sea
c[@ | R'(f)] el costo del circuito.
Por contradiccién se demuestra que si f es un flujo de costo minimo, no existen circuitos de
costo negativo en R'(f).
Existe un circuito @ en R'(f) tal que
c[B | R'(f)] < 0
La circulacién de una unidad mas de flujo al rededor del circuito O produce un nuevo flujo f, el
cual se denota por f + 1 ° (), con la caracteristica de que no cambia el valor de v del flujo de
oad.
El costo del flujo f + 1° @) es c(f} + c[B | RH] < cif)
lo cual contradice la hipétesis de que f era el flujo a costo minimo.
<<
Se tiene que c[@ | R'(f)] = 0 para todo circuito @ en R'(f) y que f* ( # f) es el flujo a costo
minimo de valor v.
Ahora sea f* - f el flujo por el cual el flujo del arco (i,j) es fr i ~ fy.
Por el teorema 4, se tiene que f* y f pueden ser descompuestos en la suma de caminos elementales de o a dy de circuitos elementales, la construccién de la red unitaria R' para el
flujo factible f* - f, conduce a que los grados de los nodos en R’ sean:
101
Capitulo 3. Flujo en Redes
gt+(i)=s£-(i) V ieX
De acuerdo al teorema 4, R' esté compuesta’ por una coleccién de circuitos unitarios conformables a través de los circuitos O,, 2, . . ., (@,) y entouces se puede escribir:
f*-f=1°@)+1°@)+...+1°@)
Dado que los flujos 1 ° (@;) i=1,2,...k son conformables y se sabe que el flujo
f'=f4+1°@)+1°@)+...+1°@
es factible, alguna suma de f + 1°(@,) + 1°(@,) +... +1° (@,) es factible para alguna
i<rs<k. Asi, considerando el flujo f + 1° (@,) se tiene que:
eff + 1° @)J = elf] + [@)/ RH] 2 ch
Se considera ahora la grafica marginal de este flujo
R'(f + 1° @1)).
Los tinicos arcos de esta red que pudieron haber reducido sus costos en comparacién con sus
correspondientes costos en la red R'(f) son aquellos arcos que estan en "sentido inverso” en @.
Sin embargo desde que los flujos 1 ° (@,), 1 ° (@2). . . se definieron ningtin arco de ese tipo
pueden ser usados por ninguno de los circuitos O,, Q2, . . ., GD, y entonces llega a ser
irrelevante para el argumento.
Se tiene entonces que: i
c(@p) / R'E + 1° Oy) > = ci / R'(l
para algin 1] = 2,...k
El costo del flujo es entonces:
c[f + 1°@1) + By] = clf+1°@y)] + c[G2/R'(F+1°y)))
off + 1°(@y)] + c[By/R'D] cff+ 1°)
> eff]
Vv
IV
Continuando con este razonamiento finalmente se obtiene que:
cff"} = cff] lo cual contradice el supuesto de que f* es el flujo de costo minimo.
102
Capitulo 3. Flujo en Redes
Con lo expuesto hasta ahora se puede concluir que una manera de resolver el problema es
iniciar con un flujo factible f de valor v, construir la red marginal R'(f) y verificar si existen circuitos negativos usando algtn algoritmo de rutas mds cortas de los estudiados en el capitulo 2.3. Si no existen circuitos negativos el flujo f es de costo minimo. Si existe un circuito negativo @, se debe encontrar este circuito y enviar la maxima cantidad de flujo posible b a través del ciclo correspondiente en R. Entonces el flujo permanece del mismo valor v pero su
costo se reduce en bc(@), donde c(@) es el costo del circuito negativo @. El proceso puede
repetirse entonces con este nuevo flujo f’, factible por construccién, determinando la nueva red marginal R'(f ') y realizando otra iteracién.
En términos de programacién matematica un algoritmo como el descrito anteriormente es llamado primal, dado que su primer objetivo es el de obtener un flujo factible f y entonces mejorarlo hasta obtener el 6ptimo manteniendo su factibilidad.
3.4.1.2 Método dual
Un método alternativo para resolver este problema consiste en iniciar con un flujo factible de costo minimo de valor vy < v, incrementar el flujo obteniendo uno nuevo de costo minimo y
valor v, > Vo, repitiendo esta operacién hasta alcanzar el flujo de valor v y costo minimo. Por la caracteristica del procesos que se realiza, este método es llamado Dual, ya que inicia con un
flujo 6ptimo y se desea alcanzar 1a optimalidad. ,
En este esquema es posible empezar con un flujo factible de costo minimo igual a cero en todo
los arcos, el cual es de valor 0.
Se tiene la red de la figura 3.30 (a).
Figura 3.30 Ejemplo de una red con flujo inicial cero en todos sus arcos y su respectiva red marginal
(fj,.45.C4) (q'iy.¢'5)
(2) (0,7,3)
(0,7,2) A 06,3) (0,5,2)
/ “ees GO
(3.4,5) (09,3), ‘.(3,3,0) 4
103
Capitato 3. Flujo en Redes
Observando Ja red marginal, que en este caso coincide con la original, se puede inferir lo
siguiente:
Un camino de o a d, de 1 a 7 en el caso del ejemplo, en R' corresponde a una cadena de o ad
en R.
La siguiente observacién es muy importante porque da la pauta para determinar el tipo de cadenas aumentantes que se deben localizar para garantizar la optimalidad en el cambio del flujo. La ruta 1,3,6,7 en R' tiene longitud de 6 unidades; se puede decir en términos generales que la longitud de la ruta de o a d en R' determina el costo por unidad de flujo que es enviado a través de Ja cadena correspondiente en R y el flujo que puede ser enviado por dicha cadena est4 determinado por la capacidad incremental de la misma. En el ejemplo 3 es 1a capacidad incremental de la cadena 1, 3, 6, 7 y si se envia esta cantidad de flujo se obtiene otro de costo
6 unidades mayor.
En base a esta observacién se debe estar entonces interesado en determinar, en cada actualizacion del flujo, una ruta de o a d en R' que sea la de menor longitud, es decir una ruta més corta, para que la cadena aumentante correspondiente en R sea la de menor costo, y a
través de ella enviar la maxima cantidad de flujo que sea posible.
Todas estas ideas quedan formalmente establecidas en el siguiente
Teorema 6
Sea f un flujo factible, en la red R = [X,A,q,c] de valor v y de costo minimo. Sea P* Ja ruta
més corta de o a d en R'(f), y sea P Ia cadena aumentante, en la red R, correspondiente a p*,
Entonces, el flujo f ', resultante de aumentar una unidad de flujo a través de la cadena P, es un
flujo de valor v+1 y de costo minimo.
Demostraci6n:
Se observa primero que es obvio que f' es de valor v+1.
Resta demostrar que el flujo f' es de costo minimo, la forma de hacerlo es verificando que la red R'(f') no contiene circuitos negativos.
Se sabe que f es de costo minimo y por lo tanto la red R'(f) no contiene circuitos negativos. Si - se comparan las redes R'(f) y R'(f '), se tiene que coinciden excepto, tal vez, en los arcos de
Ja ruta P*,
Considerando la particién de los arcos de P en los conjuntos F y B como se definieron el
capitulo anterior. .
f'y = fy +1< qi Vv Gj) € Fy
f'j=fj-1>0 VGje_B,
104
Capitulo 3. Flujo en Redes
entonces se puede concluir que R'(f ') no contiene circuitos negativos y el flujo f ' es de costo
minimo.
Ahora, si algiin (i,j) en F cumple con que f'j; = fj + 1 = qj entonces el arco (i,j) existe en
la red R'(f ) pero no en R'(f ') y el arco (j,i), si pertenece a esta red. Suponiendo que este arco
pertenece a un circuito O en R'(f '); sean los nodos de @: i,1,2,...,k,j,i.
Siendo P* una ruta més corta de o a d en R'(f ), entonces el arco i,j) es una ruta més corta de i
aj, puesto que (i,j) pertenece a P*. Por lo tanto en la red R'(f ) se tiene que
cy Se'y + C12 +o ty
luego c(@) = cc’, +c’. + ... + Cy~c'y 20. Y por lo tanto O no es un circuito negativo.
Ahora, si algtin (i,j) en F cumple con que f', = fj + 1 = qy entonces el arco (i,j) existe en
la red R'(f ) pero no en R'(f ') y el arco (j,i), si pertenece a esta red. Suponiendo que este arco
pertenece a un circuito O en R'(f '); sean los nodos de @: i,1,2,...,k,j,i.
Siendo P* una ruta mds corta de o a d en R'(f ), entonces el arco (i,j) es una ruta mis corta de i
aj, puesto que (i,j) pertenece a P*. Por lo tanto en Ja red R'(f) se tiene que
c'y Sey + C12 +i AK
luego c(@) = c'y + C'yyp +... + Cy -c'y 20. Y por lo tanto M no es un circuito negativo.
Andlogamente se prueba que R'(f ') no contiene circuitos negativos si existe algin arco (i,j) en
B tal que f'; = f;-1=0.
Con esto se da por terminada la exposicién de las ideas bAsicas al rededor de las cuales gira el método alternativo de solucién basado en rutas més cortas.
3.4.1.3 Método out of kilter
Los conceptos que se plantean a continuacién consideran redes del tipo R=(X,A,1,q,¢) y conducen a un método que permite combinar procedimientos primales y duales en un solo método de solucién al problema de flujo de valor v a costo minimo.
Este método aprovecha la formulacién del problema de flujo a costo minimo como problema de programacién lineal y tiene la ventaja de que no requiere la determinacién de una solucién inicial.
105
Capitulo 3. Flujo en Redes
Se supone entonces que se tiene una red R = (X,A,J,q,c). Donde | y q son los vectores de cotas inferior y superior respectivamente para el flujo a través dé los arcos y c es el vector de
costos.
Se agrega a la red original un arco de "regreso” (d,o) del destino al origen. Este arco tiene la finalidad de que todas las unidades de flujo que sean enviadas de o a d sean regresadas al origen 0, por medio de dicho arco, haciendo el flujo “circulatorio” es decir, en esta red todos
los nodos serén intermedios.
Para obtener el flujo a costo minimo de valor v, las cotas y el costo para este arco se definen
asi:
i(d,o) =v
q(d,o) =v
c(d,o) = 0
Es claro que cualquier flujo factible en la red original de valor v es equivalente a uno en la red
aumentada y viceversa.
Una vez definidas las capacidades inferior, superior y el costo en el arco de regreso el problema de flujo m4ximo a costo mfinimo para la red R=(X,A',/,q,c) donde A'= AU (d,o) se
expresa en términos de programaci6n lineal, como sigue:
Gi) EA
tal que: = fy — = fii =0,VieX © 34
jex jex
para todos los nodos i, y :
ky s fj Say .VGJ EN 3.5
fj 20, V (i,j) € A’
Se asocia una variable p; con cada ecuacién de conservacién de flujo (3.4), una variable dual hj
con la restriccién f < qy, que para el propésito de tomar el dual se considera de la siguiente
forma -fj 2 -qy y una variable dual v, con la restriccién fj'2 4;,.entonces el dual del problema
anterior es:
Max = i Vij - 2qij hy 3.6
Gj) EA Gj) EA’
tal que:
106
Capitulo 3. Flujo en Redes
Pi- Pj + Vy — hy = Cy 37
Vajp eA’ y
vy 20 V (i,j) € A’
hy 20 V (i,j) € A’
pi libre V i=1,2,...n 3.8
Si se selecciona cualquier conjunto de valores de p;, i=1,..,n. Entonces la restriccién dual para
el arco-(i,j) resulta:
Vi - by = Ci - Di + Pj 3.9
vy 20, hy, 20 V Gj) € A’
esta restriccién se satisface con los siguientes valores:
vi = Max {0, cj - pi + pj}
hy = Max {0, -(cy- pi + p)} ...3.10
Se tiene entonces que, dado cualquier conjunto de valores para p,, el problema dual siempre tiene una soluci6n factible, siendo los valores anteriores de vy y hy los 6ptimos para dicha
seleccién de p,.
Con esto en mente tenemos que las condiciones de holgura complementaria para obtener optimalidad en este problema son:
(fj - 4) vy = 0 Vv (ij) € A’ 311
(fij- qj) hy = 0 Vj <A’ 3.12
Se define ahora:
Zi ~ Cj = Pi- Pj - Cy 3.13
entonces por la definicién de vj y de hy se tiene:
vy = Max {0 , -(zy- ej) } 3.14
hy = Max {0 , z4- cy } 3.15
Dado un conjunto de valores de p; se calcula z j- Cy = Pi- Dj- Cy.
107
Capitulo 3. Flujo en Redes
Obsérvese que las condiciones de holgura coniplementaria 3.11 y 3.12 se cumplen sélo si:
Zy- ty < OD vy > O> fj =}, V (i,j) € A’
Zi - Gy >a> hy > 0=> fi = 45 Vv Gj) € A’
Zy4-Cy = O> hy s fy S qi V Gp ¢ A’
Por lo tanto para resolver éste problema de flujo a costo minimo, se debe encontrar un flujo
circulatorio y valores para las p; que satisfaga estas 3 condiciones.
Por ejemplo, si se tiene 1a siguiente red:
Figura 3.31 Ejemple de una red con cotas inferiores y superiores
(4ij.45,%y)
(7,10,3) (1,5,3)
se desea encontrar un flujo a costo minimo de valor 7 de 1 a 4; Aumentando el arco de regreso
se tiene que (4,1) = q(4,1) = 7 y c(4,1) = 0. La red aumentada se muestra a continuacién.
Figura 3.32 Red de la figura 3.31 con el arco de 4 a 1.
Gy »4ij Cy)
(2,5,1)
(0,10,4)
(7,7,0)
Suponiendo que se envia un flujo de valor 0 en todos los arcos, Este satisface las restricciones
3.4; mismo que se muestra en la figura 3.33:
108
Capitulo 3. Flujo en Redes
Figura 3.33 Ejemplo de una red con cotas inferiores y superiores y con flujo 0 en todos sus arcos
(ig, fj.45.¢4)
Se observa que el flujo satisface las primeras condiciones, es decir las condiciones de
conservacién de flujo, no asi las condiciones de capacidad en los arcos.
Ahora se asignan valores a las variables pj.
pi = 0, po =0, pp=0, pr =O.
Con los valores dados a las variables de los problemas Primal y Dual, se pueden obtener los
valores para Z j - cy : como se definié en 3.13:
Zp-C2 = 0-0-1 =-]
Z3-C3 = 0-0-4 = 4
Z3-Cy3 = 0-0-0 = 0
Zm- Cy = 0-0-5 = ~5
Zu - C4 = 0-0-(3) =3 Z41- C4, = 0-0-0 =0
Si se observa el arco (1,2): Z2 - cy. = -1y fio * dy, se tiene que dado que no se cumplen las
condiciones de holgura complementaria se dice que el arco est4 fuera de orden (out-of-kilter) o que no es conformable o que tiene desviacién (por esta razén este algoritmo también es conocido como el Algoritmo de Desviaciones), Se observa ahora el arco (1,3): 213 - C13 = -4y
fi2 = ho se dice entonces que el arco esté en orden dado que se estén cumpliendo fas
condiciones de holgura complementaria.
Es necesario entonces hacer algun tipo de modificacién sobre los valores de p,, 0 de f,,, para
lograr hacerlo "entrar en orden".
109
Capitulo 3. Flujo en Redes
Existe un modo grafico para observar el comportamiento en los cambios de fj y p;, esto se
muestra en la figura 3.34 a). Se observa que un arco esta en orden si Jj < fj < qy, y las
condiciones de holgura complementaria se satisfacen. En la figura 3.34 a), llamada diagrama kilter, se puede notar que conforme se cambia el flujo sobre el arco (i,j), el punto
(Zi; - ¢j,fj) se mueve hacia arriba o hacia abajo sobre una columna. Conforme se cambian los
Pi, el punto se muéve hacia atrés o hacia adelante a lo largo de un renglén.
Figura 3.34 a) Diagrama kilter
Fuera de orden EY
n
oO
T
d e
En orden n
i
En orden
Fuera de orden
2y- Oy y
Dados los fj y pi, cada arco (i,j) puede caer en una de estas diferentes situaciones:
Figura 3.34 b) Diagrama de estados de orden
fy > qi
fj = qi
hy < fy < Gi
fy = Fi
fy < 4j
Zi - Cy < 0 Zy - Cy = 0 Zj~ cy > 0
Fuera de orden | Fuera de orden | Fuera de orden
Fuera de orden | En orden En orden
Fuera de orden | En orden Fuera de orden
En orden Fuera de orden En orden Fuera de orden Fuera de orden Fuera de orden
Cada una de las celdas de la matriz de la figura 3.34 b) esta relacionada con una regién
particular del diagrama kilter 3.34 a).
110
Capitulo 3. Flujo en Redes
En la figura 3.35 b) se puede observar la localizacion de varios puntos en un diagrama kilter,
que corresponden a arcos que se encuentran fuera de orden, Obsérvese que si se pudiera
determinar la distancia que separa a un punto de Ja zona kilter, se podrian hacer Jos cambios
sobre p; o fy para hacerlo entrar en orden. De hecho esta distancia puede ser determinada en
funcién de la situacién del arco, como se indica en Ja figura 3.35 a). Esta medida determina un
namero, llamado "nimero Kilter”. El namero kilter esta definido como el minimo cambio de
flujo requerido sobre el arco para que éste entre en orden.
Obsérvese que dada la definicién de los nimeros kilter, las desviaciones de los arcos siempre
son positivas. Es claro que si el arco estA en orden su numero kilter es cero lo que implica que
las condiciones de holgura complementaria han sido satisfechas.
El namero kilter del arco (i,j) se denota kj, y a la suma de los nimeros kilter de todos los arcos
se le denota con K. ,
Figura 3.35 a) Desviaciones de los arcos
Zy- Cy < 0 Zi — i =0 Zi — Cy > 0
fj > i {fi - 4] fj - G5] [fj - Gi
fj = yj lf - 4 0 0
ly < fy < gy {iy - 4 0 [fj - ay!
fy = 4 0 0 [fig - |
fy < fj lf - Ay] lfy - 4 [fj - ay!
Figura 3.35 b) Desviaciones de los arcos en forma grafica
fi of (2+ eisfi) | 1 {
ke; 4
f I i \ ij \ i
ili
Capitulo 3. Flujo en Redes
Las grdficas de la figura 3.36 muestran los diagramas kilter para cada uno de los arcos con los
fj y pj del ejemplo.
Figura 3.36 diagramas kilter de los arcos del ejemplo
(1,2) (1,3) fij ‘ij
A ann 5 10
el ays
7 2% - Cpl (40) 2 -¢y = 4 e Ly Cy GO ime
(aj - ey) = 1,0)
(b) (a)
(2,3) (2,4)
fy f ‘, A
TS =Q = aij p———_ 4,75
a (-5,1) yo Bie Zj-Cijx — 3 —— } $m 255 yg Cpe | i
(d) (c)
(3,4) 4,1) fj fi
nes (| 5 (3,4) 4 4277 137
pp sre [i -3
I is i
(e) (f
112
Capitulo 3. Flujo en Redes
El algoritmo que se presenta para resolver problemas de flujo m4ximo se efectiia en dos fases
que pueden repetirse varias veces, estas fases son llamadas: la fase primal y 1a fase dual dados
los cambios que se efecttian sobre las variables primales (fij) 0 sobre las duales pi es decir, en
la fase primal, el algoritmo se ocupa de ir reduciendo el nimero kilter de un arco que esté
fuera de orden construyendo un ‘nuevo flujo de tal forma que no aumente la desviacién de
ningiin otro arco. Cuando se ha determinado que no se puede construir un flujo mejor en esta
fase se pasa a la fase dual donde el algoritmo construye una nueva solucién dual de forma que
no aumente ninguna desviacion y se vuelve a repetir 1a fase primal. Siguiendo este proceso, el
algoritmo construye una solucién éptima o bien, determina que no existe una solucién factible.
A continuaci6n se explican algunos detalles del algoritmo.
Se selecciona un arco (i,j) que esté fuera de orden y se construye un ciclo que contenga ese
arco. Este ciclo debe tener la propiedad de que al asigndrsele una orientacién y afiadirle flujo,
no se empeore la desviacin de ningin arco. Un método para hacer esto consiste en construir
una red R' a partir de R de acuerdo a la informaci6n de la tabla ilustrada en la figura 3.37 y los
siguientes pasos:
Figura 3.37 Cambios de flujo permitidos en Ja red R’
Zi — Cy < 0 Zi - Gy > 0 Zy 7 Cy = 0
fj, > qi = o
,
= = & = a
' v
fj = dy & uF
4 4 /\ lj < fj; < ij
=
f= 4 Py = — 1
a?
fy <i;
113
Capitulo 3. Flujo en Redes
_ Cada nodo de la red original esta en R'
2. Siun arco (i,j) esta en la red original y el flujo se puede incrementar, entonces el arco (i,j)
forma parte de la nueva red con un cambio de flujo permitido adecuado como se indica en
la figura 3.37.
3. Finalmente, si un arco (i,j) est4 en red original y el flujo se puede disminuir entonces el
arco (j,i) viene a formar parte de la nueva red con el cambio de flujo permitido como se
indica para el arco (i,j) en la figura 3.37.
4. Los arcos en la red original con l, < fj << qj Y¥ 2 Cy = 0 producirén dos arcos (i,j) y
(j,i), con diferentes cambios de flujo permitidos en la nueva red.
5. Los arcos que no tienen permitido un cambio de flujo se omiten completamente de R'.
Considerando el ejemplo con los valores de flujo y p;, se obtiene la red R' ilustrada en la figura
3.38.
Figura 3.38 Red R’ obtenida del ejemplo
9 7
By: 5
7
2
Una vez que se ha construido la nueva red R' y que se ha seleccionado un arco (p,q) fuera de
orden, se encuentra un circuito (ciclo dirigido ) que contenga ese arco en R'. Este circuito en
R' corresponde a un ciclo en R. El flujo del ciclo en R se cambia de acuerdo con la orientacién
dada por el circuito en R'. La cantidad de cambio est4 especificada por el menor cambio de
flujo permitido de cualquier arco que es miembro del circuito en R'. Si en R’ no existe ningin
circuito que contenga al arco seleccionado, se debe entonces pasar a la fase dual del algoritmo.
Continuvando con el ejemplo; considerando la red R' de la figura 3.38 si se selecciona un arco
fuera de orden, por ejemplo (1,2) se encuentra el circuito C = { (1,2), (2,3), (3,4) (4,1) }. Por
lo tanto se puede cambiar el flujo a través del ciclo asociado en R, aumentando flujo sobre los
arcos con la orientacién del circuito en R’ y disminuyendo flujo sobre los arcos contra la
orientacién del circuito en R', y se obtienen una solucién mejorada en el sentido de la
desviacion. La cantidad de cambio en el flujo permitida es de d = Min {2, 9, 5,7} = 2.
114
Capitulo 3. Flujo en Redes
En la figura 3.39 a) se muestra la nueva solucién y la red R' asociada. Los arcos (3,4) y (4,1)
siguen estando fuera de orden. Se selecciona nuevamente un arco que este fuera de orden por
ejemplo (3,4), se observa que no existe un circuito en R' que contenga al arco seleccionado. En
este caso se debe pasar a la parte dual del algoritmo.
Figura 3.39 a) Red con flujo determinado en Ja iteracién anterior
b) Red R’ de a)
(iy, Sr
: ee ro
(1,2,5,-3)
a) b)
Cuando no es posible encontrar un circuito en R' que contenga a un arco especifico que esta fuera de orden, se debe cambiar 2 ~ cj de forma que no se empeore ninguna desviacién y
esperando que se introduzcan en R' nuevos arcos que permitan encontrar un circuito que
contenga al arco seleccionado que esta fuera de orden.
Dado que zj - cj = pj ~ Pj - Cy, se deben cambiar los p; para poder cambiar los 2 ~ cj. Sea
(p,q) un arco fuera de orden y-sea N el conjunto de nodos en R' que se pueden alcanzar desde
qa lo largo de una trayectoria en R'. Sea N° = X — N. Se nota que ni N ni N° son vacios. Para este ejemplo se tiene que (p,q) = (3,4) se tiene entonces en Ia figura 3.39 (b) que N =
{1,4} y N° = {2, 3}.
Se desea cambiar los valores de p, de forma que no se empeore ninguna desviacién y que
periédicamente el conjunto N se haga m4s grande, de modo que si algiin otro nodo entra en N
en un nimero finitos de iteraciones, entonces finalmente p entre en N y se obtenga un circuito en R' que contenga el arco seleccionado. Asi se esta suponiendo que N no se hace mas
pequefio; para asegurar que esto no ocurra se deben cambiar los valores de p; de forma que los
arcos con ambos extremos en N sigan perteneciendo a N en la red modificada.
WS
Capitulo 3. Flujo en Redes
Se observa que sip; y p; para i, j ¢ N no se modifican y las p; y pj para i,j ¢ N° se
modifican en la misma cantidad 8 entonces las z;, - cy 00 sufren ningtin cambio y N contendré
al menos todos los nodos que contenia antes del cambio. Con este cambio en las p, inicamente
se afectan los arcos (i,j) € (N, N°)” y (i,j) e(N, NY.
Especificamente si 5 > 0 y las p; se cambian de acuerdo a:
Pits sii<N
P= psi ig NT
entonces (2; — ¢y)' = Zj- cy siie N yjeNé
siie N' yj eN
sin embargo si i¢N y jeN*, se tiene que:
(y-o)' = Git O-DB- oy = (2; - 9) +68
Asi mismo si jeN y ieN’, se tiene que:
(zy - cy)’ = @i- 8) -Di- Sy = (ij ” Cy) -6
por lo tanto para los arcos (ij) € (N, N*‘) tendran sus 2 — Cy incrementados en 5 y para los
arcos (i,j) ¢ (N, N‘), 24 - cy disminuira en 5.
Se debe determinar 5 de tal manera que no se empeore la desviacién de ningin arco. Lo
primero que se debe hacer es identificar los arcos (i,j) € (N,N}* y los arcos (i,j) € (N,N‘).
Para esto se observa que si Zj - cj < O y fy < Jj el arco (i,j) no puede pertenecer a
(N,N‘)*. Examinando los estados de orden restantes se encuentra que los dnicos candidatos a
pertenecer a (N,N‘)* son aquellos identificados en la figura 3.40. Se recuerda que para los
arcos (i,j) €(N,N") tienen sus zj — cy incrementadas por lo tanto estos arcos cambiaran sus
desviaciones de izquierda a derecha 3.40.
116
Capitulo 3. Flujo en Redes
Figura 3.40 a) Cotas para obtener 5
F 7 '
(N,N*)* Zi — Cy < ‘ Limite implicito
™ a! 0 \ sobre 6
fj > dy ||P @ <a ! v
' \ ' { .
fy= qj {| Pa oT Sso 1 ’ t Q
' 4 ky < fj < 1|/P7 e —_ 8s lay- cyl
Gi ‘
fy = ij i Ps 8s [ay- cil
‘| @ fj < hy Ep annnennnnnP
Figura 3.40 b) Cotas para obtener 6 en forma grdfica
i a
P, P2 P3
e e—______»> 1
i ! P
Ky ° fj = 45 i , +
ii ii : t
f, = i i 4 “
& Zj — Cj
b)
Examinando un.arco (i,j) < (N,N*)* que este en orden y que fi; > gy y que 2 ~ cy < 0, se
observa en la figura 3.35 que si 5 crece, ky disminuye de k= |; - kj la kj = | fi - Oj ly de aqui en adelante permanece constante.
117
Capitulo 3. Flujo en Redes
Asi pues para tal arco & puede incrementarse tanto como sé quiera y la desviacién del arco
nunca crecera. Por Jo tanto, como se indica en la figura 3.40 tal arco da origen a un limite
superior de o para. Para cualquier arco (ip € (N,N*)* que esta en el estado de orden fj
= Qi Y Zj - Cy < 0 sucede que su desviacién primero decrece y, después, permanece sin
cambio cuando 5 crece. En consecuencia para tal arco de nuevo » es ei limite superior sobre el
cambio permitido en 5 para asegurar que ninguna desviacion empeorara.
Para un arco (i,j) € (N,N*)* que este en el estado de orden iy < fi < qi y 2 — Cy < 0 se ve
que la desviacién asociada kj primero decrece y después empieza a crecer. Para eliminar el
crecimiento potencial del kj para dicho arco, se debe imponer un limite sobre 6 de valor | zi -
cyl.
Un anilisis similar para los arcos (i,j) € (N,N‘) da como resultado la informaci6n de la figura
3.41.
Figura 3.41 a) Cotas para obtener 5
Zi -— Cy < |Zy- Cy = | Zy— Cj > O Limite
0 0 implicito ppv in sobre 5
fj > 4 ' . ‘ '
'
Ay = Oy i er 18 < Izy - cy 1 '
oe ,
hi < fj < ' PL 8 < | 2 ci |
Gij pope 2 '
fy = 4 } Ps ae ae 5< a
' «o}_ 47, | t
fj < Gj i Pg |_____» P, |} S< a
—_— <0} —tp, | saat (N,N
118
Capitulo 3. Flujo en Redes
Figura 3.41 b) Cotas para obtener 6 en forma grAfica
fe
P3
Con lo anteriormente expuesto se puede llevar a cabo el siguiente procedimiento para calcular
é.
Sea Ay = { (ij) / Gi) EQN), zy - cy <0, f Say} Ad = { (i,j) / Gj) EONNY, 25 - cy > 0, 21) }
sean
& = min {| 24 - cy! }
Ge Ar
&) = min {| zj - 31} Ge Az
6 = min {81,8;}
donde A;= © si A; es vacio. Por lo tanto & es estrictamente positivo. Asi mismo, 6 es un
entero positivo 6 «© i=1,2. Si 0 < 8 < o. En este caso se hacen los cambios apropiados en
Pi y se pasa a la fase primal de algoritmo.
Si 5 = « el problema no tiene solucién éptima.
En la siguiente seccién se describen los tres algoritmos para resolver el problema de flujo a costo minimo, basados en los conceptos que se han estudiado hasta ahora.
119
Capitulo 3. Flujo eo Redes
3.5, Métodos de solucién
Se han presentado tres. métodos de solucién para ei probiema de Fiujo a Cosio Minimo, ei primero que es el que se basa en la Eliminacién de Circuitos Negativos, el segundo es el que
se basa en encontrar rutas mas cortas y el tercero es el llamado Out-of-Kilter.
3.5.1 Algoritmo basado en la eliminacién de circuitos negativos (primal)
El método inicia encontrando un flujo de valor v, que puede ser encontrado por medio del algoritmo de Ford y Fulkerson presentado en la secci6n 3.2. La tnica modificacién es en la condicién de terminacién, en el paso 5: si la etiqueta f(g) de q mas el valor v' del flujo actual
es mayor o igual que v entonces el flujo se modifica en la cantidad v-v', es decir sélo la
cantidad necesaria para alcanzar al valor de flujo deseado. En caso contrario, se realiza otra iteracién.
Habiendo encontrado el flujo con el valor deseado, se verifica si es el 6ptimo. Esto se puede verificar construyendo la red marginal y determinando la existencia de circuitos negativos en
ella; la deteccién de circuitos negativos se realiza por medio de un algoritmo de rutas més
cortas que pueden ser el General, Floyd o Dantzing, mismos que se vieron en el capitulo
anterior. Si por medio de alguno de estos algoritmos se detecta un circuito negativo, se calcula
su capacidad incremental y se modifica el flujo a través de los arcos correspondientes de la red
original, en esa cantidad, obteniendo asi un flujo del mismo valor pero de costo menor.
El hecho de aumentar o decrementar flujo a través de los arcos del ciclo de la red original
correspondientes al circuito negativo en la marginal, implica que algin arco se sature o que el flujo a través de él se disminuya a cero. Esto, garantiza entonces que el circuito negativo no
vuelva a presentarse en la nueva red marginal, por lo que se dice que el circuito fue eliminado.
Este procedimiento se realiza iterativamente hasta que no sean detectados més circuitos negativos y entonces por teorema 5 el flujo obtenido es el de costo minimo.
A continuaci6n se presenta el algoritmo de Eliminacién de Circuitos Negativos.
El objetivo del algoritmo basado en la eliminacién de circuitos negativos es el de determinar el flujo a costo minimo en redes del tipo R(X,A,q,c)
120
Capitulo 3. Flujo en Redes
ALGORITMO BASADO EN LA ELIMINACION DE CIRCUITOS
NEGATIVOS (PRIMAL)
Descripcién: :
Paso_1: Se determina un flujo factible de valor v mediante el algoritmo de Ford y Fulkerson.
Paso 2: Se construye la red marginal, con respecto a f, R'(f)
Paso 3; Mediante un algoritmo de rutas mas cortas se identifica algtin circuito negativo en
R'(f). i) Si no existen circuitos negativos terminar, el flujo actual f es el requerido.
ii) En otro caso, sea C el circuito negativo, ir al paso 4.
Paso 4: Sea b = Min {q'jj} ap ec
i) Para todo arco (i,j) € A tal que (i,j) € AyC, actualizar fy = fj + b
ii) Para todo arco (i,j) € A tal que (j,i) © AgC, actualizar fj = fj -
Con este nuevo flujo se regresa al paso 2.
La justificaci6n del algoritmo queda determinada por el teorema postulado en la seccién
anterior, referente a la eliminacién de circuitos negativos.
Ejemplo 1:
La Compaiiia Eléctrica desea suministrar de energia a una poblacién que carece del servicio.
Para tal efecto ha obtenido informacién de Ja red de transmisién que hasta ahora se ha tendido
en las cercanias de dicho poblado. Con dicha informacién ha disefiado la red que se muestra a
continuacion:
Figura 3.42 Red construida por la Cia Eléctrica
(qiy,¢i)
1
121
Capitulo 3. Flujo en Redes
Los nodos del 2 al 6 de la red se interpretan como los poblados a los que se ha suministrado el
servicio, el nodo 1 representa la Cia eléctrica y el nodo 7 el poblado carente del servicio; los
arcos que enlazan los nodos representan los cableados tendidos entre los poblados, en ellos se
advierte la capacidad maxima posible de energia que puede ser transmitida de un poblado a
otro, asi como el costo de transmisién por cada 1000 KWT.
Al observar la red, la Cia. Eléctrica decide tender cableado de los poblados 5 al 6, del 5 al 7 y
del 6 al 7, el cual les permite transmitir como maximo 20, 40 y 80 KWT. a un costo de 8, 20,
y 11 respectivamente. La red al incluir dicho cableado se contemplaria como se. muestra en la
siguiente figura.
Figura 3.43 Red de la Cfa Eléctrica con cableado actual y con posible cableado
(qij.¢i)
Doe), (ose ~ aA
4 2 (54) { (4) (20.8) i 7) N va NO 5,8) : :
(40,4), A 40,11) AY 60,11) “3) fe
(30.8)
La Cia Eléctrica desea conocer si con la red con la actualmente se cuenta y el tendido de los
tres cableados, es suficiente para cubrir la demanda del poblado que es de 100 KWT y de ser
asi, definir Ja ruta por la cual transmitir la energia, de modo que el costo sea minimo.
Se resuelve el problema empleando el algoritmo basado en la eliminacién de circuitos
negativos.
Iteraci6n 1
Paso 1: En primer lugar se verifica, aplicando el algoritmo de Ford y Fulkerson, la existencia de algin
flujo factible de valor 100.
Al ejecutar el algoritmo se obtiene un flujo de valor 100, con costo de 3,245, mismo que se
muestra en la siguiente figura 3.44.
122
=—
eres
Capitulo 3. Flujo en Redes
4) que no existe un flujo factible para la red.
Prueba de (1)
El algoritmo inicia con un flujo que cumple las condiciones de conservacién 3.5 y los cambios
que se realizan sobre el flujo durante la ejecucién siguen cumpliendo estas condiciones.
Prueba de (2)
Hay solo dos caminos para que el algoritmo pueda terminar:
a) Todos los arcos estén en kilter 6
b) 5 = © en alguna iteracién.
Si todos los arcos est4n en kilter entonces al final los fj y los p;, satisfacen las condiciones de
holguras complementarias 3.16 y por lo tanto el flujo final es un flujo de costo minimo.
Prueba de (4) .
Si el algoritmo termina porque & = © en alguna iteracién del paso 6, es claro entonces que no
existe un flujo que satisfaga simulténeamente las funciones de capacidad superior e inferior de
los arcos.
Se considera el conjunto de arcos de Ja cortadura (N,N‘)*, a ningin arco de la cortadura se le
puede incrementar flujo porque de otro modo, su nodo final (que pertenece a N’) pude ser
etiquetado (teniendo entonces que pertenecer al N). Del mismo modo a ningiin arco de la
cortadura (N,N‘y se le puede reducir flujo porque en otro caso su nodo inicial que pertenece a
N° puede ser etiquetado.
Por otra parte siendo 6 = «, ambos conjuntos A; y Az, como se definieron en 3.21, son
conjuntos vacios.
De que 5 = ©, se sigue que algiin arco (i,j) € (N,N‘)* debe llevar un flujo fj < qj. Asi mismo
un arco (i,j) < (N,N‘) debe llevar un flujo fj, < 4. Adem4s para el arco que esta fuera de kilter
que une o y d esta desigualdad es una desigualdad estricta.
Si se suma Ja ecuacién 3.5 para cada nodo ieN se puede interpretar como sigue:
EI flujo neto fuera de N debe ser igual a cero. Se entiende como flujo fuera, el flujo total de los
nodos ieN a los nodos je¢N*. Se puede denotar como f(N ,N*), menos el flujo total de los nodos
ieN® a los nodos jéN, denotado por f(N,N‘). Asi que:
f(N,N*) - f((N,N‘Y = 0
Se nota entonces que
133
Capitulo 3. Flujo en Redes
f(N,N‘) < INN‘) y
f(N,N‘) = q(N,N*)
al menos una de estas desigualdades es una desigualdad estricta, dénde [(X,Y), denota la suma
de las capacidades inferiores de ios arcos del conjunto X, al conjunto Y y q(X,¥), denota la
suma de las capacidades superiores de los arcos del conjunto X al conjunto Y. q(N,N‘) -
UN,N'Y < Oy q(N.ND < UNNY.
De aqui que el menor flujo 1(N,N‘) que puede entrar a N, excede al maximo flujo q(N,N*) que
puede salir de N.
De aqui que no exista un flujo factible para cuando 6 = «.
Pmeba de (3)
Demostrar que el algoritmo termina en un nimero finito de pasos.
Primero, cada vez que se encuentra una cadena de flujo aumentante y se balancea el flujo en el
arco (i,j) la desviacion de ese arco y de la red total se reduce en por lo menos un entero.
Entonces pueden encontrarse s6lo un nimero finito de cadenas aumentantes que modifiquen el
flujo de arcos que estén fuera de kilter hasta obtener una solucién 6ptima. Segundo, después de
que cambia cada variable dual, el estado conformable de cada arco que tiene ambos extremos
en N permanece sin cambiar. Por lo tanto si (p,q) est4 fuera de kilter, entonces después de un
cambio en una variable dual cada nodo en N esté en N después del cambio. Aqui existen dos
posibilidades. Una posibilidad es que un nuevo nodo w puede quedar en N. Cada vez que esto
ocurre, el conjunto N crece en al menos un nodo.
Esto puede ocurrir a lo mas un nimero finito de veces antes de que el nodo qeN (cuando se
buscan cadenas de p a q). Por lo tanto si el algoritmo no es finito ocurren un nimero infinito de
cambios en las variable duales sin que el conjunto N crezca 6 6= 0. Se probaré que esto no
puede ocurrir.
Se supone que después de un cambio en la variable dual ningtin nuevo nodo pasa a ser miembro
de N, es decir N no crece. entonces al pasar a la siguiente fase dual se toman los mismos
conjuntos N y N‘ y los mismos fj. AdemAs para cada (i,j) € (N,N‘)* se han incrementado sus
Zy - Cy y para cada (i,j) € (N,N‘Y se han decrementado sus zj - cj. Por lo tanto, después del
cambio en la variable dual, los nuevos conjuntos A, y Ay satisfacen que:
Aj’ CA; y Ay’C AQ
Atn més, por la seleccién del valor de 3, al menos un arco ha sido eliminado de A, 0 de A).
Luego, al menos una de las inclusiones anteriores es propia. Ahora bien A; y A, pueden
134
a eee
2 eee Oe
OULU le
ee eel”
Iteracién 5.
Paso 3. Determinacién de estados de orden, los 2 ~ cj no cambiaron .
Estados de Orden
Z2-Cy =Oy f 12 = Gu => en orden
Zy3 - Cy3 = -12 y f 3 = 13, => en orden
Za3 - C23 = -16 y f 23 = 3 => en orden
Zng- Cog = ZY f 24 = Go4 => en orden
234 - C3q = Oy f 34 = 134 => en orden
Z4y- C4 =O f 4; = 44; > en orden
Capitulo 3. Flujo en Redes
Como todos los arcos estén en orden se termina. Y la red de la figura 3.59 representa el flujo
de valor 7 a costo minimo.
141
Capitulo 4. Desarrollo del Sistema
Dado el objetivo de este trabajo, que es el de desarrollar material diddctico para la materia de
Redes en la Facultad de Ciencias, se presenta en este capitulo el desarrollo del sistema Redes
incluyendo puntos como disefio y programacién.
4.1 Estudio Técnico
4.1.1 Hardware Utilizado
El proyecto Redes se desarrollo con el hardware siguiente:
« Computadora Personal 80486. e 16MbRAM, Velocidad a 33 Mhz.
e Disco Duro de 200 Mb.
e Monitor Color 14” SVGA.
4.1.2 Software Utilizado
Para Ja programacién del sistema Redes se eligié utilizar el software Foxpro en su versién 2.1,
algunas de sus ventajas son:
e Permite el almacenamiento y procesamiento de una gran cantidad de datos.
e sun lenguaje de 4° generaci6n.
4.2 Caracteristicas del Sistema
EI sistema Redes toma el nombre a partir de la materia que se imparte en la Facultad de
Ciencias de la UNAM y que cubre en su totalidad los algoritmos que se desarrollaron. Se desea
que el sistema sea un instrumento de apoyo didactico en dicha materia.
142
Capitulo 4. Desarrollo del Sistema
Se han programado los algoritmos estudiados en los capitulos 2 y 3. Es importante destacar
que se han empleado como subrutinas en los algoritmos de flujos, los algoritmos de rutas mas
cortas. En términos generales el sistema esta integrado por dos grandes mddulos que son:
algoritmos de rutas mas cortas y algoritmos de flujos.
4.3 Alcances y Limitaciones del Sistema
Aleances:
« Accesa a los diferentes algoritmos a través de ments.
e Permite guardar los ejemplos que se quiera tras la asignacién de un nombre, la limitante es
el equipo en el que se procese.
e Permite imprimir los ejemplos y borrarlos cuando se desee.
Limitaciones:
e Tener el equipo minimo prescindible.
« No resuelve las variantes del problema de flujo maximo.
e¢ Como-se considera material didactico inicamente resuelve problema para un maximo de 20 nodos en todos los algoritmos exceptuando los de Floyd y Dantzing que sélo permiten 9
nodos.
4.4 Técnicas de Programacién
El sistema se ha desarrollado bajo la técnica de programacidn estructurada, lo que permite
crear procesos 0 subrutinas reutilizables en otros procesos m4s complejos.
La figura 4.1 ilustra el diagrama de estructura general del paquete, asi mismo muestra el
nombre del programa principal que ejecuta la aplicacién correspondiente.
Cada programa hace referencia a otro programa que integra un grupo de procedimientos que se
ejecutan cada vez que son Iamados desde el programa principal.
Una caracteristica que se ha disefiado para cada una de las aplicaciones es Ja de almacenar los datos de tantas redes como se desee, lo que permite que se puedan volver a consultar y correr los programas con dichos datos cada vez que se necesite. Asi mismo se ha implementado la
143
Capitulo 4. Desarrollo del Sistema
opcién de borrar aquellos problemas que ya no sean requeridos. Esto se ha desarrollado a través de la definicién de bases de datos y la implementacién de algunos otros beneficios que
ofrece Foxpro.
144
Capitulo 4. Desarrollo del Sistema
Figura 4.1 Diagrama de Estructura del sistema
REOES.EXE
Rutas Mas Cortas | Flujos
MENUPRI.PRG MENUPRI.PRG
ee estes vee bce DISKSTRA | FLUJO MAXIMO
Ruta de oa d 1 FLUSOMAX. PRG
DIJKRUTA. PRG |
Arborescencia _ FLUJO ACOSTO
ome MINIMO GENERAL ' PRIMAL GENERAL.PRG PRIMALPRG
DANTZING "DUAL RUCODANT.PRG BUAL.PRG
FLOYD OUT-OF-KILTER RUCOFLOY.PRG- OUTOF KIL. PRG
Se han disefiado bases de datos considerando que los datos de las redes se pueden dividir en dos grupos: El primero formado por los datos generales de la red, como son nimero de nodos
y nimero de arcos, el segundo es el que proporciona la informacién de cada uno de los arcos,
como son el nodo inicial, el nodo final y en los casos correspondientes los valores de las
funciones asociadas a éstos.
De modo genérico se identificaran a estas bases de datos como RED y ARCOS asi, en las
figuras 4.2 y 4.3. se muestran los datos que se guardan en las bases Red y Arcos de cada uno
de los algoritmos.
145
Capitulo 4. Desarrollo del Sistema
Figura 4.2 Datos que se guardan en la base Red para el algoritmo indicado
. Valor
Algoritmo | No | No- a Origen} Destino | del Flujo
Ruta deoad x x x x
Arborescencia x xX x
General x x x
Dantzing x
Floyd x
Flujo Maximo x x x x Primal x x x x x
Dual X XxX x x X
Out-of-Kilter xX 4 x x xX
Figura 4.3 Datos que se guardan en la base Arcos para el algoritmo indicado
Algoritmo Nodo Nodo | Longitud | Cap. Cap. Inicial Final Costo | Superior | Inferior
Ruta deoad Xx x x
Arborescencia x x x
General x x x
Dantzing x x
Floyd x x
Flujo Maximo Xx x x x
Primal x x x x
Dual x x x x
Out-of-Kilter x xX x x Xx
A continuacién se describe la estructura de los programas que integran el sistema y algunas
caracteristicas técnicas que son importantes para el mejor entendimiento y el maximo aprovechamiento del mismo.
146
Capitulo 4. Desarrollo del Sistema
4.5 Estructura de los programas
En el desarrollo del sistema se han implementado algunas rutinas Ilamadas basicas dado que éstas son utilizadas en mas de una de las aplicaciones.
Como un pre4mbulo a la presentacién de las subrutinas basicas es importante observar la
estructura general que sigue cada uno de los programas. Esta estructura se muestra en las
figuras 4.4 (a) y (b)
Estas figuras presentan el flujo que sigue el procedimiento llamado SELE_PROB. Cada uno de
los programas principales del sistema esta disefiado con un procedimiento principal, que sigue esta secuencia.
147
Capitulo 4. Desarrollo del Sistema
Figura 4.4 a) Diagrama de Flujo del Procedimiento Sele_Prob
Procedimiento Seie_prob
Iniclo )
si Nuevo
Lec_red
Lec_arcos
Inicializa
y
Caiculo
Resultados
Resultados
Sol_nom
si
No
Guarda_datos
Valida_Exist
N Existe °
Si
Selecciona
y
Lec_arcred Lec_arcarcos
Muestra_datos
Mensaje
Guarda_datos
148
Capitulo 4. Desarrollo del Sistema
Figura 4.4 b) Diagrama de Flujo del Procedimiento Sele Prob (Continnacién)
Y
Calculo Datos_red
4
Resultados ¥. ¥
Mod_red Mod_arcos
a Resultados Imprimir
¥
: , Calculo
Fin
Resultados
Resultados
‘Guardar Cambio Guarda_datos
Como ya se ha mencionado, en términos generales la estructura de) procedimiento principal de
cada uno de los programas sigue el flujo que se presenta en estos diagramas siendo el procedimiento CALCULO el que hace la diferencia en cada uno de ellos.
149
Capitulo 4. Desarrollo del Sistema
Se ha seleccionado para su explicacién, los procedimientos CALCULO s6lo de los algoritmos
que son usados como subrutinas en mds de un programa; dichos procedimientos son los de los
siguientes problemas:
DIJKTRA: para el caso de ruta de un origen a un destino.
GENERAL FLOYD FLUJO MAXIMO
Dijkstra: La subrutina CALCULO para el caso de ruta mas corta de un origen a un destino se
utiliza, con algunas consideraciones que mencionamos més adelante, en la programacion de los
algoritmos: Dijkstra para el caso de Arborescencia y General.
General: La subrutina CALCULO para el algoritmo General se ha considerado como basica
porque se emplea en el algoritmo Dual que permite determinar el Flujo a costo Minimo en una
red con costos en general.
Floyd: La subrutina CALCULO empleada en el programa es aplicada en el algoritmo de
Dantzing, con una pequefia variacién que se menciona en el diagrama. Asi mismo se utiliza
como subrutina en el programa Primal para flujo a costo minimo..
Flujo Maximo: La subrutina CALCULO del algoritmo de Flujo Maximo es considerada en la solucién de los programas: Primal y Out-of-Kilter.
A continuacién se muestran los diagramas de flujo de cada una de estas subrutinas y se indican
algunas de las variables mas importantes en cada caso.
4.5.1 Algoritmo Dijkstra: Ruta mas corta de o a d
Procedimiento CALCULO:
CONSTANTES: infini = 99999 Simula por medio de un valor numérico muy grande el infinito.
VARIABLES: yunodo: variable numérica que contiene el nimero de nodos de la red. El nimero de nodos maximo que pueden ser ingresados para una red es de 20.
ynarcos: variable numérica que contiene el nimero de arcos de la red. El numero de arcos de
la red esta en funci6n del nameto de nodos, siendo este valor menor o igual a n’-1, donde n es
e] nimero de nodos.
150
Capitulo 4. Desarrollo del Sistema
vorigen: variable numérica que conserva el valor del nodo que se ha considerado como nodo
origen. En el caso del problema de arborescencia se considera una variable Hamada vraiz que
como su nombre lo indica, conserva el valor del nodo que se ha considerado como el nodo raiz
de ja red.
ydestino: variable numérica, conserva el valor del nodo que se ha considerado como destino.
b_valida: variable auxiliar para verificar la consistencia de los datos ingresados para los arcos.
ruta: variable boolena; indica si en la iteraci6n actual existe una ruta mas corta del origen al
destino.
p: variable numérica; en cada iteracién toma el valor del nodo que tiene la etiqueta con la ruta
mas corta del origen o raiz a él, cuando ésta existe.
minaux : variable numérica que en cada iteracién es igual a Ja distancia de la ruta mas corta
del origen o raiz al nodo examinado.
temporal: variable booleana que permite saber si existen nodos con etiqueta temporal o no.
auxl: es una variable numérica que en cada iteracién le es asignado el valor del nodo que tiene
la etiqueta temporal con la minima distancia del origen, (0 raiz en el caso de la arborescencia)
aél.
ARREGLOS arcos(vnarcos, 4) : el arreglo arcos contiene la composicién de la estructura de los arcos de la
red. Las columnas del arreglo se han distribuido de la siguiente forma:
columna 1: valor del nodo inicial.
columna 2: valor del nodo final. columna 3: longitud 0 costo del arco.
columna 4: contiene un valor booleano que permite identificar si el arco pertenece o no
a la ruta mas corta.
prede(vnnodo): guarda el valor del nodo predecesor en la ruta determinada.
diststa(vnnodo,2): guarda en la columna 1 las longitudes mds cortas que se calculan para cada
nodo. En la columna 2 se indica con un cero 0 con un uno, el estado de la etiqueta de cada
nodo, es decir, si se puede considerar como temporal o permanente. La figura 4.5 muestra el
flujo que siguen los datos dados para la red. Se explica cada uno de los procesos que se
presentan y el valor que cada una de las variables van tomando.
Como se observa en las figuras 4.4 (a) y (b) antes de iniciar el procedimiento CALCULO se
han ingresado 0 se han recuperado de la base de datos la informacién de la red, como son:
namero de arcos, namero de nodos, el nodo origen y el destino asi como los arcos y las
151
Capitulo 4. Desarrollo del Sistema
funciones asociadas a éstos. En este algoritmo el procedimiento INICIALIZA se encarga de
asignarle los valores iniciales a los arreglos: diststa y prede. El arreglo diststa se inicializa con la primera celda igual a infinito para todos los nodos excepto para el sefialado como el
origen, en tal caso se le asigna el valor cero.
Figura 4.5 Diagrama de flujo del Procedimiento Calculo-Programa DijkRuta
( Inicio
y
@) p=vorigen
RutaCorta EscRuta
Sucesores (3) minaux =Infini temp =0
Aux? =0
y
@) Act_Etiq
© minaux = infini
temp =1 Mensaje
Fin) I
152
Capitulo 4. Desarrollo del Sistema
A la columna 2 de este arreglo se asigna el valor cero, indicando que el estado de las etiquetas
es temporal, excepto como antes, a la celda del nodo origen, a la que se le asigna el valor de 1,
indicando con ello que el estado de su etiqueta es permanente.
Con estos datos iniciales, a la variable ruta se le asigna el valor verdadero indicando que la primera condici6n de ingreso a los procedimientos iterativos, se cumple.
1.- En la primera iteracién el nodo que tiene etiqueta permanente y menor distancia del origen
a él es el mismo origen, esto indica asignando a la variable p el valor que tiene la variable
vorigen. :
2.- Los procesos iterativos empiezan si el valor de p es diferente del nodo que es el destino.
3.- Si esta condicién es verdadera, se ejecuta el proceso Sucesores en el que se localizan los
sucesores de p; es decir del nodo que en la iteracién actual tiene el valor del nodo con etiqueta
permanente y ruta mAs corta del origen a é. Al localizar los nodos sucesores de p se inicializan
las variables miniaux, temporal y aux1, como se indica en el diagrama.
4.- En el proceso Act-Etiq se realiza el calculo de las distancias del origen a los sucesores de
p, se selecciona el nodo con etiqueta temporal minima si existe. Al término de éste proceso: Si
se modificé la variable temp significa que existe por lo menos un nodo que tiene etiqueta
temporal.
5.- Cuando se cumpla la condicién temporal = 1, es decir que hubo un nodo con etiqueta
temporal, y minaux = inifni, quiere decir que no existe ruta del origen al destino.
8.- Se envia un MENSAJE advirtiendo esta situacién y termina el proceso.
6.- Si minaux = infini, significa que alguno de los nodos con etiqueta temporal tiene longitud © costo menor que infinito; en este caso el valor de dicho nodo es asignado a Ja variable aux].
8.-Si no se cumple la condicién entonces no se encontr6é una ruta, se envia mensaje y se
termina el proceso.
7.- Si temporal = 1 y minaux # infini, entonces se ha encontrado una ruta mas corta del origen al nodo auxl. El valor de auxl es asignado a p y se regresa el control a la decisién del
programa: si p + vdestino se repite el proceso, de lo contrario habremos encontrado una ruta corta del origen al destino.
9.- Cuando se ha encontrado una ruta se ejecuta el proceso RutaCorta que es el encargado de
hacer la recuperaci6n de la ruta y posteriormente el EscRuta que muestra la ruta encontrada.
153
Capitulo 4, Desarrollo det Sistema
Para obtener la arborescencia de rutas mAs cortas basdndose en esta subrutina, se Hevan a cabo
dos modificaciones en ella:
1) La condici6n de iteraci6n no se efectéa sobre el valor actual de p, es decir, verificando si
tiene el valor del nodo destino; de hecho la variable destino en éste caso no existe. La
condicién de iteracién en la basqueda de 1a arborescencia de rutas ms cortas se efectia
basandose en la existencia de etiquetas temporales en los nodos, asi que si existen se
continda, de lo contrario se da por terminada la bisqueda.
2) La siguiente modificacién se realiza al momento de verificar si la variable minaux =
inifi, en tal caso se asigna etiqueta permanente al nodo correspondiente.
4.5.2 Algoritmo General: Arborescencia
Procedimiento CALCULO
En este procedimiento se emplea la misma subrutina efectuada para obtener la arborescencia de
rutas mds cortas por el método de Dijkstra; por tal razén algunas de las variables son la
mismas.
CONSTANTES: infini= 99999, Simula por medio de un valor numérico muy grande el infinito.
VARIABLES: ynnodo: variable numérica que contiene el nimero de nodos de la red. El na’mero maximo de
nodos que pueden ser ingresados para una red es de 20.
ynarcos: variable numérica que contiene el nimero de arcos de la red. El nimero de arcos de
la red esté en funcién del ntiimero de nodos, siendo este valor menor o igual a n’-1, donde n es
el némero de nodos.
vraiz: variable numérica; ésta conserva e] valor del nodo que se ha considerado como nodo
raiz.
b_valida: variable auxiliar para verificar la consistencia de los datos ingresados para los arcos.
ruta: variable booleana, indica si en la iteracién actual existe una ruta més corta del origen al
destino.
p: variable numérica. En cada iteracién toma el valor del nodo que tiene 1a minima etiqueta
temporal, cuando ésta existe.
154
Capitulo 4. Desarrollo del Sistema
minaux : variable numérica que en cada iteracién es igual a la distancia de la ruta mas corta de
la raiz al nodo examinado.
temporal: variable booleana que permite saber si existen nodos con etiqueta temporal o no.
auxl: es una variable numérica que en cada iteraci6n le es asignado el valor del nodo que tiene
la minima etiqueta temporal.
bandera: esta variable booleana indica si en la iteracién actual para obtener una arborescencia
inicial, existen nodos con etiqueta temporal.
nodoini: contiene el valor del nodo inicial del arco, fuera de la arborescencia, que se esta
verificando en el proceso de optimalidad.
nodofin: variable numérica que contiene e] valor del nodo final del arco que se est4 verificando
para saber si se puede mejorar la arborescencia en el procedimiento optimalidad.
distaux: variable numérica que contiene la longitud del arco que se esta verificando para
obtener la arborescencia 6ptima en el procedimiento optimalidad.
optimo: variable booleana que indica: si es verdadera, que la arborescencia actual es la de
rutas mas cortas; si es falsa, indica que la arborescencia actual no es la 6ptima.
cambia: variable booleana que indica que un cambio de arco en la arborescencia pudo
efectuarse, de lo contrario se emite un mensaje indicando que no existe una arborescencia de
rutas mas cortas en la red.
ARREGLOS arcos(vnarcos, 4) : el arreglo arcos contiene la composicién de la estructura de los arcos de la
red. Las columnas del arregio son las siguientes: columna 1: valor del nodo inicial.
columna 2: valor del nodo final.
columna 3: longitud 0 costo del arco. columna 4: contiene un valor booleano que permite identificar si el arco pertenece o no
a la arborescencia de rutas mas corta.
prede(vnnodo): guarda el valor del nodo predecesor en la ruta determinada.
diststa(vnnodo,2): guarda en la columna 1 las longitudes mds cortas que van determinandose
para cada nodo. En la columna 2 se indica con un cero 0 con un uno, el estado de las etiquetas
de cada nodo, es decir, si se puede considerar como temporal 0 permanente.
155
Capitulo 4. Desarrollo del Sistema
La figura 4.6 muestra el flujo que siguen los datos dados para la red. A continuacién se explica cada uno de los procesos que se presentan y el valor que va tomando cada una de las variables.
Como se ha mencionado en la subrutina anterior, antes de iniciar el procedimiento CALCULO
debemos tener inicializados los valores de la red, de los arcos, y de los arreglos diststa, y
prede.
156
Capitulo 4. Desarrollo det Sistema
Figura 4.6 Diagrama de flujo del Procedimiento Calculo-Programa General
( Inicio )
vy existe = 0
Arbor_Inicial
@ existe = 0 @ Mensaje
oO et
y
® optimo = 0
Optimalidad
6) cambio = 0 CambArbor
© Resultados
Fin mensaje
1,- Para ejecutar el procedimiento Arbor_Inicial se inicializa la variable existe como falsa, asi que al término de este procedimiento, que es la subrutina de arborescencia de rutas mas cortas
utilizando el método de Dijkstra, esta variable es cambiada a verdadera si se obtuvo una arborescencia.
157
Capitulo 4, Desarrollo del Sistema
2.- En caso que la variable existe continie siendo falsa, se envia un Mensaje indicando que no existe arborescencia de raiz vraiz y se termina el algoritmo.
3.- Sin embargo cuando se obtiene una arborescencia inicial (existe es verdadera), se realiza el
procedimiento Optimalidad. Este procedimiento verifica, para cada arco que esté fuera de la
arborescencia inicial, que la distancia que se obtiene de la raiz al nodo final de dicho arco, sea
menor o igual a la que tiene en la arborescencia actual, si esto pasa, la variable optimo es
verdadera, de lo contrario es falsa.
4.- Si optimo es verdadero se habra encontrado una arborescencia de rutas mas cortas.
5.- Se muestra la arborescencia determinada con el algoritmo y se termina el proceso.
6.- Si optimo es falso es que no se ha obtenido una arborescencia de rutas mas cortas y debe efectuarse un cambio de arborescencia esto se efectia con el proceso CambArbor. Al término
de este proceso si ha logrado efectuar un cambio a la arborescencia la variable cambio se
vuelve verdadera de lo contrario continta falsa.
7.- Si la variable cambio es falsa significa que no se ha podido determinar una arborescencia.
Si es verdadera significa que se tiene una arborescencia y se regresa a verificar la 6ptimalidad de ésta.
8.- Se muestra un mensaje indicando que no se existe en la red dada una arborescencia de rutas
mas cortas y se termina el proceso.
4.5.3 Algoritmo de Floyd: Ruta entre todo par de nodos
Procedimiento CALCULO
Dada !a naturaleza del algoritmo la implementacién del programa se ha realizado de forma muy
sencilla considerando arreglos cuadrados, de nxn, donde n es el nimero de nodos de la red. Se
usan estos arreglos en el manejo de las matrices de costos de las rutas, asi como para el
registro de cambios en la ruta en la matriz de predecesores.
CONSTANTES: infini= 99999 Simula por medio de un valor numérico muy grande, el infinito.
VARIABLES:
ynnodo: variable numérica que contiene el] nimero de nodos de la red. El nimero maximo de nodos que pueden ser ingresados para una red es de 9.
158
Capitulo 5. Presentacién del Sistema
En este capitulo se presenta el Manual de Usuario del sistema “Redes”, en este documento se sefiala la informacion acerca de los requerimientos que son necesarios para correrlo; asi mismo
se mencionan una serie de instrucciones para operarlo con mayor eficiencia.
El Sistema “Redes” fue disefiado para ser utilizado por todas aquellas personas relacionadas con la disciplina de andlisis de redes, asi como aquellas interesadas en el desarrollo de nuevas técnicas de optimizacién de las mismas.
El ambiente en el que se ha orientado al sistema esta basado en menis de seleccién, éstos muestran al usuario las opciones que en ese momento puede ejecutar. Cada una de las opciones
presentan un pequefio mensaje de ayuda en la parte inferior de la pantalla que proporciona mayor informacion.
Las aplicaciones que se han desarrollado estén basadas en los algoritmos descritos en la
primera parte de esta investigacién y estén integrados en dos grandes médulos que por su
naturaleza se les ha denominado rutas mas cortas y flujos.
5.1 Requisitos de Instalacién
# “Redes” requiere de una computadora personal IBM o compatible 80386 a una velocidad de 33 Mhz., un minimo de 4 Mb de memoria RAM, unidad de disco flexible de 3.5 HD
(alta densidad), disco duro con al menos 5 Mb de espacio libre.
“* Monitor a color VGA (video graphics array).
w Sistema operativo DOS versién 5.0 o superior.
‘# Disquetes en blanco (formateados) para poder hacer copia de respaldo del disquete original.
169
Capitulo 5. Presentacién del Sistema
5.2 Preparacién Inicial
Si se cumplen los requisitos anteriores est4 listo para instalar a “Redes” en su computadora ’
para ello, ejecute cuidadosamente las instrucciones siguientes:
1. Encienda su computadora. Espere hasta que aparezca el indicador del Sistema Operativo (prompt). Esto le indica que la computadora esta lista para aceptar sus comandos (normalmente el indicador -prompt- del DOS apareceré como C:\> dependiendo del nombre de la unidad de disco que este usando).
Elabore copia de respaldo del disquete original de “Redes”. Para ello tome el disco de “Redes” e insertelo cuidadosamente en la unidad de disco A (o la que corresponda en su computadora), teclee DISKCOPY y luego pulse ENTER para continuar.
Siga las instrucciones en la pantalla, cada vez que la computadora le pida insertar el disco fuente (Source Disk) se esta refiriendo al disquete de “Redes”. El disquete de destino (Target Disk) se refiere al disquete en blanco que se utilizar para copiar a “Redes” .
Después de copiar el disquete original, coloque la etiqueta correspondiente. En la misma incluya lo siguiente:
@ Sistema “Redes” .
Cuando la computadora le pregunte si desea copiar otro disquete pulse [N] en respuesta a la pregunta anterior para indicarle que no se van a copiar m4s disquetes.
Guarde el disco original de “Redes” en un sitio seguro. Utilice la copia de respaldo (Backup) para instalar e] programa.
5.3 Instrucciones para Instalar a “Redes” en su computadora
Utilizando la copia de respaldo (backup) de “Redes”, ejecute los pasos siguientes a fin de instalar el programa en su computadora:
1.
2.
Inserte el disco en la unidad que va a utilizar para la instalacion.
Para activar la unidad elegida, escriba la letra de la unidad seguida de dos puntos (:) y presione la tecla ENTER, (por ejemplo, si se tratara de la unidad “A”, los pasos serian los siguientes:
170
Capitulo 5. Presentacién del Sistema
CA\> A: 4).
3. Posteriormente teclee instared y presione ENTER.
cargado en su computadora en un subdirectorio llamado redes.
5. La instalacién habr4 finalizado cuando en su computadora identifique el prompt del Siguiente modo: C:\Redes >
5.4 Como utiliza Redes las vias de acceso y los directorios
Cuando usted utiliza a “Redes” en su computadora, los archivos del programa se ubican en subdirectorios. Esto sirve para mantener los archivos alejados de cualquier programa que pueda tener conflicto con ellos. (Los subdirectorios de una computadora almacenan los archivos electrénicos como se almacenan en gavetas las carpetas de papel).
“Redes” utiliza el subdirectorio Redes; este contiene todos los archivos del programa, ademas éste es el subdirectorio de trabajo (u operativo) del programa, atin cuando este subdirectorio es la convencién a referencia que se hace en este manual, Usted puede seleccionar cualquier otro
subdirectorio para instalar a “Redes” y almacenar sus archivos de datos.
Para trabajar en el directorio \Redes se necesita indicar la via de acceso a los archivos
ejecutables una vez establecida la via de acceso, se puede comenzar a utilizar el sistema.
5.5 Inicio de Sesién
Para comenzar a trabajar con “Redes” debe accesar al subdirectorio \Redes esto se Jogra de Ja siguiente forma:
1. Desde el prompt del sistema teclee: C:\> cd redes y [ENTER]
2. Posteriormente aparecera el prompt del siguiente modo: C:\REDES\ >
3. En seguida teclee:
C:\REDES\> redes y [ENTER]
171
Capitulo 5. Presentacién del Sistema
4. En caso de que se encuentre en otro subdirectorio diferente al prompt C:\> teclee lo
siguiente:
cd \ y [ENTER]
5. Y ejecute las instrucciones del punto 1 en adelante.
Una vez ingresando al Sistema se muestra al usuario el mend principal con las opciones de fos
problemas que pueden resolverse como se ilustra en al figura 5.1, asi como los elementos que
integran a dicha pantalla. '
172
Capitulo 5. Presentacién del Sistema
Figura 5.1 Pantalla principal del sistema
Origen 3 Testing
Para terminar una sesién, tinicamente se debe seleccionar en este mend la opcién SALIR. Al
ejecutar esta opcién se regresa al sistema operativo.
Como se puede observar en la figura 5.1 el sistema esta integrado, de tres médulos, el
correspondiente a la ruta corta, flujos y el de salida.
Cada uno de ellos contiene los algoritmos de soluci6n para los respectivos problemas que se
abordaron en los primeros capitulos de Ja investigaci6n; para desplazarse de un modulo a otro,
basta utilizar las flechas de navegacién de su teclado, ya sea derecha — o izquierda <
dependiendo del ment deseado, y por el contrario para acceder a cualquier opcién del meni
seleccionado, utilice las flechas de direcci6n arriba T y + abajo.
La fig. 5.1 muestra las opciones correspondientes al meni “Ruta Corta”, asi como en la fig. 5.2 se presentan las que se encuentran en el ment “Flujos” .
173
Capitulo 5. Presentacién del Sistema
Figura 5.2 Pantalla del Meni Flujos
o de Ford
Cabe sefialar que una opcién se puede efectuar de dos formas: por colocarse en la seleccién por
medio de las flechas de direccién y pulsar <ENTER> como se menciono con anterioridad o
presionando la tecla que se encuentre resaltada.
Por ejemplo: Si se desea ejecutar la opcién de General, se deben seguir los siguientes pasos:
1. Con las teclas de direccién colocarse en la opcién General y presionar la tecla
<ENTER>.
2. O en cualquier posicién del médulo Ruta Corta, inicamente presionar la tecla "G" que en este caso es la que esta resaltada.
Si se selecciona la opcién de Arborescencia por el método de Dijkstra, el sistema despliega la pantalla que se muestra en la figura 5.3.
174
Capitulo 5. Presentacién del Sistema
Figura 5.3 Pantalla correspondiente a una Arborescencia.
“WETODO DIJKSTRA
En esta pantalla se solicita al usuario que seleccione si desea proporcionar datos de un nuevo problema (opcién ”Nuevo”) o si desea buscar alguno que esté almacenado (opcién “Buscar”), ya que el sistema permite mantener almacenada la informaci6n de los ejercicios que se desee para cada uno de los algoritmos.
Si se selecciona Nuevo, se ingresa a la pantalla de “Entrada de Datos”, misma que se explicar4 més adelante. Si se selecciona Buscar, el sistema verifica que exista por lo menos un problema
en la base de datos correspondiente, de lo contrario se despliega la pantalla de la figura 5.4.
Al pulsar cualquier tecla el sistema regresa la pantalla de la figura 5.3, aqui se puede seleccionar Nuevo 0 <ESC> para salir de la aplicacién sin haberla ejecutado.
175
Capitulo 5. Presentacién de Sistema
Figura 5.4 Pantalla de Entrada de Datos
RUTA DEO A
NO SE TIENE HINGUN PROBLEMA GUARDADO
Pulse cualquier tecla..._
Si al efectuar la verificacién se encuentra algtin problema almacenado en Ja base, se muestra al
usuario una ventana con una lista de todos los nombres de los problemas, y por medio de las
fechas de direccién de arriba y abajo se puede navegar para seleccionar el deseado; ver figura
5.5.
Figura 5.5 Pantalla del Mend Arborescencia
ARBORESCENCIA METODG GENERAL
Seleceion un Problema...
Use <t>,<T> para Seleccionar y <E
176
Capitulo 5. Presentacién del Sistema
Una vez que se ha seleccionado algin problema se muestran los datos de la red y los arcos.
5.6 Introduccién o Modificacién de Datos
En el capitulo anterior se mencionaron los datos de entrada que son necesarios en cada uno de los algoritmos (ver tablas 4.2 y 4.3); asi para cada problema se han definido dos pantallas de entrada: una para los datos de la RED y otra para los datos de los ARCOS las cuales se
presentan en ese orden.
Existen dos instancias para introducir informacién, basada en la seleccién hecha al inicio de la
aplicacién, la primera se da cuando se ha seleccionado la opcién Nuevo y la segunda cuando se
accesa a los datos de algin problema almacenado, opcién Buscar.
5.6.1 Pantallas de entrada de un problema nuevo
Cuando se ha seleccionado la opcién Nuevo, el sistema muestra una pantalla para solicitar los
datos de la red. El ejemplo que ilustra la figura 5.5 es la pantalla de datos de la red para el
algoritmo de Dijkstra en el problema de ruta mas corta de 0 a d.
Figura 5.5 Pantalla de datos de ta Red para el Algoritmo de Dijkstra.
177
Capitulo 5. Presentacién del Sistema
Una vez que los datos se han introducido, éstos son validados considerando que cumplan con
las siguientes condiciones: .
1) Que sean distintos de cero.
2) Que el nimero de nodos no sea superior a 20.
3) Que el mimero de arcos no sea superior a n(n-1).
4) Que el origen y el destino estén en el intervalo (1,n).
Donde n es el ntimero de nodos.
Cuando uno o varios de los datos no cumplen con alguna de éstas condiciones, se despliega en
la pantalla una ventana como se muestra en la figura 5.6. Pulsando una tecla se regresa al
modo de edicién y permitiendo modificar el error.
Figura 5.6 Pantalla de datos de la Red para el Algoritmo de Dijkstra.
RUTA DE 8-0 B HETODO BIJKSTRA
DATOS. GENERGLES OE. ta RED:
Him. de
_ Srigen:
Uno de los Datos de Entrada Ho Es Valide Por favor Vuelva a Introeducirlos
Pulse una teela para continuar ..._
En el ejemplo de la figura el dato del nodo Destino tiene asignado el valor de 0, mismo que no
es valido por lo que despliega la ventana de advertencia. Cuando los datos cumplen con los requerimientos se permite al usuario que seleccione alguna de las siguientes actividades:
Continuar, Editar o Salir; ver figura 5.7.
178
Capitulo 5. Presentacién del Sistema
Figura 5.7 Pantalla de datos de la Red para el Algoritmo de Dijkstra.
ates a ea)
La Opcién <Continuar> muestra la siguiente pantalla que consiste en el ingreso de los datos
de los arcos. La opcién <Editar> regresa a la misma pantalla de Datos de la red para
modificar algtin dato que se desee, finalmente la opcién <Salir> permite regresar a la pantalla anterior, esta opcién se debe seleccionar si no se desea continuar.
Si se selecciona <Continuar> el sistema abre la pantalla de Introduccién de los Datos de los
Arcos; figura 5.8. La ilustraci6n corresponde a la pantalla generada por los datos que se dieron antes para la red. Se observa que los renglones corresponden a cada uno de los arcos debiendo
introducir para cada uno el nodo inicial, el nodo final y la longitud o costo.
179
Capitulo 5. Presentacién del Sistema
Figura 5.8 Pantalla de Introduccién de los Datos de los Arcos.
J. 1-11)
—
(—l-.~3~-1—1—
1) 1-1 i
i i) i) i) 0 i of KE
Lj
El nimero maximo de renglones en cada pantalla es de 12, asi que cuando la red conste de un
numero mayor de arcos, se presentaran las pantallas que sean necesarias, una después de la
otra.
Cuando los datos de todos los arcos se han ingresado, el sistema los valida verificando el
cumplimiento de las siguientes condiciones para los nodos inicial y final de cada arco:
1) Que sean distintos de cero.
2) Que estén en el intervalo (1,n).
Cuando uno o varios de los datos de los arcos no cumplen con alguna de estas condiciones se despliega una ventana indicando el error al usuario como se muestra en la figura 5.9, deben
entonces revisarse los datos y modificar los que estén erréneos. Cabe sefialar que el sistema
no valida que se tenga m4s de una vez el mismo arco.
180
Capitulo 5. Presentacién del Sistema
Figura 5.9 Pantalla de error de Introduccién de los Datos.
2 ee ee Hebe Estur Entre Jou ?
PET See oe rr a To
En el ejemplo de ta fig. 5.9, al nodo final para el arco 5 se le ha asignado el valor de O por Io que se abrié la ventana. Un mensaje andlogo se despliega cuando el valor del nodo inicial este fuera del rango. Dado que el algoritmo de Dijkstra no es eficiente para redes con costos negativos esta validado que las longitudes a ingresar no sean de éste tipo.
Por Ja naturaleza de los algoritmos de Floyd y de Dantzing se ha disefiado una forma diferente
para la captura de los datos de entrada. Como informacién general de la red tnicamente se
solicita el nimero de nodos que la forman ver la figura 5.10.
18)
Capitulo 5. Presentacién del Sistema
Figura 5.10 Pantalla de datos de la Red para el Algoritmo de Floyd y de Dantzing.
Hin, de Hodes:
Una vez suministrado éste dato y seleccionado <Continuar> se abre una pantalla que en forma matricial permite el ingreso de las longitudes o costos de los arcos, figura 5.11.
Figura 5.11 Pantalla de ingreso de las longitudes.
182
Capitulo 5. Presentacién del Sistema
En esta pantalla se refleja el hecho de que todas las entradas de la matriz de costos inicial son infinitos (=99999) excepto para la diagonal que es cero y ademds no permite el acceso inicial de costos. El ingreso del costo del arco (i, j), cuando exista, debe realizarse en la fila i, columaa j.
5.6.2 Pantallas de un problema almacenado
Cuando se selecciona un problema que se tiene almacenado se muestran al usuario las pantallas de datos de la red y de los arcos, una después de la otra. Una vez que se han mostrado los datos de los arcos se ofrece al usuario un meni de opciones para que seleccione entre <Correr>, <Modificar>, <Borrar> y <Salir> como se ilustra en la figura 5.12.
Figura 5.12 Pantalla de un problema almacenado.
alten tars
Al seleccionar la opcién <Correr>, se da por entendido que los datos son los deseados y se
ejecuta el algoritmo dando las pantallas de salida correspondientes. Si los datos no
corresponden al problema que se estaba buscando se selecciona la opcién <Salir> y
enseguida se regresa a la pantalla de seleccidn de problemas.
Cuando se haya recuperado el problema y se observe que algén dato de la red o de los arcos
esta equivocado o simplemente se desee cambiar, se debe seleccionar la opcién <Modificar >;
183
Capitulo 5. Presentacién del Sistema
al seleccionarla se presenta un ment solicitando se indique que datos desea modificar: los de la
red o los de los arcos (ver figura 5.13).
Figura 5.13 Pantalla de modificacién de datos.
Modificar Origen, 6. Destins
Cuando se opta por modificar datos de la red Gnicamente se permiten modificaciones sobre los
datos marcados con x en la figura 5.14 para cada algoritmo.
Figura 5.14 Datos de la Red que se permiten modificar para el algoritmo indicado,
No. No. | Origen o Valor
Algoritmo Nodos De Raiz | Destino del Arcos Flujo
Ruta deoad x Xx
Arborescencia x
General x
Dantzing
Floyd
Flujo Maximo x x
Primal x ».4 x
Dual x x x
Out-of-Kilter x xX x
Una vez que se ha terminado la modificacién de los datos de la red se ejecuta el algoritmo.
184
Capitulo 5. Presentacién de? Sistema
Si se opta por modificar datos de los arcos, se presenta al usuario la misma pantalla con la que éstos se ingresaron, permitiendo que se modifique cualquier valor de nodo inicial, nodo final, longitudes 0 costos y demas funciones que requiera el algoritmo.
Al finalizar las modificaciones de los datos de los arcos, se permite al usuario seleccionar una de las siguientes opciones: <Correr>, <Editar> o <Salir>. <Correr> ejecuta el algoritmo con las modificaciones realizadas, < Editar > permite volver a los datos y seguir modificando o corrigiendo y <Salir> permite salirse det problema sin que los cambios tealizados sean considerados y sin ejecutar el algoritmo.
La opci6n <Borrar> permite eliminar de la base de datos toda la informacién concerniente al problema seleccionado. Asi cuando un problema ya no sea necesario es posible eliminarlo.
185
Capitulo 5. Presentacién del Sistema
5.7 Resultados
Los resultados obtenidos durante la ejecucion de los algoritmos se presentan en algunos casos
de forma iterativa es decir se van presentando resultados por cada iteracion y en otros
solamente se presenta el resultado final.
En los algoritmos de rutas mas cortas por los métodos de Dijkstra y General inicamente se
presentan los resultados finales, dado que en cada iteraci6n se va introduciendo s6lo un nodo
en Ja ruta y el proceso para llegar al resultado final se volveria muy largo. Para los demas
métodos si se presentan los resultados iterativamente.
La salida de los resultados de cada una de las aplicaciones se presenta en forma particular,
dependiendo de cada uno de los problemas.
Para cada uno de los algoritmos se ofrece un ejemplo de la(s) pantalla(s) de salida y una breve
explicacién de como interpretarla. Se dan los datos de entrada, mismos gue se muestran antes
de fa(s) pantalla(s) de resultados, para un mejor entendimiento de los mismos.
5.7.1 DIJKSTRA: Ruta deo a d
Datos de Entrada
Red: Niamero de Nodos = 5 Numero de arcos = 10
Origen = 1 Destino = 5
Arcos: Arco Longitud
1 (1,2)
2 (1,3)
3 (2,3) 4 (2,4)
3 (3,4)
6 @B,1) 7 (3,2)
8 (3,5) 9 (2,5) 10 (4,5)
won nNnworoOornhnd
El resultado que genera el sistema con estos datos de entrada se muestra en la figura 5.15.
186
Capitulo 5. Presentacién del Sistema
Figura 5.15 Resultados de Dijkstra
Estos datos se pueden interpretar de la manera siguiente:
Los nimeros abajo de las columnas Nodo Inicial y Nodo Final son los arcos que integran la
ruta y los valores indicados abajo de la columna Distancia son Jas longitudes de] nodo origen al nodo final.
Asi la longitud de Ia ruta del origen (= 1) al destino (=5) es de 5 como se indica en la
columna Distancia en el arco (3,5). Asi mismo la parte baja de la pantalla se muestra la
longitud de la ruta més corta del origen a] destino con un mensaje. Cuando no exista una ruta
del origen al destino en la red dada, el sistema muestra una ventana de color rojo indicando dicha situacién y la aplicacién termina de ejecutarse sin mostrar ninguna pantalla de salida.
5.7.2 DISKSTRA: Arborescencia
Datos de Entrada
Red: Nitimero de Nodos = 9 Numero de arcos = 15
Origen = 2
187
Capitulo 5. Presentacién del Sistema
Arcos:
Arco Longitud Arco Longitud
1 (1,2) 1 9 (4,6) 7 2 (2,1) 1 10 (4,7) 8 3 (1,8) 1 11 (4,9) 7 4 (2,7) 20 12 (8,9) 9 5 (2,3) 3 13 (5,6) 4 6 (2,5) 8 14 (7,9) 1 7 (3,4) 5 15 (6,9) 1 8 3,8) 8
E] resultado que genera el sistema con estos datos de entrada se muestra en la figura 5.16.
Figura 5.16 Pantalla de Resultados de Dijkstra, Arborescencia.
HETODO BTIKSTRA ARBORESCENCIA: DE RUTAS MAS CORTAS
Barz: 2
Hede Inicial Modo. Final Ruta. mas: carta: de Ta AATZ AL Hodo Final
2 1 Oe 2 3 2 3 & 8 2. 5 a. 5 é 1%
¢
Pulse una Teela para, Ti
En esta pantalla se presentan los arcos que forman parte de la arborescencia y la distancia del nodo raiz al nodo final de cada arco. La informacién presentada es similar que la que se obtiene con la aplicacién de ruta mas corta de o a d, solamente que en este caso se verifica que el nodo indicado como raiz realmente lo sea. Asi que al término de la ejecucién de la aplicacién se presenta una pantalla similar a esta, el nodo indicado como raiz en efecto lo es.
Cuando se detecta que el nodo indicado como raiz no lo es, el sistema manda un mensaje en una ventana de color rojo indicandolo. Si se da el caso Ja aplicaci6n no muestra ninguna pantalla de salida.
188
Capitulo 5. Presentacién del Sistema
5.7.3 General.
Datos de Entrada
Red: Nimero de Nodos = 9 Nimero de arcos = 13 Origen = 1
Arcos:
Arco Longitud Arco Longitud
1 (1,2) -2 8 (4,9) -2
2 (i,3) 3 9 (5,6) 3
3 (2,4) -2 10 (5,9) -2
4 (2,7) -4 li (6,5) 2
5 (3,6) 3 12 (7,8) -1
6 (4,5) 8 13 (8,9) -]
7 (4,7) 9
EI resultado que genera el sistema con estos datos de entrada se muestra en la figura 5.17.
Figura 5.17 Pantalla de Resultados
METOBO GENERAL
189
Capitulo 5. Presentacién del Sistema
La salida de la informacién generada en esta aplicaciOn, es similar a la generada por Dijkstra para el caso de arborescencia, por lo que su interpretacién es idéntica. Esto se debe a que
ambos algoritmos resuelven el mismo tipo de problema, pero hay que sefialar que uno para
costos no negativos (Dijkstra) y el otro para redes con cualquier costo.
En este algoritmo se presentan dos tipos de mensajes que no permiten la finalizacién del
algoritmo con éxito; estos son: 1) que el nodo asignado como raiz, no lo sea; y 2) por el hecho
de encontrar un circuito con longitud negativa.
Para cada uno de estos casos, como se ha mencionado, que se envia el mensaje pertinente y el algoritmo es interrumpido.
5.7.4 FLOYD y DANTZING
Dada la naturaleza de estos algoritmos, el andlisis de las pantallas de salida se realizara de
forma conjunta. Considere para este fin, los siguientes datos de entrada:
Datos de Entrada
Red: Nimero de Nodos = 5
Arcos:
Arco Longitud Arco Longitud
1 (1,2) 4 9 (3,4) -7
2 (1,3) 8 10 (3,5) 3
3 (1,4) 4 1 (4,1) 6
4 (1,5) 1 12 (4,2) 79
5 (2,3) 3 13 (4,5) 99
6 (2,4) 2 14 (5,2) 3
7 (3,1) 4 15 (5,3) 5
8 (3,2) 9 16 (5,4) 5
A diferencia de las salidas generadas en los algoritmos presentados antes, en estos se muestran
pantallas de salida en cada una de las iteraciones.
Asi las salidas en la iteracién k en el algoritmo de Floyd consisten de:
1) Una pantalla mostrando Ja matriz de costos con la ruta més corta entre i y j que puede
admitir a los primeros k nodos 0 a algunos de ellos como nodos intermedios y
2) Una pantalla mostrando la matriz de recuperacién de rutas, idéntica a la que se usa cuando
se realiza el proceso en forma manual.
190
Capitulo 5. Presentacién del Sistema
En la figura 5.18 se muestran las pantallas de salida en la iteracién 2 para los datos del ejemplo
dado arriba.
Figura 5.18 a) Pantalla de salida de Matriz de Recuperacién de Rutas.
Ewe . MBTPPO FLOYD
Una vez mostrada la matriz de recuperacion de rutas se muestra al usuario una ventana
solicitando que indique si desea observar nuevamente la matriz de costos 0 si desea que se
ejecute la siguiente iteracién, esto con la finalidad de tener oportunidad de volver a consultar la
informacion de la matriz de costos en cada iteracién.
191
Capitulo 5. Presentacién del Sistema
aumentante que se ha encontrado. Un ejemplo de esta pantalla se presenta en Ja figura 5.20 que
corresponde a la primer iteracién con los datos del ejemplo.
Figura 5.20 Pantalla de salida det Algoritmo de flujo maximo.
FLUJO. Maxryuo
RUTA: 2,2
VALOR DEL
SISTEMA DE OPTIMIZACION DE BREDES ——
ITERACION 1 ay RUTA Y VALOR DEL FLUJO GeT#,
8.
(0 HN LA TTHRACION: 7
Pulse una Tecia para Continuar
METODG FORD ¥ FULKERSON
Aqui se observa que la cadena encontrada es la que est4 integrada por los nodos 1, 2 y 5. El
valor incremental de ésta es 7. La ilustracién 5.21 muestra la pantalla donde se refleja la
aplicacién del envio de flujo sobre los arcos que forman la cadena encontrada.
194
Capitulo 5. Presentacién del Sistema
Figura 5,21 Pantalla de salida de la Aplicacién del envio de flujo.
En la pantalla de resultados finales se presentan los datos de los arcos de forma similar a la ilustracién anterior indicando que los datos corresponden al flujo m4ximo de la red y el valor de éste.
Los resultados finales con los datos del ejemplo se presentan en la siguiente figura.
195
Capitulo 5. Presentacién del Sistema
Figura 5.22 Pantalla de salida de la Aplicacién del envio de flujo, en sus resultados finales,
FORD ¥ FULKERSON
Capacidad Bluyo
Pulse uns Tecla para Terminars
196
Capitulo 5. Presentaci6n del Sistema
5.7.6 Flujo a costo minimo
5.7.6.1 Primal
Considere los siguientes datos como de. entrada en el algoritmo primal para obtener cl un a costo minimo de valor 10.
Datos de Entrada
Red: Numero de Nodos = 5 Numero de arcos = 8 Origen = 1 Destino = 4
Val. Flujo = 15
Arcos:
Arco Capacidad Costo
1 (1,2) 7 1.00
2 q,3) 4 5.00
3 (5,1) 4 1.00
4 (2,3) 7 2.00
5 (2,4) 5 7.00
6 (3,4) 9 1.00
7 (3,5) 3 1.00
8 (5,4) 7 2.00
En esta aplicacién se despliegan las siguientes salidas:
1) Se presentan cada una las cadenas de flujo aumentante que se localizan en la red hasta: a)
alcanzar el flujo solicitado o b) hasta que no sea posible determinar més cadenas de flujo
aumentante y no se ha alcanzo el flujo indicado. Cuando se ha determinado un flujo factible del
valor indicado se muestran otra serie de pantallas que se presentaran mas adelante. Cuando se
da el caso b) se abre una ventana de alerta indicando que no se logré determinar un flujo del
valor deseado, el flujo maximo que ha podido ser enviado a través de la red y se solicita se
indique si se desea correr Ja aplicacién con ese valor de flujo.
La figura 5.22 muestra la primer cadena localizada con Jos datos de nuestro ejemplo y la figura 5.23 muestra la ventana de alerta que se despliega al no haber podido determinarse un flujo del
valor deseado. En la figura 5.23 se presenta la ruta de la cadena y el valor del flujo que puede ser enviado a través de ella.
197
Capitulo 5. Presentacién dei Sistema
Figura 5.23 Pantalla de salida de la ruta de la cadena _y el valor del flujo.
- sis FLUJO. MAXIMO A Cost
A DE OPTIMIZACION DE
bE FLUID: AUME VALOR DRL. PLUG
UTR
RUTA: L, 2, 4, oo LA CADENA DE FLUIO AUMENTANTE:
Pulse una Téecla para Continuar
HETODO PRIMAL
En la figura 5.23 se observan las opciones que ofrece el sistema cuando no se ha localizado un
flujo del valor deseado. De este modo si opta por <Salir>, el sistema detiene el algoritmo y
regresa el control al ment anterior. Si por el contrario, se decide por <Correr>:
198
Capitulo 5. Presentacién de! Sistema
Figura 5.24 Pantalla de salida de la ruta de la cadena y el valor del flujo.
2) La siguiente serie de pantallas de salida muestra en primera instancia los datos de los arcos
con el flujo que ha sido posible enviar a través de ellos y el costo total del mismo. Ver figura
5.25.
199
Capitulo 5, Presentacién del Sistema
Figura 5,25 Pantalla de salida de datos de los arcos con los flujos.
FLUJO BAXIEO
Arco.
OR WN
Re:
VALOR DEL FLUJO iL
cOSTG DEL FLUIC 72.00
HETODO PRImAL
Nee
NN
&
i,
Figura 5.26 Pantalla de salida de la red marginal.
icine SISTEMA DE OPTIMIZACTOM DER! FLUJO. MAXIMO A COSTO MINTHO fot :
Axe
QE
WN ON
1M wT in eg
Me
DWP
Oo NN Ge hoe
DEL FLUIO Continuar
03 Pulse une Tecla pat.
“ tonjunte
METODO PRIMAL NR
NN BRD
200
Capitulo 5. Presentacién del Sistema
En seguida se muestran los datos de la red marginal que genera el flujo y los costos asociados
con ésta. La figura 5.26 ilustra la red marginal obtenida con el flujo localizado en nuestro
ejemplo. En esta figura se observa una columna llamada conjunto. Esta columna se puede
interpretar de la siguiente manera: si el valor mostrado es 1, el arco pertenece al conjunto A,,
como se indico en Ja definicion de red marginal en el capitulo 3; si se est4 mostrando un valor 2 el arco correspondiente pertenece al conjunto A,. La columna Costo muestra los costos de los arcos en la red marginal y la columna capacidad la capacidad correspondiente de los arcos.
Una vez mostrada la red marginal la aplicaci6n verifica si existe un circuito negativo.
4) Si un circuito negativo es localizado se indica en la parte baja de la pantalla como lo muestra
ja figura 5.25; al oprimir cualquier tecla se muestra otra pantalla con los nodos que forman el
circuito y la capacidad de éste. La figura 5.27 muestra esta pantalla siguiendo los datos del
ejemplo.
Figura 5.27 Pantalla de salida con los nodos que forman el circuito.
Asi se itera mostrando el nuevo flujo obtenido y ei costo de éste, la red marginal correspondiente y ja validaci6én de la existencia de algin circuito negativo; hasta que no se
201
Capitulo 5. Presentacién del Sistema
Figura 5.38 Papntalla de salida de resultados.
SISTEMA DE OPTIMEZACTON DE
HOS VALORES PARA EL
Area HeInie. N.Final Cap.Sup.
Pen BRON
ot
Pulse wid Tecla para Comtinuar_
sNIMO. SON:
Cosbo Fiujzo
6 is 9 7 1 3 28 o
de
ON WW
Figura 5.39 Pantalla de salida de resultados.
—— - SISTEMA DE OPTIMIZACION DE FLUJO MARINO. COSTO: NINIMO mo
LOS VALGRES FINALES PARA P SON:
pili = 12 #t2) = 10 pig} = 3 piap 2
ata Continuar.
Sa - “BRyODO OUT OF RILTER
212
Conclusiones
Con la elaboraci6n de esta investigacién, se ha planteado cémo el modelo de rutas més cortas puede ser utilizado como una herramienta auxiliar, para resolver problemas mas complejos como son los de flujos. Se ha estudiado la teorfa matematica y los algoritmos mas eficientes, que han permitido resolver los problemas de rutas més cortas y de flujos planteados.
Los siguientes cuadros muestran los diferentes algoritmos estudiados y plantea las posibles ocasiones en que debe ser utilizado.
Algoritmo de rutas mas cortas a utilizar dada alguna de las situaciones mencionadas.
Algoritmo Tipo de Datos iniciales Datos de Salida Posibles Observaciones con éxito fracasos
Dijkstra
Ruta deoad e20 Nodos origen y { Ruta mas corta | No existe una destino deoad ruta deoad
Arborescencia e20 Raiz Arborescencia | Existencia de
de rutas mds un circuito cortas negativo
General ¢ libre Arborescencia Ruta més corta | Existencia de cualquiera deoad un circuito
oO negativo Arborescencia de rutas mas
cortas Dantzing ¢ libre Matriz de costos | Ruta mas corta | Existenciade | El algoritmo aun
entre todo par un circuito cuando acepta de nodos negativo costos negativos,
no detecta
circuitos
negativos Floyd clibre | Matrizdecostos | Ruta mas corta | Existencia de El algoritmo
entre todo par un circuito detecta circuitos de nodos nepativo negativos
213
Bibliografia
1. Data Structures; Theory and practice, Berztiss, A.T.
New York, Academic Press 1971.
2. Applications of Graph theory algorithms Vinod Chachra, Prabhaker Ghare, James M. Moore
New York, North-Holland 1979
3. Graph Theory and algoritmic approach Christofides, Nicos
New York, Academic Press 1975
4. Graph theory with applications to engineering and computer science Deo, Narsingh
Prentice-Hall, Inc. 1974
5. Finite graphd and networks an introduction with applications Busaker, Robert G.
McGraw-Hill Book Company 1965
6. Optimization Algorithms for networks and graphs Minieka, Edward
Marcel Dekker, Inc. 1978
7. Algorithms Graphs an d computers
Bellman, Richard
Academic Press, Inc. 1970
216