Está en la página 1de 12

INACAP La Serena

Ingeniera en Informtica

Anlisis de Algoritmos

Algoritmo Hngaro. Solucin a los problemas de asignacin

Nombre Alumno: Pablo Caldern Villareal Nombre Profesor: Mauricio Torres Pizarro. Fecha: 08 Julio - 2011.

ndice:
ndice:................................................................................................................. 2 Introduccin........................................................................................................ 3 El Algoritmo Hngaro..........................................................................................4 Ejemplo prctico................................................................................................. 6 Conclusin.........................................................................................................11 Bibliografa........................................................................................................ 12

Introduccin
La presente investigacin da a conocer el algoritmo hngaro, que tambin es conocido como el algoritmo de la asignacin de Munkers, este mtodo resuelve problemas de minimizacin u optimizacin en cuanto a la asignacin de tiempos. Este algoritmo fue propuesto por Harold W. Khun en la dcada de 1.950 con el principal objetivo de resolver los problemas de acoplamiento mximo en grafos bipartidos. Desde aquel entonces su mtodo ha sido implantado en muchos proyectos y/o empresas para solucionar problemas de optimizacin. En este trabajo de investigacin, se explicar de una manera prctica cmo se debe aplicar el mtodo hngaro para resolver un caso en particular, que consiste en la asignacin de nuevos clientes a directivos de una empresa informtica. Tanto los clientes como los directivos sern tratados en una matriz de NxM, donde N sern los clientes y M los directivos encargados de prestar atencin a los clientes.

El Algoritmo Hngaro.
Este algoritmo nace por la necesidad de resolver problemas de asignacin de tiempos como una matriz de costo de NxM, donde cada elemento representa el costo de asignar al n trabajador al m trabajo. El algoritmo hngaro utiliza una metodologa para realizar la minimizacin sobre aquellos elementos de la matriz, como en el caso de un problema de minimizacin de precios. Para entender esto de una mejor manera, planteemos un ejemplo sencillo. Imaginemos que se tienen a tres trabajadores en su empresa, los cuales son Pedro, Juan y Diego. Luego necesitamos asignar a cada uno de los trabajadores a una tarea en especial, la cual consistir por ejemplo en limpiar los pasillos de la oficina, asear los baos y por ltimo ordenar la oficina del Gerente. Es entonces cuando surge la necesidad de realizar la asignacin a cada empleado de su organizacin para una tarea especfica, cada una con diferentes costos. Entonces debemos plantear al personal las tareas que se deben cumplir en una matriz de costos que se presenta a continuacin. Limpiar pasillos Pedro Juan Diego $10 $30 $30 Asear baos $20 $30 $30 Ordenar oficina del Gerente $30 $30 $20

Se podra determinar la asignacin del personal a cada tarea al ojmetro como lo llamamos en Chile, donde por ejemplo, Pedro
4

limpiar los pasillos, pues l solo cobra $10, as como podemos asignar a Juan para asear los baos que tiene un costo de $30 y a Diego a ordenar la oficina del Gerente por un costo de $20. Pues si realizamos la suma de asignar a cada empleado una tarea le dara un costo de $60. Esto lo hemos resuelto sin utilizar el mtodo hngaro, pues bien, ahora Qu sucedera si ya no fueran solo tres empleados ni tres tareas, sino que tenemos quince tareas y quince empleados con diferentes costos de asignacin? . Es en estos casos donde necesitaremos de un mtodo matemtico el cual logre resolver nuestro problema de asignacin para que nos permita obtener el menor costo posible, a esto se le llama optimizacin y/o minimizacin, y el algoritmo hngaro ofrece esta solucin. El algoritmo Hngaro utiliza el mtodo de eliminacin de Gauss, que realiza ciertos pasos para lograr que en una matriz aparezcan ceros, esto es, al menos un cero por fila y por columna. En esta serie de pasos anteriormente nombrada la eliminacin de Gauss consiste principalmente en ir reduciendo en cada paso el problema a un problema menor o mejor dicho, una ecuacin menos y a la vez una incgnita menos. Durante la metodologa del Algoritmo Hngaro se aplicar la eliminacin de Gauss para ir reduciendo un costo (valor) por columna y tambin por fila, posteriormente este valor se transformar en un cero.

Ejemplo prctico.
En una empresa informtica se tiene en carpeta a cuatro nuevos clientes que quieren invertir en nuestros proyectos. Pues necesitamos asignar a cada uno de los cuales estn clientes a cada uno de nuestros cuatro mejores en millones de pesos. Necesitamos directivos, y estos tienen a la vez un costo para nuestra empresa, los representados encontrar la solucin ptima de asignacin, esto quiere decir que lo que se debe conseguir, corresponde a la suma de los valores asignados como de menor costo en la matriz que no se repiten ni la fila ni en la columna. A continuacin se presenta en una matriz a los directivos y a los clientes y los respectivos costos que esto implica atenderlos. Los directivos son representados por las filas y los clientes por las columnas.

ORACLE Cristian Alejandro Jos Hans 15 14 11 21

SAP 19 15 15 24

Microsoft 20 17 15 26

IBM 18 14 14 24

El primer paso que se debe realizar, es encontrar el valor mnimo de cada fila. Hecho esto procedemos a restar en cada fila el valor menor
6

encontrado, esto es por ejemplo, en la fila correspondiente al directivo Cristian, el valor menor es 15, por lo tanto se realiza la resta por cada valor de su fila (15-15=0, 19-15=4, 20-15=5, 18-15=3). Este procedimiento se realiza por cada una de las filas. El resultado que debiera quedar es el siguiente.

ORACLE Cristian Alejandro Jos Hans 0 0 0 0

SAP 4 1 4 3

Microsoft 5 3 4 5

IBM 3 0 3 3

Anteriormente se explic que la solucin ptima es la suma de los valores asignados de menor costo, pues si apreciamos nuestra matriz, podemos contemplar que todava no podemos asignar a los nuevos clientes a cada uno de los directivos. (La asignacin se realiza cuando tenemos a lo menos un CERO por cada FILA y COLUMNA). Pues como la matriz resultante no cumple con esto, debido a que por ejemplo a Cristian le podramos asignar al cliente ORACLE, Alejandro podra tomar al cliente IBM, y a Jos no podemos asignarle ningn cliente debido a que no quedan ceros por asignar, lo mismo ocurre con Hans. Para resolver este problema, debemos realizar un procedimiento parecido al anterior, pero en vez de realizar la resta por FILA, debemos realizarla por COLUMNA. Entonces debemos seleccionar el valor menor de cada fila y realizar la resta correspondiente por cada una de ellas. (Ejemplo: en la columna del cliente SAP el valor menor es 1, entonces restamos 4-1=3, 1-1=0, 4-1=3, 3-1=2). Realizada la operacin (por cada columna) debemos tener lo se muestra a continuacin:
7

ORACLE Cristian Alejandro Jos Hans 0 0 0 0

SAP 3 0 3 2

Microsoft 2 0 1 2

IBM 3 0 3 3

Ahora si apreciamos bien, s tenemos al menos un cero en la columna de Jos y de Hans, pero no podemos asignarlos a ningn cliente, pues estos ya estn siendo atendidos por Cristian. Para resolver esto debemos realizar otro procedimiento, el cual consiste en trazar la mnima cantidad de lneas para abarcar las filas y columnas que tienen ceros en la matriz. Para entenderlo de mejor manera, ac se presenta el ejemplo explicado anteriormente.
ORACLE Cristian Alejandro Jos Hans 0 0 0 0 SAP 3 0 3 2 Microsoft 2 0 1 2 IBM 3 0 3 3

Luego de eso, debemos seleccionar el valor menor de la matriz que no se encuentre trazado (el n 1), para posteriormente restarlo con todos los dems valores que no estn trazados y a la vez, sumarlo con la interseccin de ceros que se forma entre los valores trazados. Hecho el procedimiento deber quedar esto:
ORACLE Cristian Alejandro 0 1 SAP 2 0 Microsoft 1 0 IBM 2 0 8

Jos Hans

0 0

2 1

0 1

2 2

Terminado este procedimiento, podemos darnos cuenta que ya se pueden asignar clientes y directivos (Cristian con Oracle, Alejandro con IBM, Jos con Microsoft) pero a Hans todava no lo podemos asignar, pues donde existe un cero, que es en la columna de ORACLE, ya se encuentra asignado al directivo Cristian. Para resolver este problema, procedemos a realizar el mismo paso anterior, que consiste en trazar la mnima cantidad de lneas y abarcar la mayor cantidad de ceros posibles. Esto debe quedar as:
ORACLE Cristian Alejandro Jos Hans 0 1 0 0 SAP 2 0 2 1 Microsoft 1 0 0 1 IBM 2 0 2 2

Ahora nuevamente repetimos el paso anterior, tomar el elemento menor de la matriz que no est trazado y restarlo con los que tampoco estn trazados, y sin olvidar sumarlo a los valores que se encuentran como interseccin de las columnas y filas trazadas. Resultando la siguiente matriz:
ORACLE Cristian Alejandro Jos Hans 0 2 0 0 SAP 1 0 1 0 Microsoft 1 1 0 1 IBM 1 0 1 1 9

Ahora podemos ver que s se pueden asignar los cuatro clientes nuevos a los cuatro directivos de la empresa, Cristian ser asignado a ORACLE, Alejandro a IBM, Jos ser asignado a Microsoft y por ltimo, Hans a SAP. Lo ltimo que se debe realizar es tomar los valores de las coordenadas de la matriz resultante (los ceros pintados de la matriz anterior) del algoritmo hngaro y reemplazarla por los valores originales de la primera matriz.
ORACLE Cristian Alejandro Jos Hans 15 14 11 21 SAP 19 15 15 24 Microsoft 20 17 15 26 IBM 18 14 14 24

Con esto se ha concluido el mtodo hngaro y se procede a realizar la suma correspondiente. 15 + 24 + 15 + 14 que es equivalente a 68 millones de pesos que viene siendo el costo mnimo para asignar a cada directivo de la organizacin un cliente diferente que quiere invertir en nuestros proyectos.

10

Conclusin
Esta investigacin present el algoritmo hngaro, utilizado como mtodo clsico en la resolucin de problemas lineales de distribucin o asignacin, adems hay que destacar que puede aplicarse a una gran cantidad de situaciones del mundo real. Es bastante til y puede ayudarnos muchsimo si alguna vez en nuestro trabajo tenemos la responsabilidad de asignar tiempos a nuestros trabajadores o colegas. Recordemos que generalmente los tiempos en nuestros trabajos se traducen en dinero, entonces si logramos optimizar los tiempos, directamente minimizaremos los costos. Por lo tanto cuando nos encontremos con problemas de asignacin no debemos olvidarnos de que existe una solucin que nos puede ayudar de manera ptima, en este caso, el algoritmo hngaro.

11

Bibliografa
http://es.wikipedia.org/wiki/Algoritmo_hngaro http://www.al.urcamp.tche.br/infocamp/edicoes/marc06/hungaro.pdf http://www.mitecnologico.com/Main/ElMetodoHungaroDeAsignacion

12

También podría gustarte