DEV Community

Cover image for O Problema do Caixeiro-Viajante: De Gregor Samsa à Max Verstappen e a Busca Incessante pelo Caminho Perfeito.
Pedro Fernandes
Pedro Fernandes

Posted on

O Problema do Caixeiro-Viajante: De Gregor Samsa à Max Verstappen e a Busca Incessante pelo Caminho Perfeito.

Um caixeiro-viajante é uma pessoa que viaja constantemente para diferentes cidades e regiões a fim de vender produtos em nome de uma empresa. Talvez você se lembre (ou não) mas um exemplo famoso de caixeiro-viajante é o personagem Gregor Samsa, de A Metamorfose. Gregor trabalhava arduamente como caixeiro-viajante para sustentar sua família e pagar uma dívida de seus pais, possuindo uma rotina exaustiva e com diversas pressões no trabalho.

Como um caixeiro-viajante é um vendedor que precisa passar por diversos locais, há a necessidade de escolher a melhor rota para economizar tempo. Para isso, existem dois fatores básicos que precisam ser considerados: distância entre as cidades e a ordem em que elas são visitadas. Além disso, precisamos pensar também que o viajante não deve passar em um mesmo local duas vezes.

Em uma pequena escala, é possível solucionar esse problema facilmente. Observando a imagem ilustrativa abaixo, podemos observar que alguns locais possuem saídas para duas outras cidades enquanto existem alguns que possuem saída para apenas uma cidade. Algo relativamente comum, de acordo com a realidade.

Mapa

Imagine que o primeiro caminho seja:

Rio de Janeiro, London, Cape Town, Moscow → Distância Resultante: 70 km

Agora se percorrermos:

Cape Town, Moscow, London, Rio de Janeiro → Distância Resultante: 90 km

Ambos os caminhos atendem aos requisitos propostos porém o segundo caminho é mais longo, custoso e cansativo para o caixeiro-viajante. Podemos descobrir isso de forma simples, testando todas as possibilidades e combinações possíveis, algo plausível de se fazer em pequenas situações. Porém apesar de parecer um problema simples, a medida que a quantidade de locais a serem visitados aumenta, mais difícil se torna encontrar boas soluções. E isso se mostrou um verdadeiro pesadelo para muitos matemáticos e cientistas da computação.

Mas ok, agora você pode estar se perguntando o que o Max Verstappen 🦁 tem a ver com o caixeiro-viajante.

Bom, ambos desgostam de viajar longas distâncias sem necessidade.

"Eu sempre disse que temos muitas corridas no calendário. Mas acho que o problema maior é viajar pelos diferentes fusos, entre Las Vegas e Catar. Estamos voando para o outro lado do mundo de novo e acho que podemos fazer um trabalho um pouco melhor nas pernas triplas, que estejam um pouco mais próximas. Para mim, isso faria um pouco mais de sentido, então provavelmente é algo que precisamos analisar" - Max Verstappen

Para quem não sabe, Max Verstappen é tetracampeão de Fórmula 1 e no ano de 2025, o campeonato de F1 possui 24 etapas, ou seja, realiza corrida em 24 cidades diferentes, passando por 21 países e 5 continentes.

Com a crescente conscientização da sociedade a respeito do desenvolvimento sustentável, dos impactos ambientais causados pela indústria, do efeito estufa, da pegada zero de Carbono e etc. uma das maiores dificuldades da Fórmula 1 tem sido encontrar a melhor e mais eficiente organização das corridas ao longo do ano pois apesar do que muitos acreditam, o maior impacto ambiental causado pela organização é proveniente de viagens (seja por via marítima, aérea ou terrestre) enquanto a emissão dos carros de corrida consiste em apenas 0.7%.

Voltando à temática computacional, nessa larga escala e com grandes distâncias, tentar encontrar a melhor solução calculando e testando todas as possibilidades seria extremamente exaustivo. Observando a tabela abaixo, apenas com 24 cidades a quantidade de possibilidades se torna impossível de ser calculada à mão e extremamente longa para um computador simples.

Cidades Possíveis Combinações
1 1
2 2
3 6
4 24
5 120
6 720
7 5040
8 40320
9 362880
10 3628800
11 39916800
12 479001600
24 6,20448×10²³

E mesmo que, na década de 1980, os pesquisadores Grötschel, Padberg, Rinaldi tenham conseguido resolver o problema com até 2392, o Problema do Caixeiro Viajante continua mais relevante do que nunca. Há quem argumente que a evolução do hardware é a principal solução para os problemas computacionais atuais, a ponto de não precisarmos mais nos preocupar tanto com otimização de algoritmos porém podemos refletir e observar com a história que problemas como o caixeiro viajante e sua discussão ao longo dos anos trouxeram soluções que foram aplicadas em nas mais diferentes áreas. Portanto, mesmo que a evolução do hardware seja um grande avanço, a construção de soluções inteligentes para problemas são igualmente importantes.

A cada nova temporada da F1, com seu calendário global, ou a cada desafio logístico que surge, a necessidade de encontrar a rota mais inteligente persiste, com pesquisadores constantemente desenvolvendo métodos para lidar com a crescente complexidade do mundo real.

Afinal, quem sabe daqui um tempo não precisaremos encontrar as melhores rotas para entre galáxias, estrelas e planetas? 🚀

Top comments (0)