Você está na página 1de 2

Caminho mais Curto

O caminho mais curto entre os vértices v e w de um grafo G ponderado é aquele que


acumula o menor valor possível dentre todos os caminhos existentes entre v e w.

----------------------------------

Algoritmo de Dijkstra

1 - De um nó fonte para todos os demais vértices


2 - De todos os nós para um destino único
3 - De par único

- Ler G = (N,M) e D = [dij], onde dij é o custo da aresta (i, j)

dt[1] <- 0
rot[1] <- ∞

Para i <- 2 até n faça


dt[i] <- ∞
rot[i] <- 0
Fim_Para

A <- {N}
F <- ∅

Enquanto F ≠ N faça
r <- j ∈ A, tal que dt[j] é minimo dentre os elementos de A
F <- F ∪ {r}
A <- A\{r}
V <- V\F

Para i ∈ V faça

p <- min{dt[i], (dt[r]+dri)}

Se p < dt[i]
dt[i] <- p
rot[i] <- r
Fim_Se
Fim_Para
Fim_Enquanto

- Complexidade = O(n²)

----------------------------------

Algoritmo de Bellman-Ford

- Dado G = (V, E), s e w

Para cada v ∈ V faça


d(v) <- ∞
rot(v) <- NIL //predecessor
d(s) <- 0
Para i <- 1 até |V|-1 faça
Para cada aresta (u, v) faça
se d(v) > d(u) + w(u, v) então
d(v) <- d(u) + w(u,v)
rot(v) <- u
Para cada aresta (u, v) faça
Se d(v) > d(u) + w(u, v) então
retorne(Falso)
Retorne(verdadeiro)

----------------------------------

Algoritmo de Floyd-Warshall

(TODO)

Você também pode gostar