MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos...

31
Algoritmo Floyd-Warshall S 21.3 Algoritmos em Grafos — 1º sem 2012 1 / 27

Transcript of MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos...

Page 1: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Algoritmo Floyd-Warshall

S 21.3

Algoritmos em Grafos — 1º sem 2012 1 / 27

Page 2: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Problema dos caminhos mínimos entre todosos pares

Problema: Dado um digrafo com custo nos arcos,determinar, para cada par de vértices s, t o custo deum caminho mínimo de s a t

Esse problema pode ser resolvido aplicando-se Vvezes o algoritmo Bellman-Ford

O consumo de tempo dessa solução é O(V2A).

Um algoritmo mais eficiente foi descrito por Floyd,baseado em uma idéia de Warshall.O algoritmo supõe que o digrafo não tem ciclonegativo

Algoritmos em Grafos — 1º sem 2012 2 / 27

Page 3: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Problema dos caminhos mínimos entre todosos pares

Problema: Dado um digrafo com custo nos arcos,determinar, para cada par de vértices s, t o custo deum caminho mínimo de s a t

Esse problema pode ser resolvido aplicando-se Vvezes o algoritmo Bellman-Ford

O consumo de tempo dessa solução é O(V2A).

Um algoritmo mais eficiente foi descrito por Floyd,baseado em uma idéia de Warshall.O algoritmo supõe que o digrafo não tem ciclonegativo

Algoritmos em Grafos — 1º sem 2012 3 / 27

Page 4: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Problema dos caminhos mínimos entre todosos pares

Problema: Dado um digrafo com custo nos arcos,determinar, para cada par de vértices s, t o custo deum caminho mínimo de s a t

Esse problema pode ser resolvido aplicando-se Vvezes o algoritmo Bellman-Ford

O consumo de tempo dessa solução é O(V2A).

Um algoritmo mais eficiente foi descrito por Floyd,baseado em uma idéia de Warshall.O algoritmo supõe que o digrafo não tem ciclonegativo

Algoritmos em Grafos — 1º sem 2012 4 / 27

Page 5: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Programação dinâmica

0, 1, 2, . . . , V−1 = lista dos vértices do digrafo

custo[k][s][t] = menor custo de um caminho des a t usando vértices internos em {0, 1, . . . , k−1}

Recorrência:

custo[0][s][t] = G->adj[s][t]custo[k][s][t] = min{custo[k-1][s][t],

custo[k-1][s][k-1] + custo[k-1][k-1][t]}

Se o digrafo não tem ciclo negativo acessível a partirde s, então custo[V][s][t] é o menor custo de umcaminho simples de s a t

Algoritmos em Grafos — 1º sem 2012 5 / 27

Page 6: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Programação dinâmica

0, 1, 2, . . . , V−1 = lista dos vértices do digrafo

custo[k][s][t] = menor custo de um caminho des a t usando vértices internos em {0, 1, . . . , k−1}

Recorrência:

custo[0][s][t] = G->adj[s][t]custo[k][s][t] = min{custo[k-1][s][t],

custo[k-1][s][k-1] + custo[k-1][k-1][t]}

Se o digrafo não tem ciclo negativo acessível a partirde s, então custo[V][s][t] é o menor custo de umcaminho simples de s a t

Algoritmos em Grafos — 1º sem 2012 6 / 27

Page 7: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

void floyd_warshall (Digraph G){1 Vertex s, t; double d;2 for (s=0; s < G->V; s++)3 for (t=0; t < G->V; t++)4 custo[0][s][t] = G->adj[s][t];5 for (k=1; k <=G->V; k++)6 for (s=0; s < G->V; s++)7 for (t=0; t < G->V; t++){8 custo[k][s][t]=custo[k-1][s][t];9 d=custo[k-1][s][k-1]

+custo[k-1][k-1][t];10 if (custo[k][s][t] > d)11 custo[k][s][t] = d;

}}

}Algoritmos em Grafos — 1º sem 2012 7 / 27

Page 8: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Consumo de tempo

O consumo de tempo da funçãofloyd_warshall1 é O(V3).

Algoritmos em Grafos — 1º sem 2012 8 / 27

Page 9: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

void floyd_warshall (Digraph G){1 Vertex s, t; double d;2 for (s=0; s < G->V; s++)3 for (t=0; t < G->V; t++)4 cst[s][t] = G->adj[s][t];5 for (k=1; k <= G->V; k++)6 for (s=0; s < G->V; s++)7 for (t=0; t < G->V; t++){8 d=cst[s][k-1]+cst[k-1][t];

10 if (cst[s][t] > d)11 cst[s][t] = d;

}}

}

Algoritmos em Grafos — 1º sem 2012 9 / 27

Page 10: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Relação invariante

No início de cada iteração da linha 5 vale que

cst[s][t] = custo[k][s][t] = o menor custo de umcaminho de s a t usando vérticesinternos em{0, 1, . . . , k−1}

Algoritmos em Grafos — 1º sem 2012 10 / 27

Page 11: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Novo resumo

função consumo de observaçãotempo

DAGmin O(V+ A) digrafos acíclicoscustos arbitrários

dijkstra O(A lg V) custos ≥ 0, min-heapO(V2) custos ≥ 0, fila

bellman-ford O(V3) digrafos densosO(VA) digrafos esparsos

floyd-warshall O(V3) digrafos sem ciclosnegativos

O problema SPT em digrafos com ciclos negativos éNP-difícil.Algoritmos em Grafos — 1º sem 2012 11 / 27

Page 12: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Árvores geradoras de grafos

Algoritmos em Grafos — 1º sem 2012 12 / 27

Page 13: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Subárvores

Uma subárvore de um grafo G é qualquer árvore Tque seja subgrafo de G

Exemplo:

0

12

3 5

4 6

Algoritmos em Grafos — 1º sem 2012 13 / 27

Page 14: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

SubárvoresUma subárvore de um grafo G é qualquer árvore Tque seja subgrafo de G

Exemplo: as arestas em vermelho formam umasubárvore

0

12

3 5

4 6

Algoritmos em Grafos — 1º sem 2012 14 / 27

Page 15: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Árvores geradoras

Uma árvore geradora (= spanning tree) de umgrafo é qualquer subárvore que contenha todos osvértices

Exemplo:

0

12

3 5

4 6

Algoritmos em Grafos — 1º sem 2012 15 / 27

Page 16: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Árvores geradorasUma árvore geradora (= spanning tree) de umgrafo é qualquer subárvore que contenha todos osvértices

Exemplo: as arestas em vermelho formam uma árvoregeradora

0

12

3 5

4 6

Algoritmos em Grafos — 1º sem 2012 16 / 27

Page 17: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Árvores geradoras

Somente grafos conexos têm árvores geradorasTodo grafo conexo tem uma árvore geradora

Exemplo:

0

12

3 5

4 6

Algoritmos em Grafos — 1º sem 2012 17 / 27

Page 18: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Algoritmos que calculam árvores geradoras

É fácil calcular uma árvore geradora de um grafoconexo:

a busca em profundidade ea busca em largura

fazem isso.

Qualquer das duas buscas calcula uma arborescênciaque contém um dos arcos de cada aresta de umaárvore geradora do grafo

Algoritmos em Grafos — 1º sem 2012 18 / 27

Page 19: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Primeira propriedade da troca de arestasSeja T uma árvore geradora de um grafo G Paraqualquer aresta e de G que não esteja em T, T+e temum único ciclo não-trivial, o ciclo fundamentalC (T, e).

Exemplo: T+e

0

12

3 5

4 6

e

Algoritmos em Grafos — 1º sem 2012 19 / 27

Page 20: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Primeira propriedade da troca de arestas

Seja T uma árvore geradora de um grafo G Paraqualquer aresta t ∈ C (T, e), T+e-t é uma árvoregeradora

Exemplo: T+e-t

0

12

3 5

4 6

e

t

Algoritmos em Grafos — 1º sem 2012 20 / 27

Page 21: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Segunda propriedade da troca de arestasSeja T uma árvore geradora de um grafo GPara qualquer aresta t de T e qualquer aresta e queatravesse o corte determinado por T-t, o grafoT-t+e é uma árvore geradora

Exemplo: T-t

0

12

3 5

4 6

t

e

Algoritmos em Grafos — 1º sem 2012 21 / 27

Page 22: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Segunda propriedade da troca de arestasSeja T uma árvore geradora de um grafo GPara qualquer aresta t de T e qualquer aresta e queatravesse o corte determinado por T-t, o grafoT-t+e é uma árvore geradora

Exemplo: T-t+e

0

12

3 5

4 6

t

e

Algoritmos em Grafos — 1º sem 2012 22 / 27

Page 23: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Árvores geradoras de custo mínimo

S 20.1 e 20.2

Algoritmos em Grafos — 1º sem 2012 23 / 27

Page 24: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Árvores geradoras mínimasUma árvore geradora mínima (= minimumspanning tree), ou MST, de um grafo com custos nasarestas é qualquer árvore geradora do grafo quetenha custo mínimo

Exemplo: um grafo com custos nas arestas

0

1

3 5

4 6

2

5

8

10

3

2

30

16

18

14

26

4

12

Algoritmos em Grafos — 1º sem 2012 24 / 27

Page 25: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Árvores geradoras mínimasUma árvore geradora mínima (= minimumspanning tree), ou MST, de um grafo com custos nasarestas é qualquer árvore geradora do grafo quetenha custo mínimo

Exemplo: MST de custo 42

0

1

3 5

4 6

2

5

8

10

3

2

30

16

18

14

26

4

12

Algoritmos em Grafos — 1º sem 2012 25 / 27

Page 26: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Problema MSTProblema: Encontrar uma MST de um grafo G comcustos nas arestasO problema tem solução se e somente se o grafo G éconexo

Exemplo: MST de custo 42

0

1

3 5

4 6

2

5

8

10

3

2

30

16

18

14

26

4

12

Algoritmos em Grafos — 1º sem 2012 26 / 27

Page 27: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Propriedade dos ciclos

Condição de Otimalidade: Se T é uma MST entãotoda aresta e fora de T tem custo máximo dentre asarestas do único ciclo não-trivial em T+e

Exemplo: MST de custo 42

0

1

3 5

4 6

2

5

8

10

3

2

30

16

18

14

26

4

12

Algoritmos em Grafos — 1º sem 2012 27 / 27

Page 28: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Demonstração da recíproca

Seja T uma árvore geradora satisfazendo a condiçãode otimalidade.

Vamos mostrar que T é uma MST.

Seja M uma MST tal que o número de arestascomuns entre T e M seja máximo.

Se T = M não há o que demonstrar.

Suponha que T 6= M e seja e uma aresta de customínimo dentre as arestas que estão em M mas nãoestão em T.Seja d uma aresta qualquer que não está em M masestá no ciclo fundamental C (T, e).

Algoritmos em Grafos — 1º sem 2012 28 / 27

Page 29: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Demonstração da recíproca

Seja T uma árvore geradora satisfazendo a condiçãode otimalidade.

Vamos mostrar que T é uma MST.

Seja M uma MST tal que o número de arestascomuns entre T e M seja máximo.

Se T = M não há o que demonstrar.

Suponha que T 6= M e seja e uma aresta de customínimo dentre as arestas que estão em M mas nãoestão em T.Seja d uma aresta qualquer que não está em M masestá no ciclo fundamental C (T, e).

Algoritmos em Grafos — 1º sem 2012 29 / 27

Page 30: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Continuação

Logo, custo(d) ≤ custo(e) (1).Seja f uma aresta qualquer em C (M, d)− T.Como M é uma MST, custo(f) ≤ custo(d) (2).Pela escolha de e, custo(e) ≤ custo(f) (3).Juntando (1), (2) e (3), vem que

custo(d) = custo(f) = custo(e)

Mas então, M−f+d é uma MST que tem o mesmocusto que M, logo é mínima. Por outro lado, tem umaaresta a mais em comum com T do que M. Issocontradiz a escolha de M.Portanto, T = M, o que mostra que T é uma MST.

Algoritmos em Grafos — 1º sem 2012 30 / 27

Page 31: MAC328 Algoritmos em Grafos - IME-USPam/328-12/aulas/aula-0508.pdf · Problema dos caminhos mínimos entre todos os pares Problema: Dadoumdigrafocomcustonosarcos, determinar,paracadapardevérticess,t

Propriedade dos cortesCondição de Otimalidade: T é uma MST se esomente se cada aresta t de T é uma aresta mínimadentre as que atravessam o corte determinado porT-t

Exemplo: MST de custo 42

0

1

3 5

4 6

2

5

8

10

3

2

30

16

18

14

26

4

12

Algoritmos em Grafos — 1º sem 2012 31 / 27