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