Como o algoritmo 3-opt para TSP funciona?


8

Entendo que a Heurística 3-Opt para solucionar o problema do Vendedor ambulante envolve a remoção de três arestas de um gráfico e a adição de mais três para recompletar o passeio. No entanto, já vi muitos trabalhos que mencionam que, quando três arestas são removidas, restam apenas duas maneiras possíveis de recombinar o passeio - isso não faz sentido para mim.

Por exemplo, encontrei um artigo [1] que diz:

O algoritmo 3-opt funciona de maneira semelhante, mas em vez de remover duas arestas, removemos três. Isso significa que temos duas maneiras de reconectar os três caminhos em um tour válido1 (figura 2 e figura 3). Um movimento de 3 opt pode ser visto como dois ou três movimentos de 2 opt.

No entanto, conto três maneiras diferentes de reconectar o passeio. O que estou perdendo aqui?

Além disso, alguém pode me vincular a um algoritmo para 3-opt, se possível? Estou apenas tentando entender, mas ainda não encontrei nenhum algoritmo claro: todos os recursos encontrados simplesmente dizem "remova três arestas, reconecte-os". É isso, que é meio vago.

Aqui estão os três passeios que me parecem 3-opt depois de remover três arestas.

insira a descrição da imagem aqui


  1. Heurísticas para o problema do vendedor ambulante de C. Nilsson

2
O artigo que você vincula é escrito em um estilo muito informal e fornece uma definição não padronizada de TSP na primeira frase; também parece não ter sido publicado em nenhum lugar. Obviamente, isso não afeta a validade da sua pergunta, mas provavelmente existem explicações melhores do 3-OPT do que a que você encontrou.
precisa saber é o seguinte

Artigos nesse nível provavelmente supõem que os leitores interessados ​​não tenham problemas para traduzir uma descrição mais ou menos definida em código. Isso é comum em (T) CS; se isso é um obstáculo para você, considere ler coisas mais básicas primeiro para obter mais treinamento.
Raphael

Como estudante do ensino médio, não acho nada básico, haha. De qualquer forma, tenho certeza de que existem mais de duas maneiras (3 para ser exato) de reconectar o passeio, de modo que a mudança não seja idêntica à de duas opções ... então, eu estava me perguntando por que esse documento afirma que há são apenas dois. Procurei outros documentos em busca de um algoritmo definitivo que eu pudesse implementar facilmente, mas não encontrei nenhum, então tentei implementá-lo (em Java) com base no que sei e não funcionou muito bem, já que eu ' Ainda estou confuso sobre quantas maneiras diferentes de se reconectar existem.
u3l

11
para o 2º TSP euclidiano, um passeio com linhas que se cruzam sempre pode levar a outro passeio sem linhas que se cruzam e um passeio mais curto, ou seja, apenas o caso nº 1 que você listar (após a configuração inicial) pode ser considerado. talvez algumas dessas informações estejam sendo deixadas de fora nos artigos que você cita. isto é, eles não estão considerando / excluindo os casos de interseção não ideais garantidos. ps seria útil / mais claro se você rotulasse cada gráfico. entenda você: inicial, tour1, tour2, tour3.
vzn

tente começar na entrada 3opt da wikipedia para refs. vários têm décadas, mas cópias eletrônicas estão disponíveis.
precisa saber é

Respostas:


6

Você perdeu a nota de rodapé - essas maneiras "não incluem as conexões idênticas a uma única jogada de 2 opções". De fato, existem apenas duas permutações emS3sem pontos fixos (também conhecidos como desarranjos ),(123) e (132). Mais geralmente, por umk-opt move, basta considerar permutações sem pontos fixos, já que aqueles com t pontos fixos são (k-t)-move.

O algoritmo para k-opt pesquisa local é a seguinte. Comece com uma solução inicial, digamos a produzida pelo algoritmo de Christofides. Tente melhorar repetidamente executando umk-opt: escolha k arestas e reconecte-as de uma maneira diferente (desta vez, tudo bem se a movimentação também for uma -move para alguns <k) que resulta em um passeio mais curto.

A maneira como isso é implementado é analisando todos os conjuntos de k arestas e sobre todas as maneiras de reconectar as arestas, talvez em alguma ordem inteligente, e calcular a diferença de comprimento (não é necessário recalcular a duração de todo o passeio, apenas a diferença de comprimento; isso leva O(k) ao invés de O(n)); se uma melhoria for encontrada, fazemos a troca e repetimos desde o início. Continuamos assim até ficarmos presos.

Uma variante diferente é sempre tentar todas as possibilidades e usar a que resulta na melhor melhoria. Existem também outras variantes que você provavelmente pode encontrar na literatura.


11
Ok ... eu perdi que algumas dessas permutações são apenas dois movimentos opcionais agora. No entanto, ainda conto três permutações diferentes, excluindo a anterior à mudança, que têm 0 pontos fixos. (
editarei

0

Digamos que temos 3 pontos A, B e C. Primeiro trocamos (A, B) e depois só podemos trocar (B, C) ou trocar (A, C). Desta forma, temos apenas duas possibilidades diferentes.


11
Definitivamente, isso precisa de mais explicações.
precisa saber é o seguinte

Bem ... talvez eu esteja errado. Me corrija por favor. 2-opt: Temos cidades ABCD. Trocamos dois e temos ACBD. Apenas duas possibilidades, original e uma nova - ABCD e ACBD. 3-opt: cidades ABCD. Trocamos (1,2) e obtemos BACD. Trocamos a terceira cidade com primeiro ou segundo e obtemos BCAD - swap (2,3) ou CABD por swap (1,3). Três possibilidades, originais e duas novas - ABCD, BACD e BCAD. E o k-opt (4,5,6 ...)?
matejs

0

Eu poderia encontrar 4 movimentos de 3-opt (que não são 2-opt): insira a descrição da imagem aqui se eu desse ao tour hexagonal uma numeração de 123456 (a partir do vértice superior esquerdo), os outros tours teriam os números 125634, 124365, 126534 e 125643 , que são um subconjunto do desarranjo de 12 [3456] (onde 3456 está sendo desarranjado).


3
Bem-vindo ao site, mas não tenho certeza de como isso responde à pergunta. Nos sites Stack Exchange, procuramos a resposta para a pergunta na parte superior da página, não "aqui estão algumas informações relacionadas".
David Richerby
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.