GeraProva GeraProva Provas com IA para professores do Brasil
Computação7º anoBNCC EF07CO04Difícil⏱ longo

Descreva, em pseudocódigo, um algoritmo que receba como dado um grafo direcionado G = (V,E) representando…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EF07CO04

Explorar propriedades básicas de grafos.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Descreva, em pseudocódigo, um algoritmo que receba como dado um grafo direcionado G = (V,E) representando dependências entre tarefas (cada vértice = tarefa; aresta u->v indica que u deve preceder v) e verifique se existe um ciclo de dependência. Use uma variável de estado para cada vértice e explique como o algoritmo detecta ciclos e sua complexidade temporal em função de |V| e |E|.

✍️ Questão dissertativa: veja abaixo a resposta esperada e a explicação.

Resposta esperada

Resposta modelo (pseudocódigo e justificativa): // Variáveis: estado[v] ? {0,1,2} para cada vértice v: 0=não visitado, 1=visitando, 2=visitado função existeCiclo(G): para cada v em V faça estado[v] ? 0 para cada v em V faça se estado[v] == 0 então se DFS(v) então retorne verdadeiro // ciclo encontrado retorne falso // nenhum ciclo função DFS(u): estado[u] ? 1 // entrando (na pilha de recusão) para cada (u ? w) em E faça se estado[w] == 0 então se DFS(w) então retorne verdadeiro senão se estado[w] == 1 então retorne verdadeiro // aresta para vértice em processamento = ciclo estado[u] ? 2 // saída (processamento concluído) retorne falso Justificativa e análise: - A variável estado[v] distingue três situações: não iniciado (0), em processamento/recursão (1) e concluído (2). Uma aresta que aponta para um vértice com estado 1 indica um retrocesso na recursão (back edge), logo existe um ciclo. - Correção: o DFS explora caminhos; se houver ciclo, haverá uma aresta para um vértice ainda em processamento e a função detecta e propaga a descoberta do ciclo até a chamada inicial. - Complexidade temporal: cada vértice é visitado uma vez e cada aresta é examinada uma vez durante as chamadas DFS; portanto o tempo é O(|V| + |E|). - Espaço adicional: vetor estado de tamanho |V| e a pilha de recursão com altura = |V|.

Explicação

O algoritmo utiliza a técnica de busca em profundidade (DFS) para explorar o grafo, marcando os vértices com estados que ajudam a identificar ciclos. A detecção de um ciclo ocorre quando uma aresta aponta para um vértice que ainda está em processamento, indicando um retrocesso na recursão. A complexidade temporal O(|V| + |E|) reflete a eficiência do algoritmo, pois cada vértice e aresta é analisado uma única vez.

Raio-X da questão

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

ciclos em grafos

📌 Objetivo

avaliacao

🧱 Pré-requisitos

estruturas de dados · algoritmos de busca

📚 Reveja

Revisar algoritmos de detecção de ciclos em grafos direcionados.

⚠️ Erro mais comum

O aluno pode confundir a lógica de verificação de ciclos com a simples verificação de conexões entre vértices, não considerando a direção das arestas.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

cientifico

Questões parecidas com resolução

Todas as questões de Programação - Propriedades de grafos

🔎 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.