You are on page 1of 15

Algoritmo de Dijkstra

Prof . Clodonil H. Trigo

O que o Algoritmo de Dijkstra?

Trata-se de um algoritmo que procura a menor distncia


entre um dado vrtice at cada um dos outros vrtices de
um grafo conexo;

Exemplo: Dado um grafo G=(A,V), onde:

V={0,1,2,3,...,n} onde n=n de vrtices ou vrtice mximo


Dijkstra(0)={ d(0,1), d(0,2), d(0,3), ... , d(0,n) }
Dijkstra(3)={ d(3,0), d(3,1), d(3,2), ... , d(3,n) }

No garante a exatido da soluo caso haja a presena de


arcos com valores negativos.(porqu?)

Sempre encontrar a menor distncia;

Histrico

Edsger Wybe Dijkstra nasceu


em 1930, em Rotterdam, Holanda.
Seu pai era farmacutico e a me
matemtica. Graduou-se em Fsica
Terica e Matemtica pela
Universidade de Leyden e obteve
seu diploma de Ph.D. em Cincia
da Computao na Universidade
de Amsterdam. Trabalhou como
programador de computadores de
1952 a 1962 no Mathematisch
Centrum em Amsterdam. Faleceu
em sua casa no dia 6 de agosto de
2002 deixando esposa e trs
filhos[DIJ].

1956 - shortest-path algorithm

O Algoritmo

Passo1

Passo2

Acumular o vrtice origem;


Considerando cada um dos vrtices existentes na rvore,
calcule a distncia total para seus respectivos vrtices
adjacentes. Selecione o vrtices com o menor valor de
distncia total e acumule-o (cada vrtice acumulado ter
sua distncia atualizada considerando-se as distncias
anteriores acumuladas).

Passo3

Repita o segundo passo at que todos os ns estejam


acumulados. Ao final, os ns acumulados esto em
ordem de custo, a partir da origem dada.

Visualizao do Algoritmo
Grafo

Matriz

de Adjacncias

0-s

1-u

2-x

3-v

4-y

0-s

10

1-u

2-x

3-v

4-y

Visualizao do Algoritmo
Inicializao
0-s 1-u

2-x

3-v

4-y

0-s

10

1-u

2-x

3-v

4-y

Busca

de adjacentes

Visualizao do Algoritmo
Grafo

percorrido e o conjundo dos menores


caminhos em relao ao vrtice S

Encontrar o menor caminho.


Exemplo: s at y
S<-X<-Y

vrtice

perm

dist

path

0-s

SIM

1-u

SIM

2-x

SIM

3-v

SIM

4-y

SIM

Implementao

Para a representao dos Grafos G=(V,A) so


necessrios dois conjuntos:

vrtices e arestas;

Estes dois conjuntos poder ser representados


por dois tipos de estrutura:

Matriz de adjacncia (Esttica);


Lista de adjacncia (Dinmica);

Matriz de Adjacncias Ponderada

0-s 1-u

2-x

3-v

4-y

0-s

10

1-u

2-x

3-v

4-y

Lista de Adjacncias

Pseudo-Cdigo
Dijkstra (G, origem, destino)
1.
para u 1 at n faa
Pior
2.
dist[u]
3.
dist[origem] 0
4.
Cria-FilaADJ (1..n)
5.
enquanto Fila-no-Vazia() faa
6.
u Sai-Mnimo-da-Fila ()
7.
para cada v em Adj[u] faa
8.
se dist[u]+f(uv) < dist[v]
9.
ento dist[v] dist[u]
+f(uv)
10.
ento Reorganiza-Fila ()
11. devolva dist[1..n]

caso: O (n2)

O(n)

O(n)

Utilizao

Sistemas Geo (logstica);


Algoritmo de Roteamento (Roteador de
Rede);
etc...

Bibliografia

[RUD] Estudo e Implementao de Algoritmos de Roteamento


sobre Grafos em um Sistema de Informaes Geogrficas
RUDINI MENEZES UFLA Universidade Federal de Lavras DCC
http://www.dcc.ufla.br/infocomp/artigos/v3.1/art12.pdf
Acesso em 19 de junho de 2006.

[DIJ] Dijkstra Apresenta manuscritos de E. W. Dijkstra, que


foi um grande nome da computao moderna. Disponvel em:
http://www.cs.utexas.edu/users/EWD/
Acesso em 19 de junho de 2006.

[ALD] Algoritmo de Dijkstra. http:


//lcad.icmc.usp.br/~nonato/ED/Dijkstra/node84.html
Acesso em 19 de junho de 2006

Bibliografia

[Morais] Estrutura de Dados e Algoritmos: Uma abordagem


didtica. So Paulo 2001 Ed. Berkeley.

You might also like