Algoritmo de Caminho Mínimo
CC/EC/Mestrado
Teoria dos Grafos
CC/EC/PPGI/UFES
Algoritmo de Dijkstra
•
Resolve o problema com um vértice-fonte
em grafos cujas arestas tenham peso
maior ou igual a zero. Este algoritmo é
capaz de determinar o caminho mínimo, a
partir de um vértice inicial v, para todos os
outros vértices do grafo.
CC/EC/Mestrado
Teoria dos Grafos
CC/EC/PPGI/UFES
Algoritmo de Dijkstra
vINI = vértice inicial
d(vINI, vINI) = 0
d(vINI, i) = INFINITO, i, i  V – {vINI}
fechado = 
aberto = V
anterior(i) = 0, i, i  V
enquanto(aberto ≠ ) {
k = vértice pertencente a aberto, mais próximo do vértice inicial
fechado = fechado  k; aberto = aberto – k;
para cada vizinho i de k que está em aberto faça{
custo = min{d(vINI, i), d(vINI,k) + c(k,i)}
se (custo < d(vINI, i)) então
d(vINI, i) = custo; anterior(i) = k
}
}
CC/EC/Mestrado
Teoria dos Grafos
CC/EC/PPGI/UFES
Execução
7. 2 é o vértice 13.
de menor
6 é o custo;
vértice de menor custo;
fechado = fechado+{6}
fechado = fechado+{2}
2. inicializando os custos
8. examinando os vértices vizinhos ao
14. fim alcançado
2
3. atualizando o conjunto
fechado
9. 4 é o vértice de menor custo;
4. examinando os vértices
ao
fechado vizinhos
= fechado+{4}
1 que estão em aberto
10. examinando os vértices vizinhos
5. 3 é o vértice de
custo;
ao menor
4
fechado = fechado+{3}
11. 5 é o vértice de menor custo;
6. examinando os fechado
vértices= vizinhos
ao
fechado+{5}
3
12. examinando os vértices vizinhos
ao 5
1. o grafo inicial
fim do algoritmo
CC/EC/Mestrado
Teoria dos Grafos
CC/EC/PPGI/UFES
Outros algoritmos de
caminho mínimo
• Algoritmo de Bellmann-Ford
• Algoritmo de Floyd
CC/EC/Mestrado
Teoria dos Grafos
CC/EC/PPGI/UFES
Download

CursoTeoriaDosGrafoAula9