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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

11 du := dv + dvu<br />

12 insert(Q, (u, du))<br />

13 else i f dv + dvu < du<br />

14 du := dv + dvu<br />

15 update(Q, (u, du))<br />

16 end i f<br />

17 end i f<br />

18 end for<br />

19 end while<br />

2.4. Outros típos <strong>de</strong> análise<br />

Pelo mesmo argumento dado na análise da busca por profundida<strong>de</strong>, po<strong>de</strong>mos<br />

ver<br />

Proposição 2.1<br />

O algoritmo <strong>de</strong> Dijkstra possui <strong>complexida<strong>de</strong></strong><br />

O(n) + n × <strong>de</strong>letemin + n × insert + m × update.<br />

Usando uma implementação da fila <strong>de</strong> priorida<strong>de</strong> por um heap binário que<br />

realiza todas operações em O(log n), a <strong>complexida<strong>de</strong></strong> pessimista do algoritmo<br />

<strong>de</strong> Dijkstra é O((m + n) log n).<br />

O caso médio do algoritmo <strong>de</strong> Dijkstra Dado um grafo G = (V, E) e um<br />

vértice inicial arbitrário. Alem disso supõe que temos um conjunto C(v) n<strong>de</strong><br />

pesos positivos com |C(v) |= |N − (v)| para cada v ∈ V . Nos vamos atribuir<br />

permutações dos pesos em C(v) aleatoriamente para os arcos entrantes em v.<br />

Proposição 2.2 (Noshita [55])<br />

O algoritmo <strong>de</strong> Disjkstra chamada update em média n log(m/n) vezes neste<br />

mo<strong>de</strong>lo.<br />

Prova. Para um vértice v os arcos que po<strong>de</strong>m levar a uma operação update<br />

em v são <strong>de</strong> forma (u, v) com dist(s, u) ≤ dist(s, v). Supõe que existem k<br />

arcos (u1, v), . . . , (uk, v) <strong>de</strong>sse tipo, or<strong>de</strong>nado por dist(s, ui) não-<strong>de</strong>crescente.<br />

In<strong>de</strong>pen<strong>de</strong>nte da atribuição dos pesos aos arcos, a or<strong>de</strong>m <strong>de</strong> processamento<br />

mantem-se. O arco (ui, v) leva a uma operação update caso<br />

dist(s, ui) + duiv < min<br />

j:j

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

Saved successfully!

Ooh no, something went wrong!