O caixeiro-viajante
A Rita faz as entregas de uma pastelaria de Aveiro: de manhã tem de levar encomendas de pastéis de nata a três cafés e voltar à pastelaria. A ordem dos cafés muda o número de quilómetros e, por isso, o gasóleo gasto. Como escolher o percurso mais curto? Vais ver que é um problema de grafos, mas muito diferente do de Euler. No fim voltamos à Rita.
Circuito hamiltoniano
Nos grafos de Euler queríamos percorrer todas as arestas (ruas) uma só vez. Agora o objetivo é outro: visitar todos os vértices (locais) uma só vez, como um entregador que tem de passar por todos os clientes.
Repara na diferença: num circuito de Euler podes passar várias vezes no mesmo vértice, mas nunca repetes uma aresta. Num circuito hamiltoniano, cada vértice aparece uma só vez (o de partida é o único que se repete, no fim), e não é obrigatório usar todas as arestas.
O circuito destacado é $R \to S \to T \to U \to V \to R$. A aresta $RT$ existe no grafo, mas o circuito não precisa dela.
Um grafo tem vértices {A, B, C, D, E} e arestas AB, BC, CD, DE, EA, AC e BD. a) Explica, com as tuas palavras, o que é um ciclo de Hamilton (ciclo hamiltoniano). b) A…
Um grafo tem vértices {A, B, C, D, E} e arestas AB, BC, CD, DE, EA, AC e BD.
- a) Explica, com as tuas palavras, o que é um ciclo de Hamilton (ciclo hamiltoniano).
- b) A sequência A → C → D → E → B → A é um ciclo hamiltoniano deste grafo? Justifica.
- c) Indica um ciclo hamiltoniano do grafo, escrevendo a sequência de vértices percorridos.
Quando existe um circuito hamiltoniano?
Para Euler há um critério simples (graus pares e grafo conexo). Para Hamilton não existe um critério simples que funcione sempre. O que temos são condições fáceis de verificar.
A razão é simples: num circuito, cada vértice é «entrado» por uma aresta e «saído» por outra. Um vértice com grau 1 (uma única aresta) não consegue ser atravessado e regressar ao início.
Os mapas de estradas entre cidades costumam ser quase completos, por isso o problema aparece sempre com muitas soluções possíveis.
Um grafo tem vértices {P, Q, R, S} e arestas PQ, PR, PS, QR e RS. a) O grafo admite um ciclo hamiltoniano? Em caso afirmativo, indica-o. b) Se for retirada a aresta QR,…
Um grafo tem vértices {P, Q, R, S} e arestas PQ, PR, PS, QR e RS.
- a) O grafo admite um ciclo hamiltoniano? Em caso afirmativo, indica-o.
- b) Se for retirada a aresta QR, continua a existir um ciclo hamiltoniano? Justifica, relacionando a tua resposta com o grau dos vértices.
O problema do caixeiro-viajante
Voltemos à Rita. Os locais são vértices; as estradas entre eles são arestas com um peso, a distância em quilómetros. Num grafo ponderado como este, queremos um circuito hamiltoniano de peso total mínimo. Este é o problema do caixeiro-viajante: visitar todos os locais uma só vez, voltar ao início e gastar o menos possível (quilómetros, combustível, dinheiro).
Seja $A$ a pastelaria e $B$, $C$ e $D$ os três cafés. As distâncias, em km, estão na figura.
Com 3 cafés, partindo de $A$, há $3 \times 2 \times 1 = 6$ ordens possíveis: três escolhas para o primeiro café, duas para o segundo, uma para o último. Organizamo-las numa árvore (cada ramo é uma escolha) e somamos os pesos ao longo de cada caminho, sem esquecer a viagem de volta a $A$.
| Percurso | Soma dos pesos | Total |
|---|---|---|
| $A \to B \to C \to D \to A$ | $1+2+10+10$ | 23 km |
| $A \to B \to D \to C \to A$ | $1+4+10+3$ | 18 km |
| $A \to C \to B \to D \to A$ | $3+2+4+10$ | 19 km |
| $A \to C \to D \to B \to A$ | $3+10+4+1$ | 18 km |
| $A \to D \to B \to C \to A$ | $10+4+2+3$ | 19 km |
| $A \to D \to C \to B \to A$ | $10+10+2+1$ | 23 km |
O mínimo é 18 km, com $A \to B \to D \to C \to A$ (ou o mesmo percurso em sentido contrário, $A \to C \to D \to B \to A$). Repara que cada percurso aparece duas vezes, uma em cada sentido, com o mesmo total.
A empresa de catering SaborLuso, sediada em Coimbra (C), tem de entregar refeições em três escolas, situadas em Aveiro (A), Leiria (L) e Viseu (V), regressando a Coimbra…
A empresa de catering SaborLuso, sediada em Coimbra (C), tem de entregar refeições em três escolas, situadas em Aveiro (A), Leiria (L) e Viseu (V), regressando a Coimbra no fim. A tabela indica as distâncias rodoviárias, em quilómetros, entre as cidades.
| A | C | L | V | |
|---|---|---|---|---|
| A | — | 65 | 115 | 95 |
| C | 65 | — | 75 | 90 |
| L | 115 | 75 | — | 135 |
| V | 95 | 90 | 135 | — |
- a) Partindo de Coimbra, quantos percursos diferentes existem que visitam as três escolas exatamente uma vez e regressam a Coimbra? Lista todos esses percursos.
- b) Calcula a distância total de cada percurso.
- c) Indica o percurso mais curto e a respetiva distância.
- d) O que observas quanto aos comprimentos dos percursos percorridos em sentidos opostos?
Um algoritmo: o vizinho mais próximo
Quando há muitos vértices, listar tudo é impraticável. Usamos um algoritmo: uma sequência de decisões passo a passo que dá sempre uma solução. O mais simples é o método do vizinho mais próximo.
O algoritmo é rápido, mas nem sempre dá o melhor percurso: escolher o mais barato em cada passo pode obrigar a uma viagem de regresso muito longa. Dá uma solução aceitável, que podes comparar com a ótima quando conseguires listar todas as possibilidades. Aqui o algoritmo dá 23 km e o ótimo é 18 km.
A empresa de painéis solares SolSul, sediada em Évora (E), tem de visitar clientes em Beja (B), Faro (F), Setúbal (S) e Portalegre (P), regressando a Évora no fim. A…
A empresa de painéis solares SolSul, sediada em Évora (E), tem de visitar clientes em Beja (B), Faro (F), Setúbal (S) e Portalegre (P), regressando a Évora no fim. A tabela indica as distâncias aproximadas, em quilómetros.
| E | B | F | S | P | |
|---|---|---|---|---|---|
| E | — | 80 | 220 | 105 | 110 |
| B | 80 | — | 145 | 150 | 155 |
| F | 220 | 145 | — | 200 | 300 |
| S | 105 | 150 | 200 | — | 200 |
| P | 110 | 155 | 300 | 200 | — |
- a) Aplica o método do vizinho mais próximo: parte de Évora e desloca-te sempre para a cidade ainda não visitada mais próxima; no fim, regressa a Évora. Escreve o percurso obtido e calcula a sua distância total.
- b) Um colega sugere o percurso E → S → F → B → P → E. Calcula a distância total deste percurso e compara-a com a do método do vizinho mais próximo.
- c) O que concluis sobre a fiabilidade do método do vizinho mais próximo? Como poderias garantir que encontras o percurso mais curto de todos?
Voltando à Rita: com a árvore, ela descobre que o melhor percurso é $A \to B \to D \to C \to A$, com 18 km; o vizinho mais próximo daria 23 km, mais 5 km por dia.
Em resumo
-
Um circuito hamiltoniano passa por todos os vértices uma só vez e regressa ao início; não tem de usar todas as arestas (diferente de Euler).
-
Não há critério simples para a sua existência. Condição necessária: todos os vértices com grau ≥ 2. Um grafo completo com 3 ou mais vértices tem sempre circuito hamiltoniano.
-
No problema do caixeiro-viajante, num grafo ponderado procura-se o circuito hamiltoniano de menor peso total (não esquecer a aresta de regresso).
-
A árvore lista todos os percursos: partindo de um vértice, num grafo completo com $n$ vértices há $(n-1)!$. Soma-se o peso de cada um e compara-se.
-
O vizinho mais próximo é um algoritmo rápido: em cada passo vai-se para o vértice não visitado mais próximo e no fim regressa-se. Dá uma solução aceitável, nem sempre a ótima.