GeraProva GeraProva Provas com IA para professores do Brasil
Computação5º anoBNCC EF15CO01Difícil⏱ medio

Em um algoritmo que realiza um join entre duas matrizes de registros 'pedidos' e 'clientes' usando o campo…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EF15CO01

Identificar as principais formas de organizar e representar a informação de maneira estruturada (matrizes, registros, listas e grafos) ou não estruturada (números, palavras, valores verdade).

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Em um algoritmo que realiza um join entre duas matrizes de registros 'pedidos' e 'clientes' usando o campo 'cliente_id', qual estratégia reduz a complexidade média quando uma das matrizes é muito menor que a outra?

  1. A) Sort-merge join: ordenar ambas as matrizes antes do join.
  2. B) Nested loop join: para cada registro, comparar com todos na outra matriz.
  3. C) Merge join apenas com registros que têm o mesmo 'cliente_id'.
  4. D) Hash join: construir uma tabela hash da menor matriz e fazer probe com os registros da maior.
  5. E) Cross join: combinar todas as entradas antes de filtrar.

✅ Resposta correta: alternativa D

Resolução passo a passo

  1. O problema pede a estratégia de join que tem menor custo médio quando uma das matrizes é muito menor que a outra. O custo depende do número de comparações e acessos feitos entre as duas matrizes.
  2. Hash join (alternativa D): constrói-se uma tabela hash apenas da matriz menor, com custo proporcional ao seu tamanho. Depois, cada registro da matriz maior faz uma busca (probe) na tabela, que tem tempo médio constante. O custo médio fica próximo de n + m, e a memória necessária é só a da matriz menor. Por isso D é a resposta correta.
  3. Nested loop join (B) compara cada registro com todos os da outra matriz, custando cerca de n vezes m comparações, o que não aproveita o tamanho menor.
  4. Sort-merge join (A) exige ordenar as duas matrizes, com custo de ordenação da ordem de n log n + m log m, e não tira vantagem da diferença de tamanho.
  5. Merge join filtrando apenas registros com o mesmo cliente_id (C) não é uma estratégia distinta que reduza o custo: o merge já depende de ordenação e não se beneficia de uma matriz muito menor.
  6. Cross join (E) gera todas as n vezes m combinações antes de filtrar, sendo a pior opção em custo.
  7. Conclusão: a alternativa D é a correta e coincide com o gabarito oficial.

💡 Dica: Considere a relação entre as matrizes e a estratégia de join.

Alternativa por alternativa

A Erradaerro: Conceitual

Acredita que ordenar ambas as matrizes reduz o custo médio do join, sem perceber que a ordenação custa caro e não aproveita a diferença de tamanho entre as matrizes.

B Erradaerro: Conceituala que mais engana

Imagina que comparar cada registro com todos da outra matriz é eficiente por ser simples, sem notar que o número de comparações cresce como o produto dos tamanhos.

Por que engana: Escolher o Nested loop join, acreditando que é a abordagem mais simples, sem considerar a eficiência em termos de complexidade.

C Erradaerro: Conceitual

Entende que restringir o merge aos registros com o mesmo cliente_id muda a complexidade, mas o merge join continua exigindo ordenação e não se beneficia de uma matriz muito menor.

D Correta

Construir um hash da menor matriz permite buscas por chave em tempo médio O(1), resultando em custo médio O(n+m) e evitando ordenação; é eficiente quando a menor matriz cabe em memória.

E Erradaerro: Procedimental

Pensa que combinar todas as entradas antes de filtrar é uma forma direta de resolver o join, sem perceber que isso gera n vezes m combinações intermediárias.

Raio-X da questão

Dificuldade Difícil
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

join entre matrizes

📌 Objetivo

avaliacao

🧱 Pré-requisitos

estratégias de join em bancos de dados · complexidade de algoritmos

📚 Reveja

Revisar estratégias de otimização de joins em bancos de dados.

⚠️ Erro mais comum

Escolher o Nested loop join, acreditando que é a abordagem mais simples, sem considerar a eficiência em termos de complexidade.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

abstrato

Questões parecidas com resolução

Todas as questões de Organização e representação da informação

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