Conceptos básicos de grafos y redes · Web viewCAPÍTULO 3 CONCEPTOS BÁSICOS DE GRAFOS Y REDES...

56
CAPÍTULO 3 3. CONCEPTOS BÁSICOS DE GRAFOS Y REDES 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. 60

Transcript of Conceptos básicos de grafos y redes · Web viewCAPÍTULO 3 CONCEPTOS BÁSICOS DE GRAFOS Y REDES...

Conceptos básicos de grafos y redes

60

CAPÍTULO 3

3. CONCEPTOS BÁSICOS DE GRAFOS Y REDES

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.

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.

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 o . Un grafo no dirigido permite el flujo en ambas direcciones, es decir desde el nodo i al nodo j o viceversa.

Colas y Cabezas

Un arco dirigido 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 emana del nodo i y termina en el nodo j. El arco es incidente a los nodos i y j.

El arco es un arco saliente del nodo i y un arco entrante al nodo j. Siempre que el arco pertenezca al conjunto A, diremos que el nodo j es adyacente al nodo i.

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.

Lista de Adyacencia

La lista de arcos de adyacencia A(i) de un nodo i es el conjunto de arcos que emanan del nodo i, esto es:

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

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.

Multiarcos

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

cola.

Lazos

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

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 1kr-1, se tiene

que:

ak= A o ak= A.

3.11. Camino Dirigido

Un camino dirigido es una versión orientada de un camino, en el sentido de que para dos nodos consecutivos ik e ik+1 en el camino, se tiene que A.

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 van hacia delante y los arcos que van hacia atrás. Un arco 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 o el arco . 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.

3.15. Ciclo Dirigido

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

3.16. Grafo Acíclico

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

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’].

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.

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.

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.

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.

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.

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.

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 desconectado que contiene dos subárboles T1 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 T1 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 N1 y N2 tal que para cada arco 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.

3.31. Definiciones para Redes no dirigidas

Las definiciones para redes dirigidas se pueden trasladar hacia las redes no dirigidas. Un arco no dirigido 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 , 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 aparece en A(i) y también en A(j). En consecuencia se tiene que .

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.

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 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.

3.32.2. Matriz de Adyacencia de Nodo a Nodo

Esta representación almacena la red como una matriz H={hij} de nxn. La matriz posee una fila y una columna por cada nodo y la i-ésima entrada hij es igual 1 si el arco 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 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 columna j de la matriz H, si elemento de la fila i-ésima es igual a 1, entonces el arco 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 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

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 perteneciente al conjunto A. El número de campos de la celda que hace referencia al arco , 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 , los límites de flujo del arco y .

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 como el arco pertenezcan a la red y al modificar información del arco sea necesario modificar información del arco , es 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 apuntará a la celda correspondiente al arco 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 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.

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).

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 pertenece a la red es necesario incluir a y a en las estructuras.

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 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 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 . Por lo que el modelo de la red no dirigida tiene la restricción: y el término está presente en la función objetivo a minimizar.

Debido a que es mayor o igual a cero, se tiene que en alguna solución óptima uno de los flujos, y tendrá un valor de cero. Tales soluciones se denominarán no traslapadas. Denotaremos a los arcos no dirigidos como .

Asumiremos que el flujo en los arcos en cada dirección del arco 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, es negativo.

Con la finalidad de transformar una red no dirigida en una dirigida, se reemplaza cada arco no dirigido por dos arcos dirigidos, y , ambos con un costo y una capacidad . 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 traslada α unidades de flujo desde el nodo i al nodo j, en la red transformada se da y . Si el arco no dirigido traslada α unidades de flujo del nodo j al nodo i, se tendría y . Inversamente, si y son los flujos de los arcos y en la red dirigida, o es el flujo asociado del arco , será el que sea positivo. Si es positivo, tal cantidad será el flujo del nodo i al nodo j que pasa por el arco . Caso contrario, si es positivo, ésta será la cantidad de flujo desde el nodo j al nodo i que se traslada por el arco . En los dos casos anteriores el flujo en la dirección opuesta es igual a cero. Si se da que es igual a cero, entonces el flujo asociado al arco es igual a cero.

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

Si un arco tiene un límite inferior de capacidad de flujo diferente de cero, el flujo de tal arco será reemplazado por . Por lo que la restricción de flujo: se convierte en:

o

Al llevar a cabo esta sustitución, en la restricción de balance, se decrementa en unidades y se incrementa en 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

Función objetivo luego de la transfomación:

Minimizar

3.33.3. Inversión de Arcos

Esta transformación es empleada para remover arcos con costo negativo. Denotemos por a la capacidad del arco . La inversión de arcos reemplaza la variable por . Por lo que se reemplaza el arco , el cual tiene un costo asociado , por el arco con un costo asociado .

En esta transformación se envían unidades de flujo sobre el arco, lo cual disminuye en unidades e incrementa por unidades y se reemplaza el arco por el arco con costo . El nuevo flujo mide la cantidad de flujo que removemos de la capacidad máxima de flujo de .

3.33.4. Removiendo las Capacidades de los Arcos

Si un arco tiene una capacidad positiva , é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.

Introduzcamos una variable auxiliar , con la cual convertimos a la restricción de capacidad del arco , , en la igualdad . Luego multiplicamos a ambos lados de la restricción por –1, por lo que nos queda:

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 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 posee un signo negativo, se logra que tanto y aparezcan en solo dos 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:

En donde la primera sumatoria del miembro izquierdo de la restricción ya no contiene a . Si es el flujo del arco en la red original, el flujo correspondiente en la red transformada es y . Ambos flujos tienen el mismo costo. Además se tiene que con y no negativos, entonces . Por lo que el flujo satisface la restricción de capacidad del arco.

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 es reemplazado por un arco con el mismo costo y capacidad. También se añade un arco 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 , entonces y

2.- Si , entonces y

3.- Si , entonces

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 de un arco como:

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:

y

Para el nodo k asumamos un valor inicial de =0 el que se incrementará a . De acuerdo a la definición de costo reducido, este cambio implica una reducción del costo reducido de cada unidad de flujo que sale del nodo k en unidades y un incremento del costo reducido por cada unidad de flujo que ingresa al nodo k en unidades. Por lo que el total decrementado en la función objetivo es igual a 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 , y repitiendo este razonamiento para cada nodo se cumple lo siguiente:

Para una función potencial dada esta diferencia es una constante. En conclusión un flujo que minimice , también minimizará .

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 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. Supongamos que el arco traslada unidades de flujo. Por lo que se pueden enviar unidades adicionales de flujo desde el nodo i al nodo j a lo largo del arco . También se pueden enviar unidades de flujo desde el nodo j hasta el nodo i sobre el arco , 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 incrementa el costo en unidades, así mismo el envío de flujo desde el nodo j al nodo i decrementa el costo de flujo en .

Para definir la red residual se reemplaza cada arco por dos arcos y . El arco tiene un costo y una capacidad residual y el arco tiene un costo y una capacidad residual de . La red residual la conforman solo los arcos con una capacidad residual positiva. La red residual correspondiente al flujo x0 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 y . 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 y 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.

A continuación se mostrará que cada flujo x en la red G corresponde a un flujo x’ en la red residual G(x0). El flujo se define como sigue.

y

La última restricción indica que los dos flujos correspondientes no pueden ser positivos a la vez. Si , definiremos y . Se observa que si , entonces . Además satisface las restricciones de límite de flujo.

De forma similar, si , definiremos y . También se cumple que , de lo cual se concluye que también satisface las restricciones de límite de flujo. Lo anterior indica que si es un flujo factible en G, el flujo correspondiente 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 en G(x0). Sea el costo de los arcos en la red residual. Entonces para cada arco perteneciente a A, y . Para un flujo sobre el arco en la red original G, el costo del flujo del par de arcos y en la red residual G(x0) es .

Por lo que se tiene la igualdad.

De forma análoga si es un flujo factible en la red residual G(x0), la solución dada por es un flujo factible en G. Además los costos de esos dos flujos están relacionados por la igualdad:

Figura 3.2 Grafo No Dirigido�

7�

1�

5�

4�

3�

2�

6�

)

,

(

i

j

ij

ji

ij

u

x

x

£

+

ij

ji

ji

ij

ij

u

x

c

x

c

£

+

)

,

(

j

i

ij

x

ji

x

}

,

{

j

i

)

,

(

i

j

a

=

ij

x

0

=

ji

x

)

,

(

i

j

0

=

ij

x

a

=

ji

x

ji

x

(i,j)

)

,

(

i

j

ji

ij

x

x

-

ij

ji

x

x

-

ij

ij

l

x

+

'

ij

ij

ij

u

x

l

£

£

ij

ij

ij

ij

u

l

x

l

£

+

£

'

ij

ij

ij

l

u

x

-

£

£

'

0

)

(

i

b

)

(

j

b

å

Î

A

j

i

ij

ij

x

c

)

,

(

Figura 3.14

Remoción de límites inferiores

i

j

(C

ij

, U

ij

)

b(i)

b(j)

X

ij

i

j

X'

ij

b(j) + l

ij

b(i)-l

ij

(C

ij

, U

ij

- l

ij

)

i�

j�

(Cij , Uij)�

Figura 3.14 Remoci�n de l�mites inferiores�

b(i)�

b(j)�

Xij�

i�

j�

(Cij , Uij - lij)�

X'ij�

b(i)-lij�

b(j) + lij�

å

å

Î

Î

+

A

j

i

ij

ij

A

j

i

ij

ij

l

c

x

c

)

,

(

)

,

(

'

ij

ij

x

u

-

)

,

(

i

j

ij

c

-

ij

c

-

ji

x

Figura 3.15

Inversión en Arcos

i

j

(C

ij

, U

ij

)

b(i)

b(j)

X

ij

i

j

X

ij

b(j) + U

ij

b(i)-Uij

(

)

{

}

N

j

A

j

i

i

A

Î

Î

=

:

,

)

(

i�

j�

(Cij , Uij)�

b(i)�

b(j)�

Xij�

i�

j�

Xij�

b(j) + Uij�

b(i)-Uij�

Figura 3.15 Inversi�n en Arcos�

0

³

ij

s

ij

ij

u

x

£

ij

ij

ij

u

s

x

=

+

ij

ij

ij

u

s

x

-

=

-

-

ij

s

ij

A

j

l

l

lj

A

l

j

l

ij

jl

u

j

b

x

s

x

+

=

-

+

å

å

Î

Î

)

(

)

,

(

:

)

,

(

:

(

)

{

}

A

j

i

N

j

i

A

Î

Î

=

,

:

)

(

ij

ik

x

x

=

'

ij

ij

jk

x

u

x

-

=

'

ij

jk

ik

u

x

x

=

+

'

'

'

ik

x

'

jk

x

ij

ik

ij

u

x

x

£

=

'

Figura 3.16

Remoción de capacidades de los

arcos

i

j

(C

ij

, U

ij

)

b(i)

b(j)

X

ij

i

j

k

S

ij

X

ij

b(i)

-U

ij

(C

ij

, )

8

(0

, )

8

i�

j�

(Cij , Uij)�

Figura 3.16 Remoci�n de capacidades de los arcos�

b(i)�

b(j)�

Xij�

i�

j�

k�

Sij�

Xij�

b(i)�

-Uij�

(Cij , )�

8�

(0 , )�

8�

)

,

(

'

'

'

i

i

Í

)

,

(

'

'

'

i

i

0

)

(

>

i

b

)

(

)

(

'

'

i

b

i

b

=

0

)

'

(

=

i

b

0

)

(

<

i

b

0

)

'

'

(

=

i

b

)

(

)

(

'

i

b

i

b

=

0

)

(

=

i

b

0

)

(

)

(

'

'

'

=

=

i

b

i

b

p

p

ij

c

)

(

)

(

j

i

c

c

ij

ij

p

p

p

+

-

=

å

Î

=

A

j

i

ij

ij

x

c

z

)

,

(

)

(

p

p

å

Î

=

A

j

i

ij

ij

x

c

z

)

,

(

)

0

(

)

(

k

p

)

(

k

b

£

å

Î

=

-

N

i

i

b

i

z

z

)

(

)

(

)

(

)

0

(

p

p

)

0

(

z

)

(

p

z

0

ij

x

0

ij

ij

x

u

-

0

ij

ij

ij

x

u

r

-

=

ij

c

-

0

ij

ij

x

r

=

)

,

(

1

k

k

i

i

+

i

j

i

j

Figura 3.17

Construcción de una

Red Residual

(C

ij

, U

ij

)

(C

ij

, U

ij

- X

ij

)

(C

ij

, X

ij

)

o

o

j�

i�

i�

j�

Figura 3.17 Construcci�n de una Red Residual�

(Cij , Uij)�

(Cij, Uij - Xij )�

(Cij , Xij)�

o�

o�

0

'

³

x

0

'

'

ij

ij

ji

ij

x

x

x

x

-

=

-

0

'

'

=

ji

ij

x

x

0

ij

ij

x

x

³

)

(

0

'

ij

ij

ij

x

x

x

-

=

0

0

=

ji

x

ij

ij

u

x

£

Î

ij

ij

ij

ij

r

x

u

x

=

-

£

0

'

'

ij

x

0

ij

ij

x

x

<

)

(

0

'

ij

ij

ji

x

x

x

-

=

0

'

=

ij

x

ji

ij

ji

r

x

x

=

£

£

0

'

0

'

ji

x

x

'

x

'

c

)

,

(

1

+

k

k

i

i

ij

ij

c

c

=

'

ij

ji

c

c

-

=

'

0

'

'

'

'

'

'

'

)

(

ij

ij

ij

ji

ij

ij

ji

ji

ij

ij

c

x

c

x

x

c

x

c

x

c

-

=

+

=

+

0

'

'

cx

cx

x

c

-

=

'

x

0

'

'

)

(

ij

ji

ij

ij

x

x

x

x

+

-

=

0

'

'

cx

x

c

cx

+

=

Figura 3.3

Camino No Dirigido

1

5

2

7

Figura 3.3 Camino No Dirigido�

1�

7�

5�

2�

Figura 3.4

Camino Dirigido

3

1

2

5

4

Figura 3.4 Camino Dirigido�

3�

1�

2�

5�

4�

)

,

(

1

r

i

i

)

,

(

1

i

i

r

Figura 3.5

Ciclo

3

2

5

Figura 3.5 Ciclo �

3�

2�

5�

Figura 3.6

Ciclo Dirigido

4

2

5

Figura 3.6 Ciclo Dirigido�

5�

4�

2�

Figura 3.7

Cortadura

1

6

5

4

3

2

7

Figura 3.7 Cortadura�

6�

1�

5�

4�

3�

2�

7�

Figura 3.8

Árbol

7

1

3

8

2

4

5

6

Figura 3.8 �rbol�

7�

1�

3�

6�

8�

2�

4�

5�

Figura 3.9

Bosque

6

1

5

3

4

2

Figura 3.9 Bosque�

3�

6�

4�

2�

1�

5�

Figura 3.10

Árbol enraizado

3

1

2

6

5

4

7

Figura 3.10 �rbol enraizado�

3�

1�

2�

6�

5�

4�

7�

Figura 3.11

Árbol dirigido hacia afuera

5

1

2

6

3

4

7

Figura 3.11 �rbol dirigido hacia afuera�

5�

1�

2�

6�

7�

3�

4�

Figura 3.12

Árbol de Expansión

1

6

7

5

4

2

3

6�

7�

5�

1�

4�

2�

3�

Figura 3.12 �rbol de Expansi�n�

Figura 3.1

Grafo Dirigido

7

1

5

4

3

2

6

Figura 3.13

Grafo Bipartido

5

2

3

4

1

5�

2�

3�

Figura 3.13 Grafo Bipartido�

4�

1�

m

i

A

N

i

2

)

(

=

å

Î

Figura 3.1 Grafo Dirigido�

7�

1�

5�

4�

3�

2�

6�

ij

c

ij

l

Figura 3.2

Grafo No Dirigido

7

1

5

4

3

2

6

ij

u