GeraProva GeraProva Provas com IA para professores do Brasil
Computação1ª sérieBNCC EM13CO02Média⏱ medio

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

Habilidade BNCC EM13CO02

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?

  1. 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.
  2. B) Usar lista de adjacência e marcar visitas por aresta em vez de por nó.
  3. C) Usar lista de adjacência e marcar visitado com uma única variável global.
  4. D) Usar matriz de adjacência e não usar vetor 'visitado'.
  5. 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

  1. 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.
  2. 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.
  3. 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.
  4. Por que as demais estão erradas:
  5. B) Marcar por aresta não impede que um nó seja revisitado por caminhos diferentes, então os ciclos continuam ocorrendo.
  6. 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.
  7. 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.
  8. 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.
  9. 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 Correta

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.

B Erradaerro: Conceituala que mais engana

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.

C Erradaerro: Conceitual

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.

D Erradaerro: Conceitual

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.

E Erradaerro: Conceitual

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

Dificuldade Média
Bloom Aplicar
Leitura alto
Discriminação alto
Peso pedagógico alto
Autonomia do enunciado completo
Cobertura da habilidade dupla
🧪 Simulado🩺 Diagnóstico🧮 Exige cálculo🏠 Cotidiano🔗 Interdisciplinar⭐ Representativa✍️ interpretativa🧩 desafio
🎯 Conceito central

algoritmo recursivo

📌 Objetivo

avaliacao

🧱 Pré-requisitos

estrutura de dados · algoritmos recursivos

📚 Reveja

Revisar estruturas de dados para grafos e algoritmos recursivos.

⚠️ Erro mais comum

O aluno pode confundir a marcação de nós visitados com a marcação de arestas, levando a ciclos no percurso.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

abstrato

Questões parecidas com resolução

Todas as questões de [CONFERIR] Construir soluções baseadas no uso de algoritmos e conceitos da Computação para resolver problemas, avaliando suas qualidades e melhorando-as.

🔎 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

Ocorreu um erro inesperado. Recarregar X

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.