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

Por que o algoritmo de Dijkstra não garante caminhos mínimos em um grafo que contém arestas com peso negativo?

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

Por que o algoritmo de Dijkstra não garante caminhos mínimos em um grafo que contém arestas com peso negativo?

  1. A) Porque Dijkstra requer pesos não negativos; arestas negativas podem invalidar sua escolha gulosa do vértice com menor distância.
  2. B) O algoritmo Dijkstra assume que o grafo contém apenas ciclos positivos.
  3. C) Dijkstra funciona bem com pesagens negativas, mas não com pesos zero.
  4. D) Caminhos não mínimos podem ser garantidos com o uso de Dijkstra em grafos direcionais.
  5. E) Arestas negativas estimulam a escolha do vértice com maior distância.

✅ Resposta correta: alternativa A

Resolução passo a passo

  1. O algoritmo de Dijkstra é guloso: a cada iteração, escolhe o vértice ainda não fixado com menor distância provisória e o considera definitivo, pois supõe que nenhum caminho futuro poderá ser mais curto.
  2. Essa suposição só vale se todos os pesos forem não negativos. Se existe uma aresta com peso negativo, um caminho que passa por vértices ainda não visitados pode, ao final, somar um valor menor do que o vértice já fixado, mas o algoritmo já o considerou definitivo.
  3. Assim, a alternativa A está correta e coincide com o gabarito oficial: a exigência de pesos não negativos é o motivo da falha, e a escolha gulosa do menor vértice deixa de ser garantidamente ótima.
  4. A alternativa B está errada, porque Dijkstra não trata ciclos positivos como premissa; a exigência é sobre o sinal dos pesos das arestas, e ciclos negativos são um problema à parte.
  5. A alternativa C está errada, porque pesos zero não são o problema; o algoritmo funciona normalmente com pesos iguais a zero, e o que falha são pesos negativos.
  6. A alternativa D está errada, porque afirma o contrário do esperado: Dijkstra não garante caminhos mínimos em grafos com pesos negativos, independentemente de serem direcionados ou não.
  7. A alternativa E está errada, porque o algoritmo nunca escolhe o vértice de maior distância; ele escolhe sempre o de menor distância provisória, e arestas negativas não estimulam esse tipo de escolha.

💡 Dica: Considere as propriedades do algoritmo de Dijkstra em relação a pesos negativos.

Alternativa por alternativa

A Correta

Dijkstra fixa distâncias assumindo que extensões só aumentam custo; uma aresta negativa pode reduzir uma distância já fixada, quebrando a correção do método guloso.

B Erradaerro: Conceituala que mais engana

O aluno acredita que a restrição do Dijkstra recai sobre ciclos, e não sobre os pesos das arestas. Confunde a condição de validade do algoritmo com a existência de ciclos de peso positivo.

Por que engana: Confundir a aplicação do algoritmo Dijkstra em grafos com arestas negativas, acreditando que ele ainda pode encontrar o caminho mínimo.

C Erradaerro: Conceitual

O aluno supõe que o algoritmo tolera pesos negativos e que o problema estaria nos pesos zero, invertendo a condição real de validade. Pode ter memorizado vagamente que 'zero' é um caso delicado sem entender a regra de não negatividade.

D Erradaerro: Interpretação

O aluno lê a frase como se dissesse que Dijkstra garante caminhos mínimos em grafos direcionados, ignorando a palavra 'não' na afirmação e a relação com pesos negativos. Pode também ter se confundido com a ideia de que orientação das arestas resolve o problema.

E Erradaerro: Conceitual

O aluno imagina que pesos negativos fazem o algoritmo preferir vértices mais distantes, invertendo a lógica do critério de seleção. Não percebe que a regra do Dijkstra é sempre escolher a menor distância provisória.

Raio-X da questão

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

algoritmo de Dijkstra

📌 Objetivo

diagnostico

🧱 Pré-requisitos

algoritmos de grafos · pesos em arestas

📚 Reveja

Revisar as características do algoritmo de Dijkstra e seu funcionamento com pesos de arestas.

⚠️ Erro mais comum

Confundir a aplicação do algoritmo Dijkstra em grafos com arestas negativas, acreditando que ele ainda pode encontrar o caminho mínimo.

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