Mejor coincidencia en un gráfico bipartito (por ejemplo, asociar etiquetas con puntos en un gráfico)

Estoy tratando de extraer la semántica de las gráficas xy gráficas donde se trazan los puntos y algunos o todos tienen una etiqueta. La etiqueta se traza "cerca del punto" para que un humano pueda normalmente entender qué etiqueta va con qué punto. Por ejemplo, en esta gráfica está claro qué etiqueta (número) pertenece a qué punto (*) y un algoritmo basado en la distancia euclidiana funcionaría. (Las etiquetas y los puntos no tienen ordenamiento semántico, por ejemplo, un diagrama de dispersión)

<code> *1
    *2

        *3

      *4
</code>

En parcelas congestionadas, el software de creación / humano puede colocar la etiqueta en diferentes direcciones para evitar la superposición. Por ejemplo en

<code>1**2
 **4
 3
</code>

Normalmente, un lector humano puede determinar qué etiqueta está asociada con qué etiqueta.

Una solución que aceptaría sería crear una matriz de distancias euclidianas y barajar las filas para obtener el mínimo de una función (por ejemplo, los cuadrados sumados de las distancias en la diagonal u otra heurística). En el segundo ejemplo (con los puntos etiquetados a, b, c, d en el sentido de las agujas del reloj desde la esquina NW) tenemos una matriz de distancia (a 1 d.p.)

<code>             a   b   c   d
 1ab2    1  1.0 2.0 2.2 1.4    
  dc4    2  2.0 1.0 1.4 2.2
  3      3  2.0 2.2 1.4 1.0
         4  2.2 1.4 1.0 2.0
</code>

y necesitamos etiquetara1 b2 c4 d3. Al intercambiar las filas 3 y 4 se obtiene la suma mínima de la diagonal. Aquí hay un ejemplo más complejo donde simplemente escoger el más cercano puede fallar

<code> *1*2*5
  **4
  3 *6
</code>

Si esto se resuelve, tendré que acudir a los casos en que el número de etiquetas sea mayor o menor que el número de puntos.

Si el algoritmo es estándar, apreciaría un puntero a Java de código abierto (por ejemplo, JAMA o Apache maths)

NOTA: Esta respuesta SOAsociando puntos cercanos con un camino. no funciona como respuesta porque se da el camino a través de los puntos.

Respuestas a la pregunta(3)

Su respuesta a la pregunta