Complexidade do Algoritmo: Caminho mínimo Floyd Warshall
Click here to load reader
-
Upload
lucas-vinicius -
Category
Software
-
view
64 -
download
5
Transcript of Complexidade do Algoritmo: Caminho mínimo Floyd Warshall
![Page 1: Complexidade do Algoritmo: Caminho mínimo Floyd Warshall](https://reader037.fdocumentos.com/reader037/viewer/2022100314/588a8f771a28ab904b8b4c5f/html5/thumbnails/1.jpg)
Complexidade do AlgoritmoCaminho Mínimo de Floyd - Warshall
![Page 2: Complexidade do Algoritmo: Caminho mínimo Floyd Warshall](https://reader037.fdocumentos.com/reader037/viewer/2022100314/588a8f771a28ab904b8b4c5f/html5/thumbnails/2.jpg)
Componentes● Lucas Vinícius● Luiz Ricardo● Pedro Santos
![Page 3: Complexidade do Algoritmo: Caminho mínimo Floyd Warshall](https://reader037.fdocumentos.com/reader037/viewer/2022100314/588a8f771a28ab904b8b4c5f/html5/thumbnails/3.jpg)
Roteiro da apresentação● Explicação do algoritmo● Pseudocódigo● Exemplo de execução● Dedução da complexidade
![Page 4: Complexidade do Algoritmo: Caminho mínimo Floyd Warshall](https://reader037.fdocumentos.com/reader037/viewer/2022100314/588a8f771a28ab904b8b4c5f/html5/thumbnails/4.jpg)
O que o algoritmo faz?● Encontra o menor caminho (os valores de tais caminhos e não as arestas
a serem percorridas) entre os pares de vértices de um dígrafo ponderado.
![Page 5: Complexidade do Algoritmo: Caminho mínimo Floyd Warshall](https://reader037.fdocumentos.com/reader037/viewer/2022100314/588a8f771a28ab904b8b4c5f/html5/thumbnails/5.jpg)
Explicação do algoritmo● O algoritmo preenche um matriz bidimensional,
caminho[][], onde caminho[i][j] é o tamanho do menor caminho entre os nodos i e j:○ Assume-se que a matriz está inicialmente preenchida com o
valor de cada aresta ou infinito (caso não haja uma aresta entre dois vértices).
![Page 6: Complexidade do Algoritmo: Caminho mínimo Floyd Warshall](https://reader037.fdocumentos.com/reader037/viewer/2022100314/588a8f771a28ab904b8b4c5f/html5/thumbnails/6.jpg)
Explicação do algoritmo● Fixa-se um vértice k do grafo; para cada par (i,j) de
vértices, é verificado se o menor caminho j conhecido entre (i, j) supera a soma do tamanho do caminho de i para k com o de k para j. Caso supere, o tamanho do menor caminho passa a ser essa soma.
![Page 7: Complexidade do Algoritmo: Caminho mínimo Floyd Warshall](https://reader037.fdocumentos.com/reader037/viewer/2022100314/588a8f771a28ab904b8b4c5f/html5/thumbnails/7.jpg)
Pseudocódigo
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])
![Page 8: Complexidade do Algoritmo: Caminho mínimo Floyd Warshall](https://reader037.fdocumentos.com/reader037/viewer/2022100314/588a8f771a28ab904b8b4c5f/html5/thumbnails/8.jpg)
Exemplo de execução● Considere o seguinte grafo:
Nota: D(0) é a matriz de entrada, D(1) … D(N) são as matrizes após a iteração com cada vértice.
![Page 9: Complexidade do Algoritmo: Caminho mínimo Floyd Warshall](https://reader037.fdocumentos.com/reader037/viewer/2022100314/588a8f771a28ab904b8b4c5f/html5/thumbnails/9.jpg)
Exemplo de execução● Considere o seguinte grafo:
Nota: D(0) é a matriz de entrada, D(1) … D(N) são as matrizes após a iteração com cada vértice.
![Page 10: Complexidade do Algoritmo: Caminho mínimo Floyd Warshall](https://reader037.fdocumentos.com/reader037/viewer/2022100314/588a8f771a28ab904b8b4c5f/html5/thumbnails/10.jpg)
Exemplo de execução● Considere o seguinte grafo:
Nota: D(0) é a matriz de entrada, D(1) … D(N) são as matrizes após a iteração com cada vértice.
![Page 11: Complexidade do Algoritmo: Caminho mínimo Floyd Warshall](https://reader037.fdocumentos.com/reader037/viewer/2022100314/588a8f771a28ab904b8b4c5f/html5/thumbnails/11.jpg)
Exemplo de execução● Considere o seguinte grafo:
Nota: D(0) é a matriz de entrada, D(1) … D(N) são as matrizes após a iteração com cada vértice.
![Page 12: Complexidade do Algoritmo: Caminho mínimo Floyd Warshall](https://reader037.fdocumentos.com/reader037/viewer/2022100314/588a8f771a28ab904b8b4c5f/html5/thumbnails/12.jpg)
Exemplo de execução● Considere o seguinte grafo:
Nota: D(0) é a matriz de entrada, D(1) … D(N) são as matrizes após a iteração com cada vértice.
![Page 13: Complexidade do Algoritmo: Caminho mínimo Floyd Warshall](https://reader037.fdocumentos.com/reader037/viewer/2022100314/588a8f771a28ab904b8b4c5f/html5/thumbnails/13.jpg)
Dedução de complexidade● Cada laço for pode ser convertido em um somatório com o mesmo
valor inicial e final. Considerando a decisão do valor mínimo entre dois números (min(a, b)) como operação elementar e as atribuições e acessos a matrizes como tempo constante, a complexidade do algoritmo de Floyd-Warshall é dada por:
![Page 14: Complexidade do Algoritmo: Caminho mínimo Floyd Warshall](https://reader037.fdocumentos.com/reader037/viewer/2022100314/588a8f771a28ab904b8b4c5f/html5/thumbnails/14.jpg)
Dedução de complexidade● Pode-se converter o somatório da variável j em n, pois o resultado deste é
a soma n vezes do valor 1, e isolar este termo, que não depende da variável j, resultando no seguinte somatório:
● Ao repetir a dedução usada anteriormente com os somatórios das variáveis i e k, encontra-se o seguinte resultado:
![Page 15: Complexidade do Algoritmo: Caminho mínimo Floyd Warshall](https://reader037.fdocumentos.com/reader037/viewer/2022100314/588a8f771a28ab904b8b4c5f/html5/thumbnails/15.jpg)
Dedução de complexidade● Com a dedução anterior é perceptível que o algoritmo de
Floyd-Warshall possui complexidade O(n³), onde n é o número de vértices do grafo fornecido.
![Page 16: Complexidade do Algoritmo: Caminho mínimo Floyd Warshall](https://reader037.fdocumentos.com/reader037/viewer/2022100314/588a8f771a28ab904b8b4c5f/html5/thumbnails/16.jpg)
Referências● http://pt.slideshare.net/johnnatan20/caminhos-mnimos-fl
oyd?next_slideshow=1
● http://www.inf.ufrgs.br/~cgdaudt/inf05515/art1.pdf