Vous êtes sur la page 1sur 4

2.

4 Emparejamientos

2.4

Emparejamientos

Una clase importante de problemas de optimizaci on combinatoria se presentan en los problemas de asignaci on: de obreros a trabajos, de trabajos a m aquinas, de barcos a muelles, etc.
o1 t o2 t o3 t o4 t Obreros= o1 , o2 , o3 , etc. Trabajos= t1 , t2 , t3 , etc. o1 puede realizar el trabajo t3 ; o2 los trabajos t2 y t3 ; etc. Se trata de asignar a cada obrero uno de los trabajos pendientes, si es posible.

t t1

t t2

t t3

t t4

t t5

Este tipo de situaciones, se modela con un grafo un poco especial: Denici on 27.- Un grafo G = (V, A) de dice bipartito si el conjunto de v ertices V puede separarse en dos conjuntos disjuntos V = S T de tal manera que las aristas del grafo unen siempre un v ertice de S con uno de T (es decir, no hay aristas entre los v ertices de S ni entre los v ertices de T ). Aunque la estructura bipartita del grafo modelo se hace evidente en el planteamiento del problema, conocer mejor este tipo de grafos permite obtener mejores y m as sencillas soluciones: Proposici on 28.- Un grafo G es bipartito si y s olo si no tiene ciclos de longitud impar. Demostraci on: En efecto, si G es bipartito, como las aristas unen u nicamente vertices de S con los de T , cualquier camino que construyamos es una sucesi on de v ertices alternados de S y T ( s1 t1 s2 t2 s3 t3 ). Entonces, si es un ciclo (camino cerrado) acaba en el v ertice inicial luego tenemos en el ciclo el mismo n umero de v ertices de S y de T luego es un n umero par de v ertices y, por tanto, un n umero par de aristas ( s1 t1 s2 t2 s3 t3 sk tk s1 ). Si G no tiene ciclos de longitud impar, para cada par de v ertices x, y V (supondremos G conexo, si no se aplicar a a cada componente conexa), todos los caminos que unen x con y tienen la misma paridad. Si no fuera as , uniendo dos caminos de distinta paridad se formar a un ciclo de longitud impar, lo que no es posible. Entonces, jado x , dividimos el conjunto V es dos S y T , en uno de ellos est an los v ertices cuyos caminos a x tiene longitud impar y en el otro los v ertices cuyos caminos a x tienen longitud par ( x est a a longitud 0 de x ). Estos dos conjuntos son disjuntos y verican la propiedad de la bipartici on. Esta caracterizaci on de los grafos bipartitos proporciona un m etodo sencillo para comprobar que lo son. Basta para ello recordar el signicado de las potencias de la matriz de adyacencia de un grafo: en particular, no habr a ciclos de orden impar si en la diagonal de las potencias impares s olo aparecen ceros. Esto nos lleva r apidamente a un prueba algor tmica de la bipartici on: Algoritmo de bipartici on Sea G un grafo de n v ertices y M su matriz de adyacencia:

Si diag (M ) = (0, 0, . . . , 0) el grafo no es bipartito, si se da la igualdad, comprobamos la siguiente potencia impar Si diag (M M 2 ) = (0, 0, . . . , 0) el grafo no es bipartito, si se da la igualdad, comprobamos la siguiente potencia impar Si diag (M 3 M 2 ) = (0, 0, . . . , 0) el grafo no es bipartito, si se da la igualdad, comprobamos la siguiente potencia impar sucesivamente, para todos los impares menores o iguales a n .

Matlab 6.1.

36

2.4 Emparejamientos

Denici on 29.- Un emparejamiento en G = (S T, A) es un conjunto E de aristas tales que ning un par de ellas tiene un v ertice en com un. Si el emparejamiento es del mayor n umero posible de aristas se denomina emparejamiento m aximo o de cardinal m aximo. Un v ertice se dice expuesto (o no cubierto) por un emparejamiento E si no es punto extremo de ninguna arista de E . Ser emparejamiento m aximo no signica que todos los v ertices est en emprejados con otro, sino que est an emparejados los m aximos posibles. Por ejemplo, si S tiene 5 v ertices y T tiene 7, a lo m as puede obtenerse un emparejamiento de tama no 5, pero tambi en es posible que no puedan emparejarse los 5 v ertices:
x1 t x2 t x3 t x4 t y1 t y2 t y3 t y4 t

G1
t x5 t x6 t x7 t x8

G2
t y5 t y6 t y7 t y8

En el grafo G1 el emparejamiento m aximo es de tama no 3, mientras que en G2 es de tama no 4. Un emparejamiento como el de G2 , que no deja ning un borde expuesto, de dice que es un emparejamiento completo (evidentemente, un emparejamiento completo es m aximo y s olo puede darse si los dos conjuntos tienen el mismo n umero de v ertices). Los v ertices x1 y x8 no est an cubiertos por el emparejamiento dado en G1 , es decir, son expuestos. La manera de proceder para obtener un emparejamiento m aximo, es ir incrementando paso a paso el cardinal del emparejamiento hasta hacerlo m aximo. Para esta idea es fundamental el concepto de camino aumentador Denici on 30.- Sea G = (S T, A) un grafo bipartito y E un emparejamiento en G . Un camino en G se dice un camino alternante de E si recorre, de manera alternada, aristas de E y de A E . Un camino aumentador de E es un camino alternante cuyos dos v ertices extremos est an expuestos por E (es decir, no son extremos de ninguna de las aristas de E ). Ejemplo.- Consideremos, en el grafo G2 del principio, el emparejamiento E = {y3 , y7 }, {y4 , y6 } S
y1 t y2 t y3 t y4 t Podemos construir varios caminos aumentadores, por ejemplo:
2

t T y5
1 S s

t y6
y y2

t y7 s
y3

t y8 s
y4

que aumenta el cardinal de E en uno, sin m as que cambiar unas aristas por otras:
2

El u nico camino aumentador posible para el nuevo emparejamiento es:

y5

y6

y7

y8

que basta con a nadirlo a E .

Este procedimiento, ya decribe un algoritmo de funcionamiento. La valided de dicho algoritmo la asegura el siguiente teorema. Teorema 31.- Un emparejamiento E es de cardinal m aximo si y s olo si no existe un camino aumentador de E .
Matlab 6.1.

37

2.4 Emparejamientos

La demostraci on del resultado es compleja, por lo que la obviaremos. Veamos como ha de ser el algoritmo a usar: se trata de ir aumentando el cardinal del emparejamiento mediante sucesivos caminos aumentadores, hasta que no se encuentren m as. Cada camino aumentador debe comenzar en un v ertice expuesto y seguir por un camino alternante hasta llegar a otro v ertice expuesto.

2.4.1

Algortimo de emparejamiento

Sea G = (S T, A) un grafo bipartito de n v ertices y E un emparejamiento en G (puede ser inicialmente E = ). Denotemos los v ertices por 1, 2, . . . , n . Paso 1 : Si en S no hay ning un borde expuesto, E es maximo. En caso contrario, etiquetar cada v ertice expuesto de S por 0 Paso 2 : Para cada v ertice j S y arista {j, k } / E , etiquetar el v ertice k con j , a menos que ya est e etiquetado. Paso 3 : Para cada v ertice k T cubierto por E , etiquetar al v ertice j por k , donde j es el v ertice de S extremo de la u nica arista {j, k } E . Paso 4 : Recorrer hacia atr as los caminos alternantes que acaban en un v ertice expuesto en T , usando las etiquetas soble los v ertices. Paso 5 : Si en el paso anterior, ninguno de los caminos alternantes es de aumento, entonces E es m aximo. En caso contrario, aumentar E usando un camino aumentador. Eliminar todas las etiquetas y volver al Paso 1. Veamos la aplicaci on del algoritmo sobre un emparejamiento dado, de nuevo sobre el grafo G2 : S 0 1 T
5

S 0 1

T
5 3

S 0 1

T
5 3
Los caminos aumentadores s olo pueden ser con nal en 5 y con nal en 8. Obtenemos 1 64 73 5

S
1 5

0 2

0 2

6 1

0 2

6 1
1 8 Como hay un camino aumentador, aumentamos el tama no del emparejamiento (usamos el primero que encontremos). Quitamos todas las etiquetas y volvemos al Paso 1.

7 4

7 3

7 4

4 Paso 1

4 Paso 2

8 1

6 4
Paso 3

8 1

4 Paso 5

S
1 5

S
1 5

S 6 1

T
5
Los caminos aumentadores s olo pueden ser con nal en 8. Obtenemos 2 61 8

S
1 5

0 2

0 2

6 2

0 2

6 2
Como hay un camino aumentador, aumentamos el tama no del emparejamiento (usamos el primero que encontremos). Quitamos todas las etiquetas y volvemos al Paso 1.

7 3

5 3

7 3

4 Paso 1

4 Paso 2

8 1

7 4
Paso 3

8 1

4 Paso 5

Lo que concluye el proceso.


Matlab 6.1.

38

2.4 Emparejamientos

2.4.2

Ejercicios

4.1 Considerar los grafos G1 y G2 anteriores. (a) Comprobar que se cumple la condici on de que no tienen ciclos de orden impar. (b) Si hicieramos la comprobaci on usando las potencias impares de las matrices de adyacencia, hasta que potencia debemos calcular? (c) Comprueba que en el grafo G1 no puede darse un emparejamiento completo. Introduce la matriz de adyacencia del grafo G2 como M. [i] Qu e tama no ha de tener M? Se aprecia alguna estructura especial en M? [ii] Calcular M3 , M5 y M7 y comprobar que sus diagonales son todas ceros. [iii] Cada potencia impar se obtiene de la siguiente multiplicando por M2 . Usar esto para escribir un programa con un bucle for que calcule las potencias impares necesarias. [iv] Construir una funci on Bipartito que introduciendole la matriz de adyacencia de un grafo devuelva un 1 o un 0 seg un el grafo sea o no bipartito. 4.2 Considerar en el grafo G1 el emparejamiento vac o. (a) Si aplico el algoritmo de emparejamiento, cu al es el etiquetado de los v ertices tras el paso 3? (por comodidad y por elegir un orden, los v ertices en el paso 2 y 3 se van tomando con los valores de menor a mayor). (b) Cuantos caminos aumentadores se encuentran en el paso 4? Usa el primero que se encontr o para aumentar el emparejamiento. (c) Repetir el algortimo hasta obtener un emparejamiento m aximo. Introduce la matriz de adyacencia del grafo G1 como M. [i] Usa la funci on Bipartito construida antes para comprobar que lo es. [ii] Introduce una matriz de dos las que en la primera aparezcan los v ertices y en la segunda el etiquetado encontrado en el apartado (a). [iii] C omo se encontrar a un camino aumentador que termine en el v ertice 5? Construye una matriz E para el emparejamiento conseguido por este camino aumentador. [iv] Repite el apartado [ii] anterior, pero obteniendo el etiquetado apartir de los datos de las matrices M y E. Buscar un camino aumentador usando los datos del nuevo etiquetado.

Pr actica (Segunda y u ltima parte).- Construir una funci on Parear para obtener un emparejamiento maximal de un grafo bipartito. Con las siguientes caracter sticas:
La entrada sea una matriz de un grafo bipartito, con los v ertices ordenados: primero los de S y luego los de T ; y el numero de vectores del primer conjunto. Que compruebe si el grafo es conexo o no usando la funci on Floyd y que compruebe que la matriz corresponde a un grafo bipartito. Que tenga dos salidas. La primera, un vector [(0)1, (0)1] que indique si el grafo es (no) conexo y si es (no) bipartito. Que la segunda salida sea la matriz vac a, si el grafo no es bipartito, y la matriz del emparejamiento m aximo (o una matriz que describa el emparejamiento) si el grafo es bipartito.
39

Matlab 6.1.

Vous aimerez peut-être aussi