Eu tenho um gráfico não ponderado não direcionado e eu quero selecionar nós de de modo que eles estejam emparelhados o mais longe possível um do outro, em termos de distância geodésica . Em outras palavras, eles devem ser espalhados pelo gráfico quanto possível.
Deixei ser o comprimento de um caminho mais curto entre e no . Agora, para um conjunto de vértices, definir
Deixe o problema SET DISPERSO ser o problema que na entrada pede para encontrar um conjunto de vértices maximizando .
Existe um algoritmo eficiente para resolver o SCATTERED SET?
Respostas:
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. Iterark vezes. 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 i o 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 i o 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 xi sã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.
fonte
Não, o problema é NP-completo.
Deixei(G,k) ser uma instância do INDEPENDENT SET. ConstruirG′ adicionando um vértice universal u para G . A observação crucial é que a distância entre dois vértices naG é 1 em G′ se e somente se eles são adjacentes em G e 2 caso contrário.
Agora, a solução ideal do SCATTERED SET na entrada(G′,k) é 2(k2) se e somente se tiver um conjunto independente de tamanho .G k
fonte