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
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
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
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 .
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 .
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 .
Exemplo
Exemplo
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.
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.
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.
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.
Aplicações
Projeto de redes;
Roteamento de circuitos VLSI.
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].
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].
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].
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
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;
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;
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
Conjunto ativo: S ⊂ V é ativo se existe algum T ∈ R tal que
S ∩ T 6= ∅ e T \ S 6= ∅.
Conjunto ativo: S ⊂ V é ativo se existe algum T ∈ R tal que
S ∩ T 6= ∅ e T \ S 6= ∅.
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.
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.
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
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?
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 .
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?
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 .
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 e ≥ 1 para cada S ativo,
x e ∈ {0, 1} para cada e em E .
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
Relaxação linear e dual
Relaxação linear minimize P
e∈E c e x e
sob as restrições P
e∈δ(S) x e ≥ 1 para cada S ativo, x e ≥ 0 para cada e em E . Dual
maximize P
S ativo y S sob as restrições P
S ativo:e∈δ(S) y S ≤ c e para cada e em E ,
y S ≥ 0 para cada S ativo.
Relaxação linear e dual
Relaxação linear minimize P
e∈E c e x e
sob as restrições P
e∈δ(S) x e ≥ 1 para cada S ativo, x e ≥ 0 para cada e em E . Dual
maximize P
S ativo y S sob as restrições P
S ativo:e∈δ(S) y S ≤ c e para cada e em E ,
Esboço 2
F ← (V , ∅);
y S ← 0 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;
e ← aresta 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 .
Esboço 2
F ← (V , ∅);
y S ← 0 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;
e ← aresta 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
Esboço 2
F ← (V , ∅);
y S ← 0 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;
e ← aresta 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 .
Esboço 2
F ← (V , ∅);
y S ← 0 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;
e ← aresta externa a F tq P
S ativo:e∈δ(S)