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

Projete um algoritmo em linguagem descritiva que, dado um grafo dirigido acíclico (DAG) que representa…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EF09CO01

Criar soluções de problemas para os quais seja adequado o uso de árvores e grafos para descrever suas informações e automatizá-las usando uma linguagem de programação.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Projete um algoritmo em linguagem descritiva que, dado um grafo dirigido acíclico (DAG) que representa pré-requisitos entre atividades (vértices) e arestas direcionadas de pré-requisito para atividade dependente, gere uma ordem viável de execução (ordenação topológica). Explique como o algoritmo detecta ausência de ordem possível (i.e., presença de ciclo) e informe a complexidade temporal.

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

Resposta esperada

Algoritmo (Kahn) — entrada: DAG G(V,E) 1) Calcular grau de entrada indeg[v] para todo v em V. 2) Colocar em fila Q todos os vértices com indeg = 0. 3) lista ? [] 4) enquanto Q não vazia: u ? remover(Q); adicionar u em lista; para cada aresta (u,v) em E: indeg[v] ? indeg[v] - 1; se indeg[v] = 0 então enfileirar v em Q. 5) se |lista| < |V| então: reportar "não existe ordenação (ciclo)"; senão retornar lista. Detecção de ciclo: se algum vértice permanece com indeg>0 (isto é, |lista| < |V|), há ciclo. Complexidade: O( |V| + |E| ). Observação: para ordenação estável por prioridade (ex.: menor prazo primeiro), substituir Q por uma fila de prioridade; mantém complexidade O((|V|+|E|) log |V|) dependendo da estrutura.

Explicação

O algoritmo proposto utiliza a técnica de Kahn para realizar a ordenação topológica em um DAG, garantindo que as atividades sejam executadas na ordem correta de acordo com seus pré-requisitos. A detecção de ciclos é feita ao verificar se todos os vértices foram incluídos na lista final; se algum vértice permanecer com grau de entrada maior que zero, isso indica a presença de um ciclo. A complexidade temporal O(|V| + |E|) é eficiente, pois considera tanto o número de vértices quanto o de arestas no grafo.

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

algoritmo de ordenação topológica

📌 Objetivo

avaliacao

🧱 Pré-requisitos

algoritmo de ordenação topológica · grafos dirigidos acíclicos

📚 Reveja

Revisar conceitos de grafos dirigidos e algoritmos de ordenação.

⚠️ Erro mais comum

O aluno pode confundir a ordenação topológica com a ordenação simples, não considerando as dependências entre as atividades.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

cientifico

Questões parecidas com resolução

Todas as questões de Programação - Programação usando grafos e árvores

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