Tengo 2 conjuntos de enteros, A y B, no necesariamente del mismo tamaño. Para mis necesidades, tomo la distancia entre cada 2 elementos a y b (enteros) para que sea solo abs(a-b)
.Medida de distancia entre dos conjuntos de tamaño posiblemente diferente
estoy definiendo la distancia entre los dos conjuntos como sigue:
- Si los conjuntos son del mismo tamaño, minimizar la suma de las distancias de todos los pares [a, b] (a partir de A y B desde B), minimización sobre todas las posibles 'particiones de pares' (hay n! particiones posibles).
- Si los conjuntos no son del mismo tamaño, digamos A de tamaño m y B de tamaño n, con m < n, luego minimice la distancia desde (1) sobre todos los subconjuntos de B que son de tamaño m.
Mi pregunta es, es el siguiente algoritmo (solo una suposición intuitiva) da la respuesta correcta, de acuerdo con la definición escrita anteriormente.
- construir una matriz de
D
de tamañom X n
, conD(i,j) = abs(A(i)-B(j))
- Encontrar el elemento más pequeño de
D
, acumularlo, y eliminar la fila y la columna de ese elemento. Acumule la siguiente entrada más pequeña y continúe acumulándose hasta que se eliminen todas las filas y columnas.
por ejemplo, si A={0,1,4}
y B={3,4}
, entonces D
es (con los elementos por encima ya la izquierda):
3 4
0
3 4
1
2 3
4
1 0
Y la distancia es 0 + 2 = 2
, procedente de emparejamiento con 4
4
y 3
con 1
.
+1: agradable señalando que el problema tiene una estructura no presente en la coincidencia bipartita general – lijie
Gracias. Como el tamaño máximo 'N' está limitado en mi caso de uso, puedo construir una tabla de todas las distancias para todos los tamaños posibles entre' 0' y 'N', y usarla en tiempo de ejecución (en lugar de calcularla en ejecución) -hora). –
¿Cuál es la diferencia entre la concordancia bipartita de peso mínimo y el problema de asignación mencionado a continuación por @lijie? –