Capítulo 3

También podría gustarte

Está en la página 1de 41

60

CAPÍTULO 3

3. CONCEPTOS BÁSICOS DE GRAFOS Y REDES

3.1. Grafos Dirigidos

Un grafo dirigido G=(N,A) consiste en un conjunto N de nodos y

un conjunto A de arcos cuyos elementos son pares ordenados de

distintos nodos.

2 4

1 5 7

3 6

Figura 3.1 Grafo Dirigido


61

3.2. Red Dirigida

Una red dirigida es un grafo dirigido cuyos nodos o arcos tienen

asociados valores numéricos tales como costos, capacidades,

ofertas, demandas, tiempo etc. Denotaremos el número de nodos

con la letra n y al número de arcos con la m.

3.3. Grafos no Dirigidos

Un grafo no dirigido G=(N,A) consiste en un conjunto N de nodos

y un conjunto A de arcos cuyos elementos son pares no

ordenados de nodos distintos. En un grafo nos podemos referir al

arco que une a los nodos i-j, como (i, j ) o ( j , i ) . Un grafo no

dirigido permite el flujo en ambas direcciones, es decir desde el

nodo i al nodo j o viceversa.

2 4

1 5 7

3 6

Figura 3.2 Grafo No Dirigido


62

3.4. Colas y Cabezas

Un arco dirigido (i, j ) tiene dos puntos de finalización i y j. Nos

referiremos al nodo i como la cola del arco y al nodo j como su

cabeza. Diremos que al arco (i, j ) emana del nodo i y termina

en el nodo j. El arco (i, j ) es incidente a los nodos i y j.

El arco (i, j ) es un arco saliente del nodo i y un arco entrante al

nodo j. Siempre que el arco (i, j ) pertenezca al conjunto A,

diremos que el nodo j es adyacente al nodo i.

3.5. Grados

El grado interno de un nodo es el número de arcos que llegan al

nodo y su grado externo es el número de arcos que salen del

nodo. Al sumar el grado interno de un nodo con su grado externo

se obtiene el grado del nodo. Se observa que la suma de los

grado interno de todos los nodos es igual a la suma de todos los

grados externos de todos los nodos y ambos son iguales al

número de arcos m en la red.

3.6. Lista de Adyacencia


63

La lista de arcos de adyacencia A(i) de un nodo i es el conjunto

de arcos que emanan del nodo i, esto es:

A(i )    i, j   A : j  N 

La lista de nodos de adyacencia A(i), de un nodo i es el conjunto

de nodos adyacentes al nodo i.

A(i )   j  N :  i, j   A

Supondremos que los arcos en la lista de adyacencia están

ordenados de manera que los nodos cabeza y los arcos están en

orden creciente.

3.7. Multiarcos

Multiarcos son dos o más arcos con los mismos nodos cabeza y

cola.

3.8. Lazos
64

Un lazo es un arco cuyo nodo cabeza es el mismo que su nodo

cola.

3.9. Subgrafo

Un grafo G’=(N’,A’) es un subgrafo de G=(N,A) si N’  N y A’  A.

Diremos que G’=(N’,A’) es el subgrafo de G inducido por N’ si A’

contiene cada arco de A con ambos puntos de finalización en N’.

Un grafo G’=(N’,A’) es un subgrafo de expansión de G=(N,A) si

N’=N y A’  A.

3.10. Camino

Un camino en un grafo dirigido G=(N,A) es un subgrafo de G que

satisface la propiedad que para todo k, donde 1  k  r-1, se tiene

que:

ak= (i k 1 , i k ) A o ak= (i k , i k 1 )  A.
65

1 5 7

Figura 3.3 Camino No Dirigido

3.11. Camino Dirigido

Un camino dirigido es una versión orientada de un camino, en el

sentido de que para dos nodos consecutivos i k e ik+1 en el

camino, se tiene que (i k , i k 1 )  A.

2 4
1

3 5

Figura 3.4 Camino Dirigido

3.12. Ruta

Una ruta es un camino sin repetición de nodos. Es posible

particionar los arcos de un camino en dos grupos: los arcos que


66

van hacia delante y los arcos que van hacia atrás. Un arco

(i , j ) en el camino es un arco dirigido hacia delante si la ruta

visita al nodo i antes de visitar al nodo j, de ser contrario es un

arco que está dirigido hacia atrás.

3.13. Ruta Dirigida

Una ruta dirigida es un camino dirigido en el que no se repiten

nodos. Dicho de otra forma en una ruta dirigida no existen arcos

dirigidos hacia atrás. Resulta fácil almacenar una ruta en una

computadora definiendo un índice pred(j), para todo nodo j en la

ruta.

3.14. Ciclo

Un ciclo es una ruta i1 – i2 - ... –ir , junto con el arco (i1 , i r ) o el

arco (i r , i1 ) . Nos referiremos a un ciclo empleando la notación

i1 – i2 - ... –ir –ir. De manera análoga a las rutas es posible

definir arcos dirigidos hacia delante o hacia atrás.


67

Figura 3.5 Ciclo

3.15. Ciclo Dirigido

Un ciclo dirigido es una ruta dirigida i 1 – i2 - ... –ir, junto con el

arco (i r , i1 ) .

2 4

Figura 3.6 Ciclo Dirigido

3.16. Grafo Acíclico

Un grafo es acíclico si no contiene ciclos dirigidos.


68

3.17. Conectividad

Dos nodos i,j están conectados si el grafo contiene por lo menos

una ruta desde el nodo i al nodo j. Un grafo es conectado si

cada par de nodos están conectados. De otra forma el grafo es

desconectado. Nos referimos a los subgrafos conectados de

una red como sus componentes.

3.18. Conectividad Fuerte

Un grafo conectado está fuertemente conectado si contiene por

lo menos una ruta dirigida desde cada nodo hacia todos los

demás nodos.

3.19. Cortadura

Una cortadura es una partición del conjunto de nodos N, en dos

partes, S y S’=N-S. Cada cortadura define un conjunto de arcos

compuesto por los arcos que tienen un punto de finalización en

S y otro punto de finalización en S’. Nos referiremos a este

conjunto de arcos como una cortadura y será representada por

[S,S’].
69

2 4

1 5 7

3 6

Figura 3.7 Cortadura

3.20. Cortadura s-t

Una cortadura s-t está definida con respecto a dos nodos

distinguidos s y t, y es una cortadura [S,S’] que satisface la

propiedad de que s  S y t  S’.

3.21. Árbol

Un árbol es un grafo conectado que no contiene ciclos.


70

1 4 7

3 5 8

2 6

Figura 3.8 Árbol

3.21.1. Propiedades de un Árbol.

a) Un árbol de n nodos contiene exactamente n-1 arcos.

b) Un árbol contiene por lo menos dos nodos hojas, es decir con

grado 1.

c) Cada dos nodos de un árbol están conectados por una ruta

única.

5 1 4

6 2 3

Figura 3.9 Bosque


71

3.22. Bosque

Un bosque es un grafo que no contiene ciclos. De manera

alternativa un bosque es una colección de árboles.

3.23. Subárbol

Un subárbol es un subgrafo conectado de un árbol.

3.24. Árbol Enraizado

Es un árbol con un nodo especial, llamado raíz.

Consideraremos que el árbol está sostenido en dicho nodo. Los

arcos en un árbol definen una relación entre dos nodos, a la que

denominaremos relación predecesor-sucesor. A excepción del

nodo raíz, cada nodo i en el árbol posee un único predecesor, el

cual es el siguiente nodo en la única ruta existente entre el nodo

y la raíz.

Con la finalidad de almacenar el predecesor de cada nodo,

emplearemos el índice pred(i)=j, lo que quiere decir que j es el

predecesor del nodo i. Este índice nos permite trazar la ruta

entre los nodos y el nodo raíz.


72

Los descendientes de un nodo están conformados por sus

sucesores, los sucesores de sus sucesores y así

sucesivamente. Así mismo un nodo es el ancestro de todos sus

sucesores.

2 4 5

3 6 7

Figura 3.10 Árbol enraizado

3.25. Árboles Dirigidos hacia Afuera

Un árbol es un árbol dirigido hacia afuera en un nodo s, si la

única ruta en el árbol desde el nodo s hacia cada una de los

restantes nodos es una ruta dirigida. Cabe resaltar que cada

nodo, a excepción de la raíz, tiene grado interior igual a 1.


73

1 2

4 7

Figura 3.11 Árbol dirigido hacia afuera

3.26. Árboles Dirigidos hacia Adentro

Un árbol es un árbol dirigido hacia dentro en un nodo s, si la

única ruta desde un nodo cualquiera hacia el nodo s es una ruta

dirigida. Se observa que cada nodo, a excepción de la raíz,

tiene grado exterior igual a 1.

3.27. Árboles de Expansión

Un árbol T es un árbol de expansión de G si T es un subgrafo de

expansión. Cada árbol de expansión de un grafo conectado de

n nodos, tienen n-1 arcos.


74

2 4

1 5 7

3 6

Figura 3.12 Árbol de Expansión

3.28. Ciclos Fundamentales

Sea T un árbol de expansión del grafo G. Si se añade un arco

que no pertenezca a T se crea exactamente un ciclo. A dicho

ciclo se lo denomina ciclo fundamental de G respecto al árbol T.

Puesto que la red contiene m-n+1 arcos que no pertenecen a T,

tiene m-n+1 ciclos fundamentales. Se observa que si se elimina

algún arco en una ciclo fundamental, obtendremos un árbol de

expansión.

3.29. Cortaduras Fundamentales

Sea T un árbol de expansión del grafo G. La eliminación de

algún arco de un árbol de expansión produce un grafo


75

desconectado que contiene dos subárboles T 1 y T2. Los arcos

cuyos puntos de finalización pertenecen a diferentes subárboles

constituyen una cortadura. Nos referimos a tales cortaduras

como cortaduras fundamentales de G con respecto al árbol T.

Debido a que un árbol de expansión contiene n-1 arcos, la red

tiene n-1 cortaduras fundamentales con respecto a algún árbol.

Se observa que cuando añadimos un arco a la cortadura

fundamental a los dos subárboles T 1 y T2, obtenemos un árbol

de expansión.

3.30. Grafo Bipartido

Un grafo G=(N,A) es un grafo bipartito si podemos particionar su

conjunto de nodos en dos subconjuntos N 1 y N2 tal que para

cada arco (i, j ) en A:

i) i  N1 y j  N2 o

ii) i  N2 y j  N1

Un grafo G es bipartido si y solo sí cada ciclo en G contiene un

número igual de arcos.


76

Figura 3.13 Grafo Bipartido

3.31. Definiciones para Redes no dirigidas

Las definiciones para redes dirigidas se pueden trasladar hacia

las redes no dirigidas. Un arco no dirigido (i, j ) tiene dos

puntos de finalización i y j, pero la cabeza y la cola del arco no

están definidos.

Si la red contiene al arco (i, j ) , el nodo i es adyacente al nodo j

y el nodo j es adyacente al nodo i. Las listas de nodos y arcos

de adyacencia están definidas de manera similar, con la

diferencia de que el arco (i, j ) aparece en A(i) y también en

A(j). En consecuencia se tiene que  i N


A(i )  2m .
77

El grado de un nodo es el número de nodos adyacentes al nodo i.

Los demás conceptos como caminos, rutas, ciclos, cortaduras y

árboles tienen las mismas definiciones para redes no dirigidas,

pero no existen diferencias entre rutas y rutas dirigidas, ciclos y

ciclos dirigidos, y así sucesivamente.

3.32. Representaciones de Redes

La resolución de problemas de redes no solo depende de los

algoritmos empleados, sino también de la forma de representar

la red en la computadora y el esquema de almacenamiento

empleado para guardar y actualizar los resultados que se vayan

obteniendo.

En la representación de una red se necesitan dos clases de

información:

i) La topología de la red, es decir la estructura de los nodos y

arcos.

ii) Datos de interés como costos, capacidades, ofertas,

demandas asociadas con los nodos y los arcos.

A continuación se presentan algunas representaciones.


78

3.32.1. Matriz de Incidencia de Nodos y Arcos

Esta representación almacena la red como una matriz N de

nxm, que contiene una fila por cada nodo, y una columna por

cada arco. La columna correspondiente al arco (i, j ) tiene

solo dos elementos diferentes de cero, posee un +1 en la fila

correspondiente al nodo i y un –1 en la fila correspondiente al

nodo j.

Esta matriz tiene una estructura particular. De los mxn

elementos de la matriz solo 2m son diferentes de cero, las que

toman los valores de +1 y –1 en cada columna. El número de

elementos en la fila i-ésima iguales a +1 representa el grado

exterior del nodo i y el número de elementos en tal fila iguales a

–1 representa el grado interior del nodo i.

Debido a que la matriz de incidencia de nodos y arcos contiene

pocos elementos diferentes de cero en relación al número total

de elementos, esta representación origina algoritmos poco

eficientes.
79

3.32.2. Matriz de Adyacencia de Nodo a Nodo

Esta representación almacena la red como una matriz H={h ij}

de nxn. La matriz posee una fila y una columna por cada nodo

y la i-ésima entrada h ij es igual 1 si el arco (i, j ) pertenece al

conjunto A, y es igual a cero en otro caso. Si se pretende

almacenar los costos y las capacidades de los arcos se pueden

utilizar dos matrices adicionales de nxn , C y U.

De los n2 elementos que posee la matriz, solo m son diferentes

de cero, cuyo número se debe al número de arcos de la red.

Por lo tanto esta representación es eficiente si la red es

suficientemente densa, para redes esparcidas esta

representación desperdicia mucho espacio en la matriz.

La manipulación de esta matriz es muy fácil. Para determinar

el costo o la capacidad del arco (i, j ) basta con ubicar a los

elementos situados en la posición ij de las matrices C y U

respectivamente. Se puede conocer qué arcos emanan del

nodo i observando los elementos iguales a 1 en la fila i-ésima

de la matriz H. De manera análoga se pueden obtener los

arcos que llegan al nodo j examinando los elementos de la


80

columna j de la matriz H, si elemento de la fila i-ésima es igual

a 1, entonces el arco (i, j ) pertenece a la red.

El tiempo requerido para determinar los arcos que llegan y

salen de un nodo es proporcional a n. En conclusión para

redes densas se podría permitir emplear esta representación,

pero para redes dispersas contribuiría al mal desenvolvimiento

del algoritmo empleado.

3.32.3. Listas de Adyacencia

Anteriormente se definió a las listas de arcos de Adyacencia

A(i) como el conjunto de arcos que emanan del nodo i y las

listas de los nodos de adyacencia como el conjunto de nodos j

tal que el arco (i, j ) pertenezca al conjunto A.

Esta representación almacena la lista de adyacencia de cada

nodo en la estructura de datos llamada lista enlazada en una

dirección. Una lista enlazada es una colección de celdas,

donde cada celda puede contener uno o más campos.

La lista de adyacencia del nodo i será representada por una


81

lista enlazada en una dirección, la que tendrá un número de

celdas igual a la cardinalidad del conjunto A(i), y cada celda

corresponde a un arco (i, j ) perteneciente al conjunto A. El

número de campos de la celda que hace referencia al arco

(i , j ) , será consistente con la cantidad de información que se

desee almacenar. Un campo almacenará al nodo j y los demás

pueden ser utilizados para guardar el costo c ij , los límites de

flujo del arco l ij y u ij .

Además cada celda contendrá un campo adicional en el que

almacenará un puntero hacia la siguiente celda en la lista de

adyacencia. Es de interés almacenar n listas enlazadas, una

para cada nodo de la red. Para lo cual se definirá un arreglo de

punteros de dimensión n llamado donde cada elemento del

arreglo apuntará a la lista de adyacencia de cada nodo. En el

caso de que el nodo i no tenga una lista de adyacencia, en la

posición i-ésima del arreglo de punteros se guardará un valor

nulo.

En el caso de que tanto el arco (i, j ) como el arco ( j , i )

pertenezcan a la red y al modificar información del arco (i, j )

sea necesario modificar información del arco ( j , i ) , es


82

necesario poseer un mecanismo que nos permita efectuar esta

operación de una forma eficiente. Como ambos arcos están

presentes en la listas de adyacencia debemos hallar la forma

de cómo enlazar a ambos arcos.

Esto se logra definiendo un campo adicional en las celdas, al

que denotaremos como compañero, el que contendrá un

puntero. El campo compañero de la celda correspondiente al

arco (i, j ) apuntará a la celda correspondiente al arco ( j , i ) y

de esta forma se logra nuestro objetivo.

3.32.4. Representación en Estrella hacia delante y hacia atrás.

La representación en estrella hacia delante es similar a la

representación en listas de adyacencia en el sentido de que de

manera similar almacena la lista de adyacencia de cada nodo.

Pero en lugar de almacenar las listas de adyacencia de cada

nodo en listas enlazadas, las almacena en arreglos.

Para desarrollar esta representación se numeran los arcos en

un orden específico, primero los arcos que emanan del nodo 1,

luego los que emanan del nodo 2 y así sucesivamente. Los


83

arcos que emanan del mismo nodo serán numerados de forma

arbitraria.

Una vez numerados los arcos, almacenamos la información

relacionada en los arreglos. Se guardarán las cabezas, colas,

costos y capacidades de cada arco en los arreglos cabeza,

cola, costo y capacidad. Como ilustración se tiene que si se

desea almacenar el arco k-ésimo, su cabeza, cola, costo y

capacidad se guardarán en los arreglos mencionados en las

posiciones cabeza(k), cola(k), costo(k) y capacidad(k).

Además se definirá un puntero con cada nodo i denotado

puntero(i), el que señalará al arco con el menor número en la

lista de arcos que emanan del nodo i. En el caso de que del

nodo i no salgan arcos, a puntero(i) se le asignará el -valor

almacenado en puntero(i+1). Por lo tanto la representación en

estrella hacia delante almacenará los arcos que salen del nodo

i en las posiciones puntero(i) a (puntero(i+1)-1) en la lista de los

arcos. Si se da el caso del que para el nodo i se tiene que

puntero(i)> puntero(i+1)-1, entonces el nodo i no tiene arcos

que emanen de él. De acuerdo con esto se tendrá que

puntero(1)=1 y puntero(n+1)=m+1.
84

Esta representación provee un medio eficiente para determinar

el conjunto de nodos que emanan del nodo i. Pero para

determinar el conjunto de nodos que llegan al nodo i es

necesario definir una estructura adicional, llamada

representación en estrella hacia atrás.

A partir de la representación en estrella hacia delante se

examinan cada uno de los n nodos y se almacenan las

capacidades, cabezas, colas y costos los arcos que llegan a

cada nodo en los arreglos rcabeza, rcola, rcosto y rcapacidad.

Para cada nodo i, se definirá un puntero llamado rpuntero(i), el

que contendrá la posición de las información del primer arco

que llega al nodo i.

De manera igual al caso anterior, si no existen arcos que

lleguen al nodo i, se asignará a rpuntero(i) la posición contenida

en rpuntero(i+1). Así mismo se tendrá que rpuntero1)=1 y

rpuntero(n )=m. Como en el caso de la representación en

estrella hacia delante, la información de los arcos que llegan al

nodo i estará situada desde la posición rpuntero(i) hasta

(rpuntero(i+1)-1).
85

Se observa que al emplear la representación en estrella hacia

delante y hacia atrás, se produciría una duplicación de

información, ya que se tendrían ocho arreglos, uno para los

costos de los arcos en la representación hacia delante y un

segundo arreglo para la representación hacia atrás, un arreglo

para las capacidades en la representación hacia delante y otro

para la representación hacia atrás, y así sucesivamente.

Este problema se puede resolver empleando solo los arreglos

cabeza, cola, costo y capacidad, definiendo otro arreglo

llamado trazo. Y para cada nodo i se tiene que rpuntero(i)

contendrá proporcionará la ubicación en el arreglo trazo en la

que se almacena la posición del primer arco en los cuatro

arreglos mencionados, de todos los arcos que llegan al nodo i.

3.32.5. Representación de Redes No Dirigidas

Las estructuras mencionadas se pueden utilizar para represen-

tar este tipo de redes, pero se debe considerar que si el arco

(i , j ) pertenece a la red es necesario incluir a (i , j ) y a ( j , i )

en las estructuras.
86

3.33. Transformaciones de Redes

En ocasiones es necesario mostrar la equivalencia entre

diferentes problemas de flujo en redes o formular el problema de

tal forma que se lo pueda representar en algún código de

computadora. A continuación se presentan las transformaciones

para problemas de flujo de costo mínimo, las que también se

pueden aplicar a casos especiales de este problema tales como,

problema del camino más corto, flujo máximo y problemas de

asignación.

3.33.1. Arcos no Dirigidos a Arcos Dirigidos

Algunos problemas de flujo de costo mínimo contienen arcos

no dirigidos. Un arco (i, j ) de este tipo permite el flujo del

nodo i al nodo j y también del nodo j al nodo i. Por cada unidad

de flujo se incurre en un costo c ij y la cantidad total de flujo, es

decir desde el nodo i al nodo j más el flujo del nodo j al nodo i,

tiene un límite superior u ij . Por lo que el modelo de la red no

dirigida tiene la restricción: x ij  x ji  u ij y el término

c ij x ij  c ji x ji  u ij está presente en la función objetivo a

minimizar.
87

Debido a que c ij es mayor o igual a cero, se tiene que en

alguna solución óptima uno de los flujos, x ij y x ji tendrá un

valor de cero. Tales soluciones se denominarán no

traslapadas. Denotaremos a los arcos no dirigidos (i, j ) como

{i, j} .

Asumiremos que el flujo en los arcos en cada dirección del arco

{i, j} tiene como límite inferior el valor de cero. Esta

transformación no es válida si la cantidad mínima de flujo que

puede pasar por un arco es diferente de cero o si el costo

asociado al arco, c ij es negativo.

Con la finalidad de transformar una red no dirigida en una

dirigida, se reemplaza cada arco no dirigido {i, j} por dos

arcos dirigidos, (i, j ) y ( j , i ) , ambos con un costo c ij y una

capacidad u ij . Para establecer la exactitud de esta

transformación, se tiene que cada flujo no traslapado en la red

original tiene asociado un flujo en la red transformada con el

mismo costo y viceversa. Si el arco no dirigido {i, j} traslada α

unidades de flujo desde el nodo i al nodo j, en la red

transformada se da xij   y x ji  0 . Si el arco no dirigido


88

traslada α unidades de flujo del nodo j al nodo i, se tendría

xij  0 y x ji   . Inversamente, si x ij y x ji son los flujos de

los arcos (i,j) y ( j , i ) en la red dirigida, xij  x ji o x ji  xij es

el flujo asociado del arco {i, j} , será el que sea positivo. Si

xij  x ji es positivo, tal cantidad será el flujo del nodo i al nodo j

que pasa por el arco {i, j} . Caso contrario, si x ji  xij es

positivo, ésta será la cantidad de flujo desde el nodo j al nodo i

que se traslada por el arco {i, j} . En los dos casos anteriores

el flujo en la dirección opuesta es igual a cero. Si se da que

xij  x ji es igual a cero, entonces el flujo asociado al arco {i , j}

es igual a cero.

3.33.2. Removiendo Límites Inferiores de Flujo Diferentes de Cero

Si un arco (i, j ) tiene un límite inferior de capacidad de flujo

l ij diferente de cero, el flujo de tal arco x ij será reemplazado

por xij  lij . Por lo que la restricción de flujo: l ij  x ij  u ij se


'

convierte en:

l ij  x ' ij  l ij  u ij
89

0  x ' ij  u ij  l ij

Al llevar a cabo esta sustitución, en la restricción de balance, se

decrementa b(i ) en l ij unidades y se incrementa b( j ) en

l ij unidades. Esta sustitución altera a la función objetivo,

incluyendo un término constante que puede ser ignorado al

momento de resolver el problema. Este cambio se ilustra a

continuación

-función objetivo inicial:

Minimizar

c
( i , j )A
ij x ij

Función objetivo luego de la transfomación:

Minimizar

c
( i , j ) A
ij
x ' ij  c
( i , j ) A
l
ij ij

b(i) b(j) b(i)-l ij


b(j) + l ij

(C ij ,U ij )
(C ij ,U ij - l ij )
i j i j
X ij X' ij

Figura 3.14 Remoción de límites inferiores


90

3.33.3. Inversión de Arcos

Esta transformación es empleada para remover arcos con

costo negativo. Denotemos por u ij a la capacidad del arco

(i , j ) . La inversión de arcos reemplaza la variable x ij por

u ij  xij . Por lo que se reemplaza el arco (i , j ) , el cual tiene

un costo asociado c ij , por el arco ( j , i ) con un costo asociado

 cij .

En esta transformación se envían u ij unidades de flujo sobre el

arco, lo cual disminuye b(i ) en u ij unidades e incrementa

b( j ) por u ij unidades y se reemplaza el arco (i, j ) por el

arco ( j , i ) con costo  cij . El nuevo flujo x ji mide la cantidad

de flujo que removemos de la capacidad máxima de flujo de

u ij .

b(i) b(j) b(i)-Uij b(j) + U ij

(C ij ,U ij )
i j i j
X ij X ij

Figura 3.15 Inversión en Arcos


91

3.33.4. Removiendo las Capacidades de los Arcos

Si un arco (i, j ) tiene una capacidad positiva u ij , ésta se

puede remover creando arcos sin límite de capacidad. Esto se

logra introduciendo un nodo adicional, de modo que la

restricción de capacidad sobre el arco se convierta en la

restricción de balance de masa del nuevo nodo k.

sij  0
Introduzcamos una variable auxiliar , con la cual

convertimos a la restricción de capacidad del arco (i, j ) ,

xij  u ij , en la igualdad xij  sij  u ij . Luego multiplicamos a

ambos lados de la restricción por –1, por lo que nos queda:

 xij  sij  u ij
Esta ecuación pasa a ser la restricción de balance de masa de

un nodo adicional k. Se observa que la variable de flujo x ij

aparece en tres restricciones de balance de masa, la del nodo i,

del nodo j y en la del nuevo nodo k.

Si se resta la nueva restricción de la restricción de balance del

nodo j, en la que la variable de flujo x ij posee un signo

negativo, se logra que tanto x ij y sij aparezcan en solo dos


92

restricciones. En una con signo negativo y en otra con signo

positivo.

Al realizar esta operación, la restricción de balance del nodo j

tendría la siguiente forma:

x
l :( j , l ) A
jl  s ij  x
l :( l , j ) A
lj  b( j )  u ij

En donde la primera sumatoria del miembro izquierdo de la

restricción ya no contiene a x ij . Si x ij es el flujo del arco

(i , j ) en la red original, el flujo correspondiente en la red

transformada es xik  xij y x jk  uij  xij . Ambos flujos tienen el


' '

mismo costo. Además se tiene que xik  x jk  uij con xik y x jk


' ' ' '

no negativos, entonces xij  xik  u ij .


'
Por lo que el flujo x ij

satisface la restricción de capacidad del arco.

b(i) b(j) b(i) -U ij


(C ij ,U ij ) (C ij ,) (0 , )
8

i j i k j
X ij
X ij S ij

Figura 3.16 Remoción de capacidades de los


arcos
93

3.33.5. Subdivisión o fraccionamiento de nodos

En este proceso se divide a cada nodo i, en dos nodos i ’ e i’’

correspondientes a las funciones de entrada y de salida del

nodo. Cada arco (i, j ) es reemplazado por un arco (i , i )


' ''

con el mismo costo y capacidad. También se añade un arco

(i '' , i ' ) de costo asociado cero y con una capacidad infinita

para cada i.

El lado de ingreso al nodo i, es decir el nodo i ’’, recibe el flujo de

entrada de todos los nodos dirigidos hacia el nodo i. De forma

análoga el lado de salida del nodo i, es decir el nodo i ’, envía el

flujo de salida hacia todos los nodos a los que se dirigen los

arcos que emanan del nodo i.

La oferta y la demanda de los nodos en la red transformada se

enmarca dentro de los siguientes casos:

1.- Si b(i )  0 , entonces b(i )  b(i ) y b(i ' )  0


''

2.- Si b(i )  0 , entonces b(i ' ' )  0 y b(i )  b(i )


'

3.- Si b(i )  0 , entonces b(i )  b(i )  0


' ''
94

3.33.6. Costos Reducidos

Supongamos que con cada nodo i  N se asocia un número 


(i), al que se lo denomina el potencial de cada nodo. Con

respecto a los potenciales de cada nodo,  =(  (1), 

(2),... ,  (n) 
) se define el costo reducido c ij de un arco

como:

c ij  c ij   (i )   ( j )

En muchos algoritmos se trabaja con los costos reducidos en

lugar de los costos originales. Es de interés analizar la relación

entre las funciones objetivos:

z ( )   c x
( i , j ) A
ij ij

z (0)  c
( i , j ) A
ij
x ij

Para el nodo k asumamos un valor inicial de  =0 el que se

incrementará a  (k ) . De acuerdo a la definición de costo

reducido, este cambio implica una reducción del costo reducido


95

de cada unidad de flujo que sale del nodo k en  (k ) unidades

y un incremento del costo reducido por cada unidad de flujo

que ingresa al nodo k en  (k ) unidades. Por lo que el total

decrementado en la función objetivo es igual a  (k ) veces el

flujo de salida del nodo k menos el flujo de entrada al nodo k.

Debido a que la diferencia entre el flujo de salida del nodo k y el

flujo de entrada a dicho nodo está definida como b(k ) , y

repitiendo este razonamiento para cada nodo se cumple lo

siguiente:

z (0)  z ( )    (i )b(i )
i N

Para una función potencial dada esta diferencia es una

constante. En conclusión un flujo que minimice z (0) , también

minimizará z ( ) .

3.33.7. Redes Residuales

En el diseño, desarrollo e implementación de algoritmo de flujo

en redes es conveniente no medir el flujo en términos

absolutos, mas bien en términos de flujo incremental alrededor

de alguna solución factible dada. Esto nos conduce a la


96

definición de las redes residuales, que funcionan como redes

de flujo restante.

Existe una equivalencia entre la formulación de redes

residuales, en el sentido de que hay una correspondencia uno

a uno entre las soluciones factibles de los dos problemas.

0
Supongamos que el arco (i, j ) traslada x ij unidades de flujo.

Por lo que se pueden enviar u ij  x ij unidades adicionales de


0

flujo desde el nodo i al nodo j a lo largo del arco (i, j ) .

0
También se pueden enviar x ij unidades de flujo desde el nodo j

hasta el nodo i sobre el arco (i, j ) , tal cantidad cancela el flujo

existente sobre el arco. Se debe considerar que enviar unidad

de flujo del nodo i al nodo j sobre el arco (i, j ) incrementa el

costo en c ij unidades, así mismo el envío de flujo desde el

nodo j al nodo i decrementa el costo de flujo en c ij .

Para definir la red residual se reemplaza cada arco (i, j ) por

dos arcos (i, j ) y ( j , i ) . El arco (i, j ) tiene un costo c ij y

una capacidad residual rij  uij  xij y el arco ( j , i ) tiene un


0

costo  cij y una capacidad residual de rij  xij .


0
La red
97

residual la conforman solo los arcos con una capacidad

residual positiva. La red residual correspondiente al flujo x 0

será denotada por G(x0).

Existen dificultades con la notación de redes residuales. Para

algún par de nodos i-j, la red G contiene dos arcos (i, j ) y

( j , i ) . La red residual contendría dos arcos paralelos, desde el

nodo i al nodo j con costos y capacidades residuales diferentes.

Es posible superar esta dificultad asumiendo que para algún

par de nodos i y j, la red G no contiene a ambos arcos (i, j ) y

( j , i ) por lo que G no contendrá arcos paralelos.

Esta suposición notacional no provoca una pérdida de

generalidad por parte del modelo. Sin embargo no es

necesario llevar a cabo esta transformación porque existe una

forma de representar a una red con arcos paralelos.

o
(C ij , U ij -X ij )

(C ij ,U ij )

i j i j

o
(C ij ,X ij )

Figura 3.17 Construcción de una


Red Residual
98

A continuación se mostrará que cada flujo x en la red G

corresponde a un flujo x’ en la red residual G(x 0). El flujo x '  0

se define como sigue.

x ij'  x 'ji  x ij  x ij0

x ij' x 'ji  0

La última restricción indica que los dos flujos correspondientes

Si x ij  x ij , definiremos
0
no pueden ser positivos a la vez.

x ij'  ( x ij  x ij0 ) y x 0ji  0 . Se observa que si x ij  u ij , entonces

x ij'  u ij  x ij0  rij . '


Además x ij satisface las restricciones de

límite de flujo.

De forma similar, si x ij  x ij , definiremos x ji  ( x ij  x ij ) y x ij  0 .


0 ' 0 '

También se cumple que 0  x ji  x ij  r ji , de lo cual se concluye


' 0

'
que x ji también satisface las restricciones de límite de flujo.
99

Lo anterior indica que si x es un flujo factible en G, el flujo

correspondiente x ' es un flujo factible en G(x0).

Lo que falta es establecer una relación entre el costo del flujo s

en G y el costo correspondiente del flujo x ' en G(x0). Sea c '

el costo de los arcos en la red residual. Entonces para cada

arco (i, j ) perteneciente a A, c ij  c ij y c ji  c ij . Para un flujo


' '

x ij sobre el arco (i , j ) en la red original G, el costo del flujo

del par de arcos (i, j ) y ( j , i ) en la red residual G(x 0) es

c ij' x ij'  c 'ji x 'ji  c ij' ( x ij'  x 'ji )  c ij x ij  c ij0 .

Por lo que se tiene la igualdad.

c ' x '  cx  cx 0

De forma análoga si x ' es un flujo factible en la red residual

G(x0), la solución dada por x ij  ( x ij  x ji )  x ij es un flujo factible


' ' 0

en G. Además los costos de esos dos flujos están relacionados

por la igualdad:

cx  c ' x '  cx 0
100

También podría gustarte