No sé si hay un algoritmo de tiempo polinómico (parece que podría ser NP-hard), pero aquí hay algunos enfoques algorítmicos plausibles que podría considerar, si necesita resolverlo en la práctica:
Heurística
Un algoritmo bien explorado es Furthest Point First (FPF). En cada iteración, elige un punto que está más alejado del conjunto de puntos seleccionados hasta ahora. Iterar veces. Como esta es una estrategia codiciosa, no hay razón para esperar que esto dé una respuesta óptima o incluso cercana a la óptima, y fue diseñada para optimizar una función objetivo ligeramente diferente ... pero en algunos contextos ofrece una aproximación razonable, por lo que Podría valer la pena intentarlo.k
FPF sale de la literatura sobre agrupamiento basado en gráficos y se introdujo en el siguiente trabajo de investigación:
Teofilo F.González. Agrupación para minimizar la distancia máxima entre clústeres . Theoretical Computer Science, vol 38, pp.293-306, 1985.
Podría intentar explorar la literatura sobre agrupación basada en gráficos para ver si alguien ha estudiado su problema específico.
Algoritmos exactos
Si tiene este problema en la práctica y necesita una solución óptima exacta, puede intentar resolverlo utilizando un solucionador ILP.
Así es cómo. Introduzca las variables 0 o 1 , donde indica si se seleccionó el ésimo vértice, y las variables 0 o 1 , con el significado deseado de que solo si y . Ahora maximice la función objetivo , sujeto a las restricciones y y . Ahora resuelva este ILP con un solucionador ILP estándar. Como ILP es NP-hard, no hay garantía de que esto sea eficiente, pero podría funcionar en algunos casos problemáticos.xixiiyi,jyi,j=1xi=1xj=1∑i,jd(i,j)yi,j∑xi≤kxi≥yi,jxj≥yi,j
Otro enfoque es utilizar MAX-SAT ponderado . En particular, la introducción de variables booleanas , donde es cierto si la se seleccionó ésimo vértice, y las variables . La fórmula es , donde debe ser verdadero (sus cláusulas tienen un peso para una muy grande ) y cada cláusula se da peso . Defina la fórmula como verdadera si a lo sumo de las son verdaderas (consulte aquí para obtener detalles sobre cómo hacerlo) y sixixiiyi,jϕ∧∧i,jyi,jϕWWyi,jd(i,j)ϕkxiyi,j=xi∧xj para todo . Ahora la solución a este problema de MAX-SAT ponderado es la solución al problema original, por lo que podría intentar lanzar un solucionador de MAX-SAT ponderado al problema. Se aplican las mismas advertencias.i,j