You are on page 1of 67

Optimizaci

on Combinatoria y en Redes

Problema de flujo de coste mnimo.


Problema de flujo maximo.
Problema de la mochila.
Problema de emparejamiento.

Arbol
de expansi
on de coste mnimo.
Problema del viajante.

Problema de flujo de coste mnimo


Hay muchos problemas que, a pesar de admitir modelos
on entera, tienen estructuras especiales
de programaci
recomendable no usar herramientas estandar.
Problemas de flujos en redes.
Variables flujos en arcos de una red. Las herramientas
de PL nos proporcionaran soluciones enteras.
Problemas combinatorios.
Modelos enormes pero muy estructurados.

Optimizaci
on en Redes: Terminologa

Arcos:
Grafo oriantado o red

A
D

Aristas:
Grafo no orientado

G
E
F

G = (N, A) o

Grafos mixtos
G = (V, A)

Optimizaci
on en Redes: Terminologa

A
D

E
F

Un camino es una sucesi


on de arcos adyacentes
que parten de un nodo (A)
y llegan a otro (G), y un
ciclo es un camino de un
nodo a el mismo. Un grafo conexo y sin ciclos se
denomina
arbol.

Optimizaci
on en Redes: Elementos b
asicos
Variables xij asociadas a los arcos: xij = flujo en (i, j).
Costes cij = coste por unidad de flujo en (i, j).
Capacidades lij /uij = flujo mnimo/maximo permitido en
(i, j).
Restriciones de conservaci
on de flujo; para cada nodo i:
flujo saliente

flujo entrante

xik
kN

xji
jN

= bi =

on(i)

producci
demanda(i)

si i genera flujo,
si i absorve flujo,
en otro caso.

Flujos en redes: Programaci


on Matem
atica
Flujo factible: viene dado por vector x tal que:
Ax = b
l x u
donde A es la matriz de incidencia nodos-arcos:
B

A
D

E
F

A=

1
-1
0
0
0
0
0

1
0
-1
0
0
0
0

1
0
0
0
0
-1
0

0
1
0
-1
0
0
0

0
0
1
-1
0
0
0

0
0
1
0
0
0
-1

0
0
0
1
0
0
-1

0
0
-1
0
1
0
0

0
0
0
0
-1
1
0

0
0
0
0
0
1
-1

0
0
0
0
-1
0
1

Flujos en redes: Programaci


on Matem
atica

Factibilidad
Para que un problema de flujos en redes tenga buenas
propiedades es necesario que sea equilibrado:
bi =

oferta =
i:bi>0

bi = demanda.
i:bi<0

Si no, el problema puede ser infactible. Si no lo es, podemos


equilibrar el problema a
nadiendo un nodo artificial.

Flujos en redes: Programaci


on Matem
atica

Propiedad de integridad: Si todos los elementos de b, l y


Ax = b
u son enteros, los vertices de
tienen compol x u
nentes enteras.

Podemos encontrar flujos enteros utilizando el metodo del


Smplex!

Adaptaciones del Smplex a problemas en redes.

Problema de flujo de coste mnimo


mn{c x|Ax = b; l
B

[12, (2, 5)]

10

[10, (1, 8)]

A
[ 9, (1, 5)]

u}
B

10

7
[15,(3, 10 )]

[11, (0, 15)]

C
[12, (0, 20)]

[ 20, ( 0, 10 )]

11

[5, (0, 10)]

11
G

G
[8,(1,12)]

[3, (0,5)]
8

1
E

0
10

[17, (0, 15)]


[c, (l, u)]

coste = 420

Flujo de coste mnimo: casos particulares


Podemos ver el problema de transporte como un problema de flujo de coste mnimo si consideramos la red
adecuada:
325
A

[25, (0 , inf)]
350

25 17 18 350
25 18 14 600
325 300 275

1
...

600

300

[18, (0 , inf)]
275

[14, (0 , inf)]

[0, (0 , inf)]

aux

50

El problema de transporte
El Smplex permite resolver el problema de transporte,
incluso con unidades indivisibles.
Si queremos que se requieran pocas iteraciones, necesitaon inicial. Para hallarla, podemos
remos una buena soluci
usar m
etodos heursticos
Para inicializar el metodo del Smplex no nos sirve cualquier
heurstica. Por que?
Porque necesitamos una heurstica que proporcione siempre
soluciones b
asicas.

El problema de transporte
En el caso del problema de transporte, tenemos varias
heursticas con esa propiedad.
Veremos la mas simple: La esquina noroeste
La veremos sobre el ejemplo:
Destinos
A
B
C producci
on
1 25 17 18
350
Orgenes
2 25 18 14
600
demanda 325 300 275

Problema de transporte: N-W corner


25

17

18

?
25

350
18

14

0
600

325
25

300
17

325
25

275

50

18

14

350
25

?
18

600
325

300

275

50

Problema de transporte: N-W corner


25

17
325

18

25

25

18

25
14

?
0 300 275
25

17
325

25

600
275
18

50
0

25
18

14
275
275

0
600
325

0
?
275

50

Problema de transporte: N-W corner


25

17
325

18

25

25

18
275
0

0
25

14

17
325

25
0

0
275
275

18

?
50
0

25
18

0
14

275
275

0
325
50

0
275
275

50
50
50

Flujo de coste mnimo: casos particulares

Dada una red con costes en los arcos y con dos nodos
distinguidos s y t el problema de caminos mnimos
consiste en encontrar el camino de coste total mnimo
entre todos los que unen s y t.
Esto es equivalente a resolver el problema de flujo de coste
mnimo en la red con producci
on 1 en el nodo s, demanda 1
en el nodo t, capacidades mnimas igual a 0 y capacidades
maximas infinitas.

Problema de caminos mnimos


B

12 (0, inf)]
[12,

10 (0, inf)]
[10,

s
9 (0,inf)]
[ 9,

15
[15,(0,
inf)]

D
11 (0, inf)]
[11,

C
12 (0, inf)]
[12,
[20
20, ( 0, inf )]

[5, 5(0, inf)]

t
G
8
[8,(0,
inf)]

[3, (0, inf)] E


3
17
[17, (0, inf)]

Problema de caminos mnimos


Un propiedad crucial de este problema es que las secciones
de un camino mnimo son a su vez caminos mnimos:

t
u

Esta propiedad es la base de la mayoria de los algoritmos


que se han dise
nado para resolver este problema.

Problema de caminos mnimos: costes


Cuando una red tiene algunos arcos con costes negativos,
debemos tener mucho cuidado:
B

-12

10

-9

15

D
-11

C
20

12

-6
5

t
8

-3

E
17

Ciclo de coste negativo Problema no acotado

Problema de caminos mnimos

Arbol
de caminos desde s al resto de nodos
Algoritmo de Dijkstra (Greedy).
Edsger W. Dijkstra (1930-2002), publicado en el 59

Solo para grafos con pesos/costes positivos.


Coincide con el smplex para redes.
Algoritmo de Bellman-Ford (Programaci
on Dinamica)
Si hay ciclos de coste negativo, los detecta.

Problema de caminos mnimos


Conjunto de caminos entre todos los pares de nodos
Algoritmo de Floyd-Warshall (1962)
(Programacion Dinamica)
Algoritmo muy parecido al de Bellman-Ford.
Se basan en el hecho que, dados 3 nodos cualesquiera
i, j, k, el coste del camino mnimo desde i hasta j no
puede superar a la suma de los costes del camino desde
i hasta k mas el del camino desde k hasta j.

Caminos mnimos: Algoritmo de Dijkstra

Lo veremos sobre un ejemplo:


3

1
s

8
B

Algoritmo de Dijkstra: Ejemplo


(2, s)

(2, s)
(inf,0)

1
s

(5,A)

(inf,0)

(inf,0)

8
B
(8, s )

D
(inf,0)

2
B
(7, A )

D
(inf,0)

Algoritmo de Dijkstra: Ejemplo


(2, s)

(2, s)
(5,A)

1
s

(5,A)

(11,C)

(11,C)

8
B
(6, C )

D
(12,C)

2
B
(6, C )

D
(6,B)

Algoritmo de Dijkstra: Ejemplo


(2, s)

(2, s)
(5,A)

1
s

(5,A)

(8,D)

(8,D)

8
B
(6, C )

D
(6,B)

2
B
(6, C )

D
(6,B)

El algoritmo de Dijkstra: Resumen

Paso 0 Inicializar S = , S = N . Para i N , inicializamos etiquetas


d(i) = , salvo la del nodo origen, d(s)=0. Predecesor p(s)=0.

Paso 1 Si S = , seleccionar i S con d(i) = mn{d(j) : j S}.


Mover i de S a S.
en caso contrario, FIN. Para cada nodo i, d(i) es la longitud del
camino mnimo de s a i.
Paso 2 Actualizar las etiquetas de los nodos adyacentes a i. Para
cada arco (i, j), si d(j) > d(i) + cij , entonces d(j) = d(i) + cij y
p(j) = i. Ir al Paso 1.

Problema de flujo m
aximo

El problema de flujo m
aximo se define sobre una red
con capacidades en los arcos, y dos nodos selectos; el nodo
fuente (s) y el nodo terminal (t).
El problema consiste en encontrar la mayor cantidad de
flujo que se puede mandar desde s hasta t respetando las
capacidades de los arcos.
El problema de flujo maximo tambien tiene la propiedad de
integridad.

El problema de flujo m
aximo

Existen distintos algoritmos para resolver este problema. La


mayoria se basan en la idea de camino aumentativo. Un
camino aumentativo es un camino en la red, que permite
aumentar la cantidad de flujo desde s hasta t:
mandandolo directamente
o redirigiendo el flujo existente

Problema de flujo m
aximo
1

s
1

1
B
2

B
2

Problema de flujo m
aximo
A

Problema de flujo m
aximo
A

Problema de flujo m
aximo
A

Problema de la mochila
Los problemas combinatorios consisten en identificar subconjuntos de un conjunto dado que, satisfaciendo algunas
propiedades preestablecidas, minimicen/maximicen su coste
asociado. Formalmente:
Dado un conjunto S y una familia de subconjuntos
de S, I P(S), encontrar el conjunto I I con el
menor coste (resp. mayor beneficio) asociado.
En general,
coste(I) =

eI

ce

El problema de la mochila (knapsack problem)

Dado un conjunto de objetos, cada uno con un volumen y


un beneficio asociados, determinar cual es el conjunto de
objetos mas provechoso que cabe en una mochila de una
capacidad determinada.
Programaci
on matem
atica
xi : tomo el objeto i
restriccion: i vixi cap.
objetivo: max i cixi

Optimizaci
on Combinatoria
S = conjunto de objetos
I: conjuntos de obj. que caben
objetivo:arg m
ax{c(I) : I I}

Problema de la mochila: Ejemplos


Escoger asignaturas de libre configuraci
on para alcanzar
los 14 creditos con el menor esfuerzo posible.
Decidir entre las inversiones mas prometedoras con un
presupuesto limitado.
Tambien se conoce como problema de la mochila la
version con una restricci
on de igualdad. (Min Set Sum).

Este
es la base de toda una famlia de sistemas de
criptografia de clave p
ublica. Entre ellos el de Merkle y
Hellman (1978) que fue uno de los primeros.

Problema de la mochila: Resoluci


on

Habitualmente, mediante metodos enumerativos:


programacion dinamica, ramificaci
on y acotaci
on.
Algunos autores recurren a metodos heursticos. Por ejemplo, tomar preferentemente artculos con valores altos de
cj /vj (greedy).
Muchos trabajos estudian la estructura de la envolvente
convexa de las soluciones factibles.

Problema de emparejamiento
Dado un grafo G=(N,A), B A es un emparejamiento
(perfecto), si cada nodo de N es incidente, como mucho
(exactamente), con una arista de B.
Objetivo: Encontrar el emparejamiento
de cardinal m
aximo (EM)
maximo/perfecto de peso mnimo (EPM)

Problema de emparejamiento: ejemplos

Emparejamiento no perfecto

Emparejamiento perfecto

Problema de emparejamiento: ejemplos


B

s
D

E
F

E
F

Existen grafos sin un emparejamiento perfecto.


El emparejamiento maximo no tiene por que ser u
nico.

Problema de emparejamiento: ejemplos


En la segunda guerra mundial la Royal Air Force (RAF)
inglesa estaba compuesta por varios pilotos procedentes de
distintos paises, que hablaban diferentes idiomas y tenian
distintos niveles de entrenamiento. La RAF tenia que asignar dos pilotos a cada avi
on, siempre asignando pilotos con
idiomas y niveles de entrenamiento compatibles al mismo
avion. A la RAF le interesaba hacer volar el maximo n
umero
de aviones posible.

Problema de emparejamiento: ejemplos


El grafo siguiente representa las calles de un barrio de cierta
ciudad. Un polica ubicado en el centro de una calle puede
vigilar los cruces de los dos extremos. Es posible vigilar
todos los cruces del barrio con 6 policas?
3

10

11

12

Emparejamiento de cardinal m
aximo:
enfoque OC
Conjuto de elementos S: Aristas del grafo
Subconjuntos validos I I:
conj. de aristas disjuntas 2 a 2
Costes:
maximizar cardinal (coste 1 en cada arista)

Emparejamiento de cardinal m
aximo:
enfoque PM
Variables: a A,
xa =

si a est
a en el emparejamiento

si no

Restricciones: v N ,
a(v) xa

Objetivo
max

aA xa

Problema de emparejamiento: resoluci


on
La mayora de los algoritmos especficos para encontrar el
EM son algoritmos iterativos que aumentan el cardinal de
un emparejamiento factible a cada iteraci
on. Las especializaciones de estos algoritmos para grafos bipartidos son
bastante mas eficientes.
Cuando se resuelven problemas de emparejamiento desde
la PM, se usan algoritmos de tipo branch and cut, ya que
se conoce la descripci
on completa de la envolvente convexa
de las soluciones factibles.


Arbol
de expansi
on de coste mnimo
Minimum spanning tree (MST)

Dado un grafo G=(N,A), T A es un


arbol de expansi
on
si G=(N,T) es un arbol;es decir:
no contiene subcircuitos

A
D

es conexo

E
F

En grafos dirigidos ignoraremos el sentido de los arcos.


Arboles
de expansi
on: (contra)ejemplos
B

A
D

A
D
C

G
E
F


Arboles
de expansi
on
Que pasa si a un arbol de expansi
on le quitamos un
arco?
Que pasa si a un arbol de expansi
on le a
nadimos un
arco?
Cuantos arcos tiene un arbol de expansi
on?


Arbol
de expansi
on de coste mnimo

Dado un grafo G=(N,A), con costes c asociados a los


arcos, el problema del
arbol de expansi
on de coste
mnimo consiste en encontrar el arbol de expansi
on de G
con el menor coste total, donde
coste(T ) =

ca
aT

MST: Ejemplos
El primer trabajo sobre el MST es debido a Dijkstra, que
desarrollo un algoritmo para este problema, para minimizar
la cantidad de cobre que necesitaba para las conexiones en
el panel su ordenador X1.
En realidad, este algoritmo fue publicado en el mismo
artculo donde Dijkstra presentaba su algoritmo para el
problema de caminos mnimos.

MST: Ejemplos
Compa
na de reforestaci
on quiere sembrar arboles en ocho zonas en
la misma area. Debe desarrollar un sistema de caminos de tierra para
tener acceso a cualquier zona desde cualquier otra. Las distancias entre
cada par de zonas son:
1
2
3
4
5
6
7
8

1
-

2
13
-

3
21
9
-

4
9
18
26
-

5
7
12
17
7
-

6
18
26
25
16
9
-

7
20
23
19
15
11
6
-

Entre que pares de zonas construirais caminos?


2-3, 2-4, 4-5, 1-5, 5-8, 6-7, 7-8

8
15
11
10
9
8
10
5
-

MST: Resoluci
on
Uno de los algoritmos mas conocidos para resolver este
problema es el algoritmo de Kruskal.
Se trata de un algoritmo tipo Greedy. A pesar de esto, la
estructura de este problema garantiza que este algoritmo
proporcione la soluci
on
optima.

MST: El algoritmo de Kruskal

Es un algoritmo iterativo.
En cada iteracion del algoritmo, se a
nade al conjunto de
arcos seleccionados el arco disponible de coste menor que
no forme circuito con los tomados anteriormente.
Finaliza cuando el subgrafo generado es conexo.

Algoritmo de Kruskal: ejemplo


A

A
7

5
5

D
8

6
F

6
G

Algoritmo de Kruskal: ejemplo


A

A
7

5
5

D
8

6
F

6
G

Algoritmo de Kruskal: ejemplo


A

A
7

5
5

D
8

6
F

6
G

Algoritmo de Kruskal: ejemplo


A

A
7

5
5

D
8

6
F

6
G

Algoritmo de Kruskal: ejemplo


A

A
7

5
5

D
8

4
1

6
F

6
G

El algoritmo de Kruskal: Resumen

Paso 0 Inicializar L =, conjunto de arcos ordenados. T =


Paso 1 Si G = (N, T ) es conexo, FIN. T define el arbol
optimo.
en caso contrario sacar el siguiente elemento de L, a.
Paso 2 Si a no forma un circuito con los arcos de T , actualizar
T = T {a}. Volver a Paso 1

MST: Extensiones
Una extension del MST es el problema del arbol de Steiner
de coste mnimo.
En este problema se pretende conectar un nodo fuente a
todo un conjunto de nodos sumideros, utilizando eventualmente otros nodos auxiliares de la red a un coste mnimo.
Este problema aparece, por ejemplo, en el dise
no de circuitos integrados.

Problema del viajante


Travelling Salesman Problem

(TSP)

Un viajante de comercio tiene que visitar un conjunto de


clientes y regresar despues al punto de partida. Antes de
salir, debe decidir en que orden visitara a sus clientes para
minimizar la distancia total recorrida.

Mas formalmente ...

El problema del viajante

Dado un grafo G = (N, A), un circuito Hamiltoniano en


G es es un circuito que pasa exactamente una vez por cada
nodo v N .
El problema del viajante de comercio se define sobre un
grafo (generalmente completo) con costes asociados a los
arcos y consiste en encontrar el circuito Hamiltoniano de
coste mnimo.

TSP desde la programaci


on matem
atica
Variables: Para cada par de nodos i, j N definimos
1 si se visita el nodo j despues de i
xij =
0 en otro caso
Objetivo: Minimizar

i=j cij xij

Restricciones:
Cada nodo debe preceder a otro:

xij = 1
i

Cada nodo debe tener un predecesor:

xij = 1
j

TSP desde la programaci


on matem
atica
Con este modelo podemos obtener:

.
Que falta?

El problema del viajante


Restricciones de ruptura de subcircuito

Para cada conjunto S

N con |S|

n/2 :

xa

a(S)

donde (S) es el conjunto de arcos con un extremo en S y otro fuera

El problema del viajante


Restricciones de ruptura de subcircuito

Cuantas de estas restricciones aparecen si tenemos


5 nodos? 16
10 nodos? 638
25 nodos? 16777216 !!
No se puede aplicar branch and bound al modelo completo.
Se relajan estas restricciones y se van a
nadiendo a medida
que hacen falta branch and cut

El problema del viajante


M
etodos heursticos

Resolver el problema del viajante de comercio de forma


exacta es muy caro. Cuando no sea imprescindible encontrar
el optimo recurriremos a metodos heursticos.
Se han desarrollado muchos metodos heursticos para este
problema, dadas sus extensas aplicaciones. Algunas heursticas son constructivas y otras de mejora.

TSP: M
etodos heursticos
Heur. constructivas
El vecino mas pr
oximo
Metodos de inserci
on
Heurstica de Christofides
Heur. de mejora
B
usqueda local (problema: optimos locales)
2-intercambios, etc.
Metodos avanzados/ Metaheursticas
B
usqueda tab
u , Algoritmos geneticos, Sistemas de
colonias de hormigas, simulated annealing. . .

You might also like