pcc173 - otimização em redes - ufop

26
PCC173 - Otimização em Redes Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 23 de abril de 2019 Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 1 / 26

Upload: others

Post on 29-Apr-2022

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PCC173 - Otimização em Redes - UFOP

PCC173 - Otimização em Redes

Marco Antonio M. Carvalho

Departamento de ComputaçãoInstituto de Ciências Exatas e BiológicasUniversidade Federal de Ouro Preto

23 de abril de 2019

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 1 / 26

Page 2: PCC173 - Otimização em Redes - UFOP

Avisos

Site da disciplina:I http://www.decom.ufop.br/marco/

Lista de e-mails:I [email protected]

Para solicitar acesso:I http://groups.google.com/group/pcc173

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 2 / 26

Page 3: PCC173 - Otimização em Redes - UFOP

Conteúdo

1 Algoritmo de Johnson para Grafos Esparsos

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 3 / 26

Page 4: PCC173 - Otimização em Redes - UFOP

Avisos

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 4 / 26

Page 5: PCC173 - Otimização em Redes - UFOP

Algoritmo de Johnson para Grafos Esparsos

HistóricoO algoritmo proposto por Donald B. Johnson em 1977a determina oscaminhos mais curtos entre todos os pares de vértices em grafos:I Direcionados;I Ponderados;I Com arcos de peso negativo;I Sem ciclos de peso negativo.

Para grafos esparsos, ele é assintoticamente melhor do que o algoritmo deFloyd-Warshall.

aJohnson, Donald B. (1977), “Efficient algorithms for shortest paths in sparsenetworks”, Journal of the ACM 24 (1): 1–13, doi:10.1145/321992.321993.

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 5 / 26

Page 6: PCC173 - Otimização em Redes - UFOP

Algoritmo de Johnson para Grafos Esparsos

PrincípioO algoritmo de Johnson retorna uma matriz de pesos de caminhos maiscurtos ou informa que o grafo de entrada contém um ciclo de pesonegativo.

Utiliza como sub-rotinas os algoritmos de Dijkstra e Bellman-Ford.

Utiliza também uma técnica de reponderação para eliminar arcos de pesonegativo.

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 6 / 26

Page 7: PCC173 - Otimização em Redes - UFOP

Algoritmo de Johnson para Grafos Esparsos

ReponderaçãoSe todos os pesos de arcos w em um grafo G=(V , E) são não negativos,podemos encontrar caminhos mais curtos entre todos os pares de vérticesexecutando o algoritmo de Dijkstra uma vez a partir de cada vértice.

Se G possui arcos de peso negativo, mas nenhum ciclo de peso negativo,simplesmente calculamos um novo conjunto de pesos de arcos nãonegativos que nos permita aplicar o mesmo método.

O novo conjunto de pesos w deve satisfazer a duas propriedadesimportantes:

1 Para todos os pares de vértices u, v ∈ V , um caminho p é um caminhomais curto de u até v usando a função de peso w se e somente se ptambém é um caminho mais curto desde u até v usando a função depeso w;

2 Para todos os arcos (u, v), o novo peso w(u, v) é não negativo.

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 7 / 26

Page 8: PCC173 - Otimização em Redes - UFOP

Algoritmo de Johnson para Grafos Esparsos

ReponderaçãoIntuitivamente, podemos tentar reponderar os pesos dos arcos adicionandoo valor do arco de menor custo.

Entretanto, esta estratégia não funciona.

Se houver múltiplos caminhos entre os vértices u e v, então cada um delesdeve ser acrescido do mesmo valor, de maneira a preservar a consistênciado caminho mais curto em ambos os grafos.

O algoritmo de Johnson utiliza um pré-processamento que associa a cadavértice v um peso h(v), tal que os caminhos entre todos os pares devértices são acrescidos do mesmo valor, e nenhuma aresta possui pesonegativo.

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 8 / 26

Page 9: PCC173 - Otimização em Redes - UFOP

Algoritmo de Johnson para Grafos Esparsos

Grafo original.

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 9 / 26

Page 10: PCC173 - Otimização em Redes - UFOP

Algoritmo de Johnson para Grafos Esparsos

Reponderação que implica em inconsistênciados caminhos mais curtos (e.g., entre s e x).

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 10 / 26

Page 11: PCC173 - Otimização em Redes - UFOP

Algoritmo de Johnson para Grafos Esparsos

ReponderaçãoO pré-processamento de G para determinar uma nova função de peso wpode ser executado em tempo O(nm).

Para um grafo orientado ponderado G = (V,E) com a função de pesow : E → R, seja h : V → R qualquer função que mapeia vértices paranúmeros reais. Para cada arco (u, v) ∈ E, definimos

w(u, v) = w(u, v) + h(u) = h(v)

A função w(u, v) atende às duas propriedades postas anteriormente:consistência dos menores caminhos e não negatividade.

A prova de corretude será omitida, porém, pode ser encontrada no livroAlgoritmos: Teoria e Prática.

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 11 / 26

Page 12: PCC173 - Otimização em Redes - UFOP

Algoritmo de Johnson para Grafos Esparsos

ReponderaçãoPara a utilização da função definida anteriormente, um vértice artificial s,sem antecessores e adjacente a todos os demais vértices usando arcos depeso zero, deve ser adicionado ao grafo.

A função h(v) pode ser definida como o comprimento do caminho maiscurto entre a origem s e o vértice v (∀v ∈ V ), usando os pesosdeterminados por w.

É importante observar que o caminhos mais curtos citados acima podemconter arcos de peso negativo, portanto, podem ser calculados peloalgoritmo de Bellman-Ford.

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 12 / 26

Page 13: PCC173 - Otimização em Redes - UFOP

Algoritmo de Johnson para Grafos Esparsos

TerminologiaI w: pesos originais dos arcos do grafo;I w: pesos reponderados dos arcos do grafo;I δ: comprimentos de caminhos mais curtos calculados usando w;I δ: comprimentos de caminhos mais curtos calculados usando w;I G′ = (V ′, E′): Grafo criado a partir do grafo original, porém, com o

acréscimo do vértice s e respectivos arcos de peso zero;I D: matriz n× n utilizada para armazenar os caminhos mais curtos.

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 13 / 26

Page 14: PCC173 - Otimização em Redes - UFOP

Algoritmo de Johnson para Grafos EsparsosEntrada: Grafo G = (V , E)

1 G′ ← G;2 V ′ ← V ′ ∪ {s};3 E′ ← E′ ∪ (s, v) ∀v ∈ V ;4 w(s, v)← 0 ∀v ∈ V ;5 se Bellman-Ford(G′, w, s) = FALSO então6 Imprima “Contém ciclo negativo!”;7 senão8 para cada vértice v ∈ V ′ faça9 h(v)← δ(s, v);//calculado por Bellman-Ford

10 fim11 fim12 para cada arco (u, v) ∈ E′ faça13 w(u, v)← w(u, v) + h(u)− h(v);14 fim15 Crie uma nova matriz D n× n;16 para cada vértice u ∈ V faça17 Dijkstra(G, w, u);//calcula δ(u, v) ∀v ∈ V18 para cada vértice v ∈ V faça19 duv ← δ(u, v) + h(v)− h(u);20 fim21 fim22 retorna D;

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 14 / 26

Page 15: PCC173 - Otimização em Redes - UFOP

Algoritmo de Johnson para Grafos Esparsos

ComplexidadeSe implementarmos a fila de prioridade no algoritmo de Dijkstra por umheap de Fibonacci, o algoritmo de Johnson é executado em tempoO(n2 lgn+ nm).

A implementação mais simples por heap mínimo binário gera o tempo deexecução O(nm lgn), que ainda é assintoticamente mais rápido que oalgoritmo de Floyd-Warshall, Θ(n3), em grafos esparsos.

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 15 / 26

Page 16: PCC173 - Otimização em Redes - UFOP

Exemplo

690 Chapter 25 All-Pairs Shortest Paths

2

1 3

5 4

3 4

82

6

7 1–4 –5

L.1/ D

!0 3 8 1 !41 0 1 1 71 4 0 1 12 1 !5 0 11 1 1 6 0

˘L.2/ D

!0 3 8 2 !43 0 !4 1 71 4 0 5 112 !1 !5 0 !28 1 1 6 0

˘

L.3/ D

!0 3 !3 2 !43 0 !4 1 !17 4 0 5 112 !1 !5 0 !28 5 1 6 0

˘L.4/ D

!0 1 !3 2 !43 0 !4 1 !17 4 0 5 32 !1 !5 0 !28 5 1 6 0

˘Figure 25.1 A directed graph and the sequence of matrices L.m/ computed by SLOW-ALL-PAIRS-SHORTEST-PATHS. You might want to verify that L.5/, defined as L.4/ " W , equals L.4/, and thusL.m/ D L.4/ for all m # 4.

tion (25.3) implies L.m/ D L.n!1/ for all integers m # n ! 1. Just as tradi-tional matrix multiplication is associative, so is matrix multiplication defined bythe EXTEND-SHORTEST-PATHS procedure (see Exercise 25.1-4). Therefore, wecan compute L.n!1/ with only dlg.n ! 1/e matrix products by computing the se-quence

L.1/ D W ;L.2/ D W 2 D W " W ;L.4/ D W 4 D W 2 " W 2

L.8/ D W 8 D W 4 " W 4 ;:::

L.2dlg.n!1/e/ D W 2dlg.n!1/e D W 2dlg.n!1/e!1 " W 2dlg.n!1/e!1:

Since 2dlg.n!1/e # n ! 1, the final product L.2dlg.n!1/e/ is equal to L.n!1/.The following procedure computes the above sequence of matrices by using this

technique of repeated squaring.

Grafo original.

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 16 / 26

Page 17: PCC173 - Otimização em Redes - UFOP

Exemplo

Grafo G′ com a função peso w original. O novo vértice s é destacado em preto.O rótulo de cada vértice v é h(v) = δ(s, v).

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 17 / 26

Page 18: PCC173 - Otimização em Redes - UFOP

Exemplo

Cada arco (u, v) é reponderado com a função peso w(u, v) =w(u, v) + h(u)− h(v).

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 18 / 26

Page 19: PCC173 - Otimização em Redes - UFOP

Algoritmo de Johnson para Grafos Esparsos

ExemploOs slides a seguir ilustram a execução do algoritmo de Dijkstra em cadavértice de G, usando a função de peso w.

Em cada figura, o vértice de origem é o destacado em preto, e os arcossombreados estão na árvore de caminhos mais curtos calculada peloalgoritmo.

Dentro de cada vértice v estão indicados os valores δ(u, v) e δ(u, v),separados por uma barra.

O valor duv = δ(u, v) é igual a δ(u, v) + h(v)− h(u).

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 19 / 26

Page 20: PCC173 - Otimização em Redes - UFOP

Exemplo

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 20 / 26

Page 21: PCC173 - Otimização em Redes - UFOP

Exemplo

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 21 / 26

Page 22: PCC173 - Otimização em Redes - UFOP

Exemplo

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 22 / 26

Page 23: PCC173 - Otimização em Redes - UFOP

Exemplo

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 23 / 26

Page 24: PCC173 - Otimização em Redes - UFOP

Exemplo

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 24 / 26

Page 25: PCC173 - Otimização em Redes - UFOP

Exercício

Execute o algoritmo de Johnson para o grafo acima.

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 25 / 26

Page 26: PCC173 - Otimização em Redes - UFOP

Dúvidas?

Marco Antonio M. Carvalho (UFOP) PCC173 23 de abril de 2019 26 / 26