piapia123
es

Solucionador del problema de asignación (algoritmo húngaro)

Web

Todo se ejecuta en tu navegador: no se sube nada

Entrada
Arrastra un archivo aquí para cargarlo
Resultado

Dada una matriz de costes (lo que cuesta que cada persona haga cada tarea), encuentra el emparejamiento uno a uno con el menor (o mayor) total. Usa el algoritmo húngaro O(n³) (Kuhn–Munkres / Jonker–Volgenant), nunca la enumeración factorial: un 10×10 ya son 3,6 millones de permutaciones. La entrada admite una matriz numérica (las filas y columnas pasan a llamarse R1…, C1…) o una forma con etiquetas (nombres de columna en la primera línea y un nombre de fila al inicio de cada línea siguiente). También se gestionan las matrices no cuadradas: las filas sobrantes se quedan sin asignar y las tareas sobrantes sin hacer, cada una indicada en el resultado. Obtienes la asignación óptima (una fila copiable por emparejamiento) y el total. Todo se ejecuta en tu navegador.

Funciones

  • Solución óptima con el algoritmo húngaro, sin búsqueda por permutaciones
  • Minimización y maximización
  • Gestiona matrices no cuadradas e indica las filas o tareas sin asignar
  • Matrices numéricas y con etiquetas, detectadas automáticamente
  • Una fila por asignación, cada una copiable por separado
  • Indica el coste total (mostrado como valor total al maximizar)
  • Opción de exigir una matriz cuadrada, con un error claro si no lo es
  • Un resultado demostrablemente óptimo, respaldado por una aserción de óptimo conocido

Cómo se usa

  1. Pega la matriz de costes (solo números, o con nombres de fila y columna)
  2. Elige el tipo de problema: minimizar o maximizar
  3. Para una matriz no cuadrada, elige gestión automática o exigir cuadrada
  4. El resultado aparece según escribes; copia las asignaciones que necesites

Preguntas frecuentes

¿Qué formato de matriz acepta?
Dos formas. (1) Solo números: cada línea es una fila de costes, separados por espacios o comas, con filas y columnas llamadas R1… y C1…. (2) Con etiquetas: la primera línea lista los nombres de columna, y cada línea siguiente empieza por un nombre de fila seguido de sus costes. La regla es «si algún campo de la primera línea no es un número, se interpreta con etiquetas», así que una tabla puramente numérica nunca se malinterpreta.
¿Qué pasa cuando el número de filas y de columnas difiere?
En el modo automático, cuando hay más filas se añaden columnas sobrantes de coste cero y se listan las filas que quedan sin asignar; cuando hay más columnas se añaden filas sobrantes y se listan las tareas sin hacer. Se satisfacen todas las restricciones de fila y columna, y el total sigue siendo óptimo. Elige «Exigir una matriz cuadrada» si prefieres que lo rechace.
¿Es fiable el óptimo?
Sí. Usa el algoritmo húngaro estándar de camino aumentante más corto, O(n³), que encuentra el óptimo global para cualquier matriz de costes real. Una prueba fija una matriz 5×5 de óptimo conocido (óptimo 13) y otra lo contrasta con una enumeración por fuerza bruta sobre una 4×4.
¿Cómo se gestiona la maximización?
Los costes se niegan y luego se minimizan — matemáticamente es lo mismo que maximizar. El resultado muestra la suma de los valores originales y la etiqueta «Valor total», así que nunca ves una fila de números negativos.

Herramientas relacionadas