mac328 algoritmos em grafos - ime-uspam/328-12/aulas/aula-0508.pdf · problema dos caminhos...
TRANSCRIPT
![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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/1.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/2.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/3.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/4.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/5.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/6.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/7.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/8.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/9.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/10.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/11.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/12.jpg)
Á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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/13.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/14.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/15.jpg)
Á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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/16.jpg)
Á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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/17.jpg)
Á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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/18.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/19.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/20.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/21.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/22.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/23.jpg)
Á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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/24.jpg)
Á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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/25.jpg)
Á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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/26.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/27.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/28.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/29.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/30.jpg)
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](https://reader030.vdocuments.mx/reader030/viewer/2022040219/5e1b9c86721ab3126e0b6a33/html5/thumbnails/31.jpg)
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