Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
UNIVERSIDADE FEDERAL DE ALFENAS      Teoria dos Grafos                               Algoritmo de Floyd-Warshall          ...
Introdução           Também conhecido como algoritmo de Floyd, algoritmo de           Roy-Floyd, algoritmo de Roy-Warshall...
Outras Aplicações           Calcular o Fecho Transitivo de um grafo;           Verificar se um grafo não-dirigido é biparti...
Problema de se encontrar um vértice central           Poderíamos pensar, em como avaliar o melhor local para           ins...
Menor caminho entre todos os vértices           Dado um grafo G direcionado e ponderado, encontrar para todo           par...
Menor caminho entre todos os vértices           O algorimto de Floyd-Warshall tem como objetivo calcular o           camin...
Menor caminho entre todos os vértices           Entrada: matriz de adjacência representando os pesos das           arestas...
Menor caminho entre todos os vértices   func floyd-Warshall(caminho[][])       for k = 1 to n                  for i = 1 to...
Menor caminho entre todos os vértices   func floyd-Warshall(caminho[][])       for k = 1 to n                  for i = 1 to...
Acompanhamento           Matriz de adjacência de entrada                                                     0 8 5        ...
Acompanhamento           Após iteração sobre o segundo vértice                                                     0 8 5  ...
Complexidade           É fácil analisar o tempo de execução do algoritmo de           Floyd-warshall. O laço principal é e...
Bellman Ford x Dijkstra x Floyd-Warshall                            BF               Dijkstra            FW               ...
Considerações Finais           O Algoritmo de Floyd-Warshall e Bellman Ford trabalha com           arestas de peso negativ...
Bibliografia           CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L.; (2002).           Algoritmos - Teoria e Prática. Tra...
Perguntas???Jéverson, João, Sueli, Thalles (Unifal-MG)                  23 de setembro de 2012   16 / 16
Upcoming SlideShare
Loading in …5
×

Algoritmo de Floyd-Warshall

12,003 views

Published on

Published in: Education
  • Be the first to comment

Algoritmo de Floyd-Warshall

  1. 1. UNIVERSIDADE FEDERAL DE ALFENAS Teoria dos Grafos Algoritmo de Floyd-Warshall Discentes: Jéverson Abreu, João A. Silva, Sueli Perpétua, Thalles Terra Docente: Douglas Castilho Disciplina: Teoria dos Grafos 23 de setembro de 2012Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 1 / 16
  2. 2. Introdução Também conhecido como algoritmo de Floyd, algoritmo de Roy-Floyd, algoritmo de Roy-Warshall ou algoritmo WFI; Foi explicado por Bernard Roy em 1959 e publica 3 anos mais tarde por Stephen Warshall e Robert Floyd. É um algoritmo que resolve o problema de encontrar o menor caminho entre todos os pares de vértices de um grafo orientado e ponderado Ele apenas encontra os valores de tais caminhos, e não a seqüência de arestas a ser percorrida.Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 2 / 16
  3. 3. Outras Aplicações Calcular o Fecho Transitivo de um grafo; Verificar se um grafo não-dirigido é bipartido; Achar um vértice central, isto é, aquele que minimiza a distância máxima ou média entre todos os vértices;Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 3 / 16
  4. 4. Problema de se encontrar um vértice central Poderíamos pensar, em como avaliar o melhor local para instalarmos uma loja. Podemos definir como melhor local aquele que diminui a distância entre a loja e locais estratégicos como: Um bairro onde o consumo dos produtos vendidos por ela é alto; Estabelicimentos que prestarão serviços para a loja; Um local onde se tenha uma grande concentração de um público alvo para a loja.Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 4 / 16
  5. 5. Menor caminho entre todos os vértices Dado um grafo G direcionado e ponderado, encontrar para todo par u, v de vértices um caminho mínimo de u a v.Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 5 / 16
  6. 6. Menor caminho entre todos os vértices O algorimto de Floyd-Warshall tem como objetivo calcular o caminho mínimo entre cada par de vértices de um grafo O grafo pode conter arestas negativas Não pode conter ciclos negativos Utiliza técnica de programação dinâmicaJéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 6 / 16
  7. 7. Menor caminho entre todos os vértices Entrada: matriz de adjacência representando os pesos das arestas de um grafo orientado e satisfaça a seguinte condição:   0,  se i = j, yj = o peso da aresta orientada(i, j), se, i = j e (i, j) ∈ A,  ∞,  caso contrário. Saída: Uma matriz quadrada D|V |X |V | onde cada célula dij contém a distancia mínima entre o vétice i e j, onde a entrada dij contém o peso do caminho mais curto do vértice i até o vértice j.Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 7 / 16
  8. 8. Menor caminho entre todos os vértices func floyd-Warshall(caminho[][]) for k = 1 to n for i = 1 to n for j = 1 to n caminho[i][j] = min(caminho[i][j], caminho[i][k]+caminho[k][j])Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 8 / 16
  9. 9. Menor caminho entre todos os vértices func floyd-Warshall(caminho[][]) for k = 1 to n for i = 1 to n for j = 1 to n caminho[i][j] = min(caminho[i][j], caminho[i][k]+caminho[k][j])Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 9 / 16
  10. 10. Acompanhamento Matriz de adjacência de entrada 0 8 5 D (0) = 3 0 ∞ ∞ 2 0 Após iteração sobre o primeiro vértice 0 8 5 D (1) = 3 0 8 ∞ 2 0Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 10 / 16
  11. 11. Acompanhamento Após iteração sobre o segundo vértice 0 8 5 D (2) = 3 0 8 5 2 0 Após iteração sobre o terceiro vértice 0 7 5 D (3) = 3 0 8 5 2 0Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 11 / 16
  12. 12. Complexidade É fácil analisar o tempo de execução do algoritmo de Floyd-warshall. O laço principal é executado n vezes e o laço interno considera cada um dos O(n2 ) pares de vértices, realizando um operação de tempo constante para cada par. Se usarmos uma estrutura de dados como a matriz de adjacência, temos um tempo de execução total de O(n3 ).Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 12 / 16
  13. 13. Bellman Ford x Dijkstra x Floyd-Warshall BF Dijkstra FW |V |O(|V ∗ A|) |V |O(|V |2 + |A| O(|V |3 )Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 13 / 16
  14. 14. Considerações Finais O Algoritmo de Floyd-Warshall e Bellman Ford trabalha com arestas de peso negativo enquanto Dijkstra não. Floyd-Warshall tem como saída uma matriz de caminho mínimos já Bellman Ford e Dijkstra fornece um vetor. No Dijkstra, é possível reproduzir o caminho, enquanto que o Floyd-Warshall apenas fornece o caminho mais curto, e não a sequência das arestas. Bellman Ford aceita ciclo negativo enquanto Floyd-Warshall não.Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 14 / 16
  15. 15. Bibliografia CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L.; (2002). Algoritmos - Teoria e Prática. Tradução da 2a edição americana. Rio de Janeiro. Editora CampusJéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 15 / 16
  16. 16. Perguntas???Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 16 / 16

×