Sei sulla pagina 1di 45

Teora de Redes

Optimizacin de redes es un tipo especial de modelo en programacin lineal.


Los modelos de redes tienen algunas ventajas importantes con respecto a la programacin lineal

Modelos de Redes
Pueden resolverse muy rpidamente. Esto permite que modelos de
redes sean usados en muchas aplicaciones para lo cual la programacin lineal no es lo ideal (toma de decisin en tiempo real).

Al reconocer que un problema de programacin entera puede


formularse como algn modelo de red nos entregar soluciones enteras sin necesidad de restricciones adicionales, aumentando la eficiencia y reduciendo el tiempo consumido por los algoritmos clsicos de programacin lineal

Problemas de redes pueden ser resueltos por pequeos algoritmos,


no importando el tamao del problema, dada su estructura matemtica.

Terminologa
Una red o grafo consiste en un conjunto de puntos y un conjunto de lneas que conectan pares de puntos. Los puntos se llaman nodos o vrtices y las lneas se llaman arcos o aristas, estos pueden tener una direccin asociada, en este caso se denominan arcos dirigidos. Arcos dirigidos

Nodos

Arcos

Terminologa
Se denomina flujo al valor que se le asigna a un arco que conecta dos nodos. Para nombrar el arco se pone primero el nodo de donde viene (origen), y luego el nodo hacia donde va (destino). Por ejemplo, si el flujo slo va desde el nodo C hacia al nodo D, entonces el arco se llama CD y no DC

4
A

B 7

6 D 3 E

Flujo

2 Arco CD C 5

3 F

6
4

Terminologa
Una trayectoria entre 2 nodos es una sucesin de arcos distintos que conectan estos nodos. Por ejemplo, una trayectoria que conecta al nodo A con el nodo G es AC - CE - EG. 6 D 7 2 C 5 Trayectoria 3 F E 6 4 G 3

4 A

Terminologa
Una trayectoria dirigida desde el nodo i al nodo j es una sucesin de arcos cuya direccin (si la tienen) es hacia el nodo j, de manera que el flujo del nodo i al nodo j a travs de esta trayectoria es factible.

Una trayectoria no dirigida del nodo i al nodo j es una sucesin de arcos cuya direccin (si la tienen) puede ser hacia o desde el nodo j. 4
A 7 2 AG Trayectoria dirigida C 5 E B 6 D 3 GA Trayectoria no dirigida

3 F

6
4

Terminologa
Un ciclo es una trayectoria que comienza y termina en un mismo nodo, se denomina ciclo dirigido cuando est formado por una trayectoria dirigida y ciclo no dirigido cuando la trayectoria que lo conforma es no dirigida
4 A 7 2 C 5 3 F E 6 4 G B 6 D 3

AC - CD - DB - BA es un ciclo dirigido

GE - EC - CF - FG es un ciclo no dirigido

Terminologa
Dos nodos se encuentran conectados si la red contiene al menos una trayectoria no dirigida entre ellos. Una red conexa es una red en la que cada par de nodos est conectado.

Red Conexa
A B A

Red No Conexa B

C D

E C D

Terminologa
La cantidad mxima de flujo que puede circular en un arco dirigido es llamada capacidad del arco. El nodo que tiene la propiedad de que su flujo que sale es mayor que el flujo que entra en l se le llama nodo fuente (o nodo origen). Por el contrario, si su flujo que sale es menor que el flujo que entra a l se le llama nodo demanda (o nodo destino). Si el flujo que entra es igual al flujo que sale, entonces se le llama nodo de trasbordo (o nodo intermedio) 4 Nodo Fuente A 3 C Nodo Demanda B Nodo de Transbordo 4

Terminologa
Un rbol es una serie de nodos conectados que no contiene ciclos. Un rbol de expansin es un rbol que conecta todos los nodos de la red (contiene n -1 arcos, donde n es el nmero de nodos)

rbol ABC C D E

rbol de Expansin rbol ACD

Problema del rbol de Expansin Mnima


Este problema considera una red no dirigida y conexa. En ella se debe encontrar un rbol de expansin con la longitud total mnima de sus arcos.
En la prctica se puede utilizar para: minimizar la cantidad de cable a utilizar para unir una serie de enchufes, minimizar la cantidad de tubera a utilizar para la instalacin de alcantarillado a una poblacin, etc.

Algoritmo de Prim
El algoritmo de Prim permite encontrar una buena solucin al problema del rbol de expansin mnima.

Se selecciona arbitrariamente cualquier nodo y se


conecta al nodo ms cercano distinto de ste.

Se identifica el nodo no conectado ms cercano a un


nodo conectado y se conectan mediante un arco.

Si quedan nodos sin conectar se vuelve al paso 2. Los


empates se solucionan arbitrariamente.

Algoritmo de Prim
4 A 7 2 C 3 E 6 F 4 A 2 C 5 3 F 4 E B 6 D 3 G

B D
3 G

Algoritmo de Prim
Se desea construir una red de caminos que permita conectar a siete ciudades. A continuacin se presentan los costos de conectar a cada par de ciudades. Los costos que aparecen en blanco indican que no es posible tcnicamente construir un camino directo entre ese par de ciudades.
Ciudad A B C D E F G A 3 5 5 B 3 1 7 C 5 1 1 3 3 D 5 1 4 E 7 3 1 4 F G

3 4 1 6

4 6 -

Algoritmo de Prim
Disear la red de caminos de manera de minimizar los costos de conectar a las ciudades. 7 B 3 A 5 1 5 D 4 F 1 C 3 3 1 E 4 G 6

AB BC CD

$3 $1 $1

CF FE
EG Costo

$3 $1
$4 $ 13

Problema del Camino ms Corto


El problema consiste en encontrar la ruta ms corta desde un origen a un destino. Para ello se considera una red conexa, y no dirigida, con un nodo origen, y un nodo destino. A cada uno de los arcos se les asocia una distancia. El objetivo es encontrar la trayectoria mnima del origen al destino.
B 3 A 5 D 4 F 5 1 1 C 3 7 3 1 6 E 4 G

Problema del Camino ms Corto


Existe una serie de algoritmos que abordan la solucin del problema del camino ms corto. A continuacin se vern 2 de estos mtodos:

Algoritmo de Floyd.

Algoritmo de Dijkstra.
El algoritmo de Floyd entrega las distancias ms cortas entre todos los pares de nodos de la red, generando una matriz de distancias mnimas, mientras que el de Dijkstra entrega el camino ms corto entre un par de nodos determinados.

Algoritmo de Floyd
Sea: n: nmero de nodos (dimensin de la matriz). Cik: distancia del nodo i al nodo k. i,k : 1..n.

1.- K= 0 2.- K= K+1 3.- i K / Cik j K / Ckj Calcular Cij = min {Cij, Cik + Ckj} 4.- Si K < n volver paso 2

Algoritmo de Floyd
Determine las mnimas distancias entre cada par de estos cuatro nodos que se presentan en la siguiente red.

5 1 1 9 3

2 2 2 4 1

Algoritmo de Floyd
A partir del grafo generamos una matriz de distancias. Las distancias que no existen se les asigna infinito ()

Nodo 1 2 3 4

1 0 5 9

2 5 0 1 2

3 9 2 0

2 1 0

Algoritmo de Floyd
Para K = 1 i1yj1

i=2 j=2 j=3 j=4 i=3 j=2 j=3 j=4


i=4 j=2 j=3 j=4

C22 = min {C22, C21 + C12} = min {0, 5 + 5} = 0 C23 = min {C23, C21 + C13} = min {2, 5 + 9} = 2 C24 = min {C24, C21 + C14} = min {2, 5 + } = 2 C32 = min {C32, C31 + C12} = min {1, 9 + 5} = 1 C33 = min {C33, C31 + C13} = min {0, 9 + 9} = 0 C34 = min {C34, C31 + C14} = min {1, 9 + } = 1 C42 = min {C42, C41 + C12} = min {2, + 5} = 2 C43 = min {C43, C41 + C13} = min {, + 9} = C44 = min {C44, C41 + C14} = min {0, + } = 0

Algoritmo de Floyd
Para K = 2 i2yj2

i=1 j=1 j=3 j=4


i=3 j=1 j=3 j=4 i=4 j=1 j=3 j=4

C11 = min {C11 , C12 + C21} = min {0, 5 + 5} = 0 C13 = min {C13 , C12 + C23} = min {9, 5 + 2} = 7 C14 = min {C14 , C12 + C24} = min {, 5 + 2} = 7 C31 = min {C31 , C32 + C21} = min {9, 1 + 5} = 6 C33 = min {C33 , C32 + C23} = min {0, 1 + 2} = 0 C34 = min {C34 , C32 + C24} = min {1, 1 + 2} = 1

C41 = min {C41 , C42 + C21} = min {, 2 + 5} = 7 C43 = min {C43 , C42 + C23} = min {, 2 + 2} = 4 C44 = min {C44 , C42 + C24} = min {0, 2 + 2} = 0

Algoritmo de Floyd
Para K = 3 i3yj3

i=1 j=1 j=2 j=4


i=2 j=1 j=2 j=4 i=4 j=1 j=2 j=4

C11 = min {C11 , C13 + C31} = min {0, 7 + 6} = 0 C12 = min {C12 , C13 + C33} = min {5, 7 + 0} = 5 C14 = min {C14 , C13 + C34} = min {7, 7 + 1} = 7 C21 = min {C21 , C23 + C31} = min {5, 2 + 6} = 5 C22 = min {C22 , C23 + C33} = min {0, 2 + 0} = 0 C24 = min {C24 , C23 + C34} = min {2, 2 + 1} = 2

C41 = min {C41 , C43 + C31} = min {7, 4 + 6} = 7 C42 = min {C42 , C43 + C33} = min {2, 4 + 0} = 2 C44 = min {C44 , C43 + C34} = min {0, 4 + 1} = 0

Algoritmo de Floyd
Para K = 4 i4yj4

i=1 j=1 j=2 j=3


i=2 j=1 j=2 j=3 i=3 j=1 j=2 j=3

C11 = min {C11 , C14 + C41} = min {0, 7 + 6} = 0 C12 = min {C12 , C14 + C42} = min {5, 7 + 2} = 5 C13 = min {C13 , C14 + C43} = min {7, 7 + 4} = 7 C21 = min {C21 , C24 + C41} = min {5, 2 + 6} = 5 C22 = min {C22 , C24 + C42} = min {0, 2 + 2} = 0 C23 = min {C23 , C24 + C43} = min {2, 2 + 4} = 2

C31 = min {C31 , C34 + C41} = min {6, 1 + 6} = 6 C32 = min {C32 , C34 + C42} = min {1, 1 + 2} = 1 C33 = min {C33 , C34 + C43} = min {0, 1 + 4} = 0

Algoritmo de Floyd
La matriz final de mnimas distancias es:

Nodo 1 2 3 4

1 0 5

2 5 0 1 2

7
2 0

7
2 1 0

6 7

Algoritmo de Dijkstra
Sea: a: nodo origen. z: nodo destino. w(v,x): distancia de v a x. T: conjunto de todos los vrtices. Asignar L(a) = 0, y L(x) = x a.
Si zT entonces parar, pues L(z) es la distancia mnima del nodo a hacia el nodo z.

1.
2.

3.
4.

Escoger vT / L(v) sea mnimo. Luego T = T- {v}.


xT / x sea adyacente a v hacer L(x) = min {L(x), L(v)+w(v,x)}. Volver al paso 2.

Algoritmo de Dijkstra
Un camin de transporte ubicado en la ciudad I debe trasladar urgentemente una carga a la ciudad F. Para ello existen distintas combinaciones de caminos. Se le pide a usted determinar la ruta ms corta entre ambas ciudades. Para ello se le entrega la siguiente tabla con distancias (km). Los valores en blanco indican que no existe camino.

Ciudad I A B C D E F

I 0 3 5 5

A 3 0 1

B 5 1 0 1 3 3

C D 5 7 1 3 0 0 4 1 4

E F

3 4 1 0 6

4 6 0

Algoritmo de Dijkstra
Representando el problema como una red queda:

A 3 I 5 C 5 1 B 1

7 D 3

4 F 6 E

1
3

Algoritmo de Dijkstra
a = nodo I, z = nodo F, y T = {I,A,B,C,D,E,F} L(I) = 0 y L(A) = L(B) = L(C) = L(D) = L(E) = L(F) = Sea V = I, T = {A,B,C,D,E,F} Adyacentes a V = I L(A) = min {L(A), L(I) + w(I,A)} = min {, 0 + 3} = 3 L(B) = min {L(B), L(I) + w(I,B)} = min {, 0 + 5} = 5 L(C) = min {L(C), L(I) + w(I,C)} = min {, 0 + 5} = 5 Sea V = A, T = {B,C,D,E,F} 3 A
3 0 I 5 5 C 5

Algoritmo de Dijkstra
Adyacentes a V = A L(B) = min {L(B), L(A) + w(A,B)} = min {5, 3 + 1} = 4 L(D) = min {L(D), L(A) + w(A,D)} = min {, 3 + 7} = 10 Sea V = B, T = {C,D,E,F}

Adyacentes a V = B L(C) = min {L(C), L(B) + w(B,C)} = min {5, 4 + 1} = 5 L(D) = min {L(D), L(B) + w(B,D)} = min {10, 4 + 3} = 7 L(E) = min {L(E), L(B) + w(B,E)} min {, 4 + 3} = 7 Sea V = C, T = {D,E,F}
Adyacentes a V = C L(E) = min {L(E), L(C) + w(C,E)} = min {7, 5 + 4} = 7 Sea V = D, T = {E,F}

Algoritmo de Dijkstra
Adyacentes a V = D L(E) = min {L(E), L(D) + w(D,E)} = min {7, 7 + 1} = 7 L(F) = min {L(F), L(D) + w(D,F)} = min { ,7 + 4} = 11 Sea V = E, T = {F} Adyacentes a V = E L(F) = min {L(F), L(E) + w(E,F)} min {11 , 7 + 6} = 11 Sea V = F, T = {} Nodo F al conjunto T, por lo tanto parar.

L(F) = 11 es la distancia mnima entre el nodo I y el nodo F

Ejemplos
Una empresa quiere comunicar mediante una red de computacin la casa matriz con sus 5 sucursales. El objetivo es permitir la comunicacin entre cualquier par de sucursales o casa matriz. Para esto, sin embargo, no es necesario tirar cables entre todos los pares, sino que pueden comunicarse dos sucursales a travs de otra.
Se trata de encontrar el rbol que minimiza la longitud de cable. La cantidad de cable necesario para conectar cada par se muestra en la siguiente tabla:
Matriz Suc 1 Suc 2 Suc 3 Suc 4 Suc 5 Matriz Suc 1 Suc 2 Suc 3 Suc 4 Suc 5 0 10 2 34 18 12 10 0 20 9 11 3 2 20 0 12 4 11 34 9 12 0 21 5 18 11 4 21 0 10 12 3 11 5 10 0

Ejemplos
Resolviendo por medio del Algoritmo de Prim
9 1 3 3 5 M2: 2 34 M 20 12 11 12 21 11 5 24: 4 M1: 10 15: 3 53: 5 10 4 Longitud: 24

10

18

Ejemplos
Una persona debe viajar desde un extremo de la ciudad al otro (desde A hacia I), recorriendo la mnima distancia, segn muestra el grafo a continuacin, determine la ruta y la distancia recorrida. Resolver por Dijkstra C
6 9 15 2

G E
9 3 13

A
4

D
3

H
7

Ejemplos
T = {A B C D E F G H I }
6 20 21

C
6 9

15
13 2 9

22

E
0

A
4

7 13

D
3

H
7

Ruta: A D E I

B
4

F
11

18 17

Ejemplos
Una firma ha ganado un contrato para producir cubiertas. El contrato tiene una duracin de 4 aos. El proceso de produccin requiere de una mquina que carece la firma. sta puede comprarla, mantenerla durante los 4 aos del contrato y luego venderla en el valor de su rescate, o puede reemplazarla por un modelo, al final de cualquier ao dado. Los nuevos modelos requieren menos mantenimiento que los antiguos. En la tabla se indica el costo neto estimado (precio de compra + mantenimiento - precio de venta) para una mquina comprada al inicio del ao i y vendida al inicio del ao j. Determinar en qu momento conviene remplazar la mquina.
Ao Ao Ao Ao Ao 1 2 3 4 5 Ao 1 Ao 2 Ao 3 Ao 4 Ao 5 12 19 33 49 14 23 38 16 26 13 -

Ejemplos
Resolviendo mediante algn algoritmo de camino ms corto
12; 1 1 33;
23

2
12 33

14 49 16 38

13

Respuesta: La mquina se debe reemplazar al inicio del ao 3 y se mantiene hasta el inicio del ao 5, con un costo total de 45

19

3
1 19;

26

5
1 49; 45; 3

Ejemplos
1.- Una central de radio taxi (punto 1) recibe un llamado telefnico para pasar a buscar a un cliente al Hotel (punto 5) y llevarlo al Aeropuerto (punto 7), determine la ruta utilizada por el taxista desde que sale de la central hasta que vuelve a la misma, de manera de realizar el mnimo recorrido.
1 2 3 4 5 1 2 3 4 5 6 7 8 4 5 8 4 7 5 6 9 3 5 4 3 6 7 6 6 9 8 6 7 6 8 9 3 9 -

7 3

5 4

6 7

Ejemplo
En este caso hay que resolver 3 problemas: ir del punto 1 al punto 5, despus del 5 al 7 y finalmente volver del 7 al 1.

Caso 1: 1 a 5
a = nodo 1, z = nodo 5 y T = {1, 2, 3, 4, 5, 6, 7, 8} L(1) = 0, L(x) = x 1 Sea V = 1, T = {2, 3, 4, 5, 6, 7, 8} Adyacentes a 1 L(2) = min { , 0+4} = 4 L(3) = min { , 0+7} = 7 L(4) = min { , 0+5} = 5 L(7) = min { , 0+8} = 8 Sea V = 2, T = {3, 4, 5, 6, 7, 8} Adyacentes a 2 L(3) = min {7 , 4+3} = 7 L(6) = min { , 4+6} = 10 L(8) = min { , 4+9} = 13

Ejemplo
Sea V = 4, T = {3, 5, 6, 7, 8} Adyacentes a 4 L(3) = min {7 , 5+5} = 7 L(7) = min {8 , 5+7} = 8 Sea V = 3, T = {5, 6, 7, 8} Adyacentes a 3 L(5) = min { , 7+4} = 11 L(7) = min {8 , 7+6} = 8 Sea V = 7, T = {5, 6, 8} Adyacentes a 7 L(6) = min {10 , 8+6} = 10 Sea V = 6, T = {5, 8} Adyacentes a 6 L(8) = min {13 , 10+9} = 13

Ejemplo
Sea V = 5, T = {8} Como 5 T Parar Camino ms corto es de largo 11 RUTA: 1 3 5 1 2 3 5

Caso 2: 5 a 7
a = nodo 5, z = nodo 7 y T = {1, 2, 3, 4, 5, 6, 7, 8} L(5) = 0, L(x) = x 5 Sea V = 5, T = {1, 2, 3, 4, 6, 7, 8} Adyacentes a 5 L(3) = min { , 0+4} = 4 L(8) = min { , 0+3} = 3 Sea V = 8, T = {1, 2, 3, 4, 6, 7} Adyacentes a 8 L(2) = min { , 3+9} = 12 L(6) = min { , 3+9} = 12

Ejemplo
Sea V = 3, T = {1, 2, 4, 6, 7} Adyacentes a 3 L(1) = min { , 4+7} = 11 L(2) = min {12 , 4+3} = 7 L(4) = min { , 4+5} = 9 L(7) = min { , 4+6} = 10 Sea V = 2, T = {1, 4, 6, 7} Adyacentes a 2 L(1) = min {11 , 7+4} = 11 L(6) = min {12 , 7+6} = 12 Sea V = 4, T = {1, 6, 7} Adyacentes a 4 L(1) = min {11 , 9+5} = 11 L(7) = min {10 , 9+7} = 10

Ejemplo
Sea V = 7, T = {1, 6} Como 7 T Parar Camino ms corto es de largo 10 RUTA: 5 3 7
Caso 3: 7 a 1 a = nodo 7, z = nodo 1 y T = {1, 2, 3, 4, 5, 6, 7, 8} L(7) = 0, L(x) = x 7 Sea V = 7, T = {1, 2, 3, 4, 5, 6, 8} Adyacentes a 7 L(1) = min { , 0+8} = 8 L(3) = min { , 0+6} = 6 L(4) = min { , 0+7} = 7 L(6) = min { , 0+6} = 6

Ejemplo
Sea V = 7, T = {1, 2, 3, 4, 5, 6, 8} Adyacentes a 7 L(1) = min { , 0+8} = 8 L(3) = min { , 0+6} = 6 L(4) = min { , 0+7} = 7 L(6) = min { , 0+6} = 6 Sea V = 3, T = {1, 2, 4, 5, 6, 8} Adyacentes a 3 L(1) = min {8 , 6+7} = 8 L(2) = min { , 6+3} = 9 L(4) = min {7 , 6+5} = 7 L(5) = min { , 6+4} = 10 Sea V = 6, T = {1, 2, 4, 5, 8} Adyacentes a 6 L(2) = min {9 , 6+6} = 9 L(8) = min { , 6+9} = 15

Ejemplo
Sea V = 4, T = {1, 2, 5, 8} Adyacentes a 4 L(1) = min {8 , 7+5} = 8 Sea V = 1, T = {2, 5, 8} Como 1 T Parar Camino ms corto es de largo 8 RUTA: 7 1 La ruta que debe utilizar el taxista es : 135371 1235371 Ambas rutas son de largo 29

Potrebbero piacerti anche