Em uma competição de programação, uma equipe precisa calcular o menor custo para sair de um ponto inicial e…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Explorar propriedades básicas de grafos.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Em uma competição de programação, uma equipe precisa calcular o menor custo para sair de um ponto inicial e chegar a cada outro ponto de uma rede. Cada ligação da rede tem um valor numérico não negativo, que representa seu custo. A equipe considera usar Dijkstra, busca em largura, busca em profundidade, Prim ou Kruskal. Qual algoritmo é mais apropriado para encontrar os menores caminhos a partir de um ponto inicial nessa rede com custos não negativos?
- A) Busca em largura
- B) Algoritmo de Kruskal
- C) Busca em profundidade
- D) Algoritmo de Dijkstra
- E) Algoritmo de Prim
✅ Resposta correta: alternativa D
Resolução passo a passo
- O problema pede os menores caminhos a partir de um ponto inicial (origem única) para todos os outros pontos, em uma rede com custos não negativos nas ligações.
- Esse é o problema clássico de caminhos mínimos de fonte única, para o qual o algoritmo de Dijkstra é a escolha padrão quando os pesos são não negativos. Ele mantém uma estimativa de distância para cada vértice e, a cada passo, fixa o vértice não visitado de menor distância, relaxando suas arestas.
- A alternativa A (busca em largura) só encontra caminhos mínimos quando todas as ligações têm o mesmo custo; com custos diferentes ela não garante o menor custo total.
- A alternativa B (Kruskal) constrói uma árvore geradora de custo mínimo, que conecta todos os pontos com custo total mínimo, mas não calcula o menor caminho de um ponto inicial até cada outro.
- A alternativa C (busca em profundidade) percorre a rede explorando um caminho até o fim antes de voltar, sem qualquer critério de custo, portanto não serve para menores caminhos.
- A alternativa E (Prim) também gera uma árvore geradora mínima; ela minimiza o custo total da árvore, e não a soma do caminho de um ponto inicial até cada destino.
- Logo, a alternativa correta é a D, Algoritmo de Dijkstra, que coincide com o gabarito oficial.
💡 Dica: Considere os algoritmos de busca em grafos.
Alternativa por alternativa
O aluno acredita que a busca em largura encontra o caminho de menor custo porque visita os vértices por níveis, em ordem de número de arestas. Ela só minimiza custo quando todas as ligações têm o mesmo peso.
O aluno confunde caminho mínimo com árvore geradora mínima, achando que Kruskal conecta todos os pontos pelo menor custo e, portanto, dá os menores caminhos a partir de um ponto.
Por que engana: Confundir o algoritmo de Dijkstra com algoritmos de busca, como Busca em Largura ou Busca em Profundidade, que não são adequados para encontrar o menor caminho.
O aluno associa a busca em profundidade a qualquer tipo de percurso completo da rede e imagina que ela também encontra o melhor caminho, sem considerar os custos das ligações.
O algoritmo de Dijkstra encontra os menores caminhos a partir de um ponto inicial quando os custos das ligações são não negativos. Ele considera os custos acumulados e escolhe, a cada etapa, o ponto ainda não analisado com menor custo conhecido.
O aluno acredita que Prim, por ser um algoritmo guloso que escolhe sempre a aresta de menor custo, produz os menores caminhos a partir do ponto inicial, confundindo árvore geradora mínima com caminhos mínimos.
Raio-X da questão
algoritmo de menor caminho
avaliacao
algoritmos de grafos · estruturas de dados
Revisar algoritmos de busca em grafos, como Dijkstra e Bellman-Ford.
Confundir o algoritmo de Dijkstra com algoritmos de busca, como Busca em Largura ou Busca em Profundidade, que não são adequados para encontrar o menor caminho.
ciencia_tecnologia
pensamento_critico
cientifico
Questões parecidas com resolução
- Em um mapa de transporte, cada ligação entre dois locais tem um custo positivo, como tempo ou preço da viagem. Um…
- Num mapa de ruas de uma cidade (grafo com arestas não negativas), para encontrar o menor caminho entre dois pontos, qual…
- Um algoritmo para um drone de entrega precisa calcular a rota de menor tempo em um grafo com pesos positivos nas arestas…
- Uma equipe de mobilidade urbana modelou um conjunto de cidades como um grafo. Cada vértice representa uma cidade, cada…
- Você deve criar um algoritmo para encontrar o caminho mais curto em um grafo que representa uma rede de computadores…
- Desenvolva um algoritmo que encontre o caminho mais curto em um grafo representando uma rede de computadores. Descreva…
🔎 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
