Está en la página 1de 41

CORRESPONDENCIAS Y

ASIGNACIONES

INTEGER PROGRAMMING
4.1. Rutas de aumento y optimalidad.

Ideas sobre Algoritmos Combinatorios


para encontrar el óptimo. .

Las iteraciones entre problemas


El movimiento de algoritmos
primales y duales usando las
primales desde una solución
condiciones de complementariedad
factible a una mejor solución.
de programación Lineal

 Suponga un grafo dado .

 
Definición 4.1. Una correspondencia (pareo) es un conjunto de arcos
disjuntos, esto es, como máximo un arco de una correspondencia es incidente a
cualquier nodo .
 Definición 4.1.. Un correspondencia es un conjunto de arcos disjuntos,
esto es, como máximo un arco de una correspondencia es incidente a
cualquier nodo .

En otras palabras es un conjunto de arcos sin vértices comunes. Ejemplos :

Observe que en cada Grafo, existe un conjunto de arcos (rojos), los


cuales son disjuntos, es decir que no comparten ningún nodo.
Definición
  4.2.. Un cubrimiento por nodos es un conjunto de nodos tal
que todo arco es incidente al menos a uno de los nodos de
 Ejemplo: Sea en el siguiente grafo.

1  
Note que todos los arcos(e1,e2,e3,e4) del
e2
e1 grafo inciden en al menos uno de los
3
nodos , por lo que es un cubrimiento por
2 nodos
e3
e4
4
 Sea en el siguiente grafo

1  
Note que el Arco e3 no incide en ninguno
e2
e1 de los nodos que pertenecen a , Por lo
3
tanto no es un cubrimiento por nodos; sin
2 embargo si es cubrimiento por nodos.
e3
e4
4
  ha mostrado que existe una dualidad débil entre correspondencia y cubrimiento por
Se
nodos. Es decir, para cada correspondencia y cada cubrimiento por nodos . Lo que
se pretende es resolver el problema de Correspondencia de Máxima Cardinalidad .
Para resolverlo es necesario examinar como construir correspondencias de
cardinalidad cada vez mayor.
Para resolver este problema de máxima cardinalidad se introducen los siguientes
conceptos.
 Definición 4.3. Una ruta alterna con respecto a una correspondencia es una
ruta

( es un nodo expuesto )
 Ejemplo: Sea la correspondencia , y

e1 1
0
e2
2  Note que es una ruta alterna.

e3
3 4
e4
Ruta de Aumento
 Una Ruta de Aumento es una ruta alterna que adicionalmente satisface la
siguiente condición:
( es expuesto).

Las rutas de aumento son útiles para encontrar las correspondncias de máxima cardinalidad.
 
Proposición 4.1. Dada una correspondencia y una ruta de aumento relativa a la
diferencia simétrica \ es una correspondencia con
 
Prueba. Como y no tocan a es una correspondencia. Como es
impar, = Por tanto
1  Arcos de
2  Arcos de

6 𝑴
  = { ( 3,4 ) ,(2,6) }

3  Ruta de Aumento
5
4
Ruta alterna Ruta de aumento
respecto a la respecto a la
correspondenci correspondencia
a M=(2,6), (3,4) M=(2,6), (3,4)

1(1,2)2 si no

1(1,2)2(2,6)6 si no

1(1,2)2(2,6)6(6,3)3 si no

1(1,2)2(2,6)6(6,3)3(3,4)4 si no

1(1,2)2(2,6)6(6,3)3(3,4)4(4,5)5 si si
1
 
Note que la existencia de una ruta de aumento
2
implica que M no es óptima, ya que existe
otra correspondencia, en este caso la cual
6 tiene dimensión Por lo que no es la
correspondencia con la dimensión máxima.
3
5
4

Por otro lado la proposición siguiente (recíproca de la 4.1) afirma:

 
Proposición 4.2. Si no hay una ruta de aumento relativa a una correspondncia,
entonces es de máxima cardinalidad (óptimo).

 
Prueba (No): Suponiendo que no es óptima. Entonces existe una correspondencia
con Considere el Grafo cuyos arcos están dados por . El grado de cada nodo en
este grafo es 0, 1, o 2. Por tanto los componentes conectados del Grafo son
caminos y ciclos. Para un ciclo C, los arcos se alternan entre , y los ciclos son de
longitud par y contienen el mismo numero de arcos de
 
(NO)Las rutas alternas pueden contener números pares o impares de
arcos. Como , una de las rutas debe contener más arcos de que de .
Esta ruta es por tanto un camino de aumento lo que es una contradicción.

Pero surgen las siguientes preguntas:


¿Se puede encontrar una ruta de aumento en tiempos polinomiales?.
Si la repuesta es no, ¿Hay una forma fácil (polinomial) de verificar que
la correspondencia es máxima?.
La respuesta es positiva si el grafo es bipartito.

Máxima Cardinalidad Bipartita de una correspondencia.

 Grafo Bipartito

Es un Grafo cuyos vértices pueden ser divididos en dos conjuntos disjuntos y


tal que cada arco conecta un vértice en con otro en
Grafo Bipartito
 
Dado un Grafo Bipartito donde y cada arco tiene un punto extremo en y otro
en , se pretende encontrar una correspondencia de máximo tamaño
(cardinalidad) en G. Para esto:

 Se supone que se ha encontrado una correspondencia

Se desea

Ó
Demostrar que no existe tal ruta
Encontrar una ruta de
de aumento y así probar que la
aumento.
correspondencia es óptima.

 
observación 4.1. Como las rutas de aumento son de longitud impar y el grafo
es bipartito, uno de los nodos expuestos de está en y el otro está en . Por
tanto basta con empezar enumerando desde el nodo
Bosquejo del Algoritmo para la correspondencia Bipartita de
Máxima Cardinalidad
 • Primero se etiquetan todos los nodos de que son disjuntos de M.
Estos nodos son candidatos para ser el primer nodo de una ruta alterna.

• Los primeros (y subsecuentes impares) arcos de una ruta alterna están en E \


M, y por tanto todos los arcos de los nodos etiquetados en son candidatos.
Los extremos finales de estos arcos en también son etiquetados.

• Los segundos ( y subsecuentes pares) arcos de una ruta alterna están en M,


y por tanto cualquier arco en M que toca un nodo etiquetado en es candidato.
Los puntos extremos finales de estos arcos en son entonces etiquetados.

• El Etiquetamiento se detiene cuando:


1 . Un nodo en que no es incidente a M es etiquetado, lo que significa que se
encontró una ruta de aumento.
2. No pueden ser etiquetados más arcos, así que ninguna de las rutas alternas
puede seguir siendo extendida.
Algoritmo para la Correspondencia Bipartita de Máxima Cardinalidad

 Paso 0. es dado. es una correspondencia . Ningún nodo está etiquetado ni


escaneado.

 Paso 1. (etiquetamiento)
1.0. Ponga un * a cada nodo expuesto en (cada nodo que no es incidente a
M).
1.1. Si no quedan etiquetas no escaneadas, vaya al paso 3. Escoja un nodo
etiquetado no escaneado i. Si vaya a 1.2. Si vaya a 1.3.
1.2. Escanee el nodo etiquetado . Para todo dé
a j la etiqueta i si j está sin etiquetar. Retorne al paso 1.1.
1.3.Escanee el nodo etiquetado Si es expuesto vaya al paso 2. De otra
manera encuentre el arco y dé al nodo la etiqueta . Retorne a 1.1.
 Paso 2. (Aumento ).
Una ruta de aumento ha sido encontrada. Use las etiquetas para dar marcha
atrás desde y así encontrar la ruta de aumento .
Aumente Remueva todas las etiquetas. Retorne al paso 1.

 
Paso 3. (No hay ruta de aumento )
Sean los nodos de y que están etiquetados y los nodos no etiquetados .

 Teorema 4.3. En la terminación del algoritmo,


Ejemplo 4.1.
 
Considere el Grafo Bipartito mostrado a continuación de 10 nodos y 9
arcos, y la correspondencia inicial .

Paso 1:
Paso 0
1.0. Etiquetando nodos
expuestos de V1
𝑉
  1 𝑉
  2 𝑉
  1 𝑉
  2
1 6
1 6
*
2 7
* 2 7

3 8 3 8

4 9
* 4 9

5 10
5 10
𝑉
  1 𝑉
  2
1 6
*
* 2 7

3 8

* 4 9

5 10

 1.1 Escoger el nodo 1 1.2


1.2 Escanear el nodo 1. Dar al nodo 8 la etiqueta 1. Retornar al 1.1
𝑉
  1 𝑉
  2
1 6
*
* 2 7

3 8
1

* 4 9

5 10

 1.1 Escoger el nodo 8 1.3


1.3 Escanear el nodo 8. Dar al nodo 3 la etiqueta 8. Retornar al 1.1
𝑉
  1 𝑉
  2
1 6
*
* 2 7

8 3 8
8 1

* 4 9

5 10

 1.1 Escoger el nodo 3 1.2


1.2 Escanear el nodo 3. Dar al nodo 7 la etiqueta 3. Retornar al 1.1
𝑉
  1 𝑉
  2
11 6
*
* 2 7 3

8 33 8
8 1

* 4 9

5 10

 1.1 Escoger el nodo 7 1.3


1.3 Escanear el nodo 7.Es expuesto (no está en M). Ir al paso 2
𝑉
  1 𝑉
  2
11 6
*
* 2 7 3

8 33 8
8 1

* 4 9

5 10

 Paso 2 (Aumento). Se encontró una ruta de aumento P=(1,8) (3,8) (3,7)


() =(1,8) (3,8) (3,7) (5,10)
= (3,8)
M= . Remover las etiquetas y retornar al paso 1
𝑉
  1 𝑉
  2
1 6

2 7

3 8

4 9

5 10

 Paso 1. Dar la etiqueta * a cada nodo expuesto (No en M) en 2, 4


1.1 Escoger el nodo 4. Ir a 1.2
1.2 Escanear el nodo 4. Dar a los nodo 8 y 10 la etiqueta 4. Retornar a 1.1.
𝑉
  1 𝑉
  2
1 6

* 2 7

3 8
4

* 44 9

5 10 4

1.1 Escoger el nodo 10. Ir a 1.3


1.3 Escanear el nodo 10 (No es expuesto: está en M). Dar al nodo 5 la
etiqueta 10. Retornar a 1.1
𝑉
  1 𝑉
  2
1 6

* 2 7

3 8
4

* 4 9

10 5 10 4

1.1 Escoger el nodo 10. Ir a 1.2


1.2 Escanear el nodo 5. Dar a los nodos 6, 9 la etiqueta 5.
Retornar a 1.1
𝑉
  1 𝑉
  2
1 6 5

* 2 7

3 8
4

* 4 9 5

10 5 10 4

1.1 Escoger el nodo 6. Ir a 1.3


1.3 Escanear el nodo 6. Es expuesto (No está en M). Ir al paso 2
𝑉
  1 𝑉
  2
1 66 5

* 2 7

3 8
4

* 4 9 5

10 5 10 4

 
Paso 2. Se encontró una ruta de aumento: P=(4,10) (5,10) (5,6)
() =(1,8) (3,7) (5,10) (4,10) (5 6)
= (5,10)
M= . Remover las etiquetas y retornar al paso 1
𝑉
  1 𝑉
  2
1 6

2 7

3 8

4 9

5 10

 Paso 1. Dar la etiqueta * a cada nodo expuesto (No en M) en 2


1.1 Escoger el nodo 2. Ir a 1.2
1.2 Escanear el nodo 2. Dar al nodo 8 la etiqueta 2. Retornar a 1.1.
𝑉
  1 𝑉
  2
1 6

* 2 7

3 8
2

4 9

5 10

1.1 Escoger el nodo 8. Ir a 1.3


1.3. Escanear el nodo 8. Dar al nodo 1 la etiqueta 8. Dar al nodo 1 la
etiqueta 8. Retornar a 1.1
𝑉
  1 𝑉
  2

8 1 6

* 2 7

3 8
8 2

4 9

5 10

1.1 Escoger el nodo 1. Ir a 1.2


1.2 Escanear el nodo 1. No hay (1,j) no en M. Retornar a 1.1
𝑉
  1 𝑉
  2

8 11 6

* 2 7

3 8
8 2

4 9

5 10

1.1 No hay nodos no escaneados. Ir al paso 3.


𝑉
  1 𝑉
  2

8 11 6

* 2 7

3 8
8 2

4 9

5 10

 Paso 3 (No hay ruta de aumento).

R=
4.3 El Problema de Asignación

 Dado un Grafo Bipartito y pesos para un problema es encontrar una


correspondencia de máximo peso. De los resultados de unimodularidad
total, se conoce que basta con resolver el programa lineal:
 
 
 
  ) son los arcos que tiene un extremo en el nodo i.

 Cuando y el problema es tratar de encontrar una correspondencia de tamaño n


de máximo peso, se obtiene el problema de asignación.

 
 
 
𝑥  𝑖𝑗 ≥0 𝑝𝑎𝑟𝑎 𝑖 , 𝑗=1 ,… ,𝑛
Tomando el dual de programación lineal del problema de asignación se obtiene:

 
𝑢  𝑖+𝑣 𝑗 ≥ 𝑐 𝑖𝑗 𝑝𝑎𝑟𝑎 𝑖 , 𝑗=1 , … , 𝑛

 Proposición 4.4. Para todos los valores , el valor de cualquier


asignación con pesos difiere por una cantidad constante de su valor con
los pesos .

 
Esto significa que una solución es óptima con pesos si y sólo si es
óptima con los pesos = .
Prueba
Para cada solución factible primal,

 𝑛 𝑛 𝑛 𝑛

∑ . ∑ ´𝑐𝑖𝑗 𝑥 𝑖𝑗=∑ . ∑ (𝑐 ¿¿𝑖𝑗 −𝑢𝑖 − 𝑣 𝑗 )𝑥𝑖𝑗 ¿


𝑖=1 𝑗=1 𝑖=1 𝑗=1
  𝑛 𝑛 𝑛
¿ ∑ . ∑ 𝑐 𝑖𝑗 𝑥 𝑖𝑗 − ∑ 𝑢𝑖 ¿ ¿
𝑖=1 𝑗=1 𝑖=1
  𝑛 𝑛 𝑛 𝑛
¿ ∑ . ∑ 𝑐 𝑖𝑗 𝑥 𝑖𝑗 − ∑ 𝑢𝑖 − ∑ 𝑣 𝑗
𝑖=1 𝑗=1 𝑖=1 𝑗=1

 Asi que para cualquier solución factible del primal, la diferencia en los valores
de los dos objetivos siempre será el valor constante
 
Proposición 4.5. Si existen valores y una asignación tal que:
(Factibilidad dual)
(Complementariedad)
Entonces el problema de asignación es óptimo y tiene valor

 Prueba.
ya que para todo el valor de una asignación óptima con pesos es
necesariamente no positiva. Pero por la condición (ii), con pesos , la
asignación x tiene un valor de y por lo tanto es óptima.

Por otro lado, de la proposición 4.4 x también es óptima con pesos y con un
valor de .

 
Observe que y son las condiciones de factibilidad y complementariedad de
programación lineal pero escritas de una manera distinta.
Idea del algoritmo para encontrar una asignación
(correspondencia de tamaño n) óptima en un Grafo Bipartito

 • Se usará un algoritmo primal-dual en el grafo donde consiste de los


arcos con un punto en y otro en .
• En todo momento se tendrá una solución factible u, v del problema dual, o
en otras palabras para todo , .

• Entonces se pretende encontrar una correspondencia de tamaño n


usando sólo los arcos donde . Para hacer esto, se debe resolver el
problema de correspondencia de máxima cardinalidad en el grafo (V1,V2,)
usando el algoritmo ya visto.
• Si la correspondencia encontrada es de tamaño n, entonces por la
proposición 4.5 se obtiene una asignación de peso óptimo.

• El algoritmo mantiene la factibilidad del dual y trata de recuperar la


factibilidad del primal (n variables = 1)
Algoritmo del Problema de Asignación
 
Paso 0. Sea u, v los pesos iniciales tal que , para todo i, j. Sea . Encuentre una
correspondencia de máxima cardinalidad en el grafo usando el algoritmo
descrito en la sección anterior.

Si deténgase, es óptimo.
De lo contrario, establezca la correspondencia y los nodos etiquetados en
terminación. Vaya al paso dos.

 
Paso 1. (paso Primal). Sea es una correspondencia factible , y , son
etiquetas factibles. Continúe con el algoritmo de máxima cardinalidad visto
en la sección anterior para encontrar la correspondencia óptima.
Si deténgase, es óptimo.
De lo contrario, establezca la correspondencia y los nodos etiquetados
Vaya al paso 2.
 Paso 2 (paso dual). Cambie las variables duales como sigue:
Establezca .
Establezca -
Establezca .
Retorne al paso 1.

Este algoritmo tiene complejidad O(n4)

Ejemplo 4.2.
Considere una instancia del problema de asignación con n=4 , y la matriz de
beneficio:

 =
 Aplicando el algoritmo de asignación en el paso 0, se encontró una primera
solución dual factible al establecer y =0

Esto dio como resultado la siguiente solución factible dual con su matriz reducida
de beneficio:

 
Con
(𝑐 ¿¿𝑖𝑗 ¿´¿1)=¿¿¿¿

 La solución dual tiene el correspondiente valor de =66.

 
Observe que la fila dos de la matriz no tiene valores de cero, por lo que es
posible mejorar la solución dual y aún más importante, se puede añadir otro
arco a como se muestra a continuación.
 Para mejorar la matriz de beneficio. Se establece y se obtiene la
nueva matriz reducida de beneficio:

´  
Con
(𝑐  ¿¿ ¿¿2)=¿¿¿¿
𝑖𝑗

Con el valor de la función objetivo dual de 64.


Paso Primal una vez construido el Grafo y con una correspondencia inicial,
obtenida en forma agresiva se usa el algoritmo de ruta de aumento y se
obtiene el grafo etiquetado como sigue:
1 1’
 𝑀 = {( 1,1′ ) , ( 3,2′ ) , ( 4,3′ ) }

* 2 2’ 𝑐𝑜𝑛
  |𝑀 |=3

 
Note que los arcos del grafo se construyen
3 3’ 2 teniendo en cuenta los ceros en la matriz reducida
de beneficio. (Proposición 4.5.
complementariedad.)
3’ 4 4’
Paso Primal 1 1’

 
Observando las etiquetas que
recibe cada Nodo. Se tiene que: , * 2 2’

3 3’ 2

3’ 4 4’

 Ya que entonces se deben cambiar los duales para obtener una
correspondencia diferente.
Paso Dual
  puede ver que =2. Esto lleva a una solución dual modificada y a la matriz
Se
reducida de beneficio siguientes:

 
Con
´
(𝑐 ¿¿𝑖𝑗 ¿¿3)=¿¿¿¿
La solución dual ahora
tiene un valor de 62.
 • Paso Primal: Con esta nueva matriz, el
arco (4,4’) es adicionado a
´
(𝑐 ¿¿𝑖𝑗 ¿¿3)=¿¿¿¿
• Partiendo de la misma correspondencia
anterior: (1.1), (3,2), ((4,3), se encuentra
la ruta de aumento:

1 1’
• Note que es una correspondencia más
largo y que es de tamaño n=4, que es lo
que busca el algoritmo. Es por tanto
* 2 2’
óptimo.

3 3’ 2

3’ 4 4’
4

También podría gustarte