Calculadora de Caminho Mais Curto de Dijkstra
Encontre o caminho mais curto entre nós em um grafo ponderado usando o algoritmo de Dijkstra. Inclui visualização interativa do grafo, rastreamento passo a passo da fila de prioridade e exibição da árvore de caminhos mais curtos.
Seu bloqueador de anúncios está impedindo a exibição de anúncios
O MiniWebtool é gratuito graças aos anúncios. Se esta ferramenta ajudou você, apoie-nos indo para o Premium (sem anúncios + ferramentas mais rápidas) ou coloque MiniWebtool.com na lista de permissões e recarregue a página.
- Ou faça upgrade para o Premium (sem anúncios)
- Permita anúncios para MiniWebtool.com e recarregue
Calculadora de Caminho Mais Curto de Dijkstra
Bem-vindo à Calculadora de Caminho Mais Curto de Dijkstra, uma ferramenta interativa para encontrar os caminhos mais curtos em grafos ponderados usando o algoritmo de Dijkstra. Seja você um estudante de ciência da computação aprendendo teoria dos grafos, um profissional de redes analisando protocolos de roteamento ou um desenvolvedor implementando pathfinding, esta calculadora oferece uma exploração visual passo a passo de um dos algoritmos mais fundamentais da computação.
O Que é o Algoritmo de Dijkstra?
O algoritmo de Dijkstra, inventado pelo cientista da computação holandês Edsger W. Dijkstra em 1956, é um algoritmo de busca em grafo que resolve o problema do caminho mais curto de origem única para um grafo ponderado com pesos de aresta não negativos. Dada uma origem, ele encontra o caminho mais curto desse nó para todos os outros nós no grafo.
O algoritmo funciona mantendo um conjunto de nós não visitados e selecionando repetidamente o nó não visitado com a menor distância provisória (uma estratégia gulosa). É isso que o torna elegante e eficiente — uma vez que um nó é "visitado", sua distância mais curta é garantidamente final.
Pseudocódigo do Algoritmo
para cada nó v no Grafo:
dist[v] ← ∞
prev[v] ← indefinido
dist[origem] ← 0
Q ← fila de prioridade de todos os nós
enquanto Q não estiver vazia:
u ← nó em Q com dist[u] mínima
remover u de Q
para cada vizinho v de u ainda em Q:
alt ← dist[u] + peso(u, v)
se alt < dist[v]:
dist[v] ← alt // relaxamento
prev[v] ← u
retornar dist[], prev[]
Fórmula Central
Onde:
- d[u] = distância mais curta atual conhecida da origem para o nó u
- w(u, v) = peso da aresta de u para v
- d[v] = distância mais curta atual conhecida da origem para o nó v
Como Usar Esta Calculadora
- Defina as arestas do grafo: Insira as arestas no formato
origem, destino, peso, uma por linha. Cada linha representa uma conexão entre dois nós. - Escolha o tipo de grafo: Selecione "Não direcionado" para arestas de mão dupla (como estradas) ou "Direcionado" para arestas de mão única (como rotas de voo ou links da web).
- Defina o nó de origem: Insira o nó inicial a partir do qual todos os caminhos mais curtos serão calculados.
- Encontrar caminhos mais curtos: Clique no botão para executar o algoritmo de Dijkstra. Explore a visualização interativa do grafo, a tabela de distâncias e o rastreamento passo a passo.
- Percorra os passos: Use os botões Próximo/Anterior para ver o algoritmo ser executado passo a passo, com o grafo destacando os nós e arestas atualizados em tempo real.
Entendendo os Resultados
Tabela de Distâncias
Mostra a distância mais curta da origem para cada nó, junto com o caminho completo. Nós marcados com ∞ são inalcançáveis a partir da origem.
Visualização de Grafo
O canvas interativo mostra seu grafo com nós e arestas codificados por cores:
- Nó azul = Nó de origem
- Nós verdes = Visitados (distância finalizada)
- Nó laranja = Atualmente sendo processado
- Nós cinzas = Ainda não visitados
- Arestas verdes = Árvore de caminhos mais curtos
Rastreamento Passo a Passo
Exibe a execução do algoritmo, incluindo extrações da fila de prioridade, relaxamentos de arestas e atualizações de distância em cada etapa. Isso é valioso para aprender como o algoritmo funciona.
Complexidade de Tempo
A eficiência do algoritmo de Dijkstra depende da estrutura de dados usada para a fila de prioridade:
| Fila de Prioridade | Complexidade de Tempo | Melhor Para |
|---|---|---|
| Heap Binário | \( O((V + E) \log V) \) | Uso geral, grafos esparsos |
| Heap de Fibonacci | \( O(V \log V + E) \) | Grafos densos (teórico) |
| Array (sem heap) | \( O(V^2) \) | Grafos muito densos, V pequeno |
Onde V é o número de vértices (nós) e E é o número de arestas. Esta calculadora utiliza uma implementação de heap binário.
Grafos Direcionados vs. Não Direcionados
- Grafo não direcionado: Uma aresta entre A e B significa que você pode viajar tanto A→B quanto B→A. Exemplos: redes rodoviárias, redes de amizade, circuitos elétricos.
- Grafo direcionado: Uma aresta de A para B permite apenas a viagem A→B, não necessariamente B→A. Exemplos: hiperlinks da web, seguidores no Twitter, rotas de voo, fluxo de rios.
Limitações do Algoritmo de Dijkstra
- Sem pesos negativos: O algoritmo de Dijkstra produz resultados incorretos com pesos de aresta negativos. Use Bellman-Ford para grafos com pesos negativos (mas sem ciclos negativos).
- Origem única: Ele encontra os caminhos mais curtos a partir de uma única origem. Para caminhos mais curtos de todos os pares, use Floyd-Warshall ou execute o Dijkstra a partir de cada nó.
- Sem ciclos negativos: Ciclos negativos tornam os caminhos mais curtos indefinidos (você sempre pode percorrer o ciclo para reduzir a distância infinitamente).
Aplicações no Mundo Real
Navegação GPS
Serviços de mapeamento usam variantes do algoritmo de Dijkstra (muitas vezes com heurísticas A*) para encontrar a rota mais rápida entre dois locais. Interseções de estradas são nós, e segmentos de estrada são arestas ponderadas (por tempo ou distância).
Roteamento de Rede
Protocolos de roteamento de Internet como OSPF (Open Shortest Path First) e IS-IS usam o algoritmo de Dijkstra para computar caminhos mais curtos através de topologias de rede. Cada roteador constrói uma árvore de caminhos mais curtos para determinar o encaminhamento de pacotes.
Análise de Redes Sociais
Encontrar o caminho de conexão mais curto entre usuários (graus de separação), computar medidas de centralidade e identificar nós influentes em uma rede.
Desenvolvimento de Jogos
O pathfinding de NPCs em videogames usa o algoritmo de Dijkstra ou A* (que estende o Dijkstra com heurísticas) para navegar em mapas de jogos e encontrar caminhos de movimento otimizados.
Cadeia de Suprimentos e Logística
Otimização de rotas de entrega, caminhos de depósito para loja e redes de transporte multimodal onde diferentes métodos de transporte têm custos diferentes.
Perguntas Frequentes
O que é o algoritmo de Dijkstra?
O algoritmo de Dijkstra é um algoritmo de busca em grafos que encontra o caminho mais curto de um nó de origem para todos os outros nós em um grafo ponderado com pesos de aresta não negativos. Ele usa uma estratégia gulosa com uma fila de prioridade (min-heap), sempre processando o nó não visitado com a menor distância conhecida. A complexidade de tempo é O((V + E) log V) com um heap binário.
O algoritmo de Dijkstra pode lidar com pesos de arestas negativos?
Não, o algoritmo de Dijkstra exige que todos os pesos das arestas sejam não negativos. Pesos negativos podem fazer com que o algoritmo produza resultados incorretos porque, uma vez que um nó é marcado como visitado, sua distância é considerada final. Para grafos com pesos negativos (mas sem ciclos negativos), use o algoritmo de Bellman-Ford.
Qual é a diferença entre grafos direcionados e não direcionados?
Em um grafo direcionado, as arestas têm um sentido — uma aresta de A para B não implica uma aresta de B para A. Em um grafo não direcionado, as arestas funcionam nos dois sentidos — se houver uma conexão entre A e B, você pode viajar em qualquer direção. Redes rodoviárias são tipicamente modeladas como grafos não direcionados, enquanto links da web e rotas de voo são direcionados.
O que é o relaxamento de aresta no algoritmo de Dijkstra?
O relaxamento de aresta é a operação central no algoritmo de Dijkstra. Ao visitar um nó u, para cada vizinho v, o algoritmo verifica se o caminho através de u (dist[u] + peso(u,v)) é mais curto do que a distância conhecida atual para v (dist[v]). Se for mais curto, a distância é atualizada (relaxada) e v é adicionado à fila de prioridade com a nova distância.
O que é uma árvore de caminhos mais curtos?
Uma árvore de caminhos mais curtos (SPT) é um subgrafo enraizado no nó de origem que contém os caminhos mais curtos da origem para todos os nós alcançáveis. Cada nó (exceto a origem) possui exatamente um pai — o predecessor em seu caminho mais curto. A SPT é um subproduto do algoritmo de Dijkstra e é útil para roteamento e design de rede.
Quais são as aplicações reais do algoritmo de Dijkstra?
O algoritmo de Dijkstra é usado em sistemas de navegação GPS, protocolos de roteamento de rede (OSPF, IS-IS), análise de redes sociais, otimização de rotas aéreas, planejamento de trajetória de robôs, pathfinding de IA em jogos, logística de cadeia de suprimentos e design de redes de telecomunicações. Qualquer problema que possa ser modelado como encontrar o caminho mais curto ou de menor custo em um grafo se beneficia deste algoritmo.
Recursos Adicionais
Cite este conteúdo, página ou ferramenta como:
"Calculadora de Caminho Mais Curto de Dijkstra" em https://MiniWebtool.com/br// de MiniWebtool, https://MiniWebtool.com/
pela equipe miniwebtool. Atualizado em: 19 de fev. de 2026
Você também pode experimentar nosso Solucionador de Matemática AI GPT para resolver seus problemas de matemática através de perguntas e respostas em linguagem natural.