Está en la página 1de 34

Redes

Optimización de Redes

Los modelos de redes y su análisis tienen un gran campo de


aplicación en áreas como el análisis y diseño de sistemas de
riego, redes de computadoras, redes de cables de televisión,
sistemas de transporte, redes de comunicación de satélites y
terrestres. En el área de ingeniería industrial las redes se han
aplicado para resolver problemas industriales del tipo de
distribución de bienes, administración de proyectos,
reemplazo de equipos, control de costos, estudio de tráfico,
análisis de colas, balanceo de líneas, control de inventarios,
asignación de fuerza de trabajo, etc.

Las ventajas de utilizar redes para el análisis de sistemas


industriales son las siguientes:

1. Los modelos de redes representan con exactitud


muchos sistemas del mundo real.
2. Los modelos de redes, junto con los modelos de
simulación, son rápidamente aceptados por gente sin
conocimientos analíticos ya que son más fáciles de
entender. Hay que recordar que “una imagen vale más
que mil palabras.”
3. Los algoritmos de redes proveen de soluciones
extremadamente eficientes para resolver modelos a gran
escala.

1
Redes

Definiciones, notación y representación de redes

Una red consiste de un conjunto de nodos y arcos que


conectan a los nodos. A los nodos también se les llama
vértices o puntos. A los arcos también se les llama ligas,
líneas o ramas.

Una red se representa mediante la notación R=(N,A), en la


cual N es el conjunto de nodos y A es el conjunto de arcos en
la red R.

Los nodos de una red pueden representar intersecciones de


autopistas, estaciones eléctricas, estaciones de trenes,
terminales de aviones o autobuses, reservas de agua,
computadoras, ocurrencias en el tiempo bien definidas, etc.
En general, un nodo puede representar un punto en el cual
algún tipo de flujo se origina, se transmite o se termina.

Los arcos o ramas de la red pueden representar caminos,


cables de teléfono o de electricidad, rutas de aviones, canales
por los que fluye el agua, etc. En general, las ramas
representan canales a través de los cuales fluyen entidades.

Para representar redes gráficamente, se usan círculos para


modelar los nodos, líneas para los arcos y cabezas de
flechas para indicar la orientación de los arcos. También se
usa la notación (i,j) para indicar que la dirección del flujo de
entidades es del nodo i al nodo j. El nodo origen o fuente es
cualquier nodo que sólo origina flujo de entidades y el nodo
terminal es cualquier nodo que únicamente termina el flujo de
entidades.

i j

2
Redes

El problema de la ruta más corta

En el campo del diseño y análisis en ingeniería, existen


muchas aplicaciones de problemas que pueden formularse
como el Problema de la Ruta más Corta, el cual se explica de
la siguiente forma: Dado un conjunto de nodos y arcos, los
cuales tienen un costo asociado a cada arco cij, el cual mide
el costo, tiempo o distancia de enviar una unidad de flujo a lo
largo del arco (i,j), encuentre la trayectoria del nodo origen al
nodo terminal que minimiza el costo o tiempo de enviar una
unidad de flujo del nodo origen al nodo terminal. Este
problema se resuelve aplicando el algoritmo de Dijkstra.

El algoritmo de Dijkstra

El algoritmo de Dijkstra encuentra la ruta o trayectoria del


nodo origen al nodo terminal que minimiza el costo, tiempo o
distancia total de enviar una cantidad dada de flujo de
entidades a lo largo de la trayectoria. Con cada arco (i,j) se
asocia un costo cij, el cual representa el costo, tiempo o
distancia entre el nodo i y el nodo j. Los arcos “libres”, sin
costo, tendrán un costo cij=0. Los arcos “imposibles” se les
asignará un costo cij=.

El algoritmo de Dijkstra asigna a todos los nodos una etiqueta


la cual puede ser temporal o permanente. Inicialmente, todos
los nodos, a excepción del nodo origen, reciben una etiqueta
temporal la cual representa la distancia directa entre el nodo
origen y ese nodo. Al nodo origen se le asigna una etiqueta
permanente cero. Cualquier nodo que no se pueda alcanzar
directamente desde el nodo origen se le asigna
temporalmente una etiqueta , mientras que a los otros
nodos se les asigna etiquetas temporales cij. Cuando se
determina que un nodo debe pertenecer a la ruta mínima, su
etiqueta cambia de ser temporal a ser permanente.
3
Redes

El procedimiento iterativo del algoritmo de Dijkstra

Para cualquier nodo j, el símbolo dj se usará para representar


un estimado de la longitud de la ruta más corta desde el nodo
origen hasta el nodo j. Cuando este estimado no puede
mejorarse, se le asignará una etiqueta permanente.
Inicialmente, sólo el nodo origen tiene una etiqueta
permanente. Todos los otros nodos tienen etiquetas
temporales que muestran la distancia directa desde el nodo
origen hasta el nodo correspondiente. Para identificar al nodo
más cercano, se selecciona a la etiqueta temporal más
pequeña y se le declara permanente. A partir de este punto,
el algoritmo se cicla en dos fases hasta que el nodo terminal
se le asigna una etiqueta permanente.

1. Analice los nodos restantes con etiquetas temporales.


Compare cada etiqueta temporal ya asignada con la
suma de la última etiqueta permanente y la distancia
directa desde el nodo con la etiqueta permanente al
nodo en consideración. El mínimo de estas dos
distancias se define como la nueva etiqueta temporal
para ese nodo.
2. Seleccione la etiqueta temporal mínima y declárela
permanente. Si al nodo terminal se le asigna una
etiqueta permanente, se termina la aplicación del
algoritmo. De otra forma, regrese al paso 1.

Este procedimiento iterativo puede realizarse usando una


tabla de decisión en la cual las columnas representan los
nodos de la red, los renglones los pasos del proceso iterativo,
y las entradas de la tabla las etiquetas permanentes y
temporales. Una etiqueta permanente se representará con un
cuadrado. Una etiqueta temporal no llevará el cuadrado.

4
Redes

Ejemplo 1:
Se tiene una planta de electricidad privada llamada PowerCo,
la cual tiene que enviar la energía eléctrica de la planta 1 a la
ciudad 1, pasando por algunas subestaciones (nodos
2,3,4,5). Los números que acompañan a los arcos
representan la distancia en miles de metros entre nodos. La
PowerCo desea encontrar la ruta más corta para enviar la
electricidad. Aplique el algoritmo de Dijkstra para tomar la
mejor decisión.

5
Redes

3
2 4

4 2

1
2 6

Planta 1 Ciudad 1
3 2
3
3 5
Subestaciones

Tabla de decisión para aplicar el algoritmo de Dijkstra


Nodo 1 2 3 4 5 6 Etiqueta
Paso (P/T)
0 0 P
1 0 4 3 T
2 0 4 3 P
3 0 4 3 6 T
4 0 4 3 6 P
5 0 4 3 7 6 T
6 0 4 3 7 6 P
7 0 4 3 7 6 8 T
8 0 4 3 7 6 8 P
9 0 4 3 7 6 8 T
10 0 4 3 7 6 8 P

6
Redes

Encontrando la ruta más corta a partir de la tabla de


decisión

Para encontrar la ruta más corta se identifican los arcos en


los cuales la diferencia de las etiquetas permanentes de dos
nodos conectados directamente es exactamente igual a la
longitud del arco que conecta a los dos nodos. En símbolos,
si di y dj son etiquetas permanentes para los nodos i y j,
respectivamente, la condición para que estos nodos se
encuentren en la ruta más corta se escribe como:

dj=di+cij

Para encontrar la ruta más corta inicie en el nodo terminal t y


trabaje hacia atrás hasta llegar al nodo origen. Una vez que
se identifica al nodo que conecta al nodo t y que pertenece a
la ruta más corta, se repite el procedimiento para identificar al
próximo nodo. Este procedimiento se termina cuando se
alcanza el nodo origen.

Solución al ejemplo 1:

7
Redes

Ejemplo 2:
Aplique el algoritmo de Dijkstra para encontrar la ruta más
corta de la ciudad origen (o) a la ciudad terminal (t). Los
números en cada arco indican las horas para transportarse.
1
2 6
3 2
1 5
0 1 2 4 3
O 1

7 2 1
3 1 5 0 t
4

Nodo O 1 2 3 4 5 6 t Etiq.
Paso (P/T)
0 0 P
1 0 0 T
2 0 0 P
3 0 0 3 7 T
4 0 0 3 P
5 0 0 3 5 4 T
6 0 0 3 5 4 P
7 0 0 3 5 6 4 T
8 0 0 3 5 6 4 P
9 0 0 3 5 6 9 4 T
10 0 0 3 5 6 9 4 P
11 0 0 3 5 6 7 4 T
12 0 0 3 5 6 7 4 P
13 0 0 3 5 6 7 4 7 T
14 0 0 3 5 6 7 4 7 P

8
Redes

Encontrando la ruta más corta para el ejemplo 2 a partir de la


tabla de decisión:

9
Redes

Ejemplo 3:
Aplique el algoritmo de Dijkstra para encontrar la ruta más
corta de la ciudad origen (1) a la ciudad terminal (7). Los
números en cada arco indican los kilómetros necesarios para
transportarse.
7
2 4
8 15 9 8
4 6
1 7
10 11 3
4
3 5

Tabla de decisión
Nodo 1 2 3 4 5 6 7 Et.
Paso (P/T)
0 0 P
1 0 8 10 T
2 0 8 10 P
3 0 8 10 15 23 T
4 0 8 10 15 23 P
5 0 8 10 15 23 T
6 0 8 10 15 23 P
7 0 8 10 15 21 23

Ruta más corta:

Problema del árbol de mínima expansión


10
Redes

Suponga que cada arco (i,j) en una red tiene una longitud
asociada con él. Por ejemplo, si cada nodo de una red
representa una computadora en State University, un arco (i,j)
puede representar un cable enterrado que conecta la
computadora i con la computadora j. En muchas aplicaciones,
se desea determinar el conjunto de arcos en una red que
conectan todos los nodos tales que la suma de la longitud de
los arcos es minimizada. Un grupo así de arcos no debe
contener un ciclo (trayectoria cerrada). Por ejemplo, la
secuencia de arcos (1,2)-(2,3)-(3,1) es un ciclo.

12
1 2

4 7

Definición del árbol de expansión: Para una red con n


nodos, un árbol de expansión es un grupo de n-1 arcos que
conectan a todos los nodos de la red y que no contienen
ciclos. En la figura anterior formada por los nodos 1,2,3
existen tres árboles de expansión:

1. Los arcos (1,2) y (2,3).


2. Los arcos (1,2) y (1,3).
3. Los arcos (1,3) y (2,3).

Un árbol de expansión con longitud mínima en una red es un


árbol de mínima expansión.
En la figura anterior, de los tres árboles de expansión que se
tienen, sólo se tiene un árbol de mínima expansión, el cual es
el árbol 3 que está formado por los arcos (1,3) y (2,3).
11
Redes

Algoritmo para encontrar el árbol de mínima expansión

1. Inicie en cualquier nodo i. Conecte el nodo i con el nodo


más cercano al nodo i, el cual se le llamará el nodo j.
Los dos nodos, i y j, forman un conjunto de nodos C(i,j),
y el arco (i,j) estará en el árbol de mínima expansión.
Los nodos restantes en la red (llamados C’) serán el
conjunto de nodos no conectados.

C = {conjunto de nodos conectados}


C’ = {conjunto de nodos no conectados}

2. Escoja un nodo miembro de C’ (llámelo n) que es el más


cercano a algún nodo de C. Sea m el nodo en C que es
el más cercano a n. Entonces el arco (m,n) será parte
del árbol de mínima expansión. Actualice C y C’. Dado
que n está ahora conectado a (i,j), C incluye a {i,j,n} y se
tiene que eliminar al nodo n de C’.
3. Repita este procedimiento hasta que encuentre el árbol
de mínima expansión. Los empates entre nodos y arcos
más cercanos se rompen arbitrariamente.

Ejemplo 4:
State University tiene cinco minicomputadoras en su
departamento de admisiones. La distancia entre cada par de
12
Redes

computadoras se muestra en la siguiente figura. Las


computadoras se conectarán mediante un cable subterráneo.
¿Cuál es la longitud mínima de cable requerido? Note que si
un arco no conecta a dos nodos significa que debajo del
suelo existen formaciones rocosas que impiden la conexión.
Aplique el algoritmo para encontrar el árbol de mínima
expansión.

1
1 2

4 2
2 3

6 5 3
2
4
5
4

Solución:

1.
13
Redes

2.

3.

14
Redes

4.

Longitud del árbol de mínima expansión:


Ejemplo 5:
La distancia en millas entre los pueblos de Gary, Fort Wayne,
Evansville, Terre Haute y South Bend se muestra en la
15
Redes

siguiente tabla. Es necesario construir un sistema de


carreteras rurales que conecten a estos pueblos. Debido a
restricciones políticas no se puede construir un camino que
conecte a Gary con Fort Wayne, ni tampoco se puede
conectar South Bend y Evansville. ¿Cuál es la longitud
mínima en millas que se requiere para construir este sistema
de carreteras rurales?

Distancia en millas entre varios pueblos


Gary Fort Evansvill Terre South
Wayne e Haute Bend
Gary - 132 217 164 58
Fort 132 - 290 201 79
Wayne
Evansvill 217 290 - 113 303
e
Terre 164 201 113 - 196
Haute
South 58 79 303 196 -
Bend

Solución:

16
Redes

1.

2.

17
Redes

3.

4.

18
Redes

Longitud árbol de mínima expansión:

Ejemplo 6:

19
Redes

La ciudad de Smalltown consiste de cinco subdivisiones. La


compañía de teléfonos desea instalar líneas telefónicas para
asegurarse que todas las subdivisiones pueden comunicarse
una con otra. Las distancias en millas entre las subdivisiones
se muestran en la siguiente figura. ¿Cuál es la cantidad
mínima de cable telefónico que se requiere? Asuma que
debido a razones de la naturaleza no es posible construir una
línea directa entre la subdivisión 1 y la 4.

5
1 2

3 5

5
3 7
3 4
7
5 5 4

1.

20
Redes

2.

3.
21
Redes

4.

Longitud del árbol de mínima expansión:


El problema del flujo máximo

22
Redes

El problema del flujo máximo se describe como aquél que


encuentra el flujo a través de los arcos de una red el cual
resultará en el flujo máximo enviado desde el nodo origen “O”
hasta el nodo terminal “t”. Se asume que existe una cantidad
infinita de flujo disponible en el nodo origen. Se define la
capacidad de un arco como Uij la cual representa el límite
superior de flujo fij a lo largo de ese arco.

El algoritmo del flujo máximo etiqueta cada nodo lo cual


indica tanto la cantidad de flujo que es enviado así como el
origen del flujo, el cual causa un cambio en la cantidad actual
de flujo en el arco entre el nodo origen de envío y el nodo
actual.

Si un envío de qj unidades de flujo se envía del nodo i al nodo


j y causa un incremento en el flujo del arco, se dice que el
nodo j se etiqueta desde el nodo i en +qj. En este caso, la
etiqueta [+qj,i] se asigna al nodo j. Similarmente, si el envío
causa una reducción en el flujo del arco, se etiqueta el nodo j
desde el nodo i por –qj. En este caso, la etiqueta [-qj,i] se
asigna al nodo j.

El flujo actual del nodo i al nodo j se incrementa cuando un


flujo de qj unidades se envía al nodo j a través de un arco
directo (i,j), el cual es enviado en la dirección de su
orientación. En este caso, el arco (i,j) se le dice que es un
arco hacia adelante. Esta situación se ilustra en la siguiente
figura:

i j [+q j,i]
qj

El flujo actual del nodo j al nodo i se decrementa cuando un


flujo de qj unidades se envía al nodo j a través de un arco
23
Redes

directo (j,i), el cual es enviado en la dirección opuesta de su


orientación. En este caso, el arco (i,j) se le dice que es un
arco invertido. Esta situación se ilustra en la siguiente figura:

i j [-q j,i]
qj

El flujo de un arco hacia adelante se puede incrementar


siempre y cuando no se exceda su capacidad Uij. El flujo de
un arco invertido puede decrementarse siempre y cuando no
se vuelva negativo.

Procedimiento para etiquetar nodos


en el problema de flujo máximo
24
Redes

Sea (i,j) un arco directo desde el nodo i hasta el nodo j. ¿Bajo


qué circunstancias el flujo a lo largo de este arco puede
incrementarse? Suponga que existe un flujo fij>=0 ya
asignado a un arco, tal que fij<=Uij. Obviamente, el incremento
qj no puede ser mayor a Uij-fij. ¿Es esto suficiente para
etiquetar al nodo j? La respuesta es no, porque es posible no
conseguir exactamente la cantidad de Uij-fij unidades de flujo
desde el nodo i. Note que la cantidad máxima que podemos
enviar al nodo j depende de la cantidad excedente que supla
el nodo i, es decir, a lo más qi. Por lo que la cantidad máxima
de flujo que se puede enviar por el arco (i,j) es:

qj=min[qi, Uij-fij]

La misma lógica se aplica para etiquetar al nodo j si el arco


(j,i) es un arco invertido. En este caso se pregunta si un
decremento en el flujo a lo largo del arco (j,i) es posible.
Evidentemente, será posible sólo si fji>0. Pero, ¿qué tanto se
puede decrementar el flujo? Se puede decrementar el flujo a
lo más por la cantidad que puede sacarse del nodo i, esto es,
qi. Por lo que se tiene:

qj=min[qi, fji]

Algoritmo para el problema del flujo máximo


25
Redes

Inicialmente, se etiqueta el nodo origen con [infinito,-], lo cual


indica que existe una cantidad infinita de flujo disponible.
Ahora se busca una trayectoria desde el nodo origen hasta el
nodo terminal a través de los nodos etiquetados. Todos los
otros nodos inicialmente no tienen etiquetas. Avanzamos a
través de los arcos hacia adelante y retrocedemos a través de
los arcos invertidos, etiquetando nodos a medida que nos
vamos moviendo, buscando alcanzar el nodo terminal. Uno
de los dos siguientes eventos ocurrirá:

1. El nodo terminal t es etiquetado [+qt,k]. Entonces, una


trayectoria se ha encontrado y el flujo en cada arco a lo
largo de esta trayectoria puede ser incrementado, o
decrementado, por una cantidad qt. Después de que el
flujo ha sido cambiado, las etiquetas actuales se borran,
y el procedimiento completo se repite.

2. El nodo terminal t no puede ser etiquetado. Esto implica


que no se ha encontrado una trayectoria posible.
Entonces, el valor del flujo actual representa el máximo
flujo posible optimizado.

Ejemplo 7:

26
Redes

Se necesita encontrar el flujo máximo que puede enviarse


desde el nodo origen s hasta el nodo terminal t. A cada arco
(i,j) se le asigna una etiqueta [fij,Uij] la cual significa:

Arco: (i,j)
Etiqueta: [fij,Uij]
fij=valor actual del flujo del arco
Uij=Capacidad (upper limit=límite superior) del arco

Inicialmente todos los flujos fij se inicializan con cero. En cada


iteración, el algoritmo trata de etiquetar el nodo terminal t.

[0,4]
1 2
[0,2] [0,2]
[0,3] [0,3]
s t
[0,1] Flujo=0

[0,1] [0,2]

1.

27
Redes

2.

3.

28
Redes

4.

5.

29
Redes

Ejemplo 8:

30
Redes

Se necesita encontrar el flujo máximo que puede enviarse


desde el nodo origen 1 hasta el nodo terminal 8. A cada arco
(i,j) se le asigna una etiqueta [fij,Uij] la cual significa:

Arco: (i,j)
Etiqueta: [fij,Uij]
fij=valor actual del flujo del arco
Uij=Capacidad (upper limit=límite superior) del arco

[0,5]
2 [0,5]
5
[0,6]
[0,15] [0,5]
[0,10]

1 [0,10] 3 [0,6] 6 8
[0,15]
Flujo=0
[0,12]
[0,15]
[0,12] [0,6]
4 7

1.

31
Redes

2.

3.

32
Redes

4.

5.

33
Redes

6.

34

También podría gustarte