Algoritmo de Floyd-Warshall

16
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 2012 Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 1 / 16

Transcript of Algoritmo de Floyd-Warshall

Page 1: Algoritmo de Floyd-Warshall

UNIVERSIDADE FEDERAL DE ALFENAS Teoria dos Grafos

Algoritmo de Floyd-Warshall

Discentes: Jéverson Abreu, João A. Silva,Sueli Perpétua, Thalles TerraDocente: Douglas Castilho

Disciplina: Teoria dos Grafos

23 de setembro de 2012

Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 1 / 16

Page 2: Algoritmo de Floyd-Warshall

Introdução

Também conhecido como algoritmo de Floyd, algoritmo deRoy-Floyd, algoritmo de Roy-Warshall ou algoritmo WFI;

Foi explicado por Bernard Roy em 1959 e publica 3 anosmais tarde por Stephen Warshall e Robert Floyd.

É um algoritmo que resolve o problema de encontrar o menorcaminho entre todos os pares de vértices de um grafo orientado eponderado

Ele apenas encontra os valores de tais caminhos, e nãoa seqüência de arestas a ser percorrida.

Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 2 / 16

Page 3: Algoritmo de Floyd-Warshall

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ânciamáxima ou média entre todos os vértices;

Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 3 / 16

Page 4: Algoritmo de Floyd-Warshall

Problema de se encontrar um vértice central

Poderíamos pensar, em como avaliar o melhor local parainstalarmos uma loja. Podemos definir como melhor local aqueleque 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úblicoalvo para a loja.

Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 4 / 16

Page 5: Algoritmo de Floyd-Warshall

Menor caminho entre todos os vértices

Dado um grafo G direcionado e ponderado, encontrar para todopar 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

Page 6: Algoritmo de Floyd-Warshall

Menor caminho entre todos os vértices

O algorimto de Floyd-Warshall tem como objetivo calcular ocaminho mínimo entre cada par de vértices de um grafo

O grafo pode conter arestas negativasNão pode conter ciclos negativosUtiliza técnica de programação dinâmica

Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 6 / 16

Page 7: Algoritmo de Floyd-Warshall

Menor caminho entre todos os vértices

Entrada: matriz de adjacência representando os pesos dasarestas de um grafo orientado e satisfaça a seguinte condição:

yj =

0, se i = j ,o peso da aresta orientada(i , j), se, i 6= j e (i , j) ∈ A,∞, caso contrário.

Saída: Uma matriz quadrada D|V |X |V | onde cada célula dij contéma distancia mínima entre o vétice i e j , onde a entrada dij contémo 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

Page 8: Algoritmo de Floyd-Warshall

Menor caminho entre todos os vértices

func floyd-Warshall(caminho[][])for k = 1 to n

for i = 1 to nfor 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

Page 9: Algoritmo de Floyd-Warshall

Menor caminho entre todos os vértices

func floyd-Warshall(caminho[][])for k = 1 to n

for i = 1 to nfor 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

Page 10: Algoritmo de Floyd-Warshall

Acompanhamento

Matriz de adjacência de entrada

D(0) =

0 8 53 0 ∞∞ 2 0

Após iteração sobre o primeiro vértice

D(1) =

0 8 53 0 8∞ 2 0

Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 10 / 16

Page 11: Algoritmo de Floyd-Warshall

Acompanhamento

Após iteração sobre o segundo vértice

D(2) =

0 8 53 0 85 2 0

Após iteração sobre o terceiro vértice

D(3) =

0 7 53 0 85 2 0

Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 11 / 16

Page 12: Algoritmo de Floyd-Warshall

Complexidade

É fácil analisar o tempo de execução do algoritmo deFloyd-warshall. O laço principal é executado n vezes e o laçointerno considera cada um dos O(n2) pares de vértices,realizando um operação de tempo constante para cada par. Seusarmos 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

Page 13: Algoritmo de Floyd-Warshall

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

Page 14: Algoritmo de Floyd-Warshall

Considerações Finais

O Algoritmo de Floyd-Warshall e Bellman Ford trabalha comarestas de peso negativo enquanto Dijkstra não.Floyd-Warshall tem como saída uma matriz de caminho mínimosjá Bellman Ford e Dijkstra fornece um vetor.No Dijkstra, é possível reproduzir o caminho, enquanto que oFloyd-Warshall apenas fornece o caminho mais curto, e não asequê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

Page 15: Algoritmo de Floyd-Warshall

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 Campus

Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 15 / 16

Page 16: Algoritmo de Floyd-Warshall

Perguntas???

Jéverson, João, Sueli, Thalles (Unifal-MG) 23 de setembro de 2012 16 / 16