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.