Parece-me estranho que o TSP negue a possibilidade de cidades repetidas. O objetivo deste vendedor ambulante é ir o mais rápido possível e visitar todas as cidades, certo? E se for mais rápido viajar por uma cidade em que você já esteve?
terminology
traveling-salesman
danmcardle
fonte
fonte
Respostas:
Não importa exatamente como você o define, porque é apenas uma maneira de modelar um problema do mundo real. No TSP, você apenas tem um conjunto de cidades e o custo da viagem entre cada par deles. Isso não exclui a possibilidade de que, na situação do mundo real que você está modelando, a melhor rota entre B e C possa passar por A. Se esse foi o caso, sim, a rota que é modelada como ABCA no TSP pode muito bem envolve realmente conduzir A por um tempo extra no caminho de B a C, mas esses detalhes são abstraídos no modelo TSP.
fonte
fonte
Algoritmos reais para TSP podem ter essa etapa de "pegar atalhos", por exemplo, o algoritmo de Christofides. Veja, por exemplo, esta descrição ou essa conta mais curta .
fonte
Não há resposta geral para isso, exceto "as pessoas não são estúpidas". Eles aplicarão a solução adequada à sua situação. Raramente as pessoas estão preocupadas com o problema do vendedor ambulante. No caso clássico, um vendedor do mundo real estaria mais preocupado com o problema de maximizar sua renda durante um determinado período de tempo, dentro de um conjunto específico de restrições. Neste caso do problema, a distância total percorrida é apenas um dos vários fatores que levam a encontrar a resposta ideal.
fonte
Se repetições são permitidas, basta examinar todas as conexões X -> A -> Y, e se for menor que X -> Y, substitua o comprimento de X -> Y pelo comprimento de X -> A -> Y e resolva o problema resultante com o algoritmo padrão. Eu acho que você deve repetir o processo de substituição até que não haja alterações, porque se você encontrar uma conexão mais curta X -> Y, isso pode significar que agora X -> Y -> Z é mais curto que X -> Y.
Acompanhe as conexões que você alterou, faça as conexões na solução e, se a solução contiver X -> Y, substitua-a por X -> A -> Y.
PS. Acho que minha ideia é ótima, mas não tenho muita certeza no momento de que esteja correta. Como X -> A -> Y, em vez de X -> Y, não é apenas um atalho, mas também abrange a cidade A.
fonte