Não sei se existe um algoritmo de tempo polinomial (parece difícil para NP), mas aqui estão algumas abordagens algorítmicas plausíveis que você pode considerar, se precisar resolvê-lo na prática:
Heurística
Um algoritmo bem explorado é o Furthest Point First (FPF). A cada iteração, ele escolhe um ponto mais distante do conjunto de pontos selecionados até o momento. Iterarkvezes. Como esta é uma estratégia gananciosa, não há razão para esperar que ela dê uma resposta ótima ou até quase ótima, e foi projetada para otimizar uma função objetiva um pouco diferente ... mas, em alguns contextos, fornece uma aproximação razoável, portanto pode valer a pena tentar.
O FPF sai da literatura sobre clustering baseado em gráficos e foi introduzido no seguinte trabalho de pesquisa:
Teofilo F. Gonzalez. Clustering para minimizar a distância máxima do intercluster . Teorical Computer Science, vol. 38, pp.293-306, 1985.
Você pode tentar explorar a literatura sobre armazenamento em cluster baseado em gráficos para ver se alguém estudou seu problema específico.
Algoritmos exatos
Se você tem esse problema na prática e precisa de uma solução ideal exata, tente resolvê-lo usando um solucionador de ILP.
Aqui está como. Introduzir variáveis 0 ou 1xi, Onde xi indica se o io vértice foi selecionado e as variáveis 0 ou 1 yi,j, com o significado pretendido de que yi,j=1 somente se xi=1 e xj=1. Agora maximize a função objetivo∑i,jd(i,j)yi,j, sujeito às restrições ∑xi≤k e xi≥yi,j e xj≥yi,j. Agora resolva esse ILP com um solucionador de ILP pronto para uso. Como o ILP é difícil para o NP, não há garantia de que isso será eficiente, mas pode funcionar em algumas instâncias de problemas.
Outra abordagem é usar o MAX-SAT ponderado . Em particular, introduza variáveis booleanasxi, Onde xi é verdade se o io vértice foi selecionado e as variáveis yi,j. A fórmula éϕ∧∧i,jyi,j, Onde ϕ deve ser verdadeiro (suas cláusulas têm peso W para alguns muito grandes W) e cada cláusula yi,j recebe peso d(i,j). Defina a fórmulaϕ para ser verdade se no máximo k do xisão verdadeiras (veja aqui para obter detalhes sobre como fazer isso) e seyi,j=xi∧xj para todos i,j. Agora, a solução para esse problema MAX-SAT ponderado é a solução para o problema original, para que você possa tentar lançar um solucionador MAX-SAT ponderado no problema. As mesmas advertências se aplicam.