Está en la página 1de 49

EL PROBLEMA DEL ARBOL DE EXPANSIÓN MÍNIMA

EL PROBLEMA DE LA RUTA MÁS CORTA


EL PROBLEMA DE FLUJO MÁXIMO
EL PROBLEMA DE FLUJO A COSTO MÍNIMO

Investigación de Operaciones II
Ing. César Aldo Canelo Sotelo
ÁRBOLES

DEFINICIÓN
Un árbol es una colección de elementos
llamados nodos, uno de los cuales se
distingue como raíz, junto con una relación
de paternidad que impone una estructura
jerárquica sobre los nodos.
ÁRBOLES

Un árbol se puede definir de manera recursiva


como sigue:
1. Un nodo es, por sí mismo, un árbol. Ese nodo es
también la raíz de dicho árbol.
2. Supóngase que n es un nodo y que A1, A2, … , Ak
son árboles con raíces n1, n2, … , nk,
respectivamente. Se puede construir un nuevo árbol
haciendo que n se constituya en el padre de los nodos
n1, n2, … , nk. En dicho árbol, n es la raíz y A1, A2,
… , Ak son los subárboles de la raíz. Los nodos n1,
n2, … , nk reciben el nombre de hijos del nodo n.
Definiciones
Grafo conexo
Un grafo es conexo si todos sus pares de vértices
están conectados.
Ciclo simple de un grafo
Es un camino simple de longitud mayor o igual a
tres, que conecta un vértice consigo mismo.
Grafo cíclico
Es un grafo que contiene por lo menos un ciclo. Un
grafo conexo acíclico se conoce como árbol libre.
ÁRBOL MÁXIMO DE EXPANSIÓN MINIMA

• Supóngase que G=(V, A) es un grafo en


donde cada arista (u, v) de A tiene un
costo asociado C(u, v).
• Un árbol máximo de expansión mínima
para G es un árbol libre que conecta
todos los vértices de V; su costo es la
suma de los costos de las aristas del
árbol.
ÁRBOL MÁXIMO DE EXPANSIÓN MINIMA

• Una aplicación típica de los árboles de


expansión mínima tiene lugar en el diseño de
redes de comunicación. Los vértices del grafo
representan ciudades, y las aristas, las
posibles líneas de comunicación entre ellas. El
costo asociado a una arista representa el costo
de seleccionar esa línea para la red. Un árbol
de expansión de costo mínimo representa una
red que comunica a todas las ciudades a un
costo mínimo.
EL PROBLEMA DEL ÁRBOL DE EXPANSIÓN MÍNIMA

• Este problema trata de encontrar un árbol que


conecte o comunique a todos los nodos de una red,
con una longitud total mínima de conexión.
• El problema de Árbol de Expansión Mínima consiste
en determinar el conjunto de aristas de una red que
conecta todos los nodos, tal que se minimiza la
suma de la longitud de las aristas. Es evidente que
este conjunto de aristas no debe contener ciclos.
• Este problema también se conoce como el
“Problema de Árbol Mínimo de Máximo Alcance”.
EL PROBLEMA DEL ÁRBOL DE EXPANSIÓN MÍNIMA

DEFINICIÓN
Para una red con n nodos, un árbol de
expansión es un conjunto de n-1 aristas
que conectan los nodos de la red y no
contiene ciclos.
Un árbol de expansión de longitud mínima
en una red es un Árbol de Expansión
Mínima.
EL PROBLEMA DEL ÁRBOL DE EXPANSIÓN
MÍNIMA
12
1 2

4 7

(1,2)-(2,3)-(3,1) es un ciclo.
(1,3)-(1,2) es un árbol de expansión.
(1,2)-(2,3) es un árbol de expansión.
(1,3)-(3,2) es el árbol de expansión mínima.
EL ALGORITMO DE PRIM
Definir:
N={1, 2, … , n} es el conjunto de nodos de la red.
Uk=Conjunto de nodos que se han conectados
permanentemente en la iteración k.
Vk=Conjunto de nodos que todavía no se han conectado
permanentemente.
1) Establecer Uo = Φ y Vo = N.
2) Elegir cualquier nodo i, en el conjunto no conectado Vo y
establecer U1={i}, lo que automaticamente da V1=N-{i}. Hacer k=2.
3) Identificar la arista de menor costo y seleccionar un nodo j, en el
conjunto no conectado Vk-1. Unir permanentemente j con Uk-1 y
eliminarlo de Vk-1.
Si el conjunto de nodos no conectados Vk está vacío, detenerse.
De lo contrario, establecer k=k+1 y repetir este paso.
EJEMPLO

El campus de una universidad tiene 5


microcomputadoras. La distancia entre
cada par de computadoras (en 100 mts)
se indica en la figura. Las computadoras
deben estar interconectadas mediante un
cable subterráneo.
Determine cómo deben conectarse las
computadoras para que la longitud total
de cable requerido sea mínimo.
1 1 2 Conjunto de Longitud Par de
Iteración nodos de la nodos
4 2 conectados arista conectados
3
2 1ra {5} -- --
2da {5, 2} 2 5–2
2 3ra {5, 2, 1} 1 2–1
6 5 3 4ta {5, 2, 1, 3} 2 5–3
5ta {5, 2, 1, 3, 4} 4 5–4

5
4
Σ=9

Las aristas (1, 2), (2, 5), (5, 3) y (5, 4)


forman el árbol de expansión mínima
EL PROBLEMA DE LA RUTA MÁS CORTA
• Este problema trata de encontrar la ruta más corta
(trayectoria de longitud mínima) de un nodo origen a
cualquier otro nodo de la red.
• Sea el grafo G=(X, A), en el cual cada arco tiene una
etiqueta no negativa, y donde un nodo se especifica
como origen. El problema es determinar el costo del
camino más corto desde el origen a todos los demás
nodos de X, donde la longitud de un camino es la
suma de los costos de los arcos del camino.
• La etiqueta de un camino puede indicar un costo,
tiempo, distancia o algún recurso que tiene un valor.
EL PROBLEMA DE LA RUTA MÁS CORTA

Si Cij >= 0 es el costo unitario del arco Aij


que va del nodo i al nodo j, entonces, Cij
no satisface la propiedad geométrica:

“La distancia más corta y por ende más


económica entre dos puntos, es la que
emplea la recta que une a esos dos
puntos”.
EL PROBLEMA DE LA RUTA MÁS CORTA
En la siguiente figura se tiene que no se cumple necesariamente la
siguiente desigualdad:
Cij + Cjk >= Cik (1)

i Cik k

Cij Cjk
j

En una red se puede cumplir cualquiera de las siguientes relaciones:

Cik >= Cij + Cjk o bien Cik <= Cij + Cjk (2)

Si se cumpliera siempre la desigualdad (1), entonces los problemas de redes ya


tendrían soluciones, pero ese no es el caso en la redes de optimización.
ALGORITMO DE DIJKSTRA
• Es un algoritmo ávido que opera a partir de un conjunto S de
nodos, cuya distancia más corta desde el origen ya es
conocida.
• En principio, S contiene sólo el nodo origen.
• En cada iteración, se agrega algún nodo restante de X a S,
cuya distancia desde el origen es la más corta posible.
• Suponiendo que todos los arcos tienen costo no negativo,
siempre es posible encontrar un camino más corto entre el
origen y el nodo de X que pasa solo a través de los nodos de
S.
• En cada iteración, se utiliza un arreglo D[ ] para registrar la
longitud del camino más corto a cada nodo.
• Una vez que S incluya a todos los nodos, D[ ] contendrá la
distancia más corta del origen a cada nodo.
PROBLEMA
En la siguiente red, encontrar los caminos más cortos desde el nodo 1 a
todos los demás nodos de la red.

1
10 100

2 5
30

50
10 60

20
3 4
Iteración S j D[2] D[3] D[4] D[5]
1ra {1} -- 10 ∞ 30 100
2da {1, 2} 2 -- 60 30 100
1 3ra {1, 2, 4} 4 -- 50 -- 90
10 100 4ta {1,2,4,3} 3 -- -- -- 60
5ta {1,2,4,3,5} 5 -- -- -- --
30
2 5

50 10 60

20 1
3 4 10
30
2 5

Caminos más cortos desde el 10


nodo 1 a cada uno de los
3 20 4
demás nodos de la red.
EL PROBLEMA DE REEMPLAZO
• Este problema consiste en determinar una política óptima de
reemplazo de una maquina o equipo para un período de tiempo.
• El período de tiempo se puede dividir en unidades de tiempo, y para
cada unidad de tiempo se debe determinar si la máquina es
reemplazada por otra nueva o se continúa con la misma máquina.
• Con todas las alternativas de reemplazo que hay entre las unidades
de tiempo contenidas dentro del período de reemplazo, se puede
modelar una red, en donde los nodos indican el inicio o fin de una
unidad de tiempo, y los arcos indican el transcurrir de una unidad de
tiempo.
• En cada arco (i, j) se determina el costo que significa comprar una
máquina a inicio de la unidad de tiempo i y operarlo hasta el fin de la
unidad de tiempo i (equivalente al inicio de la unidad de tiempo j).
• El problema se reduce a un problema de la ruta más corta, pues se
trata de hallar la ruta de costo mínimo entre el inicio y el fin del período
de reemplazo. Se aplica el algoritmo de Dijkstra.
EL PROBLEMA DE REEMPLAZO
C0,n

C2,n
C0,2 C1,n-1

0 C0,1 1 C1,2 2 . . . n-1 Cn-1,n n

C0,n-1
C1,n
PROBLEMA
Se compra una máquina en el año 1 y se
planea una política de reemplazo para los
próximos 5 años. Sea Cij (i<j) el costo total
(adquisición, operación, mantenimiento y valor
residual).
C12 = 50 C1,3 = 80 C2,3 = 20
C2,4 = 35 C3,4 = 37 C3,5 = 40
C4,5 = 23 C4,6 = 33 C5,6 = 18
La máquina no puede ser usada por más de
dos años.
Determine la política óptima de reemplazo.
50 20 37 23 18

1 2 3 4 5 6

80 35 40 33

Modelo de red que representa el problema

Aplicando Dijkstra

Iteración S j D[2] D[3] D[4] D[5] D[6]


1 {1} - 50 80 ∞ ∞ ∞
2 {1, 2} 2 50 70 85 ∞ ∞
3 {1, 2, 3} 3 50 70 85 110 ∞
4 {1, 2, 3, 4} 4 50 70 85 108 118
5 {1, 2, 3, 4, 5} 5 50 70 85 108 118
6 {1, 2, 3, 4, 5, 6} 50 70 85 108 118

Política óptima: 1-2-4-6


Costo mínimo: $118
CADENAS MÚLTIPLES ECONÓMICAS EN UNA RED
• Este problema trata de determinar la ruta
más económica entre cualquier par de
nodos de una red.
• El conjunto de todas estas rutas, se llaman
“Cadenas Múltiples Económicas”.
• Este problema puede resolverse con el
algoritmo de Dijkstra, tomando por turno
cada vértice como vértice origen. Una forma
más directa de solución es el algoritmo de
Floyd.
ALGORITMO DE FLOYD
Se trabajará sobre un grafo G=(X,A) en el cual cada arco
(ij) tiene un costo no negativo Cij. El problema es
encontrar el camino mas corto entre i y j para cada par de
vértices (i,j).
Por conveniencia, se supone que los nodos en X están
numerados 1, 2, … , n. El algoritmo de Floyd usa una
matriz A de nxn en la que se calculan las longitudes de los
caminos más cortos.
• Inicialmente se hace A0[i,j]=C[i,j] para toda i≠j. Si no existe
un arco que vaya de i a j, se supone que C[i,j]= ∞. Cada
elemento de la diagonal se hace igual a cero.
• Después se hacen n iteraciones en la matriz A, en cada
iteración A se transforma.
ALGORITMO DE FLOYD
• Al final de la k-ésima iteracion, A[i,j] tendrá por
valor la longitud más pequeña de cualquier
camino que vaya desde el nodo i hasta el nodo j y
que no pase por un nodo con un número mayor
que k. Esto es, i y j, los vértices extremos del
camino, pueden ser cualquier vértice, pero todo
vértice intermedio debe ser menor o igual que k.
• En la k-ésima iteración, se aplica la sgte. fórmula
para calcular A:
Ak-1[i,j]
Ak[i,j] = min Ak-1[i,k]+ Ak-1[k,j]
PROBLEMA
Para el grafo dirigido de la figura, determine los caminos más cortos
entre todos los pares de nodos.

2
1 2 3
3

5
REDES DE TRANSPORTE

DEFINICIÓN
Se denomina red de transporte al grafo finito, sin
anillos, donde se cumple que:
a) Cada arco u tiene asociado un número c(u)>=0
llamado capacidad del arco.
b) Existe un solo vértice Xs tal que W⁻(Xs) = 0
este vértice se llama fuente o entrada de la red.
c) Existe un solo vértice Xt tal que W⁺(Xt) = 0 ,
este vértice se llama destino o sumidero de la
red.
REDES DE TRANSPORTE
• FLUJO
Es una función entera Ø(u), definida sobre el
conjunto A de arcos. Esta función es un flujo para
una red de transporte si satisface:
0 <= Ø(u) <= c(u) , para todo u Є A.
La función Ø(u) puede considerarse como la
cantidad de materia que fluye por el arco u. Como
la cantidad de materia que entra es igual a la que
sale, entonces para todo nodo se cumple:
Σ Ø(u) ingresa = Σ Ø(u) sale
REDES DE TRANSPORTE
• ARCO SATURADO
Se dice que un arco u Є A está saturado
si:
Ø(u) = c(u)

• FLUJO COMPLETO
Un flujo es completo si todo camino que
va de la fuente al destino contiene al
menos un arco saturado.
Ø(u)
c(u) 1 X1 0
3 1
c(u)- Ø(u) 2 1
Xs Xt

0 2

2 2 2 4

X2

RED DE TRANSPORTE
RED DE TRANSPORTE
• CORTE
Sea Y un subconjunto del conjunto X de vértices,
que contiene al destino Xt y no contiene a la fuente
Xs. El conjunto W⁻(Y) (arcos incidentes hacia el
interior de Y) se le denomina corte de la red.
Un corte de una red, es un conjunto de arcos cuya
ausencia desconectaría completamente a la red.
Ejemplo, si en la red se tiene Y = (X2, Xt), entonces
el corte correspondiente a Y está dado por: W ⁻(Y)
= { (X1, Xt), (Xs, X2) }
x1

3 1

xs xt

2 4

x2

CORTE EN UNA RED DE TRANSPORTE


REDES DE TRANSPORTE

• CAPACIDAD DE CORTE
Se denomina así a la expresión:
C [W⁻(Y)] = Σ c(u) , u Є W⁻(Y)
Al definirse la capacidad de un corte se
toma en cuenta la dirección de los arcos
del corte.
Ejemplo, si Y = (X2, Xt) ,
C [W⁻(Y)] = 2 + 1 = 3
EL PROBLEMA DE FLUJO MÁXIMO
• Mucha situaciones se modelan mediante una
red en la que se podrían considerar que los
arcos tienen una capacidad que limita la
cantidad de un producto que se podría enviar a
través del arco. En estas situaciones, a menudo
se desea transportar la cantidad máxima de flujo
desde un punto de partida (conocido como
fuente) hacia un punto terminal (llamado
destino).
• Esta clase de problemas se llaman problemas
de flujo máximo.
EL PROBLEMA DE FLUJO MÁXIMO
El flujo que pasa a través de una red debe
satisfacer las siguientes restricciones:
a) El flujo entra a la red únicamente por el nodo
fuente. Matemáticamente se representa por:
Σ Xij - Σ Xjk = - v , si j = s
Donde v >= 0 es el flujo total que entra a la
red y s es el nodo fuente. Por convención, el
flujo que sale de un nodo es negativo (eflujo)
y el flujo que entra a un nodo es positivo
(influjo).
EL PROBLEMA DE FLUJO MÁXIMO
b) Hay conservación de flujo en un nodo intermedio, es
decir el total del flujo que entra en cierto nodo es igual
al total del flujo que sale del mismo. Matemáticamente
se tiene:
Σ Xij - Σ Xjk = 0 , para toda j ≠ s ≠ t.
c) El flujo sale de la red únicamente por el nodo destino.
Matemáticamente se escribe como:
Σ Xij - Σ Xjk = v , si j = t.
d) El flujo en un arco debe conformar lo requerimientos
mínimos y las capacidades máximas del arco, es decir:
0 <= lij <= xij <= uij para toda Aij.
EL PROBLEMA DE FLUJO MÁXIMO
Modelo de programación lineal:
Xij = cantidad de flujo que pasa del nodo i al nodo j.
Max v = Σ Xsj
s. a. :
-v, si j = s
Σ Xij - Σ Xjk = 0, si j ≠ s ≠ t
v, si j = t

0 <= lij <= xij <= uij


TEOREMA DE MINIMO CORTE-MÁXIMO FLUJO

En una red de transporte dada, el valor


máximo de un flujo es igual a la capacidad
mínima de un corte, esto es:
Max Ø(xn) = Min C W¯ (Y)
Esto quiere decir, que si se logra
encontrar un flujo igual a la capacidad de
un corte, se estará seguro de que dicho
flujo es máximo.
El corte mínimo puede no ser único.
TEOREMA DE MÍNIMO CORTE-MÁXIMO FLUJO

1
3
1

s 1 t

2 2

Y = 1, 2, t

Min C W¯ (Y) = 1 + 2 = 3 Ømax = 3


ALGORITMO DE FORD Y FULKERSON

Es un algoritmo iterativo, consiste en el


aumento paulatino del flujo (X o) hasta que
éste llegue a ser máximo.
La búsqueda del flujo máximo se realiza en
dos fases:
1ra Fase: Etiquetado
Se identifica un camino de Xs a Xt, y se
coloca una etiqueta a cada nodo del camino.
2da Fase: Asignación de flujo
Se asigna flujo al camino etiquetado.
NOMENCLATURA EMPLEADA
Xij >= 0 Flujo del nodo i al nodo j.
Xji >= 0 Flujo ficticio que va del nodo j al nodo i.
uij >= 0 Capacidad máximo de flujo del arco A ij (u Є Z).
s: Nodo fuente.
t: Nodo destino.
gij = (uij – xij) Capacidad no saturada del arco A ij,
(gij = 0 arco saturado).
[s⁺, ∞]: Etiqueta del nodo fuente.
[i⁺ , δj]: Etiqueta de un nodo vecino del nodo i. i ⁺: Nodo
de donde proviene el flujo. δj: Cantidad de flujo que
aún puede pasar por el arco A ij.
[k¯, δj]: Etiqueta para un nodo j vecino del nodo k, para
el cual es posible un flujo ficticio ( k  j).
δj = min(δj , Xkj)
PROBLEMA
Una empresa multinacional tiene un programa
anual de distribución de un determinado producto.
Estos productos se producen en dos fábricas. La
fábrica 1 con una capacidad máxima de producción
de 10 tons. al año y la fábrica 2 con capacidad
máxima de producción de 7 tons. al año. Los
excedentes de la fábrica 2 pueden transferirse a la
fábrica 1, para esto existe una disponibilidad de
transporte de un máximo de 8 tons. al año. Hay tres
distribuidores mayoristas, la siguiente matriz indica
la capacidad máxima de transporte anual desde las
fábricas hacia los distribuidores mayoristas.
PROBLEMA

Distribuidores 3 4 5
Fábricas
1 8 4 -
2 2 3 3

Los excedentes de 3 y 5 pueden transferirse a 4. La


capacidad máxima de transporte es de 3 tons. y 4 tons.
respectivamente. De los distribuidores mayoristas se
entregan los productos al mercado consumidor. Los
requerimientos de los distribuidores son de 4, 7 y 5
toneladas respectivamente.
Determine el flujo máximo anual que puede circular por el
sistema.
EL PROBLEMA DE FLUJO MÁXIMO A
COSTO MÍNIMO

• Este problema es una combinación de


dos problemas: Flujo máximo y costo
mínimo.
• Un problema de flujo máximo puede tener
soluciones óptimas alternativas, cuando
se incluye costos en la red, al menos una
solución tiene el costo mínimo.
EL PROBLEMA DE FLUJO MÁXIMO A COSTO MÍNIMO

El problema de flujo máximo a costo mínimo


puede representarse matemáticamente como:
Min Z = ΣCijXij
s.a. : - v, si j=s
ΣXij - ΣXjk = 0, si j≠ s ≠ t
v, si j=t

0 <= lij <= Xij < uij


En esta formulación, las variables de decisión
son Xij y el flujo total v.
ALGORITMO DE BUSACKER Y GOWEN

1) Xij=0 para todos los arcos Aij y v=0.


2) Construir nuevos costos Ĉij en el arco Aij
basado en lo siguiente:
• Ĉij= Cij, si Xij=0, cuando no hay flujo en el
arco Aij.
• Ĉij=∞, si Xij=Uij, cuando el arco Aij está
saturado.
• Ĉji=-Cij, si Xij>0, arco en reversa para
posible reducción de flujo.
ALGORITMO DE BUSACKER Y GOWEN

3) Encuéntrese la ruta más económica del nodo s al


nodo t, basado en los costos Ĉij, utilizando cualquier
algoritmo disponible.
4) Envíese la mayor cantidad de flujo por la ruta más
económica, es decir una cantidad de flujo con el cual
uno o varios arcos que componen esa ruta se saturen.
5) Añádase al flujo actual en toda la red, el flujo adicional
que se encuentre en el paso anterior. Si todas las
rutas que conducen al destino están saturadas, la
solución óptima ha sido encontrada. De otra manera,
regrese al paso 2.
PROB.
En la red de la figura, los números en los arcos representan respectivamente
la capacidad mínima, la capacidad máxima y el costo unitario . Determine el
flujo máximo a costo mínimo.

(0,1,1) (0,1,2)

s (0,1,1) 1 (0,1,2) 2 (0,1,1) t

(0,2,2)
(0,2,2)
4
GRACIAS

También podría gustarte