Skip to content

Instantly share code, notes, and snippets.

@luccasiau
Last active August 29, 2015 14:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save luccasiau/fc8764d1f3b2b7fced9a to your computer and use it in GitHub Desktop.
Save luccasiau/fc8764d1f3b2b7fced9a to your computer and use it in GitHub Desktop.
// para o algoritmo usaremos uma matriz de adjacencia onde mapa[i][j]
// significa a distância de i para j.
// A única diferença do normal é que, caso não exista a aresta (i, j),
// definiremos mapa[i][j] como sendo igual a infinito.
Dijkstra(vértice S):
para todo i de 1 a N: distancia[i] := matriz[S][i]
distancia[S] := 0
processado[S] := true
repetir sempre:
vertice u := -1
int menor_distancia := infinito
// achar o vértice mais próximo
para todo i de 1 a N:
se ((processado[i] == false) e (distancia[i] < menor_distancia)):
u := i
menor_distancia := distancia[i]
se (u == -1): // caso não tenha mais nenhum vértice disponível, fim do algoritmo
quebra_ciclo
processado[u] = true // para impedir que ele seja processado novamente
// agora, vamos tentar atualizar os menores caminhos
para todo i de 1 a N:
distancia[i] = minimo(distancia[i], distancia[u] + mapa[u][i])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment