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. :)
Parece que o problema é do NPC, mas não sei para provar. Alguém pode me ajudar nisso?
fonte
Respostas:
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?
fonte
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.
fonte
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.
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á.
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.
fonte