Dado um grafo com arestas de peso não-negativo, o algoritmo de Dijkstra encontra o menor caminho possível entre um vértice definido como origem e todos os outros vértices.
Segue uma explicação resumida e “prática” do algoritmo. Para uma referência mais completa, consulte outras páginas.
- Criar um array de distâncias (D) com um elemento para cada vértice do grafo e setar o valor zero para o vértice de origem e infinito para os outros vértices;
- Criar uma fila de prioridades (Q) com os mesmos valores do array de distâncias, onde a cada requisição deve-se retornar e excluir da fila o vértice de menor distância existente;
- Criar um array (P) com um elemento para cada vértice do grafo, setando inicialmente todos os valores como nulo. Este array guardará o vizinho do vértice que faz parte do caminho mínimo.
- Enquanto houver elementos em Q:
- Extrair um elemento x de Q;
- Para cada vizinho y de x, se D[y] for maior do que D[x] + peso(x, y), setar D[y] = Q[y] = D[x] + peso(x, y) e guardar x em P[y].
Ao final, o array D irá conter as distâncias mínimas de cada vértice até a origem. Para obter o caminho mínimo, percorre-se o array P a partir do vértice destino até a origem (P[origem] = nulo).