Apresentacao-Algoritmo de Dijkstra
Post on 14-Sep-2015
8 Views
Preview:
DESCRIPTION
Transcript
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 mximoDijkstra(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;
HistricoEdsger 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 AlgoritmoPasso1Acumular o vrtice origem;Passo2Considerando 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).Passo3Repita 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 AlgoritmoGrafo GMatriz de Adjacncias
0-s
1-u
2-x
3-v
4-y
0-s
(
10
5
(
(
1-u
(
(
2
1
(
2-x
(
3
(
9
2
3-v
(
(
(
(
4
4-y
7
(
(
6
(
Visualizao do AlgoritmoInicializaoBusca de adjacentes
0-s
1-u
2-x
3-v
4-y
0-s
(
10
5
(
(
1-u
(
(
2
1
(
2-x
(
3
(
9
2
3-v
(
(
(
(
4
4-y
7
(
(
6
(
- Visualizao do AlgoritmoEncontrar o menor caminho.Exemplo: s at y S
ImplementaoPara 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
5
(
(
1-u
(
(
2
1
(
2-x
(
3
(
9
2
3-v
(
(
(
(
4
4-y
7
(
(
6
(
Lista de Adjacncias
Pseudo-CdigoDijkstra (G, origem, destino) para u 1 at n faa dist[u] dist[origem] 0Cria-FilaADJ (1..n)enquanto Fila-no-Vazia() faa u Sai-Mnimo-da-Fila () para cada v em Adj[u] faa se dist[u]+f(uv) < dist[v] ento dist[v] dist[u]+f(uv) ento Reorganiza-Fila ()devolva dist[1..n]O(n)O(n)Pior caso: O (n2)
UtilizaoSistemas 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.htmlAcesso em 19 de junho de 2006
Bibliografia[Morais] Estrutura de Dados e Algoritmos: Uma abordagem didtica. So Paulo 2001 Ed. Berkeley.
top related