A conexão de ilhas com pontões é NP-completa?


10

Eu tenho um problema em minha mente, acho que é um problema de NPC, mas não sei como prová-lo.

Aqui está o problema:

Existem k ilhas em um lago muito grande e n pontões em forma de leque. Esses pontões têm o mesmo tamanho, mas têm direções iniciais diferentes e estão em diferentes posições originais no lago. Os pontões podem girar livremente em torno de seu centro de massa, sem nenhum custo associado à rotação.

Agora precisamos mover esses pontões para que todas as ilhas do lago possam ser conectadas. Podemos garantir que o número de pontões é suficiente para conectar todas as ilhas.

[Nota]: Não podemos reutilizar os pontões !!

A tarefa é encontrar a solução com a distância total mínima dos pontões móveis, a fim de conectar todas as ilhas. A distância do movimento de um pontão pode ser calculada como a distância entre a posição original do centro de massa e a sua posição implementada.

Para deixar claro, eu desenhei tal figura. Suponha que tenhamos 3 ilhas A, B e C. Elas estão localizadas em algum lugar do lago. E eu tenho vários pantoons em forma de leque. Agora, a solução é encontrar um somatório de distância móvel mínimo para conectar A, B e C, mostrado na parte inferior da figura. Espero que ajude a entender o problema. :)

insira a descrição da imagem aqui

Parece que o problema é do NPC, mas não sei para provar. Alguém pode me ajudar nisso?


@ vsaxena Não, eu não acho que a solução final seja uma linha reta, em algum momento se já formar um arco, mas não precisamos mover nenhum deles. Na maioria dos casos, uma linha reta será boa, mas como os pontões ficam mais densos, a solução pode não ser uma linha reta. A figura é apenas um exemplo. :)

11
Parece muito perto de Steiner Tree. Em um espaço métrico, muitas técnicas para resolver o trabalho em ambos. en.wikipedia.org/wiki/…
Nicholas Mancuso

@NicholasMancuso, as pontes são nó a nó, portanto, não é uma árvore Steiner clássica em que a ponte conecta vários nós. Existem muitos problemas no layout VLSI que possuem características semelhantes.
VSOverFlow

11
@ vsaxena: O problema está subespecificado. Suponha que eu tenha três ilhas A, B, C em um triângulo equilátero e os pontões inicialmente formem uma forma Y conectada com as ilhas nas extremidades. Fazer nada é uma solução válida ou os pontões devem ser movidos ainda mais? Se essa solução não é válida, o que constitui precisamente uma configuração válida dos pontões?
JeffE 07/06

11
@ vsaxena: E enquanto estamos nisso, as ilhas são apenas pontos, ou círculos, ou alguma forma mais complicada especificada na entrada? Os pontões são segmentos de linha, elipses ou alguma outra forma? Todas as ilhas têm o mesmo tamanho e forma, ou podem ser diferentes? Todos os pontões têm o mesmo tamanho e forma, ou podem ser diferentes?
Jeffe

Respostas:


1

Primeiro: esse não é o problema do vendedor ambulante. O TSP requer a identificação de um ciclo hamiltoniano de peso mínimo; esse ciclo não requer um ciclo, ou mesmo um caminho de peso mínimo. Requer uma construção de custo mínimo de um conjunto de arestas de conexão, onde o custo de construção é baseado na movimentação dos pontões.

Segundo: esse não é o problema da árvore de abrangência de peso mínimo. Veja acima - exigimos uma construção de custo mínimo e não identificação mínima de peso.

Terceiro: parece que o caminho construído será uma árvore de abrangência, mas não necessariamente uma de peso mínimo. A alternativa é que seria uma árvore de abrangência mais algumas arestas adicionais, resultando em um ciclo; mas se iniciarmos em uma configuração sem arestas, todas as arestas terão algum custo positivo e sempre poderemos encontrar uma árvore de abrangência de menor peso simplesmente não construindo as arestas extras.

Quarto: você diz que os pontões giram livremente; Suponho que isso signifique que nenhum custo esteja associado à rotação dos pontões. No entanto, você não especifica sobre o que os pontões giram: Seus pontos? Seus centros de massa? Algum ponto interno? (Se houver algum ponto externo, teríamos construções com peso zero, certo?)

Isso é um pouco sutil, porque se estamos girando 90 graus em torno de um ponto interno, digamos, o centro de massa, qual é o custo? Nada, porque é uma rotação? Alguma quantia finita porque o ponto mudou? Agora também precisamos saber o tamanho dos pontões.

Quinto: Supõe-se que os pontões e as ilhas estejam ambos embutidos no Plano Euclidiano?


Obrigado pela sua resposta. A rotação gira em torno do centro de massa e nenhum custo associado à rotação, apenas o movimento envolve custos. Sim, os pontões e as ilhas estão embutidos no plano euclidiano. Modificarei a postagem para deixar claro.

Não concordo que este não seja essencialmente o TSP. Esse post inteiro é enrolado em torno do eixo na terminologia, mas o fato é que, se alguém desenha uma linha entre cada pontão e cada posição potencial do pontão final e calcula a distância de cada linha como seu peso, então com a exceção do ponto final, voltando ao ponto inicial, o gráfico formado se parece quase exatamente (para um tee) com o TSP. Um pontão ou uma posição final é um nó no gráfico e os pesos são compostos pelas distâncias. O ciclo hamiltoniano SOMENTE significa que termina onde começou.

2
Esta não é uma resposta, mas uma série de comentários.
Raphael

1

Depois de examinar os novos diagramas, vejo que você pode precisar de vários pontões para atravessar as ilhas. Dado isso, é possível chegar muito perto de uma solução para o problema da árvore Steiner , transformando os nós em ilhas e criando uma coleção suficientemente diversificada de pontões com pequenos arcos. A Wikipedia diz que, de fato, existe um PTAS para o problema da árvore Steiner, então não posso dizer imediatamente que isso o torna NP-completo. No entanto, observar os detalhes da árvore Steiner pode fornecer uma boa solução aproximada ou mostrar que o problema é NP-Complete.


O que você está descrevendo é um algoritmo aproximado para chegar a uma solução quase ideal. No entanto, como você verifica se a solução é ótima?

Acho que o verdadeiro problema é que você precisa de vários pontões para atravessar as ilhas, o que faz com que isso pareça muito com uma árvore Steiner. Dê uma olhada em Branch and Bound para saber como passar de um limite inferior (por exemplo, gerado pela negligência de uma restrição) para uma solução ótima conhecida.
Mcdowella

2
@mcdowella Não é uma árvore Steiner, pois cada pontão pode aparecer em apenas uma ponte; é um sistema ponto a ponto. Além disso uma vez que a função de custo é o movimento de pontões, pode ter um caso em que a ponte é formada em arcos de largura, que ainda têm um custo mais baixo do que a linha recta solução ..
VSOverFlow

Isso não pode ser o guia de outra perspectiva. NÃO PODEMOS ADICIONAR PONTOS apenas para atender às nossas necessidades.
trumpetlicks

11
Se junções em Y são permitidas, isso é pelo menos tão difícil quanto o problema da árvore Steiner, porque qualquer problema da árvore Steiner pode ser transformado em um desses - basta criar muitos pontões e colocá-los tão longe das ilhas que isso não acontece. realmente importa qual pontão você usa onde. Então, se você pudesse resolver isso, poderia resolver o problema da árvore Steiner: para esse argumento, não importa que existam algumas configurações de pontões que não resultem em problemas na árvore Steiner. Se as junções Y não forem permitidas, precisamos saber exatamente quais são as regras. Os caminhos se cruzam no cruzamento?
Mcdowella

0

Após o desenho, este ainda é um problema do NPC. Mesmo se reduzirmos o problema para cada pontão, podemos assumir 1 de n posições (isto é, linhas de conexão conhecidas. Para obter a resposta ideal, teríamos que tentar cada pontão em cada posição, adicionando sua distância para chegar a essas posições repsectivas cada tempo e comparando com todos os outros, se cada pontão tiver que ser testado em cada posição, então há n! combinações que precisam ser testadas.

Decidi editar as imagens do pôster original com algumas adições para mostrar as idéias gráficas por trás desse problema.

A imagem abaixo mostra todos os pontões (menos 2 para simplificar) em cores diferentes, com todas as possíveis localizações finais dos pontões em VERMELHO. Eu só desenhei as linhas entre três pontões e todos os locais finais, mas era possível ver como isso poderia ficar LOUCO.

Digamos que, no final das contas, escolhemos o pontão turquesa a ser colocado no local final mais próximo dele como o primeiro passo (embora, pelo TSP, saibamos que isso pode não ser o ideal no final).

Abaixo, vemos exatamente isso: o pontão e a distância (também conhecida como distância percorrida ponderada) terão que percorrer.

insira a descrição da imagem aqui

A partir daqui, um nó virtual com os dois locais finais próximos ao local recém-colocado pode ser feito. Distância do nó definido e os dois nós adjacentes no nó virtual têm uma distância de percurso virtual de 0.

Abaixo, vemos o nó virtual criado com TODOS os pesos em potencial de distância de viagem que podem ser colocados lá.

insira a descrição da imagem aqui

Vendo como isso continuaria e como a solução mais ideal (como vista muitas vezes com o TSP) nem sempre será escolhendo a menor distância para cada escolha, teríamos que testar essencialmente todos os caminhos para todos os nós / nós virtuais.

No final, o primeiro nó do problema (TSP) poderia ser qualquer um dos possíveis pontos do pontão final, e as linhas traçadas a partir disso são as distâncias desse ponto final a todos os outros pontões. todos os outros nós depois se tornam nós virtuais, como eu descrevi, com suas linhas saindo como as distâncias / pesos para todos os pontões restantes, e assim por diante. Como esse problema gráfico não é EXATAMENTE o problema do vendedor ambulante sem o requisito LAST JUMP do ciclo hamiltoniano está além de mim. Para ter a resposta exata, é necessário testar todos os caminhos no gráfico.


11
Deixando de lado se este é um modelo razoável do problema declarado ou se é mesmo um modelo de TSP, não é assim que as reduções de NP funcionam. Você não mostra que seu problema de destino pode ser enquadrado como uma instância de um problema de NPC. Você precisa mostrar que uma instância de um problema de NPC pode ser enquadrada como seu problema de destino.


2
Oh céus. Se você se incomodou em ler meu comentário e o link que forneci, aprendeu que o algoritmo referenciado é exato (eles provam isso) e, portanto, contradiz sua compreensão. Observe que sua opinião sugere que P! = NP - essa ainda é uma pergunta em aberto. Então não, você não entendeu isso, desculpe. (Mesmo se fosse verdade que os problemas NP-completos poderia ser melhor do que ingenuamente resolvido, o raciocínio que você uso seria errado.)
Raphael

2
O(1.3n)n

3
@ Jeff: Em outras palavras, essa resposta prova apenas que o problema provavelmente é NP-completo.
Tsuyoshi Ito
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.