20
Implementações do Implementações do método de método de aproximação primal- aproximação primal- dual dual Aluno: Rafael Pereira Luna Aluno: Rafael Pereira Luna Orientadora: Cristina Gomes Orientadora: Cristina Gomes Fernandes Fernandes Aplicado ao problema da floresta de Stein

Implementações do método de aproximação primal-dual

  • Upload
    zalika

  • View
    31

  • Download
    5

Embed Size (px)

DESCRIPTION

Implementações do método de aproximação primal-dual. Aplicado ao problema da floresta de Steiner. Aluno: Rafael Pereira Luna Orientadora: Cristina Gomes Fernandes. Sumário. 1. O problema da floresta de Steiner 2. Algoritmo de Goemans e Williamson 3. Implementação do algoritmo. - PowerPoint PPT Presentation

Citation preview

Page 1: Implementações do método de aproximação primal-dual

Implementações do Implementações do método de aproximação método de aproximação primal-dualprimal-dual

Aluno: Rafael Pereira LunaAluno: Rafael Pereira Luna

Orientadora: Cristina Gomes Orientadora: Cristina Gomes FernandesFernandes

Aplicado ao problema da floresta de Steiner

Page 2: Implementações do método de aproximação primal-dual

SumárioSumário

1.1. O problema da floresta de O problema da floresta de SteinerSteiner

2. Algoritmo de Goemans e 2. Algoritmo de Goemans e WilliamsonWilliamson

3. Implementação do algoritmo3. Implementação do algoritmo

Page 3: Implementações do método de aproximação primal-dual

O Problema da Floresta de O Problema da Floresta de Steiner Steiner

Dados:Dados: um grafo um grafo G G com custos nas arestas e com custos nas arestas e uma família uma família R R de subconjuntos de de subconjuntos de V(G)V(G)..

Encontrar:Encontrar: uma uma R R -floresta de custo mínimo.-floresta de custo mínimo.

Uma Uma RR -floresta-floresta é uma floresta geradora na é uma floresta geradora naqual cada conjunto de qual cada conjunto de RR se encontra em se encontra emuma única componente.uma única componente.

Page 4: Implementações do método de aproximação primal-dual

Um exemplo:Um exemplo:

Page 5: Implementações do método de aproximação primal-dual

TerminologiaTerminologia

• Conjunto de terminais: Conjunto de terminais: cada um dos cada um dos conjuntos da coleção conjuntos da coleção RR . .

• Vértices de Steiner: Vértices de Steiner: vértices que vértices que não estão nos conjuntos de não estão nos conjuntos de terminais.terminais.

Page 6: Implementações do método de aproximação primal-dual

Voltando ao exemplo...Voltando ao exemplo...

Page 7: Implementações do método de aproximação primal-dual

Como resolver o Como resolver o problema?problema?• Não se conhece algoritmo Não se conhece algoritmo

polinomial para resolver o problema polinomial para resolver o problema de maneira exata.de maneira exata.

• Problema NP-difícil: quando |Problema NP-difícil: quando |R R | = 1, | = 1, o problema se reduz ao problema o problema se reduz ao problema de Steiner em grafos, o qual é NP-de Steiner em grafos, o qual é NP-difícil [Garey & Johnson’ 79].difícil [Garey & Johnson’ 79].

Page 8: Implementações do método de aproximação primal-dual

Algoritmo de Goemans e Algoritmo de Goemans e WilliamsonWilliamson

• 2-aproximação para o problema da 2-aproximação para o problema da floresta de Steiner.floresta de Steiner.

• Algoritmo baseado no método de Algoritmo baseado no método de aproximação primal-dual.aproximação primal-dual.

Page 9: Implementações do método de aproximação primal-dual

Conjunto ativo:Conjunto ativo: subconjunto de subconjunto de V(G) V(G) que separa vértices de um mesmo que separa vértices de um mesmo conjunto de terminais.conjunto de terminais.

maximize

sob as restriçoes para todo

para todo ativo.

y

y c e E G

y S

SS e S

e

S

( )~ ( ),

: ( )

S

0

Dual:Dual:

minimize

sob as restriçoes para todo ativo

para todo

cx

x S S

x e E Ge

~ ( ( )) ,

( ).

1

0

Primal:Primal:

Page 10: Implementações do método de aproximação primal-dual

Algoritmo Algoritmo MinFs-GW(MinFs-GW(G G ,, c c ,, R R )) 1

2 0

3

4

5

6

7

8

9

10

.

.

.

.

.

.

( )

. ( )

.

.

.

: ( )

: ( )

,

para cada ativo faça

seja o conjunto das componentes ativas de

enquanto faça

seja o vetor caracteristico de

seja o maior valor tal que

para cada aresta externa

seja uma aresta externa tal que

seja uma

F V

S y

F

y

y y c e

f y y c

y y y

F F f

F

G

S

F

F

F

S eS e S

S fS f S

S

S

S

R - floresta minimal de

devolva

F

F11.

Page 11: Implementações do método de aproximação primal-dual

Algumas alteraçõesAlgumas alterações

Definir:Definir:

d v ySS v S

( ):

folga( )

( ) ( ) ( )

( ) ( ) ( )uv

c uv d u d vS S

c uv d u d v S S

S S

u v

u v

u v

2, e ativas

, ou ativa

, e inativas

Page 12: Implementações do método de aproximação primal-dual

Algoritmo Algoritmo MinFs-GW2(MinFs-GW2(G G ,, c c ,, R R )) 1

2 0

3

4

5

6

7

8

9

.

. ( ) ( )

.

.

. ( ) { ( ) }

. ( ) ( ) ( )

.

.

.

,

para cada faça

seja o conjunto das componentes ativas de

enquanto faça

seja tal que : externa

para cada faça

seja uma floresta minimal de

devolva

F V

v V G d v

F

f f min e e

v S d v d v f

F F f

F F

F

G

F

F

F

S

S

S

R -

folga folga

folga

Page 13: Implementações do método de aproximação primal-dual

Implementação do Implementação do algoritmoalgoritmo[[OO((n² log nn² log n))]]

Estruturas de dados:Estruturas de dados:

• Conjuntos de terminais: Conjuntos de terminais: a cada a cada conjunto de terminais conjunto de terminais TT em em R R associamosassociamos

uma lista dos vértices de uma lista dos vértices de T T ;;

o número de vértices em o número de vértices em T T ;;

Page 14: Implementações do método de aproximação primal-dual

• Componentes: Componentes: a cada componente a cada componente S S da florestada floresta associamosassociamos

1.. HH0 0 (S)(S):: mantém as arestas que mantém as arestas que ligam ligam SS a componentes inativas da a componentes inativas da floresta;floresta;

2.. HH1 1 (S)(S):: mantém as arestas que mantém as arestas que ligam ligam SS a componentes ativas da a componentes ativas da floresta;floresta;

(cada heap contém no máximo uma (cada heap contém no máximo uma aresta para cada outra componente) aresta para cada outra componente)

uma lista dos vértices que fazem parte uma lista dos vértices que fazem parte dede S S ;;

dois heaps de arestas:dois heaps de arestas:

Page 15: Implementações do método de aproximação primal-dual

• Componentes (continuação): Componentes (continuação):

um vetor que informa para cada um vetor que informa para cada conjunto de terminais conjunto de terminais RR o número de o número de vértices de vértices de RR que se encontram na que se encontram na componente componente S S ;; contador do número de conjuntos de contador do número de conjuntos de terminais não conectados que terminais não conectados que intersectam intersectam S S ;;• Vértices: Vértices: a cada vértice a cada vértice vv associamos associamos

o conjunto de terminais ao qual o conjunto de terminais ao qual vv pertence;pertence; a componente da qual a componente da qual v v faz parte;faz parte; o valor corrente de o valor corrente de d(v) d(v) ..

Page 16: Implementações do método de aproximação primal-dual

Implementação do Implementação do algoritmoalgoritmo

Inicialização das estruturas (Inicialização das estruturas (linhas 1 a 3linhas 1 a 3))

• Conjuntos de terminaisConjuntos de terminais::

• ComponentesComponentes::

• VérticesVértices::

OO( ( nn22 ) ) ..

OO( ( n n ) ) ..

OO( ( n n ) ) ..

Page 17: Implementações do método de aproximação primal-dual

Implementação do Implementação do algoritmoalgoritmoFase iterativa (Fase iterativa (linhas 4 a 7linhas 4 a 7))

1 escolha da aresta escolha da aresta uvuv a ser incluída na a ser incluída na floresta floresta :: são examinadas apenas são examinadas apenas duas arestas por componente ativaduas arestas por componente ativa[[OO( ( n n ))]] ..

[[OO( ( n n ))]] ..

2 atualização do valor de atualização do valor de d(w)d(w) :: é é efetuada percorrendo-se a lista de efetuada percorrendo-se a lista de componentes da florestacomponentes da floresta

3 união das componentes união das componentes SSu u e e SSvv : : é é realizada em duas etapasrealizada em duas etapas (3a e 3b)(3a e 3b)

Page 18: Implementações do método de aproximação primal-dual

Implementação do Implementação do algoritmoalgoritmo

Fase iterativa (continuação)Fase iterativa (continuação)

3 a. União das listas de vértices e a. União das listas de vértices e definição do estado de definição do estado de SSuu U U SSvv [[OO( ( n log n n log n ) ) no totalno total]] ..

[[OO( ( n log n n log n ))]] ..3 b. União dos heaps de arestasb. União dos heaps de arestas

Page 19: Implementações do método de aproximação primal-dual

Implementação do Implementação do algoritmoalgoritmoSegunda fase (Segunda fase (linha 8linha 8))

1 determinação do ancestral comum mais próximo determinação do ancestral comum mais próximo (acmp) de cada conjunto de terminais.(acmp) de cada conjunto de terminais.

2 Seleção das arestas: para cada árvore Seleção das arestas: para cada árvore TT

• seja seja l l uma lista em pré-ordem dos acmp’s uma lista em pré-ordem dos acmp’s

• percorre-se percorre-se ll, selecionando, para cada acmp , selecionando, para cada acmp vv, as , as arestas no caminho entre cada vértice no(s) arestas no caminho entre cada vértice no(s) conjunto(s) de terminais correspondente(s) e conjunto(s) de terminais correspondente(s) e vv..

Page 20: Implementações do método de aproximação primal-dual

Outras implementaçõesOutras implementações

• Cole, Hariharan, Lewenstein e Porat : Cole, Hariharan, Lewenstein e Porat : OO( (( (n+m n+m )) log log22 n n ) ) ..

• Klein: Klein: OO((n mn m1/21/2 log n log n) ) ..

• Gabow, Goemans e Williamson: Gabow, Goemans e Williamson: OO((n n ((n + mn + m1/21/2 log log n log log n ) ) ) ) . .