Parece que está buscando Minimum weight perfect matching.
Existen algoritmos para explotar el hecho de que estos son puntos en un plano. Este documento: Mincost Perfect Matching in the Plane tiene un algoritmo y también menciona algunos trabajos previos sobre él.
a lo solicitado, aquí es una breve descripción de un algoritmo de "simple" para la coincidencia perfecta de peso mínima en un gráfico. Este es un breve resumen de partes del capítulo sobre emparejamiento ponderado en el libro Optimización combinatoria, algoritmos y complejidad de Papadimitriou & Steiglitz.
Supongamos que se le asigna un gráfico ponderado no dirigido G (con un número par de nodos). El gráfico puede considerarse un gráfico ponderado completo, al agregar los bordes faltantes y asignarles pesos muy grandes.
Supongamos que los vértices están etiquetados de 1 a ny el peso del borde entre los vértices i y j es c (i, j).
Tenemos n (n-1)/2 variables x (i, j) que denotan una coincidencia de G. x (i, j) = 1 si el borde entre i y j está en la coincidencia y x (i, j) = 0 si no lo es.
Ahora el problema de adaptación se puede escribir como el problema de programación lineal:
minimizar Sum c (i, j) * x (i, j)
sujeto a la condición de que
Suma x (1, j) = 1, donde j varía de 1 a n.
Sum x (2, j) = 1, donde j varía de 1 a n. . . .
Sum x (n, j) = 1, donde j varía de 1 a n.
(Sum x (1, j) = 1 significa básicamente que estamos seleccionando exactamente una arista incidente el vértice marcado con 1.)
Y la condición final de que
x (i, j)> = 0
(que podría haber dicho x (i, j) = 0 o 1, pero eso no sería hacer de este un problema de programación lineal a medida que las restricciones son o ecuaciones lineales o desigualdades)
hay un método llamado el método Simplex, que puede resolver este problema de programación lineal para dar una solución óptima en el tiempo polinomio en el número de variables.
Ahora, si G eran bipartito, se puede demostrar que podemos obtener una solución óptima tal que x (i, j) = 0 o 1. Así, mediante la resolución de este problema de programación lineal para un gráfico bipartito, obtenemos una conjunto de asignaciones para cada x (i, j), cada una de las cuales es 0 o 1. Ahora podemos obtener una coincidencia seleccionando los bordes (i, j) para los cuales x (i, j) = 1. Las restricciones garantizan que lo hará ser un emparejamiento con el peso más pequeño.
Desafortunadamente, esto no es cierto para los gráficos generales (es decir, x (i, j) siendo 0 o 1). Edmonds descubrió que esto se debía a la presencia de ciclos impares en el gráfico.
Así, además de los contraints anteriores, Edmonds añadió la restricción adicional de que en cualquier subconjunto de vértices de tamaño 2k + 1 (es decir, de tamaño impar), el número de bordes coincidentes no es más que k
Enumerate cada subconjunto impar de vértices para obtener una lista de conjuntos S (1), S (2), ..., S (2^n - n). Deje tamaño de S (r) sea de 2 * s (r) + 1.
Entonces las limitaciones anteriores son, para cada conjunto S (r)
Sum x (i, j) + y (r) = s (r), para i, j en S (r).
Edmonds entonces demostró que esto era suficiente para garantizar que cada uno de x (i, j) es 0 o 1, lo que nos da una correspondencia perfecta de peso mínimo.
Por desgracia, ahora el número de variables se ha convertido exponencial de tamaño. Entonces, el algoritmo simplex, si solo se ejecuta en este estado, conducirá a un algoritmo de tiempo exponencial.
Para superar esto, Edmonds considera el doble de este problema de programación lineal (no entraré en detalles aquí), y muestra que el algoritmo primal-dual cuando se ejecuta en el dual solo toma O (n^4) pasos para llegar a una solución, ¡dándonos un algoritmo de tiempo polinomial! Lo muestra mostrando que, como máximo, O (n) de y (r) no son cero en ningún paso del algoritmo (que él llama flores).
Aquí hay un enlace que debe explicar en detalle un poco más: http://www.cs.ucl.ac.uk/staff/V.Kolmogorov/papers/blossom5.pdf, Sección 2.
Merece la pena leer el libro que mencioné antes (aunque puede ser un poco seco) para obtener una comprensión más profunda.
Phew. ¡Espero que ayude!
Esto se conoce como el problema del vendedor ambulante. –
No, eso es diferente de TSP. Pero mirar a TSP puede ser un buen punto para comenzar. –
@Doc Brown: Por favor, ilumíname :) –