100%(1)Il 100% ha trovato utile questo documento (1 voto)
45 visualizzazioni2 pagine
O algoritmo de Dijkstra resolve o problema do caminho mais curto em grafos dirigidos ou não dirigidos com arestas de peso não negativo em tempo O(m+n log n). Ele funciona de forma gulosa, adicionando iterativamente o vértice de menor distância ao conjunto de caminhos encontrados até que todos os vértices alcançáveis estejam incluídos.
O algoritmo de Dijkstra resolve o problema do caminho mais curto em grafos dirigidos ou não dirigidos com arestas de peso não negativo em tempo O(m+n log n). Ele funciona de forma gulosa, adicionando iterativamente o vértice de menor distância ao conjunto de caminhos encontrados até que todos os vértices alcançáveis estejam incluídos.
O algoritmo de Dijkstra resolve o problema do caminho mais curto em grafos dirigidos ou não dirigidos com arestas de peso não negativo em tempo O(m+n log n). Ele funciona de forma gulosa, adicionando iterativamente o vértice de menor distância ao conjunto de caminhos encontrados até que todos os vértices alcançáveis estejam incluídos.
Publicado: 17/08/2011 por MZ.. Michel em Engenharia da Computao, Notcias, Videos
Tags:Algoritmo, Algoritmo de Dijkstra, Dijkstra, Redes 2
O algoritmo de Dijkstra, cujo nome se origina de seu inventor, o cientista da computao Edsger Dijkstra, soluciona o problema do caminho mais curto num grafo dirigido ou no dirigido com arestas de peso no negativo, em tempo computacional O([m+n]log n) onde m o nmero de arestas e n o nmero de vrtices. O algoritmo que serve para resolver o mesmo problema em um grafo com pesos negativos o algoritmo de Bellman-Ford, que possui maior tempo de execuo que o Dijkstra. O algoritmo de Dijkstra assemelha-se ao BFS, mas um algoritmo guloso, ou seja, toma a deciso que parece tima no momento. Para a teoria dos grafos uma estratgia gulosa conveniente j que sendo P um menor caminho entre 2 vrtices U e V, todo sub-caminho de P um menor caminho entre 2 vrtices pertencentes ao caminho P, desta forma construmos os melhores caminhos dos vrticeis alcanveis pelo vrtice inicial determinando todos os melhores caminhos intermedirios. Nota: diz-se um menor caminho pois caso existam 2 menores caminhos apenas um ser descoberto. O algoritmo considera um conjunto S de menores caminhos, iniciado com um vrtice inicial I. A cada passo do algoritmo busca-se nas adjacncias dos vrtices pertencentes a S aquele vrtice com menor distncia relativa a I e adiciona-o a S e ento repetindo os passos at que todos os vrtices alcanveis por I estejam em S. Arestas que ligam vrtices j pertencentes a S so desconsideradas. Um exemplo prtico do problema que pode ser resolvido pelo algoritmo de Dijkstra : algum precisa se deslocar de uma cidade para outra. Para isso, ela dispe de vrias estradas, que passam por diversas cidades. Qual delas oferece uma trajetria de menor caminho? Algoritmo
1 passo: iniciam-se os valores: para todo v V[G] d[v] [v] nulo d[s] 0 V[G] o conjunto de vrtices(v) que formam o Grafo G. d[v] o vetor de distncias de s at cada v. Admitindo-se a pior estimativa possvel, o caminho infinito. [v] identifica o vrtice de onde se origina uma conexo at v de maneira a formar um caminho mnimo.
2 passo: temos que usar dois conjuntos: S, que representa todos os vrtices v onde d[v] j contem o custo do menor caminho e Q que contem todos os outros vrtices. Q V[G]
3 passo: realizamos uma srie de relaxamentos das arestas, de acordo com o cdigo: enquanto Q u extraia-mn(Q) S S {u} para cada v adjacente a u se d[v] > d[u] + w(u, v) //relaxe (u, v) ento d[v] d[u] + w(u, v) [v] u w(u, v) o peso(weight) da aresta que vai de u a v.u e v so vrtices quaisquer e s o vrtice inicial.extraia-mn(Q), pode usar um heap de mnimo ou uma lista de vrtices onde extrai-se o elemento u com menor valor d[u] fonte wikipedia http://webdesignerinformaticawdi.blogspot.com.br/2012/11/softwares-para-aprender- algoritmo-e.html