A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Implementações do método de aproximação primal-dual"— Transcrição da apresentação:

1 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

2 Sumário 1. O problema da floresta de Steiner
2. Algoritmo de Goemans e Williamson 3. Implementação do algoritmo

3 O Problema da Floresta de Steiner
Dados: um grafo G com custos nas arestas e uma família R de subconjuntos de V(G). Encontrar: uma R -floresta de custo mínimo. Uma R -floresta é uma floresta geradora na qual cada conjunto de R se encontra em uma única componente.

4 Um exemplo:

5 Terminologia Conjunto de terminais: cada um dos conjuntos da coleção R . Vértices de Steiner: vértices que não estão nos conjuntos de terminais.

6 Voltando ao exemplo...

7 Como resolver o problema?
Não se conhece algoritmo polinomial para resolver o problema de maneira exata. Problema NP-difícil: quando |R | = 1, o problema se reduz ao problema de Steiner em grafos, o qual é NP-difícil [Garey & Johnson’ 79].

8 Algoritmo de Goemans e Williamson
2-aproximação para o problema da floresta de Steiner. Algoritmo baseado no método de aproximação primal-dual.

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

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

11 Algumas alterações Definir:

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

13 Implementação do algoritmo [O(n² log n)]
Estruturas de dados: Conjuntos de terminais: a cada conjunto de terminais T em R associamos uma lista dos vértices de T ; o número de vértices em T ;

14 Componentes: a cada componente S da floresta associamos
dois heaps de arestas: . H0 (S): mantém as arestas que ligam S a componentes inativas da floresta; . H1 (S): mantém as arestas que ligam S a componentes ativas da floresta; (cada heap contém no máximo uma aresta para cada outra componente) uma lista dos vértices que fazem parte de S ;

15 Componentes (continuação):
um vetor que informa para cada conjunto de terminais R o número de vértices de R que se encontram na componente S ; contador do número de conjuntos de terminais não conectados que intersectam S ; Vértices: a cada vértice v associamos o conjunto de terminais ao qual v pertence; a componente da qual v faz parte; o valor corrente de d(v) .

16 Implementação do algoritmo
Inicialização das estruturas (linhas 1 a 3) Conjuntos de terminais: Componentes: Vértices: O( n ) . O( n2 ) . O( n ) .

17 Implementação do algoritmo
Fase iterativa (linhas 4 a 7) escolha da aresta uv a ser incluída na floresta : são examinadas apenas duas arestas por componente ativa [O( n )] . atualização do valor de d(w) : é efetuada percorrendo-se a lista de componentes da floresta união das componentes Su e Sv : é realizada em duas etapas (3a e 3b) [O( n )] .

18 Implementação do algoritmo
Fase iterativa (continuação) a. União das listas de vértices e definição do estado de Su U Sv [O( n log n ) no total] . b. União dos heaps de arestas [O( n log n )] .

19 Implementação do algoritmo
Segunda fase (linha 8) determinação do ancestral comum mais próximo (acmp) de cada conjunto de terminais. Seleção das arestas: para cada árvore T seja l uma lista em pré-ordem dos acmp’s percorre-se l, selecionando, para cada acmp v, as arestas no caminho entre cada vértice no(s) conjunto(s) de terminais correspondente(s) e v.

20 Outras implementações
Cole, Hariharan, Lewenstein e Porat : O( (n+m ) log2 n ) . Klein: O(n m1/2 log n) . Gabow, Goemans e Williamson: O(n (n + m1/2 log log n ) ) .


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

Apresentações semelhantes


Anúncios Google