13.04.2013 Views

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

Algoritmos e complexidade Notas de aula - Arquivo Escolar

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

2. Análise <strong>de</strong> <strong>complexida<strong>de</strong></strong><br />

7 for cada v ∈ N(u)<br />

8 i f dv = ∞ then<br />

9 dv = du + 1<br />

10 Enqueue(Q, v)<br />

11 end i f<br />

12 end for<br />

13 end while<br />

Uma análise simples observa que o laço while nas linhas 7–13 executa no<br />

máximo |V | iterações, uma para cada nó do grafo. O laço for interior nas<br />

linhas 7–12 executa du iterações, sendo du o grau do nó u. No caso pessimista<br />

du = |V | − 1, portanto esta análise resulta numa <strong>complexida<strong>de</strong></strong> pessimista<br />

O(|V | 2 ), supondo que “Enqueue” e “Dequeue” tem <strong>complexida<strong>de</strong></strong> O(1).<br />

Uma análise agregada sepera a análise do laço exterior, que tem <strong>complexida<strong>de</strong></strong><br />

pessimista O(|V |), da análise do laço interior. O laço interior, tem, agregado<br />

sobre todas iterações do laço exterior, <strong>complexida<strong>de</strong></strong> <br />

u∈V du ≤ 2|E|. Portanto<br />

essa análise resulta numa <strong>complexida<strong>de</strong></strong> pessimista O(|V | + |E|). ♦<br />

Exemplo 2.20<br />

62<br />

Algoritmo 2.13 (Dijkstra)<br />

Entrada Grafo direcionado G = (V, E) com pesos ce, e ∈ E nas arestas,<br />

e um vértice s ∈ V .<br />

Saída A distância mínima dv entre s e cada vértice v ∈ V .<br />

1 ds := 0; dv := ∞, ∀v ∈ V \ {s}<br />

2 visited(v) := false, ∀v ∈ V<br />

3 Q := ∅<br />

4 insert(Q, (s, 0))<br />

5 while Q = ∅ do<br />

6 v := <strong>de</strong>letemin(Q)<br />

7 visited(v) := true<br />

8 for u ∈ N + (v) do<br />

9 i f not visited(u) then<br />

10 i f du = ∞ then

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!