Aula 19
Algoritmos de Menor Caminho em Grafos: Dijkstra e Fila de Prioridade
Estruturas de Dados Avançadas
Objetivos Didáticos
- Problema do menor caminho com pesos não-negativos, algoritmo guloso de Dijkstra otimizado com Min-Heap / Priority Queue para complexidade O((V + E) log V), relaxamento de arestas e vetor de distâncias.
- Eficiência assintótica de tempo e espaço
- Implementação em C com integridade de memória
Conceitos Fundamentais
- Algoritmo de Dijkstra
- Relaxamento de Arestas
- Min-Heap Optimization
- Grafo Ponderado
- Roteamento e GPS
Estrutura de Implementação
// Relaxamento de aresta no Algoritmo de Dijkstra
void relaxar(int u, int v, int peso, int dist[], int anterior[], MinHeap* pq) {
if (dist[v] > dist[u] + peso) {
dist[v] = dist[u] + peso;
anterior[v] = u;
min_heap_diminuir
Próximos Passos
Acesse os Exercícios com Gabarito e o Projeto Prático.