Optimizacion-Combinatoria y Grafos

40
Optimización Optimización Combinatoria y Grafos Combinatoria y Grafos Taller No. 6 Taller No. 6 Omar G. Rincón Pin Omar G. Rincón Pin

Transcript of Optimizacion-Combinatoria y Grafos

Page 1: Optimizacion-Combinatoria y Grafos

Optimización Optimización Combinatoria y GrafosCombinatoria y Grafos

Taller No. 6Taller No. 6

Omar G. Rincón PinOmar G. Rincón Pin

Page 2: Optimizacion-Combinatoria y Grafos

Flujo Máximo - Algoritmo de Flujo Máximo - Algoritmo de Ford-FulkersonFord-Fulkerson

Modelo del flujo máximoModelo del flujo máximo: : En algunas redes circula por los En algunas redes circula por los arcos un arcos un flujoflujo (envío o circulación de unidades homogéneas de (envío o circulación de unidades homogéneas de algún producto: automóviles en una red de carreteras, litros de algún producto: automóviles en una red de carreteras, litros de petróleo en un oleoducto, bits por un cable de fibra óptica) petróleo en un oleoducto, bits por un cable de fibra óptica) desde el desde el origenorigen o o fuentefuente al al destinodestino, también denominado , también denominado sumiderosumidero o o vertederovertedero. Los arcos tienen una capacidad . Los arcos tienen una capacidad máxima de flujo, y se trata de enviar desde la fuente al máxima de flujo, y se trata de enviar desde la fuente al sumidero la mayor cantidad posible de flujo, de tal manera que: sumidero la mayor cantidad posible de flujo, de tal manera que: El flujo es siempre positivo y con unidades enteras. El flujo es siempre positivo y con unidades enteras. El flujo a través de un arco es menor o igual que la El flujo a través de un arco es menor o igual que la

capacidad. capacidad. El flujo que entra en un nodo es igual al que sale de él. El flujo que entra en un nodo es igual al que sale de él.

En el caso de que el origen o el destino no existan en el En el caso de que el origen o el destino no existan en el problema, se añaden ficticiamente utilizando arcos problema, se añaden ficticiamente utilizando arcos unidireccionales de capacidad infinita, como en grafo mostrado unidireccionales de capacidad infinita, como en grafo mostrado a continuación: a continuación:

Page 3: Optimizacion-Combinatoria y Grafos

CorteCorte: : Un corte define una serie de arcos cuya Un corte define una serie de arcos cuya supresión de la red causa una interrupción completa del supresión de la red causa una interrupción completa del flujo entre el origen y el destino. La flujo entre el origen y el destino. La capacidad de cortecapacidad de corte es igual a la suma de las capacidades de los arcos es igual a la suma de las capacidades de los arcos asociados. Entre asociados. Entre todostodos los cortes posibles en la red , el los cortes posibles en la red , el corte con la corte con la menor capacidadmenor capacidad proporciona el flujo proporciona el flujo máximo en la red. máximo en la red.

Page 4: Optimizacion-Combinatoria y Grafos

El siguiente grafo ilustra 3 cortes: el Corte 1 con El siguiente grafo ilustra 3 cortes: el Corte 1 con capacidad 60, el Corte 2 con capacidad 110 y el Corte 3 capacidad 60, el Corte 2 con capacidad 110 y el Corte 3 con capacidad 70. Todo lo que podemos obtener de los con capacidad 70. Todo lo que podemos obtener de los 3 cortes es que el flujo máximo en la red no excede de 3 cortes es que el flujo máximo en la red no excede de 60 unidades. No podemos saber cual es el flujo máximo 60 unidades. No podemos saber cual es el flujo máximo hasta que se hayan enumerado hasta que se hayan enumerado todostodos los cortes en la los cortes en la red red

Las capacidades se identifican como sigue: por ejemplo, para el arco (3,4), el límite de flujo es de 10 unidades de 3 a 4 y de 5 unidades de 4 a 3.

Page 5: Optimizacion-Combinatoria y Grafos

Algoritmo de Ford-FulkersonAlgoritmo de Ford-Fulkerson El algoritmo de Ford-Fulkerson propone buscar caminos El algoritmo de Ford-Fulkerson propone buscar caminos

en los que se pueda aumentar el flujo, hasta que se en los que se pueda aumentar el flujo, hasta que se alcance el flujo máximo. La idea es encontrar una alcance el flujo máximo. La idea es encontrar una ruta ruta de penetraciónde penetración con un flujo positivo neto que una los con un flujo positivo neto que una los nodos origen y destino.nodos origen y destino.

Consideraremos las capacidades iniciales del arco que Consideraremos las capacidades iniciales del arco que une el nodo une el nodo ii y el nodo y el nodo jj como como CijCij y y CjiCji. Estas . Estas capacidades iniciales irán variando a medida que capacidades iniciales irán variando a medida que avanza el algoritmo, denominaremos avanza el algoritmo, denominaremos capacidades capacidades residualesresiduales a las capacidades restantes del arco una vez a las capacidades restantes del arco una vez pasa algún flujo por él, las representaremos como pasa algún flujo por él, las representaremos como cijcij y y cjicji..

Para un nodo Para un nodo jj que recibe el flujo del nodo que recibe el flujo del nodo ii, definimos , definimos una clasificación una clasificación [aj,i][aj,i] donde donde ajaj es el flujo del nodo es el flujo del nodo ii al al nodo nodo jj..

Page 6: Optimizacion-Combinatoria y Grafos

Los pasos del algoritmo se definen como sigue:Los pasos del algoritmo se definen como sigue:

Paso 1:Paso 1: Inicializamos las capacidades residuales a las Inicializamos las capacidades residuales a las capacidades iniciales, hacemos capacidades iniciales, hacemos (cij,cji)=(Cij,Cji)(cij,cji)=(Cij,Cji) para todo para todo arco de la red. Suponiendo el nodo 1 como el nodo origen, arco de la red. Suponiendo el nodo 1 como el nodo origen, hacemos hacemos a1=∞ a1=∞ y clasificamos el nodo origen con y clasificamos el nodo origen con [∞,-][∞,-]. . Tomamos Tomamos i=1i=1 y vamos al paso 2. y vamos al paso 2.

Paso 2:Paso 2: Determinamos Determinamos Si Si como un conjunto que contendrá como un conjunto que contendrá los nodos a los que podemos acceder directamente desde los nodos a los que podemos acceder directamente desde ii por medio de un arco con capacidad positiva, y que no por medio de un arco con capacidad positiva, y que no formen parte del camino en curso. Si formen parte del camino en curso. Si SiSi contiene algún nodo contiene algún nodo vamos al paso 3, en el caso de que el conjunto sea vacío vamos al paso 3, en el caso de que el conjunto sea vacío saltamos al paso 4. saltamos al paso 4.

Paso 3: Paso 3: Obtenemos Obtenemos kЄSikЄSi como el nodo destino del arco de como el nodo destino del arco de mayor capacidad que salga de mayor capacidad que salga de ii hacia un nodo perteneciente hacia un nodo perteneciente a a SiSi. Es decir, . Es decir, cik = max{cij} con jЄSicik = max{cij} con jЄSi. Hacemos . Hacemos ak=cikak=cik y y clasificamos el nodo clasificamos el nodo k k con con [ak,i][ak,i]. Si . Si k k es igual al nodo destino es igual al nodo destino o sumidero, entonces hemos encontrado una ruta de o sumidero, entonces hemos encontrado una ruta de penetración, vamos al paso 5. En caso contrario continuamos penetración, vamos al paso 5. En caso contrario continuamos con el camino, hacemos con el camino, hacemos i=k i=k y volvemos al paso 2. y volvemos al paso 2.

Page 7: Optimizacion-Combinatoria y Grafos

Paso 4 (retroceso):Paso 4 (retroceso): Si Si i=1i=1, estamos en el nodo origen, y como , estamos en el nodo origen, y como SiSi es vacío, entonces no podemos acceder a ningún nodo, ni es vacío, entonces no podemos acceder a ningún nodo, ni encontrar algún nuevo camino, hemos terminado, vamos al paso 6. encontrar algún nuevo camino, hemos terminado, vamos al paso 6. En caso contrario, En caso contrario, i≠1i≠1, le damos al valor , le damos al valor ii el del nodo que se ha el del nodo que se ha clasificado inmediatamente antes, eliminamos clasificado inmediatamente antes, eliminamos ii del conjunto del conjunto SiSi actual y volvemos al paso 2. actual y volvemos al paso 2.

Paso 5:Paso 5: Llegados a este paso tenemos un nuevo camino: Llegados a este paso tenemos un nuevo camino: Np={1,k1,k2,...,n}Np={1,k1,k2,...,n}, esta será la , esta será la p-ésimap-ésima ruta de penetración desde ruta de penetración desde el nodo origen al nodo destino. El flujo máximo a lo largo de esta el nodo origen al nodo destino. El flujo máximo a lo largo de esta ruta será la capacidad mínima de las capacidades residuales de los ruta será la capacidad mínima de las capacidades residuales de los arcos que forman el camino, es decir: arcos que forman el camino, es decir: fp=min{a1,ak1,ak2,...,an}fp=min{a1,ak1,ak2,...,an}..La capacidad residual de cada arco a lo largo de la ruta de La capacidad residual de cada arco a lo largo de la ruta de penetración se disminuye por penetración se disminuye por fpfp en dirección del flujo y se en dirección del flujo y se incrementa por incrementa por fpfp en dirección inversa, es decir, para los nodos en dirección inversa, es decir, para los nodos ii y y jj en la ruta, el flujo residual se cambia de la en la ruta, el flujo residual se cambia de la (cij,cji)(cij,cji) actual a actual a (cij-(cij-fp,cji+fp)fp,cji+fp) si el flujo es de si el flujo es de ii a a jj, o , o (cij+fp,cji-fp)(cij+fp,cji-fp) si el flujo es de si el flujo es de jj a a ii Inicializamos Inicializamos i=1i=1 y volvemos al paso 2 para intentar una nueva ruta y volvemos al paso 2 para intentar una nueva ruta de penetración. de penetración.

Page 8: Optimizacion-Combinatoria y Grafos

Paso 6 (solución):Paso 6 (solución): Una vez aquí, hemos Una vez aquí, hemos determinado determinado mm rutas de penetración. El flujo rutas de penetración. El flujo máximo en la red será la suma de los flujos máximo en la red será la suma de los flujos máximos en cada ruta obtenida, es decir: máximos en cada ruta obtenida, es decir: F=f1+f2+...+fmF=f1+f2+...+fm. Teniendo en cuenta que las . Teniendo en cuenta que las capacidades residuales inicial y final del arco capacidades residuales inicial y final del arco (i, (i, j) j) las dan las dan (Cij,Cji)(Cij,Cji) y y (cij,cji)(cij,cji) respectivamente, el respectivamente, el flujo máximo para cada arco se calcula como flujo máximo para cada arco se calcula como sigue: seasigue: sea (α, β)=(Cij-cij, Cji-cji) (α, β)=(Cij-cij, Cji-cji), si , si α>0α>0, el flujo , el flujo óptimo de óptimo de ii a a jj es es αα, de lo contrario, si , de lo contrario, si β>0β>0, el , el flujo óptimo de flujo óptimo de j j a a ii es es ββ. Es imposible lograr que . Es imposible lograr que tanto tanto αα como como ββ sean positivas. sean positivas.

Page 9: Optimizacion-Combinatoria y Grafos

Ejemplo:Ejemplo: Determinar el flujo máximo en la Determinar el flujo máximo en la red siguiente: red siguiente:

Page 10: Optimizacion-Combinatoria y Grafos

Iteración 1Iteración 1 Determinamos las residuales iniciales Determinamos las residuales iniciales (cij,cji)(cij,cji) iguales a las iguales a las

capacidades inicialescapacidades iniciales (Cij,Cji) (Cij,Cji). . Paso 1:Paso 1: Hacemos Hacemos ai=∞ai=∞, y clasificamos el nodo 1 con , y clasificamos el nodo 1 con [a1,-][a1,-]. .

Tomamos Tomamos i=1i=1. . Paso 2:Paso 2: S1={2,3,4}S1={2,3,4} (no vacío). (no vacío). Paso 3:Paso 3: k=3k=3 ya que ya que c13=max{c12,c13,c14}={20,30,10}=30c13=max{c12,c13,c14}={20,30,10}=30. .

Hacemos Hacemos a3=c13=30a3=c13=30 y clasificamos el nodo 3 con y clasificamos el nodo 3 con [30,1][30,1]. Tomamos . Tomamos i=3i=3 y repetimos el paso 2. y repetimos el paso 2.

Paso 2:Paso 2: S3={4,5}S3={4,5} Paso 3:Paso 3: k=5k=5 y y a5=c35=max{10,20}=20a5=c35=max{10,20}=20. Clasificamos el nodo 5 con . Clasificamos el nodo 5 con

[20,3][20,3]. Logramos la penetración, vamos al paso 5. . Logramos la penetración, vamos al paso 5. Paso 5:Paso 5: La ruta de la penetración se determina de las La ruta de la penetración se determina de las

clasificaciones empezando en el nodo 5 y terminando en el nodo 1, clasificaciones empezando en el nodo 5 y terminando en el nodo 1, es decir, es decir, 55→→[20,3][20,3]→→33→→[30,1][30,1]→→11. Entonces la ruta es . Entonces la ruta es N1={1,3,5}N1={1,3,5} y y f1=min{a1,a3,a5}={∞,30,20}=f1=min{a1,a3,a5}={∞,30,20}=2020. Las capacidades residuales a lo . Las capacidades residuales a lo largo de esta ruta son: largo de esta ruta son:

(c13,c31)=(c13,c31)=(30-20, 0+20)=(30-20, 0+20)=(10,20)(10,20) (c35,c53)=(c35,c53)=(20-20, 0+20)=(20-20, 0+20)=(0,20)(0,20)

Page 11: Optimizacion-Combinatoria y Grafos

Paso 1:Paso 1: Hacemos Hacemos ai=∞ai=∞, y clasificamos el nodo 1 con , y clasificamos el nodo 1 con [a1,-][a1,-]. Tomamos . Tomamos i=1i=1. . Paso 2:Paso 2: S1={2,3,4}S1={2,3,4}. . Paso 3:Paso 3: k=2k=2 y y a2=c12=max{20,10,10}=20a2=c12=max{20,10,10}=20. Clasificamos el nodo 2 con . Clasificamos el nodo 2 con [20,1][20,1]. .

Tomamos Tomamos i=2i=2 y repetimos el paso 2. y repetimos el paso 2. Paso 2:Paso 2: S2={3,5}S2={3,5} Paso 3:Paso 3: k=3k=3 y y a3=c23=max{30,40}=40a3=c23=max{30,40}=40. Clasificamos el nodo 3 con . Clasificamos el nodo 3 con [40,2][40,2]. .

Tomamos Tomamos i=3i=3 y repetimos el paso 2. y repetimos el paso 2. Paso 2:Paso 2: S3={4} S3={4} ((c35=0, c35=0, el nodo 1 ya ha sido clasificado y el nodo 2 cumple ambas el nodo 1 ya ha sido clasificado y el nodo 2 cumple ambas

condiciones, por tanto los nodos 1, 2 y 5 no pueden ser incluidos en condiciones, por tanto los nodos 1, 2 y 5 no pueden ser incluidos en S3S3). ). Paso 3:Paso 3: k=4k=4 y y a4=c34=10a4=c34=10. Clasificamos el nodo 4 con . Clasificamos el nodo 4 con [10,3][10,3]. Tomamos . Tomamos i=4i=4 y y

repetimos el paso 2. repetimos el paso 2. Paso 2:Paso 2: S4={5}S4={5} Paso 3:Paso 3: k=5k=5 y y a5=c45=20a5=c45=20. Clasificamos el nodo 5 con . Clasificamos el nodo 5 con [20,4][20,4]. Logramos la . Logramos la

penetración, vamos al paso 5. penetración, vamos al paso 5. Paso 5:Paso 5: La ruta de la penetración es: La ruta de la penetración es:

55→→[20,4][20,4]→→44→→[10,3][10,3]→→33→→[40,2][40,2]→→22→→[20,1][20,1]→→11. Entonces la ruta es . Entonces la ruta es N2={1,2,3,4,5}N2={1,2,3,4,5} y y f2=min{∞,20,40,10,20}=f2=min{∞,20,40,10,20}=1010. Las capacidades residuales a lo largo de esta ruta . Las capacidades residuales a lo largo de esta ruta son: son:

(c12,c21)=(c12,c21)=(20-10, 0+10)=(20-10, 0+10)=(10,10)(10,10) (c23,c32)=(c23,c32)=(40-10, 0+10)=(40-10, 0+10)=(30,10)(30,10) (c34,c43)=(c34,c43)=(10-10, 5+10)=(10-10, 5+10)=(0,15)(0,15) (c45,c54)=(c45,c54)=(20-10, 0+10)=(20-10, 0+10)=(10,10)(10,10)

Iteración 2Iteración 2

Page 12: Optimizacion-Combinatoria y Grafos

Paso 1:Paso 1: Hacemos Hacemos ai=∞ai=∞, y clasificamos el nodo 1 con , y clasificamos el nodo 1 con [a1,-][a1,-]. Tomamos . Tomamos i=1i=1. . Paso 2:Paso 2: S1={2,3,4}S1={2,3,4}. . Paso 3:Paso 3: k=2k=2 y y a2=c12=max{10,10,10}=10a2=c12=max{10,10,10}=10, rompemos el empate , rompemos el empate

arbitrariamente. Clasificamos el nodo 2 con arbitrariamente. Clasificamos el nodo 2 con [10,1][10,1]. Tomamos . Tomamos i=2i=2 y y repetimos el paso 2. repetimos el paso 2.

Paso 2:Paso 2: S2={3,5}S2={3,5} Paso 3:Paso 3: k=3k=3 y y a3=c23=max{30,30}=30a3=c23=max{30,30}=30. Clasificamos el nodo 3 con . Clasificamos el nodo 3 con [30,2][30,2]. .

Tomamos Tomamos i=3i=3 y repetimos el paso 2. y repetimos el paso 2. Paso 2:Paso 2: S3S3 vacío ya que vacío ya que c34=c35=0c34=c35=0. Vamos al paso 4 para retroceder. . Vamos al paso 4 para retroceder. Paso 4: Paso 4: La clasificación La clasificación [30,[30,22] ] nos dice que el nodo inmediatamente nos dice que el nodo inmediatamente

precedente es el 2. Eliminamos el nodo 3 de una consideración posterior en precedente es el 2. Eliminamos el nodo 3 de una consideración posterior en esta iteración. Tomamos esta iteración. Tomamos i=2i=2 y repetimos el paso 2. y repetimos el paso 2.

Paso 2:Paso 2: S2={5}S2={5} Paso 3:Paso 3: k=5k=5 y y a5=c25=30a5=c25=30. Clasificamos el nodo 5 con . Clasificamos el nodo 5 con [30,2][30,2]. Logramos la . Logramos la

penetración, vamos al paso 5. penetración, vamos al paso 5. Paso 5:Paso 5: La ruta de la penetración es: La ruta de la penetración es: 55→→[30,2][30,2]→→22→→[10,1][10,1]→→11. Entonces la . Entonces la

ruta es ruta es N2={1,2,5}N2={1,2,5} y y f3=min{∞,10,30}=f3=min{∞,10,30}=1010. Las capacidades residuales a lo . Las capacidades residuales a lo largo de esta ruta son:largo de esta ruta son:

(c12,c21)=(c12,c21)=(10-10, 10+10)=(10-10, 10+10)=(0,20)(0,20) (c25,c52)=(c25,c52)=(30-10, 0+10)=(30-10, 0+10)=(20,10)(20,10)

Iteración 3Iteración 3

Page 13: Optimizacion-Combinatoria y Grafos

Paso 1:Paso 1: Hacemos Hacemos ai=∞ai=∞, y clasificamos el nodo 1 con , y clasificamos el nodo 1 con [a1,-][a1,-]. . Tomamos Tomamos i=1i=1. .

Paso 2:Paso 2: S1={3,4}S1={3,4}. . Paso 3:Paso 3: k=3k=3 y y a3=c13=max{10,10}=10a3=c13=max{10,10}=10. Clasificamos el nodo 3 con . Clasificamos el nodo 3 con

[10,1][10,1]. Tomamos . Tomamos i=3i=3 y repetimos el paso 2. y repetimos el paso 2. Paso 2:Paso 2: S3={2}S3={2} Paso 3:Paso 3: k=2k=2 y y a2=c32=10a2=c32=10. Clasificamos el nodo 2 con . Clasificamos el nodo 2 con [10,3][10,3]. .

Tomamos Tomamos i=2i=2 y repetimos el paso 2. y repetimos el paso 2. Paso 2:Paso 2: S2={5}S2={5} Paso 3:Paso 3: k=5k=5 y y a5=c25=20a5=c25=20. Clasificamos el nodo 5 con . Clasificamos el nodo 5 con [20,2][20,2]. .

Logramos la penetración, vamos al paso 5. Logramos la penetración, vamos al paso 5. Paso 5:Paso 5: La ruta de la penetración es: La ruta de la penetración es:

55→→[20,2][20,2]→→22→→[10,3][10,3]→→33→→[10,1][10,1]→→11. Entonces la ruta es . Entonces la ruta es N4={1,3,2,5}N4={1,3,2,5} y y f4=min{∞,10,10,20}=f4=min{∞,10,10,20}=1010. Las capacidades residuales . Las capacidades residuales a lo largo de esta ruta son: a lo largo de esta ruta son:

(c13,c31)=(c13,c31)=(10-10, 20+10)=(10-10, 20+10)=(0,30)(0,30) (c32,c23)=(c32,c23)=(10-10, 30+10)=(10-10, 30+10)=(0,40)(0,40) (c25,c52)=(c25,c52)=(20-10, 10+10)=(20-10, 10+10)=(10,20)(10,20)

Iteración 4Iteración 4

Page 14: Optimizacion-Combinatoria y Grafos

Paso 1:Paso 1: Hacemos Hacemos ai=∞ai=∞, y clasificamos el nodo 1 con , y clasificamos el nodo 1 con [a1,-][a1,-]. Tomamos . Tomamos i=1i=1. . Paso 2:Paso 2: S1={4}S1={4}. . Paso 3:Paso 3: k=4k=4 y y a4=c14=10a4=c14=10. Clasificamos el nodo 4 con . Clasificamos el nodo 4 con [10,1][10,1]. Tomamos . Tomamos i=4i=4

y repetimos el paso 2. y repetimos el paso 2. Paso 2:Paso 2: S4={3,5}S4={3,5} Paso 3:Paso 3: k=3k=3 y y a3=c23=max{15,10}=15a3=c23=max{15,10}=15. Clasificamos el nodo 3 con . Clasificamos el nodo 3 con [15,4][15,4]. .

Tomamos Tomamos i=3i=3 y repetimos el paso 2. y repetimos el paso 2. Paso 2:Paso 2: S3S3 vacío ya que vacío ya que c32=c34=c35=0c32=c34=c35=0. Vamos al paso 4 para . Vamos al paso 4 para

retroceder. retroceder. Paso 4: Paso 4: La clasificación La clasificación [15,[15,44] ] nos dice que el nodo inmediatamente nos dice que el nodo inmediatamente

precedente es el 4. Eliminamos el nodo 3 de una consideración posterior precedente es el 4. Eliminamos el nodo 3 de una consideración posterior en esta iteración. Tomamos en esta iteración. Tomamos i=4i=4 y repetimos el paso 2. y repetimos el paso 2.

Paso 2:Paso 2: S4={5}S4={5} Paso 3:Paso 3: k=5k=5 y y a5=c45=10a5=c45=10. Clasificamos el nodo 5 con . Clasificamos el nodo 5 con [10,4][10,4]. Logramos la . Logramos la

penetración, vamos al paso 5. penetración, vamos al paso 5. Paso 5:Paso 5: La ruta de la penetración es: La ruta de la penetración es: 55→→[10,4][10,4]→→44→→[10,1][10,1]→→11. Entonces la . Entonces la

ruta es ruta es N2={1,4,5}N2={1,4,5} y y f3=min{∞,10,10}=f3=min{∞,10,10}=1010. Las capacidades residuales a lo . Las capacidades residuales a lo largo de esta ruta son:largo de esta ruta son:

(c14,c41)=(c14,c41)=(10-10, 0+10)=(10-10, 0+10)=(0,10)(0,10) (c45,c54)=(c45,c54)=(10-10, 10+10)=(10-10, 10+10)=(0,20)(0,20)

Iteración 5Iteración 5

Page 15: Optimizacion-Combinatoria y Grafos

No son posibles más penetraciones, No son posibles más penetraciones, debido a que todos los arcos fuera del debido a que todos los arcos fuera del nodo 1 tienen residuales cero. Vayamos al nodo 1 tienen residuales cero. Vayamos al paso 6 para determinar la solución. paso 6 para determinar la solución.

Iteración 6Iteración 6

Page 16: Optimizacion-Combinatoria y Grafos

Paso 6Paso 6:: El flujo máximo en la red es El flujo máximo en la red es F=F=f1+f2+...+f5=f1+f2+...+f5=60 60 unidadesunidades. El flujo en los diferentes arcos se calcula . El flujo en los diferentes arcos se calcula restando las últimas residuales obtenidas en la última restando las últimas residuales obtenidas en la última iteración de las capacidades iniciales: iteración de las capacidades iniciales:

ArcoArco (Cij, Cji) - (cij, cji)en it. 6 (Cij, Cji) - (cij, cji)en it. 6 Cantidad Cantidad de flujo de flujo

DirecciónDirección

(1,2)(1,2) (20, 0) - (0, 20) = (20, -20) (20, 0) - (0, 20) = (20, -20) 2020 1→21→2

(1,3)(1,3) (30, 0) - (0, 30) = (30, -30)(30, 0) - (0, 30) = (30, -30) 3030 1→31→3

(1,4)(1,4) (10, 0) - (0, 10) = (10, -10)(10, 0) - (0, 10) = (10, -10) 1010 1→41→4

(2,3)(2,3) (40, 0) - (40, 0) = (0, 0)(40, 0) - (40, 0) = (0, 0) 00 --

(2,5)(2,5) (30, 0) - (10, 20) = (20, -20)(30, 0) - (10, 20) = (20, -20) 2020 2→52→5

(3,4)(3,4) (10, 5) - (0, 15) = (10, -10)(10, 5) - (0, 15) = (10, -10) 1010 3→43→4

(3,5)(3,5) (20, 0) - (0, 20) = (20, -20)(20, 0) - (0, 20) = (20, -20) 2020 3→53→5

(4,5)(4,5) (20, 0) - (0, 20) = (20, -20)(20, 0) - (0, 20) = (20, -20) 2020 4→54→5

Page 17: Optimizacion-Combinatoria y Grafos

Grafo BipartitoGrafo Bipartito

Un Un Grafo bipartitoGrafo bipartito se denomina en Teoría de se denomina en Teoría de grafos a un grafo grafos a un grafo no dirigidono dirigido cuyos vértices se cuyos vértices se pueden separar en dos conjuntos disjuntos pueden separar en dos conjuntos disjuntos VV1 y 1 y VV2 y las aristas siempre unen vértices de un 2 y las aristas siempre unen vértices de un conjunto con vértices de otro:conjunto con vértices de otro:

no existe ninguna arista no existe ninguna arista ee = ( = (xx1,1,xx2) ni 2) ni ee = ( = (yy1,1,yy2) 2)

Siendo Siendo VV el conjunto que contiene todos los vértices el conjunto que contiene todos los vértices del grafo del grafo

Page 18: Optimizacion-Combinatoria y Grafos

Grafo bipartito completo K2,3

El conjunto de todos los grafos bipartitos es denominado ; en particular, un grafo bipartito uniendo dos conjuntos, de m y n elementos, respectivamente, se denota por , o, simplemente, Km,n.Un grafo bipartito en el cual todos los elementos de V1 están unidos con todos los elementos de V2 se denomina bipartito completoLos grafos bipartitos suelen representarse gráficamente con dos columnas (o filas) de vértices y las aristas uniendo vértices de columnas (o filas) diferentes.Un árbol.Un grafo sin ciclos de tamaño impar

Page 19: Optimizacion-Combinatoria y Grafos

Número cromático de un grafo Número cromático de un grafo bipartitobipartito

Page 20: Optimizacion-Combinatoria y Grafos

Función Objetivo SeparadaFunción Objetivo SeparadaConcepto.- Una función objetivo que mide

la efectividad de cada sistema de decisiones.

Ejemplo.- La función objetivo puede ser:

Donde:f = coeficientes son relativamente iguales a cero.

ó

Page 21: Optimizacion-Combinatoria y Grafos

Tipos de Algoritmos y ProblemasTipos de Algoritmos y Problemas

Page 22: Optimizacion-Combinatoria y Grafos

Problemas NP - CompletoProblemas NP - Completo

En teoría de la complejidad computacional, la clase de complejidad En teoría de la complejidad computacional, la clase de complejidad NP-completo es el subconjunto de los problemas de decisión[1] en NP-completo es el subconjunto de los problemas de decisión[1] en NP tal que todo problema en NP se puede reducir en cada uno de NP tal que todo problema en NP se puede reducir en cada uno de los problemas de NP-completo. Se puede decir que los problemas los problemas de NP-completo. Se puede decir que los problemas de NP-completo son los problemas más difíciles de NP y muy de NP-completo son los problemas más difíciles de NP y muy probablemente no formen parte de la clase de complejidad P. La probablemente no formen parte de la clase de complejidad P. La razón es que de tenerse una solución polinómica para un problema razón es que de tenerse una solución polinómica para un problema de NP-completo, todos los problemas de NP tendrían también una de NP-completo, todos los problemas de NP tendrían también una solución en tiempo polinómico.solución en tiempo polinómico.

[1] Un problema de decisión es un problema en donde la [1] Un problema de decisión es un problema en donde la respuestas posibles son SI o NO. Un ejemplo típico de problema de respuestas posibles son SI o NO. Un ejemplo típico de problema de decisión es la pregunta: ¿Es un número entero dado primo?decisión es la pregunta: ¿Es un número entero dado primo?

Page 23: Optimizacion-Combinatoria y Grafos

SolucionesSoluciones Actualmente, todos los algoritmos conocidos para problemas NP-completos utilizan tiempo exponencial con Actualmente, todos los algoritmos conocidos para problemas NP-completos utilizan tiempo exponencial con

respecto al tamaño de la entrada. Se desconoce si hay mejores algoritmos, por la cual, para resolver un respecto al tamaño de la entrada. Se desconoce si hay mejores algoritmos, por la cual, para resolver un problema NP-completo de tamaño arbitrario se utiliza uno de los siguientes enfoques:problema NP-completo de tamaño arbitrario se utiliza uno de los siguientes enfoques:

Aproximación: Un algoritmo que rápidamente encuentra una solución no necesariamente óptima, pero dentro Aproximación: Un algoritmo que rápidamente encuentra una solución no necesariamente óptima, pero dentro de un cierto rango de error. En algunos casos, encontrar una buena aproximación es suficiente para resolver de un cierto rango de error. En algunos casos, encontrar una buena aproximación es suficiente para resolver el problema, pero no todos los problemas NP-completos tienen buenos algoritmos de aproximación. el problema, pero no todos los problemas NP-completos tienen buenos algoritmos de aproximación.

Probabilístico: Una algoritmo probabilístico obtiene en promedio una buena solución al problema planteado, Probabilístico: Una algoritmo probabilístico obtiene en promedio una buena solución al problema planteado, para una distribución de los datos de entrada dada. para una distribución de los datos de entrada dada.

Casos particulares: Cuando se reconocen casos particulares del problema para los cuales existen soluciones Casos particulares: Cuando se reconocen casos particulares del problema para los cuales existen soluciones rápidas. rápidas.

Heurísticas: Un algoritmo que trabaja razonablemente bien en muchos casos. En general son rápidos, pero Heurísticas: Un algoritmo que trabaja razonablemente bien en muchos casos. En general son rápidos, pero no existe medida de la calidad de la respuesta.no existe medida de la calidad de la respuesta.

Los algoritmos de aproximación no garantizan la mejor solución, pero proporcionan una que es cercana a la Los algoritmos de aproximación no garantizan la mejor solución, pero proporcionan una que es cercana a la óptima. En muchas aplicaciones, una solución aproximada es suficientemente buena, especialmente cuando óptima. En muchas aplicaciones, una solución aproximada es suficientemente buena, especialmente cuando el tiempo requerido para encontrar la solución óptima es considerable. No hay ganancia en encontrar la el tiempo requerido para encontrar la solución óptima es considerable. No hay ganancia en encontrar la solución óptima para una organización de tareas si, por ejemplo, el tiempo computacional necesario para solución óptima para una organización de tareas si, por ejemplo, el tiempo computacional necesario para calcularlo excede la peor penalización que se pueda pagar.calcularlo excede la peor penalización que se pueda pagar.

Las estrategias, o heurísticas, empleadas por muchos de los algoritmos de aproximación que se han Las estrategias, o heurísticas, empleadas por muchos de los algoritmos de aproximación que se han desarrollado son muy sencillas y directas, e incluso proporcionan buenos resultados para muchos desarrollado son muy sencillas y directas, e incluso proporcionan buenos resultados para muchos problemas.problemas.

Page 24: Optimizacion-Combinatoria y Grafos

HeurísticaHeurística Una Una heurísticaheurística es un algoritmo que abandona uno o ambos es un algoritmo que abandona uno o ambos

objetivos; por ejemplo, normalmente encuentran buenas objetivos; por ejemplo, normalmente encuentran buenas soluciones, aunque no hay pruebas de que la solución no soluciones, aunque no hay pruebas de que la solución no pueda ser arbitrariamente errónea en algunos casos; o se pueda ser arbitrariamente errónea en algunos casos; o se ejecuta razonablemente rápido, aunque no existe tampoco ejecuta razonablemente rápido, aunque no existe tampoco prueba de que siempre será así. Las heurísticas prueba de que siempre será así. Las heurísticas generalmente son usadas cuando no existe una solucion generalmente son usadas cuando no existe una solucion óptima bajo las restricciones dadas (tiempo,espacio,etc.), o óptima bajo las restricciones dadas (tiempo,espacio,etc.), o cuando no existe del todo.cuando no existe del todo.

A menudo, pueden encontrarse instancias concretas del A menudo, pueden encontrarse instancias concretas del problema donde la heurística producirá resultados muy malos problema donde la heurística producirá resultados muy malos o se ejecutará muy lentamente. Aún así, estas instancias o se ejecutará muy lentamente. Aún así, estas instancias concretas pueden ser ignoradas porque no deberían ocurrir concretas pueden ser ignoradas porque no deberían ocurrir nunca en la práctica por ser de origen teórico. Por tanto, el nunca en la práctica por ser de origen teórico. Por tanto, el uso de heurísticas es muy común en el mundo real.uso de heurísticas es muy común en el mundo real.

Page 25: Optimizacion-Combinatoria y Grafos

Heurística para encontrar el camino Heurística para encontrar el camino más cortomás corto

Para problemas de búsqueda del camino más corto el término tiene un significado más específico. En este caso una heurística es una función matemática, h(n) definida en los nodos de un árbol de búsqueda ( algoritmo de búsqueda ), que sirve como una estimación del coste del camino más económico de un nodo dado hasta el nodo objetivo. Las heurísticas se usan en los algoritmos de búsqueda informada como la búsqueda egoísta. La búsqueda egoísta escogerá el nodo que tiene el valor más bajo en la función heurística. A* expandirá los nodos que tienen el valor más bajo para g(n) + h(n), donde g(n) es el coste (exacto) del camino desde el estado inicial al nodo actual. Cuando h(n) es admisible, esto es si h(n) nunca sobrestima los costes de encontrar el objetivo; A* es probablemente óptimo.

Un problema clásico que usa heurísticas es el puzzle-n. Contar el número de casillas mal colocadas y encontrar la suma de la distancia Manhattan entre cada bloque y su posición al objetivo son heurísticas usadas a menudo para este problema.

Page 26: Optimizacion-Combinatoria y Grafos

Problemas de Optimización y Problemas de Optimización y CombinatoriaCombinatoria

Dado un grafo GDado un grafo G =(V, E), =(V, E), uun n árbol árbol generador generador de de GG, es un subgrafo que es , es un subgrafo que es árbol y contiene a todos los vértices del árbol y contiene a todos los vértices del grafo. grafo.

Árbol GeneradorÁrbol Generador

Page 27: Optimizacion-Combinatoria y Grafos

Problema del Árbol GeneradorProblema del Árbol GeneradorMinimalMinimal

Supongamos que queremos generar un conjunto de nodos en el que, al menos, hay una Supongamos que queremos generar un conjunto de nodos en el que, al menos, hay una conexión entre  cada par de nodos. Ese conjunto podrá estar sometido a distintos conexión entre  cada par de nodos. Ese conjunto podrá estar sometido a distintos avatares, por ejemplo, interrupciones de líneas. Queremos ofrecer garantía de conexión avatares, por ejemplo, interrupciones de líneas. Queremos ofrecer garantía de conexión entre todos los nodos en caso de fallo. Para ello, buscamos el conjunto de lineas de entre todos los nodos en caso de fallo. Para ello, buscamos el conjunto de lineas de conexión mínimo, que mantiene todos los nodos conectados en todo momento. Este conexión mínimo, que mantiene todos los nodos conectados en todo momento. Este problema en general se conoce con el nombre del Problema del Arbol Generador Minimal problema en general se conoce con el nombre del Problema del Arbol Generador Minimal de un Grafo.de un Grafo.

Mas formalmente, supongamos un grafo conexo G donde G = (V,A) en el que hay una Mas formalmente, supongamos un grafo conexo G donde G = (V,A) en el que hay una matriz definida de pesos L(i,j) ³ 0 (donde los pesos definen, por ejemplo, la rapidez de matriz definida de pesos L(i,j) ³ 0 (donde los pesos definen, por ejemplo, la rapidez de conexión de cada nodo). conexión de cada nodo).

Se trata de encontrar un subconjunto T Í A tal que todos los nodos permanezcan Se trata de encontrar un subconjunto T Í A tal que todos los nodos permanezcan conectados cuando solo se usen aristas de T, y siendo la suma de los pesos de las aristas conectados cuando solo se usen aristas de T, y siendo la suma de los pesos de las aristas que hay en T tan pequeña como sea posible (distancia mínima). que hay en T tan pequeña como sea posible (distancia mínima).

Al grafo (V,T) se le llama Árbol Generador Minimal del grafo G, y para encontrarlo Al grafo (V,T) se le llama Árbol Generador Minimal del grafo G, y para encontrarlo disponemos de dos metodos: El Algoritmo de disponemos de dos metodos: El Algoritmo de   PRIMPRIM  y el Algoritmo de  y el Algoritmo de KRUSKALKRUSKAL . .

Page 28: Optimizacion-Combinatoria y Grafos

Camino más CortoCamino más Corto El El algoritmo de Dijkstraalgoritmo de Dijkstra, también llamado , también llamado algoritmo de caminos algoritmo de caminos

mínimosmínimos, es un , es un algoritmoalgoritmo para la determinación del para la determinación del camino más cortocamino más corto dado un dado un vérticevértice origen al resto de vértices en un origen al resto de vértices en un grafografo dirigido y con pesos en cada dirigido y con pesos en cada aristaarista. Su nombre se refiere a . Su nombre se refiere a EdsgerEdsger DijkstraDijkstra, quien lo describió por primera vez en 1959., quien lo describió por primera vez en 1959.

La idea subyacente en este algoritmo consiste en ir explorando La idea subyacente en este algoritmo consiste en ir explorando todos los caminos más cortos que parten del vértice origen y que todos los caminos más cortos que parten del vértice origen y que llevan a todos los demás vértices; cuando se obtiene el camino más llevan a todos los demás vértices; cuando se obtiene el camino más corto desde el vértice origen, al resto de vértices que componen el corto desde el vértice origen, al resto de vértices que componen el grafo, el algoritmo se detiene. El algoritmo es una especialización grafo, el algoritmo se detiene. El algoritmo es una especialización de la búsqueda de costo uniforme, y como tal, no funciona en de la búsqueda de costo uniforme, y como tal, no funciona en grafos con aristas de costo negativo (al elegir siempre el nodo con grafos con aristas de costo negativo (al elegir siempre el nodo con distancia menor, pueden quedar excluidos de la búsqueda nodos distancia menor, pueden quedar excluidos de la búsqueda nodos que en próximas iteraciones bajarían el costo general del camino al que en próximas iteraciones bajarían el costo general del camino al pasar por una arista con costo negativo).pasar por una arista con costo negativo).

Page 29: Optimizacion-Combinatoria y Grafos

El problema en si es sencillo, dado una lista de Pueblos El problema en si es sencillo, dado una lista de Pueblos y las distancias entre ellos, encontrar el camino más y las distancias entre ellos, encontrar el camino más corto entre dos pueblos. corto entre dos pueblos.

Para resolver este problema, el planteamientos que Para resolver este problema, el planteamientos que hicimos fue el siguiente: siempre iremos al pueblo que hicimos fue el siguiente: siempre iremos al pueblo que esté más cerca. Este planteamiento no nos garantiza esté más cerca. Este planteamiento no nos garantiza que encontremos el camino y que si lo encontramos que encontremos el camino y que si lo encontramos este sea el más corto;pero, algún tipo de heurístico este sea el más corto;pero, algún tipo de heurístico había que seleccionar así que el elegido fue el había que seleccionar así que el elegido fue el anteriormente nombrado. anteriormente nombrado.

Esquema Esquema

Descripción del problema Descripción del problema

Page 30: Optimizacion-Combinatoria y Grafos

Lo complicado del mismo es la resolución, pues para Lo complicado del mismo es la resolución, pues para saber el camino mas corto deberías calcular todos los saber el camino mas corto deberías calcular todos los caminos y por último quedarnos con el más corto. caminos y por último quedarnos con el más corto.

Otra limitación es la correspondiente a que el heurístico Otra limitación es la correspondiente a que el heurístico no garantiza la obtención de la solución óptima. no garantiza la obtención de la solución óptima.

Por último destacar que la comprobación de todas las Por último destacar que la comprobación de todas las ciudades a lo largo de todos los movimientos genera ciudades a lo largo de todos los movimientos genera unos altos tiempos de ejecución debida a una alta unos altos tiempos de ejecución debida a una alta complejidad temporal. complejidad temporal.

Limitaciones del problema Limitaciones del problema

Page 31: Optimizacion-Combinatoria y Grafos

Para representar el mapa de pueblos y Para representar el mapa de pueblos y distancias utilizamos una matriz, en el que distancias utilizamos una matriz, en el que cada celda representaria la distancia entre cada celda representaria la distancia entre los pueblos i y j. Si la distancia es 0 o los pueblos i y j. Si la distancia es 0 o negativa, entenderemos que esos dos negativa, entenderemos que esos dos pueblos no tienen camino entre ellos. pueblos no tienen camino entre ellos.

Solución del problema Solución del problema

Page 32: Optimizacion-Combinatoria y Grafos

El recorrido de esta matriz desde un origen hasta un destino ambos El recorrido de esta matriz desde un origen hasta un destino ambos conocidos, conlleva la obtención de los pueblos que actuan como conocidos, conlleva la obtención de los pueblos que actuan como union entre los dos.Este recorrido se realizará por aquellas union entre los dos.Este recorrido se realizará por aquellas distancias entre pueblos que sean más pequeñas. distancias entre pueblos que sean más pequeñas.

Si nos damos cuenta en el algoritmo anteriormente planteado, a lo Si nos damos cuenta en el algoritmo anteriormente planteado, a lo largo de cada iteración entre los pueblos que unen el origen y largo de cada iteración entre los pueblos que unen el origen y destino, estamos comprobando repetidas veces sitios ya visitados. destino, estamos comprobando repetidas veces sitios ya visitados. Una opción para reducir esa complejidad seria mantener un array Una opción para reducir esa complejidad seria mantener un array con el listado de las ciudades y para cada una de ellas una variable con el listado de las ciudades y para cada una de ellas una variable boolean. Esta variable tomará true cuando la ciudad ya haya sido boolean. Esta variable tomará true cuando la ciudad ya haya sido visitada, lo que permitirá antes de recorrer una ciudad, plantearse si visitada, lo que permitirá antes de recorrer una ciudad, plantearse si ya fue visitada, y en ese caso ignorarla. Con esto se reduciría la ya fue visitada, y en ese caso ignorarla. Con esto se reduciría la complejidad. complejidad.

Page 33: Optimizacion-Combinatoria y Grafos

Agente ViajeroAgente Viajero

El El problema del viajanteproblema del viajante es un ejemplo que muestra y analiza la es un ejemplo que muestra y analiza la problemática que subyace tras algunos tipos de problemas matemáticos problemática que subyace tras algunos tipos de problemas matemáticos que a priori parecen tener una solución relativamente fácil, y en la que a priori parecen tener una solución relativamente fácil, y en la práctica presentan un gran problema.práctica presentan un gran problema.

La respuesta al problema es conocida, es decir se conoce la forma de La respuesta al problema es conocida, es decir se conoce la forma de resolverlo, pero sólo en teoría, en la práctica la solución no es aplicable resolverlo, pero sólo en teoría, en la práctica la solución no es aplicable debido al tiempo que computacionalmente se precisa para obtener su debido al tiempo que computacionalmente se precisa para obtener su resultado (Para una mayor profundidad en el tema ver el artículo NP-resultado (Para una mayor profundidad en el tema ver el artículo NP-completos).completos).

El El problema del viajanteproblema del viajante (también conocido como (también conocido como problema del problema del viajante de comercioviajante de comercio o por sus siglas en inglés: o por sus siglas en inglés: TSPTSP) es uno de los ) es uno de los problemas más famosos (y quizás el mejor estudiado) en el campo de la problemas más famosos (y quizás el mejor estudiado) en el campo de la optimización combinatoria computacional. A pesar de la aparente optimización combinatoria computacional. A pesar de la aparente sencillez de su planteamiento, el TSP es uno de los más complejos de sencillez de su planteamiento, el TSP es uno de los más complejos de resolver y existen demostraciones que equiparan la complejidad de su resolver y existen demostraciones que equiparan la complejidad de su solución a la de otros problemas aparentemente mucho más complejos solución a la de otros problemas aparentemente mucho más complejos que han retado a los matemáticos desde hace siglos.que han retado a los matemáticos desde hace siglos.

Bases del ProblemaBases del Problema

Page 34: Optimizacion-Combinatoria y Grafos

Sean N ciudades de un territorio. El objetivo es Sean N ciudades de un territorio. El objetivo es encontrar una ruta que, comenzando y terminando en encontrar una ruta que, comenzando y terminando en una ciudad concreta, pase una sola vez por cada una de una ciudad concreta, pase una sola vez por cada una de las ciudades y minimice la distancia recorrida por el las ciudades y minimice la distancia recorrida por el viajante. Es decir, encontrar una permutación viajante. Es decir, encontrar una permutación PP = = {{cc0,0,cc2,...,2,...,cncn − 1} tal que − 1} tal que

sea mínimo. La distancia entre cada ciudad viene dada sea mínimo. La distancia entre cada ciudad viene dada por la matriz D: NxN, donde d[x, y] representa la por la matriz D: NxN, donde d[x, y] representa la distancia que hay entre la ciudad X y la ciudad Ydistancia que hay entre la ciudad X y la ciudad Y

Page 35: Optimizacion-Combinatoria y Grafos

La solución más directa es la que aplica la fuerza bruta: evaluar La solución más directa es la que aplica la fuerza bruta: evaluar todas las posibles combinaciones de recorridos y quedarse con todas las posibles combinaciones de recorridos y quedarse con aquella cuyo trazado utiliza la menor distancia. El problema reside aquella cuyo trazado utiliza la menor distancia. El problema reside en el número de posibles combinaciones que viene dado por el en el número de posibles combinaciones que viene dado por el factorial del número de ciudades (N!) y esto hace que la solución factorial del número de ciudades (N!) y esto hace que la solución por fuerza bruta sea impracticable para valores de N incluso por fuerza bruta sea impracticable para valores de N incluso moderados con los medios computacionales actualmente a nuestro moderados con los medios computacionales actualmente a nuestro alcance. Por ejemplo, si un ordenador fuese capaz de calcular la alcance. Por ejemplo, si un ordenador fuese capaz de calcular la longitud de cada combinación en un microsegundo, tardaría algo longitud de cada combinación en un microsegundo, tardaría algo más 3 segundos en resolver el problema para 10 ciudades, algo más 3 segundos en resolver el problema para 10 ciudades, algo más de medio minuto en resolver el problema para 11 ciudades y más de medio minuto en resolver el problema para 11 ciudades y 77.146 años en resolver el problema para sólo 20 ciudades.77.146 años en resolver el problema para sólo 20 ciudades.

Por ejemplo las rutas posibles entre 12 ciudades son (479 millones) Por ejemplo las rutas posibles entre 12 ciudades son (479 millones) 479.001.600 combinaciones y los caminos individuales entre 479.001.600 combinaciones y los caminos individuales entre ciudades son el sumatorio de las 12-1 ciudades es decir 66.ciudades son el sumatorio de las 12-1 ciudades es decir 66.

Se puede demostrar que el requerimiento de volver a la ciudad de Se puede demostrar que el requerimiento de volver a la ciudad de partida no cambia la complejidad computacional del problema.partida no cambia la complejidad computacional del problema.

Page 36: Optimizacion-Combinatoria y Grafos

MochilaMochila Un problema típico de programación entera es el que nos ocupa, “el Un problema típico de programación entera es el que nos ocupa, “el

problema de la mochila”, que responde a la siguiente situación: problema de la mochila”, que responde a la siguiente situación: imagínese hacer una excursión a la que solo podemos llevar una imagínese hacer una excursión a la que solo podemos llevar una mochila que, lógicamente, tiene una capacidad limitada. Cada objeto mochila que, lógicamente, tiene una capacidad limitada. Cada objeto que introducimos ocupa un volumen dentro de la misma y en que introducimos ocupa un volumen dentro de la misma y en contrapartida durante el viaje nos proporcionará un beneficio o utilidad contrapartida durante el viaje nos proporcionará un beneficio o utilidad (ejemplo: una cantimplora), el problema surge cuando debemos elegir (ejemplo: una cantimplora), el problema surge cuando debemos elegir qué objetos seleccionar para llevar en la mochila de forma que nuestro qué objetos seleccionar para llevar en la mochila de forma que nuestro beneficio sea máximo (tengamos todo lo necesario) sin exceder su beneficio sea máximo (tengamos todo lo necesario) sin exceder su capacidad.capacidad.

Esta situación se presenta con cierta frecuencia en los ámbitos Esta situación se presenta con cierta frecuencia en los ámbitos económico e industrial, donde la mochila suele representar la restricción económico e industrial, donde la mochila suele representar la restricción presupuestaria (cantidad máxima de recursos económicos de los que se presupuestaria (cantidad máxima de recursos económicos de los que se dispone) y donde la utilidad de los objetos seleccionados se equipara a dispone) y donde la utilidad de los objetos seleccionados se equipara a un beneficio económico por adquirir o llevar a cabo ciertas acciones.un beneficio económico por adquirir o llevar a cabo ciertas acciones.

Veamos a continuación un ejemplo de la aplicación del planteamiento de Veamos a continuación un ejemplo de la aplicación del planteamiento de la mochila al ámbito económico.la mochila al ámbito económico.

Page 37: Optimizacion-Combinatoria y Grafos

EjemploEjemplo: : Una empresa que fabrica lapiceros, “Escribe Bien S.A.” que en el ejercicio económico que se Una empresa que fabrica lapiceros, “Escribe Bien S.A.” que en el ejercicio económico que se cierra ha obtenido un excedente de 300.000€ (su beneficio neto, una vez descontados los cierra ha obtenido un excedente de 300.000€ (su beneficio neto, una vez descontados los impuestos y retribuidos los fondos propios es de 300.000€), esto le hace replantearse una impuestos y retribuidos los fondos propios es de 300.000€), esto le hace replantearse una posible inversión productiva (ampliar la capacidad productiva, ampliar la fábrica, contratar más posible inversión productiva (ampliar la capacidad productiva, ampliar la fábrica, contratar más trabajadores,....) que le permita incrementar su cartera de productos (número de productos que trabajadores,....) que le permita incrementar su cartera de productos (número de productos que tiene en el mercado). El gerente de la empresa, Don L, reúne a sus asesores financieros y tiene en el mercado). El gerente de la empresa, Don L, reúne a sus asesores financieros y comerciales para que determinen de forma conjunta qué productos serán los escogidos para la comerciales para que determinen de forma conjunta qué productos serán los escogidos para la ampliación de cartera.ampliación de cartera.

Los asesores comerciales sugieren los siguientes productos, basándose en estudios de Los asesores comerciales sugieren los siguientes productos, basándose en estudios de mercado que han realizado para estimar la cifra de negocios que cada nuevo producto mercado que han realizado para estimar la cifra de negocios que cada nuevo producto generará:generará: - Lápices de colores con un beneficio de 200.000 €, esta cuantía es la que relacionamos - Lápices de colores con un beneficio de 200.000 €, esta cuantía es la que relacionamos

con la utilidad que mencionábamos en la definición. con la utilidad que mencionábamos en la definición. - Gomas de borrar con un beneficio de 100.000 € - Gomas de borrar con un beneficio de 100.000 € - Minas para portaminas con un beneficio de 250.000 € - Minas para portaminas con un beneficio de 250.000 € - Carboncillos con un beneficio de 150.000 € - Carboncillos con un beneficio de 150.000 €

Por su parte, los asesores financieros han estudiado los costes que implica reformar las Por su parte, los asesores financieros han estudiado los costes que implica reformar las instalaciones productivas para poder incrementar la cartera de productos, estos costes se instalaciones productivas para poder incrementar la cartera de productos, estos costes se podrían equiparar al volumen que ocupan los objetos dentro de la mochila, por tanto, la suma podrían equiparar al volumen que ocupan los objetos dentro de la mochila, por tanto, la suma de estos costes deberá ser menor a la capacidad de la mochila, en este caso, los recursos de estos costes deberá ser menor a la capacidad de la mochila, en este caso, los recursos financieros sobrantes: 300.000€.financieros sobrantes: 300.000€. - Coste de las instalaciones para fabricar lápices de colores: 75.000 € - Coste de las instalaciones para fabricar lápices de colores: 75.000 € - Coste de las instalaciones para fabricar gomas de borrar: 150.000 € - Coste de las instalaciones para fabricar gomas de borrar: 150.000 € - Coste de las instalaciones para fabricar minas para portaminas: 100.000 € - Coste de las instalaciones para fabricar minas para portaminas: 100.000 € - Coste de las instalaciones para fabricar carboncillos: 50.000 € - Coste de las instalaciones para fabricar carboncillos: 50.000 €

Intuitivamente escogerá fabricar aquel producto que mayores beneficios le dé, si con la Intuitivamente escogerá fabricar aquel producto que mayores beneficios le dé, si con la inversión en la fabricación de ese nuevo producto no consume los 300.000 € podrá plantearse inversión en la fabricación de ese nuevo producto no consume los 300.000 € podrá plantearse aumentar aún más su cartera y así sucesivamente mientras le resten recursos.aumentar aún más su cartera y así sucesivamente mientras le resten recursos.

Page 38: Optimizacion-Combinatoria y Grafos

FormulaciónFormulación Para facilitar la comprensión del lector, antes de incorporar a este Para facilitar la comprensión del lector, antes de incorporar a este

escrito la formulación del problema, analizaremos las partes de las escrito la formulación del problema, analizaremos las partes de las que se compone la misma.que se compone la misma.

Datos del ProblemaDatos del Problema n: número de objetos entre los que se puede elegir. n: número de objetos entre los que se puede elegir. - ci : peso del objeto “i” - se refiere el objeto “í”-ésimo que no es - ci : peso del objeto “i” - se refiere el objeto “í”-ésimo que no es

más que una forma de hacer referencia a un objeto cualquiera más que una forma de hacer referencia a un objeto cualquiera que pueda ser incluido en la mochila -, es decir, ci representa el que pueda ser incluido en la mochila -, es decir, ci representa el coste de escoger un objeto, en tanto en cuanto va a ocupar un coste de escoger un objeto, en tanto en cuanto va a ocupar un “espacio de la mochila” que dejará fuera otros objetos. “espacio de la mochila” que dejará fuera otros objetos.

- bi: utilidad o beneficio que proporciona cada objeto, de nuevo - bi: utilidad o beneficio que proporciona cada objeto, de nuevo se hace referencia al objeto i-ésimo. se hace referencia al objeto i-ésimo.

- P: capacidad de la mochila, equivale al presupuesto máximo - P: capacidad de la mochila, equivale al presupuesto máximo del que se dispone. del que se dispone.

Page 39: Optimizacion-Combinatoria y Grafos

Variables a tener en cuenta Variables a tener en cuenta Los elementos a introducir en la mochila van a ser nuestras Los elementos a introducir en la mochila van a ser nuestras

variables objeto de análisis, cada variable la denotaremos como xi. variables objeto de análisis, cada variable la denotaremos como xi. El rasgo más importante de nuestras xi es que se tratan de El rasgo más importante de nuestras xi es que se tratan de variables dicotómicas o binaria, es decir, sólo pueden tomar dos variables dicotómicas o binaria, es decir, sólo pueden tomar dos valores, en este caso, escogeremos el valor “1” (si el objeto se valores, en este caso, escogeremos el valor “1” (si el objeto se incluye en la mochila) ó “0” (si el objeto se excluye de la mochila)incluye en la mochila) ó “0” (si el objeto se excluye de la mochila)

La restricción vendrá marcada por la capacidad máxima de la La restricción vendrá marcada por la capacidad máxima de la mochila, de tal forma que la suma de todos los objetos multiplicados mochila, de tal forma que la suma de todos los objetos multiplicados por el espacio que ocupan en la mochila no podrá exceder dicha por el espacio que ocupan en la mochila no podrá exceder dicha capacidad máxima. Su formulación matemática es la que sigue:capacidad máxima. Su formulación matemática es la que sigue:

Restricciones Restricciones

Page 40: Optimizacion-Combinatoria y Grafos

Función a MaximizarFunción a Maximizar Tal y como se expresa en la definición, el objetivo de este problema Tal y como se expresa en la definición, el objetivo de este problema

es seleccionar aquellos objetos que introducidos en la mochila nos es seleccionar aquellos objetos que introducidos en la mochila nos proporcionan una mayor utilidad. En otras palabras, lo que proporcionan una mayor utilidad. En otras palabras, lo que debemos hacer es maximizar la utilidad de nuestra mochila.debemos hacer es maximizar la utilidad de nuestra mochila.

Si redefinimos el problema introduciendo los elementos que Si redefinimos el problema introduciendo los elementos que mencionamos en las líneas precedentes llegaremos a la siguiente mencionamos en las líneas precedentes llegaremos a la siguiente formulación:formulación:

““El problema de la mochila consiste en llenar una mochila con n El problema de la mochila consiste en llenar una mochila con n objetos. Cada objeto i tiene un peso determinado ci siempre objetos. Cada objeto i tiene un peso determinado ci siempre positivo y una utilidad o valor asociado, también positivo, bi. Se ha positivo y una utilidad o valor asociado, también positivo, bi. Se ha de considerar además que la mochila tiene una capacidad limitada de considerar además que la mochila tiene una capacidad limitada P, por tanto, se han de escoger aquellos objetos xi que maximicen P, por tanto, se han de escoger aquellos objetos xi que maximicen la utilidad de quien llena la mochila sin exceder su capacidad”.la utilidad de quien llena la mochila sin exceder su capacidad”.

Ahora procederemos a formular el problema de la mochila:Ahora procederemos a formular el problema de la mochila: