Ao projetar um algoritmo recursivo para percorrer uma rede de cidades representada por um grafo, qual…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Explorar e construir a solução de problemas por meio de refinamentos, utilizando diversos níveis de abstração desde a especificação até a implementação.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Ao projetar um algoritmo recursivo para percorrer uma rede de cidades representada por um grafo, qual estrutura de dados e variável são mais adequadas para marcar nós visitados e evitar ciclos durante o percurso?
- A) Usar uma lista de adjacência para o grafo e um vetor/registro booleano 'visitado[n]' (ou conjunto) para marcar nós; verificar visitado antes de recursar.
- B) Usar lista de adjacência e marcar visitas por aresta em vez de por nó.
- C) Usar lista de adjacência e marcar visitado com uma única variável global.
- D) Usar matriz de adjacência e não usar vetor 'visitado'.
- E) Usar lista de adjacência e confiar só na pilha de chamadas para evitar ciclos.
✅ Resposta correta: alternativa A
Resolução passo a passo
- O problema pede a estrutura de dados e a variável mais adequadas para percorrer um grafo recursivamente sem entrar em ciclos. Para isso, precisamos de uma representação eficiente das arestas e de um mecanismo que lembre quais nós já foram visitados.
- A lista de adjacência é a representação mais adequada para uma rede esparsa de cidades, pois para cada nó guarda apenas seus vizinhos diretos, economizando memória e tornando a iteração sobre os vizinhos rápida.
- Para evitar ciclos, basta um vetor booleano visitado[n] (ou um conjunto), indexado pelos nós, que é marcado ao entrar em um nó. Antes de recursar para um vizinho, verifica-se se ele já está marcado; se estiver, a chamada não é feita. Isso garante que cada nó seja processado no máximo uma vez.
- Por que as demais estão erradas:
- B) Marcar por aresta não impede que um nó seja revisitado por caminhos diferentes, então os ciclos continuam ocorrendo.
- C) Uma única variável global não consegue registrar o estado de cada um dos muitos nós; ela não distingue quais cidades já foram visitadas.
- D) A matriz de adjacência pode representar o grafo, mas dispensar o vetor de visitados deixa o algoritmo sem controle de ciclos, o que gera recursão infinita em grafos com ciclos.
- E) A pilha de chamadas apenas guarda o caminho corrente; ela não lembra nós já percorridos por outros ramos, então não evita ciclos nem revisitas.
- Conclusão: a alternativa A combina a representação adequada do grafo com a marcação por nó, que é exatamente o que garante o término do percurso.
💡 Dica: Considere as estruturas de dados adequadas para grafos.
Alternativa por alternativa
A lista de adjacência torna iteração sobre vizinhos eficiente; o vetor booleano permite checagem O(1) se um nó já foi processado, evitando revisitas e ciclos durante a recursão.
Imagina que marcar as arestas percorridas basta para controlar o percurso, mas o que causa ciclos é revisitar nós, não arestas. Um nó pode ser alcançado por vários caminhos diferentes sem que nenhuma aresta se repita.
Por que engana: O aluno pode confundir a marcação de nós visitados com a marcação de arestas, levando a ciclos no percurso.
Acredita que um único valor global consegue indicar o estado de todas as cidades. Não percebe que cada nó precisa de sua própria marcação para saber se já foi visitado.
Acha que a matriz de adjacência dispensa o controle de visitados, talvez por confundir a forma de representar o grafo com o mecanismo de controle do percurso. A representação do grafo e a marcação de nós são problemas independentes.
Supõe que a pilha de chamadas, por guardar o caminho atual, também impede revisitas. Na verdade, ela só lembra o caminho corrente e esquece nós já explorados em outros ramos, permitindo ciclos.
Raio-X da questão
algoritmo recursivo
avaliacao
estrutura de dados · algoritmos recursivos
Revisar estruturas de dados para grafos e algoritmos recursivos.
O aluno pode confundir a marcação de nós visitados com a marcação de arestas, levando a ciclos no percurso.
ciencia_tecnologia
pensamento_critico
abstrato
Questões parecidas com resolução
- Em um projeto de monitoramento de rios, uma boia computacional organiza leituras de sensores antes de enviá-las por…
- Uma biblioteca escolar recebeu caixas de livros doados para uma feira de troca. Para registrar os exemplares, a equipe…
- Um centro cultural público oferece inscrições on-line para atividades com critérios variados. Na oficina de teatro…
- Uma escola está testando dois protótipos de aplicativo para que estudantes consultem mudanças de sala, horários e…
- Uma secretaria municipal de educação está digitalizando pedidos de transporte escolar e de atendimento em contraturno…
- — O cartaz não pode sair duas vezes, pois a feira começa em uma hora — alertou a coordenadora do centro cultural. No…
🔎 Procurar outra questão
Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
