Módulo 15 - Projeto final: Mapa de Rotas

O projeto: Mapa de Rotas

8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 12/07/2026

Velocidade

O que você vai aprender

  • Entender o objetivo do projeto Mapa de Rotas.
  • Transformar uma rede real em um grafo (vértices e arestas).
  • Decidir o que vira vértice e o que vira aresta em um problema.
  • Representar o grafo por lista de adjacência para o programa usar.

A missão do projeto

A missão é direta de enunciar e rica de resolver: dado um mapa de pontos conectados, e dois pontos específicos, ache um caminho de um até o outro. Pense num metrô. Você está na estação Centro e quer chegar na estação Parque. O programa precisa devolver a sequência de estações que leva você lá. Esse mesmo problema aparece disfarçado em muitos lugares: o aplicativo de trânsito achando a rota entre dois bairros, a rede social calculando quantos apertos de mão separam você de outra pessoa, o jogo movendo um personagem pelo labirinto até a saída. Todos são a mesma pergunta com roupas diferentes, e todos se resolvem com as estruturas e os algoritmos que você viu ao longo deste curso avançado.

O erro do iniciante é sair codando. O projetista faz o contrário: primeiro desenha o problema. E a pergunta que desbloqueia tudo é uma só. Como represento essa rede de um jeito que o programa consiga percorrer? A resposta você já conhece: um grafo. As estações viram vértices, os trechos de trilho que ligam duas estações viram arestas. Quando você olha o mapa do metrô e enxerga vértices e arestas em vez de desenho colorido, o problema deixa de ser sobre trens e vira um problema de grafo, exatamente o tipo que temos ferramenta para resolver.

À esquerda, um mapa estilizado de metrô com estações Centro, Norte, Parque, Feira e Porto ligadas por trechos de trilho. À direita, o mesmo mapa redesenhado como grafo abstrato: cada estação vira um círculo rotulado (vértice) e cada trecho de trilho vira uma linha entre dois círculos (aresta). Uma seta liga os dois desenhos, mostrando que são a mesma coisa.
O mapa real e o grafo são a mesma rede: estações viram vértices, trechos de trilho viram arestas.

O que vira vértice, o que vira aresta

Modelar bem é acertar duas escolhas: o que é vértice e o que é aresta. A regra prática é pensar no que são os pontos de interesse (viram vértices) e no que os conecta diretamente (viram arestas). No metrô, vértice é estação, aresta é o trecho que liga duas estações vizinhas. Numa rede de amizades, vértice é pessoa, aresta é a amizade entre duas pessoas. Num labirinto, cada casa livre vira um vértice e cada passo possível entre casas vizinhas vira uma aresta. Feita essa escolha, você precisa guardar o grafo de um jeito que o programa consiga consultar. A forma mais útil é a lista de adjacência: para cada vértice, uma lista dizendo com quem ele se liga.

grafo <- {
  "Centro":  ["Norte", "Feira"],
  "Norte":   ["Centro", "Parque"],
  "Feira":   ["Centro", "Porto"],
  "Parque":  ["Norte", "Porto"],
  "Porto":   ["Feira", "Parque"]
}
// vizinhos diretos de Centro:
escreva(grafo["Centro"])   // ["Norte", "Feira"]

Cada estação (vértice) aponta para a lista dos seus vizinhos. Isso é a lista de adjacência do Mapa de Rotas.

🎮 Jogo da aula

Modelou certo?

Decida se cada afirmação sobre modelar a rede como grafo é verdadeira ou falsa.

Por que começar pela modelagem

Ao longo da trilha você foi do resolver problemas soltos ao projetar soluções. Este projeto é o teste dessa mudança. Quem começa a modelagem certa quase não sofre depois: o grafo pronto praticamente entrega o algoritmo. Quem pula direto para o código costuma se enrolar, escrevendo laços confusos que tentam adivinhar conexões que nunca foram organizadas. Guardar a rede como lista de adjacência é o que permite, na próxima aula, percorrer o grafo com calma, perguntando a cada passo quais são os vizinhos do ponto atual. A modelagem não é burocracia, é a decisão que torna o resto simples.

Teste rápido

No projeto Mapa de Rotas de um metrô, qual é a modelagem correta como grafo?

Perguntas frequentes

Preciso de um mapa de verdade para fazer o projeto?
Não. O projeto trabalha com uma rede inventada, pequena, com poucas estações, só para você exercitar a lógica. O importante é o raciocínio: modelar como grafo e achar o caminho. Uma rede de cinco ou seis pontos já mostra tudo que precisa ser mostrado, e cabe na cabeça durante um teste de mesa.
Qual a diferença entre modelar e programar?
Modelar é decidir a estrutura: o que é vértice, o que é aresta, como guardar. Programar é escrever os passos que operam sobre essa estrutura. A modelagem vem primeiro e é uma decisão de projeto; o código vem depois e é quase mecânico quando a modelagem está boa. Pular a modelagem é a causa mais comum de código embolado.
Por que usar lista de adjacência e não outra representação?
Porque o algoritmo de caminho pergunta o tempo todo quais são os vizinhos de um ponto, e a lista de adjacência responde isso na hora: basta olhar a lista daquele vértice. A matriz de adjacência também existe, mas para redes esparsas (com poucas conexões por ponto) a lista é mais simples e econômica, e cai bem no pseudocódigo.
O grafo do metrô é dirigido ou não dirigido?
No metrô comum, não dirigido: se dá para ir de Centro a Norte, dá para voltar de Norte a Centro. Por isso, na lista de adjacência, Centro aparece nos vizinhos de Norte e Norte aparece nos vizinhos de Centro. Em ruas de mão única, o grafo seria dirigido, e a aresta valeria só num sentido.
E se dois pontos não estiverem conectados?
Aí não existe caminho entre eles, e o programa deve dizer isso em vez de travar. O algoritmo da próxima aula percorre tudo que consegue alcançar a partir da origem; se o destino nunca aparece, a busca termina sem achar o caminho, e essa resposta honesta (não há rota) também é um resultado correto.
Esse projeto serve para outros tipos de rede?
Serve, e é justamente esse o ponto. Trocando o significado de vértice e aresta, o mesmo programa acha graus de separação numa rede social, rotas num mapa de ruas ou a saída de um labirinto. Modelar como grafo é o que torna a solução reaproveitável entre problemas que pareciam sem relação.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.