Solucionador de Problemas de Asignación

Resuelve problemas de asignación utilizando el algoritmo húngaro. Implementa el algoritmo húngaro (Kuhn-Munkres) para encontrar la asignación óptima uno a uno…

Implementa el algoritmo húngaro (Kuhn-Munkres) para encontrar la asignación óptima uno a uno entre trabajadores y tareas, minimizando o maximizando el costo total con complejidad temporal O(n3).

¿Qué es el problema de asignación?

El problema de asignación es un problema fundamental de optimización combinatoria: dados n agentes y n tareas con una matriz de costos C, encontrar una asignación uno a uno que minimice el costo total.

El algoritmo húngaro (método Kuhn-Munkres, 1955) resuelve en O(n³). Reduce iterativamente la matriz mediante sustracción de filas y columnas, luego encuentra la asignación óptima mediante caminos aumentantes.

Para matrices rectangulares, se añaden filas o columnas ficticias con costo 0. Agentes o tareas no asignados se reportan por separado.

Formula: Minimizar Σ C[i][σ(i)] para todo i sujeto a que σ sea una permutación (correspondencia uno a uno) Pasos del método húngaro: 1. Restar los mínimos de fila 2. Restar los mínimos de columna 3. Cubrir los ceros con el mínimo de líneas 4. Ajustar la matriz y repetir hasta el óptimo

Ejemplo de cálculo

Matriz de costos: [[9,2,7],[6,4,3],[5,8,1]]. Reducción por filas → [[7,0,5],[3,1,0],[4,7,0]]. Reducción por columnas → [[4,0,5],[0,1,0],[1,7,0]]. Los ceros permiten una tarea por agente: Agente 1→Tarea 2 (costo 2), Agente 2→Tarea 1 (costo 6), Agente 3→Tarea 3 (costo 1). Costo total = 9, menor que el emparejamiento tentador Agente 2→Tarea 3, Agente 3→Tarea 1 (10).

Cuándo usar esta calculadora

Errores comunes a evitar

Cómo interpretar los resultados

Normas y referencias relacionadas

Preguntas frecuentes

¿Se puede maximizar?

Sí. Negar todos los costos o restar del máximo, luego resolver la minimización. La asignación óptima es la misma.

¿Si el número de trabajadores y tareas no es igual?

Se añaden filas o columnas ficticias con costo 0. Las asignaciones a entradas ficticias indican trabajadores o tareas no asignados.

¿Puede el problema de asignación manejar restricciones del mundo real como habilidades o disponibilidad de los trabajadores?

No directamente en la formulación básica. Sin embargo, puede codificar asignaciones inviables fijando su costo en un número muy grande (p. ej., 999999), lo que en la práctica impide que el algoritmo las seleccione. Para restricciones complejas, considere usar solucionadores de programación lineal entera.