Академический Документы
Профессиональный Документы
Культура Документы
do Algoritmo de Dijkstra
Complexidade depende da
implementao
Algoritmo de Dijkstra
Input: Grafo G (dirigido ou no), vrtice S, cada aresta e tem uma dist(e)
associada.
Output: para cada vrtice v, dist(v) de S a v, distncia do menor caminho entre S
e v.
1.
Para todo vrtice u
2.
dist(u) = infinito
3.
prev(u) = nil
4.
dist(S) = 0
5.
Constri H = fila com prioridade contendo os vrtices de G (prioridade a
menor distncia a seus filhos)
6.
While H
7.
u = deletemin(H)
8.
Para cada aresta uv (arestas so ordenadas em ordem descrescente das
distncias)
9.
10.
11.
12.
Anlise de Complexidade
1. Para todo vrtice u
Custo constante c1
2. dist(u) = infinito
3. prev(u) = nil Custo constante c2
O(|V|) vezes
O(|V|)
X = Custo de inserir
elemento no array
5. Constri H = fila com prioridade contendo os vrtices deExecutada
G
|V| vezes
. While H
O(|V|) vezes
.
u = deletemin(H)
.
Para cada aresta uv
O(|E|) vezes
.
se dist(v) > dist(u) + dist(u,v)
Custo c4
0.
dist(v) = dist(u) + dist(u,v)
Custo constante c5
1.
prev(v) = u
Custo constante c6
2.
Ajusta_dist(H,v)
Custo Y; Executada
O(|V|) vezes
Custo Z; Executada
O(|V|+|E|) vezes
4
A
2
C
A
0
B inf
C inf
B
C
4
2
1
Fila na iterao
zero, considerando
a ordem dos vrtices A < B < C
Se a ordem fosse B < A < C o array seria :[inf, 0, inf]
Custo da operao de
deletemin
3
Custo da operao de
deletemin
10
Altera valor + bubble-up