caminhos m nimos de todos os pares -...

34
Caminhos m´ ınimos de todos os pares Algoritmos em Grafos Marco A L Barbosa cba Este trabalho est´ a licenciado com uma Licen¸ ca Creative Commons - Atribui¸c˜ ao-CompartilhaIgual 4.0 Internacional.

Upload: letu

Post on 09-May-2018

215 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

Caminhos mınimos de todos os pares

Algoritmos em Grafos

Marco A L Barbosa

cba

Este trabalho esta licenciado com uma Licenca Creative Commons - Atribuicao-CompartilhaIgual 4.0 Internacional.

Page 2: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

Conteudo

Introducao

Algoritmos

Baseado em multiplicacao de matrizes

Algoritmo de Floyd-Warshall

Agoritmo de Johnson para grafos esparsos

Referencias

Page 3: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

O estudo utilizando apenas este material nao e suficiente para oentendimento do conteudo. Recomendamos a leitura dasreferencias no final deste material e a resolucao (por parte doaluno) de todos os exercıcios indicados.

3 / 31

Page 4: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

Introducao

Page 5: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

Introducao

I Dado um grafo orientado G = (V ,E ) e uma funcao pesow : E → R, queremos encontrar, para todo par de verticesu, v ∈ V , o caminho de peso mınimo de u ate v

5 / 31

Page 6: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

Introducao

I Podemos resolver este problema aplicando um algoritmo decaminho mınimo de unica origem |V | vezes, uma vez paracada vertice

I Dijkstra (sem arestas com pesos negativos)

I Arranjo linear: O(V 3 + VE) = O(V 3)I Heap binario: O(VE lgV ), se o grafo e denso O(V 3 lgV )I Heap de fibonacci: O(V 2 lgV + VE), se o grafo e denso

O(V 3)

I Bellman-Ford (grafos gerais)

I O(V 2E), se o grafo e denso O(V 4)

I Veremos um algoritmo O(V 3) que nao usa nenhuma estruturade dados especial

6 / 31

Page 7: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

Introducao

I Consideracoes

I Supomos que nao existem ciclos de pesos negativosI Os vertices estao numerados como 1, 2, 3, . . . , n, onde n = |V |

7 / 31

Page 8: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

Introducao

I Entrada

I Uma matriz Wn × n que representa os pesos das arestas. Istoe, W = wij , onde

wij =

0 se i = j

o peso da aresta (i , j) se i 6= j e (i , j) ∈ E

∞ se i 6= j e (i , j) 6∈ E

I Saıda

I Matriz Dn × n = dij , onde a entrada dij contem o peso docaminho mınimo do vertice i ate o vertice j , ou seja,dij = δ(i , j)

I Matriz predecessora Πn × n = πij , onde πij e o verticepredecessor de j em um caminho mınimo a partir de i

8 / 31

Page 9: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

Algoritmos

Page 10: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

Baseado em multiplicacao de matrizes

Page 11: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

Baseado em multiplicacao de matrizes

I Nao estudaremos este algoritmo

11 / 31

Page 12: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

Algoritmo de Floyd-Warshall

Page 13: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

O algoritmo de Floyd-Warshall

I Algoritmo de programacao dinamica com tempo Θ(V 3)

I Ideia

I O caminho mınimo pode ser calculado baseado nos caminhosmınimos para subproblemas ja calculados e memorizados

I Etapas para resolver um problema com programacao dinamica

I Caracterizar a estrutura de uma solucao otimaI Definir recursivamente o valor da solucao otimaI Computar o valor da solucao otima de baixo para cima

(bottom-up)I Construir a solucao otima a partir das informacoes computadas

13 / 31

Page 14: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

O algoritmo de Floyd-Warshall

I Algoritmo de programacao dinamica com tempo Θ(V 3)

I Ideia

I O caminho mınimo pode ser calculado baseado nos caminhosmınimos para subproblemas ja calculados e memorizados

I Etapas para resolver um problema com programacao dinamica

I Caracterizar a estrutura de uma solucao otimaI Definir recursivamente o valor da solucao otimaI Computar o valor da solucao otima de baixo para cima

(bottom-up)I Construir a solucao otima a partir das informacoes computadas

13 / 31

Page 15: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

O algoritmo de Floyd-Warshall

I Algoritmo de programacao dinamica com tempo Θ(V 3)

I Ideia

I O caminho mınimo pode ser calculado baseado nos caminhosmınimos para subproblemas ja calculados e memorizados

I Etapas para resolver um problema com programacao dinamica

I Caracterizar a estrutura de uma solucao otimaI Definir recursivamente o valor da solucao otimaI Computar o valor da solucao otima de baixo para cima

(bottom-up)I Construir a solucao otima a partir das informacoes computadas

13 / 31

Page 16: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

O algoritmo de Floyd-Warshall

I Para um caminho p = 〈v1, v2, . . . , vl〉, um verticeintermediario e qualquer vertice de p que nao seja v1 ou vl

I Lembramos que n = |V |

14 / 31

Page 17: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

Caracterizacao da estrutura da solucao otimaI Considere um caminho mınimo i

p j com todo os vertices

intermediarios em {1, 2, . . . , k}I Se k nao e um vertice intermediario de p, entao, todos os

vertices intermediarios de p estao em {1, 2, . . . , k − 1}. Destemodo, um caminho mınimo i j com todo os verticesintermediarios no conjunto {1, 2, . . . , k − 1}, tambem e umcaminho mınimo i j com todos os vertices intermediarios noconjunto {1, 2, . . . , k}

I Se k e um vertice intermediario do caminho p, entao

desmembramos o caminho p em ip1 k

p2 j . p1 e um caminhomınimo de i ate k , com todos os vertices intermediarios noconjunto {1, 2, . . . , k − 1}. A mesma ideia se aplica a p2

15 / 31

Page 18: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

Definicao recursiva do custo da solucao otima

I Seja d(k)ij o peso de um caminho mınimo i j com todos os

vertices intermediarios em {1, 2, . . . , k}

d(k)ij =

{wij se k = 0

min(d(k−1)ij , d

(k−1)ik + d

(k−1)kj )) se k ≥ 1

I Observe que a matriz D(n) = (d(n)ij ) fornece a reposta

desejada: d(n)ij = δ(i , j) para todo i , j ∈ V , isto porque para

qualquer caminho todos os vertices intermediarios estao noconjunto {1, 2, . . . , n}

16 / 31

Page 19: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

O algoritmo de Floyd-Warshall

floyd-warshall(W )

1 n = W .linhas

2 D(0) = W3 for k = 1 to n4 seja D(k) =

(d

(k)ij

)uma matriz n × n

5 for i = 1 to n6 for j = 1 to n

7 d(k)ij = min(d

(k−1)ij , d

(k−1)ik + d

(k−1)kj )

8 return D(n)

I Analise do tempo de execucao

I Cada execucao da linha 7 demora O(1)I A linha 7 e executada n3 vezesI Portanto, o tempo de execucao do algoritmo e Θ(n3) = Θ(V 3)

17 / 31

Page 20: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

O algoritmo de Floyd-Warshall

floyd-warshall(W )

1 n = W .linhas

2 D(0) = W3 for k = 1 to n4 seja D(k) =

(d

(k)ij

)uma matriz n × n

5 for i = 1 to n6 for j = 1 to n

7 d(k)ij = min(d

(k−1)ij , d

(k−1)ik + d

(k−1)kj )

8 return D(n)

I Analise do tempo de execucao

I Cada execucao da linha 7 demora O(1)I A linha 7 e executada n3 vezesI Portanto, o tempo de execucao do algoritmo e Θ(n3) = Θ(V 3)

17 / 31

Page 21: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

O algoritmo de Floyd-Warshall

18 / 31

Page 22: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

O algoritmo de Floyd-Warshall

19 / 31

Page 23: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

O algoritmo de Floyd-Warshall

20 / 31

Page 24: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

O algoritmo de Floyd-Warshall

21 / 31

Page 25: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

O algoritmo de Floyd-Warshall

22 / 31

Page 26: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

O algoritmo de Floyd-Warshall

23 / 31

Page 27: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

O algoritmo de Floyd-Warshall

24 / 31

Page 28: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

O algoritmo de Floyd-Warshall

I Como construir um caminho mınimo

I Calcular a matriz predecessora Π, durante o calculo da matrizde distancia de caminhos mınimos D

I Quando k = 0, um caminho mınimo de i ate j nao temnenhum vertice intermediario, entao

π(0)ij =

{nil se i = j ou wij =∞i se i 6= j e wij <∞

I Quando k ≥ 1

π(k)ij =

(k−1)ij se d

(k−1)ij ≤ d

(k−1)ik + d

(k−1)kj

π(k−1)kj se d

(k−1)ij > d

(k−1)ik + d

(k−1)kj

25 / 31

Page 29: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

O algoritmo de Floyd-Warshall

I Considerando o exercıcio 25.2-4 e acrescentando o calculo deΠ, podemos reescrever o procedimento floyd-warshall

26 / 31

Page 30: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

O algoritmo de Floyd-Warshallfloyd-warshall(W )

1 n = W .linhas

2 D = W3 Π = (πij) uma matriz n × n4 for i = 1 to n5 for j = 1 to n6 if i = j ou wij =∞7 πij = nil8 if i 6= j e wij <∞9 πij = i10 for k = 1 to n11 for i = 1 to n12 for j = 1 to n13 if dij > dik + dkj14 dij = dik + dkj15 πij = πkj16 return D, Π

27 / 31

Page 31: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

Agoritmo de Johnson para grafos esparsos

Page 32: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

Algoritmo de Johnson para grafos esparsos

I Nao estudaremos este algoritmo

29 / 31

Page 33: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

Referencias

Page 34: Caminhos m nimos de todos os pares - malbarbo.pro.brmalbarbo.pro.br/ensino/2014/6898/08-caminhos-minimos-de-todos-os... · Conteudo Introdu˘c~ao Algoritmos Baseado em multiplica˘c~ao

Referencias

I Thomas H. Cormen et al. Introduction to Algorithms. 3rdedition. Capıtulo 25.

31 / 31