• Nenhum resultado encontrado

aplicadoaoProblemadaFlorestadeSteinerRafaelPereiraLuna ImplementaçõesdoMétododeAproximaçãoPrimal-Dual

N/A
N/A
Protected

Academic year: 2022

Share "aplicadoaoProblemadaFlorestadeSteinerRafaelPereiraLuna ImplementaçõesdoMétododeAproximaçãoPrimal-Dual"

Copied!
73
0
0

Texto

(1)

Implementações do Método de Aproximação Primal-Dual

aplicado ao Problema da Floresta de Steiner

Rafael Pereira Luna

Departamento de Ciência da Computação Instituto de Matemática e Estatística

Universidade de São Paulo

(2)

Visão Geral

1 O Problema da Floresta de Steiner

2 Algoritmo de Goemans e Williamson Alguns conceitos importantes O algoritmo

3 Implementações do Algoritmo

4 Considerações Finais

(3)

Visão Geral

1 O Problema da Floresta de Steiner

2 Algoritmo de Goemans e Williamson Alguns conceitos importantes O algoritmo

3 Implementações do Algoritmo

(4)

Definição do Problema

Dados: G = (V , E ), uma função custo c : E → Q > e uma família R de subconjuntos de V ,

Encontrar: R-floresta F que minimize c(F ).

Definição de R-floresta

Uma R-floresta F é uma floresta geradora de G tq cada

conjunto de R está contido em alguma componente de F .

(5)

Definição do Problema

Dados: G = (V , E ), uma função custo c : E → Q > e uma família R de subconjuntos de V ,

Encontrar: R-floresta F que minimize c(F ).

Definição de R-floresta

Uma R-floresta F é uma floresta geradora de G tq cada

conjunto de R está contido em alguma componente de F .

(6)

Definição do Problema

Dados: G = (V , E ), uma função custo c : E → Q > e uma família R de subconjuntos de V ,

Encontrar: R-floresta F que minimize c(F ).

Definição de R-floresta

Uma R-floresta F é uma floresta geradora de G tq cada

conjunto de R está contido em alguma componente de F .

(7)

Exemplo

(8)

Exemplo

(9)

Nomenclatura

vértices de Steiner: vértices que não estão em conjuntos da família R;

terminais: vértices que estão em algum conjunto de R;

conjunto de terminais: cada um dos conjuntos de R;

floresta de Steiner: R-floresta quando R está implícito.

(10)

Nomenclatura

vértices de Steiner: vértices que não estão em conjuntos da família R;

terminais: vértices que estão em algum conjunto de R;

conjunto de terminais: cada um dos conjuntos de R;

floresta de Steiner: R-floresta quando R está implícito.

(11)

Nomenclatura

vértices de Steiner: vértices que não estão em conjuntos da família R;

terminais: vértices que estão em algum conjunto de R;

conjunto de terminais: cada um dos conjuntos de R;

floresta de Steiner: R-floresta quando R está implícito.

(12)

Nomenclatura

vértices de Steiner: vértices que não estão em conjuntos da família R;

terminais: vértices que estão em algum conjunto de R;

conjunto de terminais: cada um dos conjuntos de R;

floresta de Steiner: R-floresta quando R está implícito.

(13)

Aplicações

Projeto de redes;

Roteamento de circuitos VLSI.

(14)

Complexidade

O Problema de Steiner em Grafos, que é

NP-difícil [Karp72], é um caso particular do Problema da Floresta de Steiner (|R| = 1);

O Problema da Floresta de Steiner é MAX SNP-difícil;

Primeiro algoritmo de aproximação para o Problema da

Floresta de Steiner: ( 2−

2t

)-aproximação projetada por

Agrawal, Klein e Ravi [AGW91].

(15)

Complexidade

O Problema de Steiner em Grafos, que é

NP-difícil [Karp72], é um caso particular do Problema da Floresta de Steiner (|R| = 1);

O Problema da Floresta de Steiner é MAX SNP-difícil;

Primeiro algoritmo de aproximação para o Problema da

Floresta de Steiner: ( 2−

2t

)-aproximação projetada por

Agrawal, Klein e Ravi [AGW91].

(16)

Complexidade

O Problema de Steiner em Grafos, que é

NP-difícil [Karp72], é um caso particular do Problema da Floresta de Steiner (|R| = 1);

O Problema da Floresta de Steiner é MAX SNP-difícil;

Primeiro algoritmo de aproximação para o Problema da

Floresta de Steiner: ( 2−

2t

)-aproximação projetada por

Agrawal, Klein e Ravi [AGW91].

(17)

Visão Geral

1 O Problema da Floresta de Steiner

2 Algoritmo de Goemans e Williamson Alguns conceitos importantes O algoritmo

3 Implementações do Algoritmo

(18)

Algoritmo de Goemans e Williamson (92)

Goemans e Williamson generalizaram o algoritmo de Agrawal, Klein e Ravi e projetaram um algoritmo de aproximação primal-dual que se aplica a uma ampla classe de problemas de projeto de redes;

Este algoritmo é uma ( 2−

2t

)-aproximação para o Problema

da Floresta de Steiner;

(19)

Algoritmo de Goemans e Williamson (92)

Goemans e Williamson generalizaram o algoritmo de Agrawal, Klein e Ravi e projetaram um algoritmo de aproximação primal-dual que se aplica a uma ampla classe de problemas de projeto de redes;

Este algoritmo é uma ( 2−

2t

)-aproximação para o Problema

da Floresta de Steiner;

(20)

Visão Geral

1 O Problema da Floresta de Steiner

2 Algoritmo de Goemans e Williamson Alguns conceitos importantes O algoritmo

3 Implementações do Algoritmo

4 Considerações Finais

(21)

Conjunto ativo: SV é ativo se existe algum T ∈ R tal que

ST 6= ∅ e T \ S 6= ∅.

(22)

Conjunto ativo: SV é ativo se existe algum T ∈ R tal que

ST 6= ∅ e T \ S 6= ∅.

(23)

Componente ativa: componente cujo conjunto de vértices é ativo;

Componente inativa: componente cujo conjunto de vértices não é ativo.

Observação importante

Se F é uma floresta geradora que não tem componentes

ativas, então F é uma floresta de Steiner.

(24)

Componente ativa: componente cujo conjunto de vértices é ativo;

Componente inativa: componente cujo conjunto de vértices não é ativo.

Observação importante

Se F é uma floresta geradora que não tem componentes

ativas, então F é uma floresta de Steiner.

(25)

Visão Geral

1 O Problema da Floresta de Steiner

2 Algoritmo de Goemans e Williamson Alguns conceitos importantes O algoritmo

3 Implementações do Algoritmo

(26)

Esboço 1

F ← (V , ∅);

Fase iterativa: enquanto F contém componentes ativas faça

escolha uma aresta externa boa e que possui pelo menos um extremo em uma componente ativa;

E

F

E

F

∪ {e}.

Fase da limpeza: encontra floresta de Steiner minimal em F .

Como escolher uma aresta boa?

(27)

Esboço 1

F ← (V , ∅);

Fase iterativa: enquanto F contém componentes ativas faça

escolha uma aresta externa boa e que possui pelo menos um extremo em uma componente ativa;

E

F

E

F

∪ {e}.

Fase da limpeza: encontra floresta de Steiner minimal

em F .

(28)

Esboço 1

F ← (V , ∅);

Fase iterativa: enquanto F contém componentes ativas faça

escolha uma aresta externa boa e que possui pelo menos um extremo em uma componente ativa;

E

F

E

F

∪ {e}.

Fase da limpeza: encontra floresta de Steiner minimal em F .

Como escolher uma aresta boa?

(29)

Esboço 1

F ← (V , ∅);

Fase iterativa: enquanto F contém componentes ativas faça

escolha uma aresta externa boa e que possui pelo menos um extremo em uma componente ativa;

E

F

E

F

∪ {e}.

Fase da limpeza: encontra floresta de Steiner minimal

em F .

(30)

Formulação do Problema da Floresta de Steiner através de um programa inteiro

Observação importante

Se F é uma floresta de Steiner, então, para todo S ativo, E F ∩ δ(S) 6= ∅.

Programa inteiro equivalente ao Problema da Floresta de Steiner

minimize P

e∈E c e x e

sob as restrições P

e∈δ(S) x e1 para cada S ativo,

x e ∈ {0, 1} para cada e em E .

(31)

Formulação do Problema da Floresta de Steiner através de um programa inteiro

Observação importante

Se F é uma floresta de Steiner, então, para todo S ativo, E F ∩ δ(S) 6= ∅.

Programa inteiro equivalente ao Problema da Floresta de Steiner

minimize P

e∈E c e x e

(32)

Relaxação linear e dual

Relaxação linear minimize P

e∈E c e x e

sob as restrições P

e∈δ(S) x e1 para cada S ativo, x e0 para cada e em E . Dual

maximize P

S ativo y S sob as restrições P

S ativo:e∈δ(S) y Sc e para cada e em E ,

y S0 para cada S ativo.

(33)

Relaxação linear e dual

Relaxação linear minimize P

e∈E c e x e

sob as restrições P

e∈δ(S) x e1 para cada S ativo, x e0 para cada e em E . Dual

maximize P

S ativo y S sob as restrições P

S ativo:e∈δ(S) y Sc e para cada e em E ,

(34)

Esboço 2

F ← (V , ∅);

y S0 para cada S ativo; B y dual viável Fase iterativa: enquanto F contém componentes ativas faça

calcule máximo;

y

S

y

S

+ para cada S ativo;

earesta externa a F tq P

S ativo:e∈δ(S)

y

S

= c

e

; E

F

E

F

∪ {e}.

Fase da limpeza: encontra floresta de Steiner minimal

em F .

(35)

Esboço 2

F ← (V , ∅);

y S0 para cada S ativo; B y dual viável Fase iterativa: enquanto F contém componentes ativas faça

calcule máximo;

y

S

y

S

+ para cada S ativo;

earesta externa a F tq P

S ativo:e∈δ(S)

y

S

= c

e

; E

F

E

F

∪ {e}.

Fase da limpeza: encontra floresta de Steiner minimal

(36)

Esboço 2

F ← (V , ∅);

y S0 para cada S ativo; B y dual viável Fase iterativa: enquanto F contém componentes ativas faça

calcule máximo;

y

S

y

S

+ para cada S ativo;

earesta externa a F tq P

S ativo:e∈δ(S)

y

S

= c

e

; E

F

E

F

∪ {e}.

Fase da limpeza: encontra floresta de Steiner minimal

em F .

(37)

Esboço 2

F ← (V , ∅);

y S0 para cada S ativo; B y dual viável Fase iterativa: enquanto F contém componentes ativas faça

calcule máximo;

y

S

y

S

+ para cada S ativo;

earesta externa a F tq P

S ativo:e∈δ(S)

y

S

= c

e

; E

F

E

F

∪ {e}.

Fase da limpeza: encontra floresta de Steiner minimal

(38)

Cálculo do

Para cada aresta externa uv , calcular folga(uv ), o valor do incremento necessário para que P

S ativo:uv∈δ(S) y S = c uv : (c uv − P

S:uv∈δ(S) y S )/2, se u e v pertencem a componentes ativas;

c uv − P

S:uv∈δ(S) y S , se u ou v , mas não ambos, pertence a uma componente ativa;

∞, se u e v pertencem a componentes inativas.

Cálculo de

= min{folga(e) | e é uma aresta externa a F }

(39)

Cálculo do

Para cada aresta externa uv , calcular folga(uv ), o valor do incremento necessário para que P

S ativo:uv∈δ(S) y S = c uv : (c uv − P

S:uv∈δ(S) y S )/2, se u e v pertencem a componentes ativas;

c uv − P

S:uv∈δ(S) y S , se u ou v , mas não ambos, pertence a uma componente ativa;

∞, se u e v pertencem a componentes inativas.

Cálculo de

(40)

Cálculo do

Para cada aresta externa uv , calcular folga(uv ), o valor do incremento necessário para que P

S ativo:uv∈δ(S) y S = c uv : (c uv − P

S:uv∈δ(S) y S )/2, se u e v pertencem a componentes ativas;

c uv − P

S:uv∈δ(S) y S , se u ou v , mas não ambos, pertence a uma componente ativa;

∞, se u e v pertencem a componentes inativas.

Cálculo de

= min{folga(e) | e é uma aresta externa a F }

(41)

Cálculo do

Para cada aresta externa uv , calcular folga(uv ), o valor do incremento necessário para que P

S ativo:uv∈δ(S) y S = c uv : (c uv − P

S:uv∈δ(S) y S )/2, se u e v pertencem a componentes ativas;

c uv − P

S:uv∈δ(S) y S , se u ou v , mas não ambos, pertence a uma componente ativa;

∞, se u e v pertencem a componentes inativas.

Cálculo de

(42)

Cálculo do

Para cada aresta externa uv , calcular folga(uv ), o valor do incremento necessário para que P

S ativo:uv∈δ(S) y S = c uv : (c uv − P

S:uv∈δ(S) y S )/2, se u e v pertencem a componentes ativas;

c uv − P

S:uv∈δ(S) y S , se u ou v , mas não ambos, pertence a uma componente ativa;

∞, se u e v pertencem a componentes inativas.

Cálculo de

= min{folga(e) | e é uma aresta externa a F }

(43)

Algoritmo MinFS-GW(G, R, c) 1 F ← (V G , ∅)

2 E extE G

3 y S ← 0 para cada conjunto S ativo

4 enquanto F tem alguma componente ativa faça

5 escolha e tal que folga(e) = min{folga(e) | eE ext } 6 se folga(e) =

7 pare: “o problema não tem solução!”

8 y Sy S + folga(e) para cada componente ativa S de F

9 E FE F ∪ {e}

(44)

Visão Geral

1 O Problema da Floresta de Steiner

2 Algoritmo de Goemans e Williamson Alguns conceitos importantes O algoritmo

3 Implementações do Algoritmo

4 Considerações Finais

(45)

Implementações estudadas

Goemans e Williamson [GW92]: O(n 2 log n) Gabow, Goemans e Williamson [GGW93]:

O(n(n + p

m log log n));

Klein [Klein94]: O(

m log n);

Cole, Hariharan, Lewenstein e Porat [CHLP01]:

O(k (m + n) log 2 n).

(46)

Implementações estudadas

Goemans e Williamson [GW92]: O(n 2 log n) Gabow, Goemans e Williamson [GGW93]:

O(n(n + p

m log log n));

Klein [Klein94]: O(

m log n);

Cole, Hariharan, Lewenstein e Porat [CHLP01]:

O(k (m + n) log 2 n).

(47)

Implementações estudadas

Goemans e Williamson [GW92]: O(n 2 log n) Gabow, Goemans e Williamson [GGW93]:

O(n(n + p

m log log n));

Klein [Klein94]: O(

m log n);

Cole, Hariharan, Lewenstein e Porat [CHLP01]:

O(k (m + n) log 2 n).

(48)

Implementações estudadas

Goemans e Williamson [GW92]: O(n 2 log n) Gabow, Goemans e Williamson [GGW93]:

O(n(n + p

m log log n));

Klein [Klein94]: O(

m log n);

Cole, Hariharan, Lewenstein e Porat [CHLP01]:

O(k (m + n) log 2 n).

(49)

Características comuns

y não é armazenado explicitamente;

as arestas externas são mantidas em heaps de mínimo;

conjunto de vértices das componentes da floresta:

union-find.

(50)

Características comuns

y não é armazenado explicitamente;

as arestas externas são mantidas em heaps de mínimo;

conjunto de vértices das componentes da floresta:

union-find.

(51)

Características comuns

y não é armazenado explicitamente;

as arestas externas são mantidas em heaps de mínimo;

conjunto de vértices das componentes da floresta:

union-find.

(52)

Questão importante

Como manter atualizada de maneira eficiente a informação

que indica o número de extremos de uma aresta que estão

em componentes ativas?

(53)

Implementação de GW

Apenas uma aresta externa é considerada para cada par de

componentes.

(54)

Implementação de GW

Apenas uma aresta externa é considerada para cada par de componentes.

guardar estas arestas em um heap de mínimo;

(55)

Implementação de GGW

Idéia

Reduzir o número de arestas armazenadas.

Organizar as arestas em heaps menores.

fase iterativa dividida em subfases de no máximo r iterações (r = p

m/ log log n);

(56)

Implementação de GGW

Idéia

Reduzir o número de arestas armazenadas.

Organizar as arestas em heaps menores.

fase iterativa dividida em subfases de no máximo r iterações (r = p

m/ log log n);

(57)

Implementação de GGW (continuação)

em cada subfase, são consideradas apenas as 2r

“menores” arestas incidentes em cada componente;

(58)

Implementação de GGW (continuação)

arestas são mantidas em pacotes com capacidade

máxima log n.

(59)

Implementação de Klein

Idéia

Atribuir de modo adequado as arestas externas aos seus extremos.

para cada componente S e para cada bicategoria b, um heap h(S, b) guarda as arestas externas de b atribuídas a S;

bicategorias: ( ATIVO , ATIVO ), ( ATIVO , INATIVO ),

( INATIVO , ATIVO ) e ( INATIVO , INATIVO );

(60)

Implementação de Klein

Idéia

Atribuir de modo adequado as arestas externas aos seus extremos.

para cada componente S e para cada bicategoria b, um heap h(S, b) guarda as arestas externas de b atribuídas a S;

bicategorias: ( ATIVO , ATIVO ), ( ATIVO , INATIVO ), ( INATIVO , ATIVO ) e ( INATIVO , INATIVO );

os heaps h(∗, b) são mantidos em um heap H(b);

arestas não atribuídas a S são mantidas em uma lista

(61)

Implementação de Klein

Idéia

Atribuir de modo adequado as arestas externas aos seus extremos.

para cada componente S e para cada bicategoria b, um heap h(S, b) guarda as arestas externas de b atribuídas a S;

bicategorias: ( ATIVO , ATIVO ), ( ATIVO , INATIVO ),

( INATIVO , ATIVO ) e ( INATIVO , INATIVO );

(62)

Implementação de Klein

Idéia

Atribuir de modo adequado as arestas externas aos seus extremos.

para cada componente S e para cada bicategoria b, um heap h(S, b) guarda as arestas externas de b atribuídas a S;

bicategorias: ( ATIVO , ATIVO ), ( ATIVO , INATIVO ), ( INATIVO , ATIVO ) e ( INATIVO , INATIVO );

os heaps h(∗, b) são mantidos em um heap H(b);

arestas não atribuídas a S são mantidas em uma lista

(63)

Implementação de Klein

Idéia

Atribuir de modo adequado as arestas externas aos seus extremos.

para cada componente S e para cada bicategoria b, um heap h(S, b) guarda as arestas externas de b atribuídas a S;

bicategorias: ( ATIVO , ATIVO ), ( ATIVO , INATIVO ),

( INATIVO , ATIVO ) e ( INATIVO , INATIVO );

(64)

Implementação de Klein (continuação)

(65)

Implementação de CHLP

Idéia

Reduzir para dois o número de grupos em que as arestas se dividem: { ATIVO , INATIVO } e { INATIVO , INATIVO }.

Dividir cada aresta em duas

partes através da adição de

um novo vértice de Steiner

(66)

Implementação de CHLP

Idéia

Reduzir para dois o número de grupos em que as arestas se dividem: { ATIVO , INATIVO } e { INATIVO , INATIVO }.

Dividir cada aresta em duas

partes através da adição de

um novo vértice de Steiner

ao grafo.

(67)

Implementação de CHLP (continuação)

vantagem: é possível mover de grupo, de uma só vez, as

arestas incidentes em cada componente;

(68)

Implementação de CHLP (continuação)

vantagem: é possível mover de grupo, de uma só vez, as arestas incidentes em cada componente;

preço: pequena degradação na razão de aproximação

(69)

Visão Geral

1 O Problema da Floresta de Steiner

2 Algoritmo de Goemans e Williamson Alguns conceitos importantes O algoritmo

3 Implementações do Algoritmo

(70)

Variedade de estruturas de dados e algoritmos utilizados nas implementações

union-find;

heaps de Fibonacci;

árvores binárias balanceadas de busca;

algoritmos para a seleção do k -ésimo menor elemento em um vetor;

algoritmo para encontrar o ancestral comum mais próximo

de dois nós em uma árvore.

(71)

Variedade de estruturas de dados e algoritmos utilizados nas implementações

union-find;

heaps de Fibonacci;

árvores binárias balanceadas de busca;

algoritmos para a seleção do k -ésimo menor elemento em um vetor;

algoritmo para encontrar o ancestral comum mais próximo

(72)

Variedade de estruturas de dados e algoritmos utilizados nas implementações

union-find;

heaps de Fibonacci;

árvores binárias balanceadas de busca;

algoritmos para a seleção do k -ésimo menor elemento em um vetor;

algoritmo para encontrar o ancestral comum mais próximo

de dois nós em uma árvore.

(73)

Variedade de estruturas de dados e algoritmos utilizados nas implementações

union-find;

heaps de Fibonacci;

árvores binárias balanceadas de busca;

algoritmos para a seleção do k -ésimo menor elemento em um vetor;

algoritmo para encontrar o ancestral comum mais próximo

Referências

Documentos relacionados

Ora, que você deve odiar a Deus em seu coração, ou então você seria salvo porque este glorioso Jesus dos quais eles falam veio para salvar os homens e vai salvar todos os

(2) Emparelhamento perfeito de comprimento mínimo no subgrafo induzido pelos vértices de grau ímpar (polinomial). (2) Emparelhamento perfeito de comprimento mínimo no subgrafo

Quero ir com o avô Markus buscar a Boneca-Mais-Linda-do-Mundo, quero andar de trenó, comer maçãs assadas e pão escuro com geleia (17) de framboesa (18).... – Porque é tão

Em 2008, Rahman, Shatabda e Hasan apresentaram limitantes para a distância e um algoritmo de aproximação com fator 2k , onde k é o fator de aproximação do algoritmo utilizado para

Vamos juntos as estabelecer relações de igualdade, justiça e fraternidade quebrando todos os ciclos de violência, como preparação para a chegada do Senhor e para a

O novo algoritmo para o problema UML seleciona a cada iterac¸˜ao uma estrela de menor custo amortizado, at´e que todos os objetos tenham sido classificados2. Os principais passos

• Defeitos e danos no sistema elétrico, eletrônico ou mecânico do equipamento oriundo da instalação de componentes ou acessórios não recomendados pela NTS do Brasil. •

Se soub´ essemos encontrar uma solu¸ c˜ ao vi´ avel x de (1) e uma solu¸ c˜ ao vi´ avel y de (2) que satisfizessem as duas condi¸ c˜ oes de folgas aproximadas, ter´ıamos, pelo