27
Algoritmos FPT para o Problema da k-Cobertura por Vértices

Algoritmos FPT para o Problema da k-Cobertura por Vértices

Embed Size (px)

Citation preview

Page 1: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Algoritmos FPT para o Problema da k-Cobertura por Vértices

Page 2: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Roteiro Problema da k-Cobertura por

Vértices Problemas NP-completos Complexidade Parametrizada Problemas FPT Algoritmo de Buss Algoritmo de Balasubramanian et al

Page 3: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Problema da k-Cobertura por Vértices (1)

Dado um grafo G e um inteiro positivo k. Existe um subconjunto de vértices V’, |V’|

<=k, tal que cada aresta do grafo incide em pelo menos um vértice desse subconjunto?

v1 v2 v3 v4

v5 v6 v7

v8 v9 v10

k = 4v2 v4

v5 v7 A cobertura por vértices nãoé necessariamente única.

v2

v5 v6 v7

k = 4v4

Page 4: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Problema da k-Cobertura por Vértices (2) Uma aplicação prática: alinhamento

múltiplo de seqüências (Biologia Computacional).

Melhor algoritmo conhecido: algoritmo trivial da força bruta.

Tempo: O(nk). O problema é NP-completo.

Page 5: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Problemas NP-completos Na prática, precisamos encontrar

formas de resolver as instâncias que temos em mãos.

Lidar com a intratabilidade dos problemas é um grande desafio da Ciência da Computação.

Vários métodos já foram desenvolvidos com este objetivo.

Page 6: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Complexidade Parametrizada (1)

Vem obtendo sucesso na solução de instâncias que antes eram consideradas muito grandes para serem resolvidas.

Entrada do problema: parte principal e parâmetro.

Problemas da Teoria dos Grafos (como ak-Cobertura por Vértices): - parte principal: grafo; - parâmetro: número inteiro.

Page 7: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Complexidade Parametrizada (2)

Isolar a explosão combinatorial apenas em termos do parâmetro.

ENTRADA

parâmetro

Parte principal da entradacontribui polinomialmente

COMPLEXIDADE CLÁSSICA COMPLEXIDADE PARAMETRIZADA

Page 8: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Complexidade Parametrizada (3)

Algoritmo que gaste tempo exponencial em relação ao parâmetro (k), mas tempo polinomial em relação à parte principal da entrada (x).

A assunção fundamental é k << |x|. Principais áreas de atuação: aquelas

onde parâmetros em pequenos intervalos são úteis em aplicações práticas.

Page 9: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Problemas FPT (1) Um problema é tratável por parâmetro

fixo (FPT) se e somente se possui um algoritmo que o resolve em tempo O(nc f(k)), onde: n é o tamanho da parte principal da entrada k é o parâmetro c é uma constante independente de k f é uma função arbitrária

Page 10: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Problemas FPT (2) Existem duas técnicas algorítmicas

comuns em algoritmos FPT: Redução ao núcleo do problema. Árvore limitada de busca.

Page 11: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Redução ao núcleo do problema

Reduzimos a instância original, em tempo polinomial, em uma outra instância equivalente, cujo tamanho é limitado por k.

Se houver uma solução para essa instância reduzida, podemos transformá-la em uma solução para a instância original.

O uso desta técnica resulta em: O(nc + f(k)).

Page 12: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Árvore Limitada de Busca Consiste em analisar exaustivamente

uma árvore criada a partir da instância reduzida do método de redução ao núcleo do problema, em busca de uma solução.

O tamanho da árvore deve ser limitado em função do parâmetro k.

Page 13: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Problemas FPT (5) A k-Cobertura por Vértices foi um dos

primeiros problemas que provou-se ser FPT. A seguir, alguns resultados:

Buss O(kn + (2k 2 ) k k 2 )Balasubramanian et al - 1 O(kn + 1.732051 k k 2 )Balasubramanian et al - 2 O(kn + 1.324718 k k 2 )Niedermeier e Rossmanith O(kn + 1.29175 k k 2 )Chen, Jia e Kanj O(kn + 1.271 k k 2 )

Page 14: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Algoritmo de Buss (1) Resolve o problema da k-Cobertura por

Vértices em tempo O(kn + (2k2)k k2). Baseado no método de redução ao

núcleo do problema. Todos os vértices de grau maior que k

do grafo devem pertencer a qualquer cobertura por vértices de tamanho menor ou igual a k.

Page 15: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Algoritmo de Buss (2) Passo 1: Seja H o conjunto de todos os vértices de

G com grau maior que k. Se |H| > k, não há cobertura. Senão, k’ = k - |H|.

Passo 2: Criamos G’, resultado da remoção dos vértices de G que estão em H, bem como das arestas neles incidentes e de vértices isolados. Se G’ tiver mais do que k.k’ arestas, não há cobertura.

Passo 3: Encontre, por força bruta, uma cobertura por vértices de tamanho menor ou igual a k’ para G’. Se encontrar, esses vértices mais H formam uma cobertura por vértices desejada para G.

Page 16: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Algoritmo de Buss (3)

k = 3H = {v5}v1 v2

v3 v4 v5

v6

grafo G

Como |H| < k, continua...

k’ = k - |H| = 2

v5 será removido porque tem grau maior que 3.

v1 v2

v3 v4

v6

grafo G’

v6 será removido porque é umvértice isolado

v1 v2

v3 v4

grafo G’

Como G’ tem menos do quek.k’ arestas, continua...

v1 v2

v3 v4

grafo G’

alg. força bruta: até encontrar{v2,v3}.

Cobertura por vértices para G’

v1 v2

v3 v4 v5

v6

grafo G

{v2,v3} + {v5} formam umacobertura por vértices detamanho menor ou igual a3 para o grafo G

Page 17: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Algoritmo de Balasubramanian (1)

Algoritmo referente ao Teorema 1 de Balasubramanian et al.

Resolve o problema da k-Cobertura por Vértices em tempo

O(kn + 1.732051k k2). Algoritmo executa o método da redução

ao núcleo do problema e depois, o método da árvore limitada de busca.

Page 18: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Algoritmo de Balasubramanian (2)

Primeiro, execute os dois primeiros passos do algoritmo de Buss.

Crie uma árvore de busca, que será percorrida em profundidade.

Cada nó armazena uma instância reduzida do grafo (<G’’=(V’’,E’’)>, k’’) e uma cobertura por vértices parcial (PVC).

A raiz da árvore armazena: <G’,k’> e H.

Page 19: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Algoritmo de Balasubramanian (3)

Em cada nó da árvore, execute os passos a seguir, até encontrar a cobertura por vértices desejada ou até que seja determinado que esta não existe. Escolha um vértice v qualquer de V’’. A partir de v, faça uma busca em profundidade que

passe por no máximo três arestas. Baseado nos possíveis caminhos gerados, crie filhos

para o nó (Casos 1 e 2) ou reduza o grafo dentro do nó (Casos 3 e 4).

Page 20: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Algoritmo de Balasubramanian (4) Caso 1: caminho simples v, v1, v2, v3.

v

v1

v2

v3

Caminho geradoem G’’

<G’’=(V’’,E’’),k’’>PVC

<G’’’,k’’’>PVC

<G’’’,k’’’>PVC

<G’’’,k’’’>PVC

Árvore de Busca

v

v1

v2

v3

Caminho geradoem G’’

<G’’=(V’’,E’’),k’’>PVC

<G’’’,k’’’>PVC

<G’’’,k’’’>PVC

Árvore de Busca

<G’’’= (V’’ - {v,v2}, E’’’), k’’’ = k’’ - 2>

PVC = PVC {v,v2}

v

v1

v2

v3

Caminho geradoem G’’

<G’’=(V’’,E’’),k’’>PVC

<G’’’,k’’’>PVC

<G’’’,k’’’>PVC

Árvore de Busca

<G’’’= (V’’ - {v1,v2}, E’’’), k’’’ = k’’ - 2>

PVC = PVC {v1,v2}

v

v1

v2

v3

Caminho geradoem G’’

<G’’=(V’’,E’’),k’’>PVC

<G’’’,k’’’>PVC

<G’’’,k’’’>PVC

Árvore de Busca

<G’’’= (V’’ - {v1,v3}, E’’’), k’’’ = k’’ - 2>

PVC = PVC {v1,v3}

Page 21: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Algoritmo de Balasubramanian (5) Caso 2: ciclo v, v1, v2, v.

v

v1 v2

Caminho geradoem G’’

<G’’=(V’’,E’’),k’’>PVC

<G’’’,k’’’>PVC

<G’’’,k’’’>PVC

Árvore de Busca

<G’’’,k’’’>PVC

v

v1 v2

Caminho geradoem G’’

<G’’=(V’’,E’’),k’’>PVC

<G’’’,k’’’>PVC

Árvore de Busca

<G’’’,k’’’>PVC<G’’’= (V’’ - {v,v1}, E’’’),

k’’’ = k’’ - 2>PVC = PVC {v,v1}

v

v1 v2

Caminho geradoem G’’

<G’’=(V’’,E’’),k’’>PVC

<G’’’,k’’’>PVC

Árvore de Busca

<G’’’,k’’’>PVC<G’’’= (V’’ - {v1,v2}, E’’’),

k’’’ = k’’ - 2>PVC = PVC {v1,v2}

v

v1 v2

Caminho geradoem G’’

<G’’=(V’’,E’’),k’’>PVC

<G’’’,k’’’>PVC

Árvore de Busca

<G’’’,k’’’>PVC<G’’’= (V’’ - {v,v2}, E’’’),

k’’’ = k’’ - 2>PVC = PVC {v,v2}

Page 22: Algoritmos FPT para o Problema da k-Cobertura por Vértices

v

v1

v2

Caminho geradoem G’’

<G’’=(V’’,E’’),k’’>PVC

Árvore de Busca

v

v1

v2

Caminho geradoem G’’

<G’’=(V’’,E’’),k’’>PVC

Árvore de Busca

<G’’’= (V’’ - {v1}, E’’’), k’’’ = k’’ - 1>

PVC = PVC {v1}

Algoritmo de Balasubramanian (6) Caso 3: caminho simples v, v1, v2.

Page 23: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Algoritmo de Balasubramanian (7) Caso 4: caminho simples v, v1.

v

v1

Caminho geradoem G’’

<G’’=(V’’,E’’),k’’>PVC

Árvore de Busca

v

v1

Caminho geradoem G’’

<G’’=(V’’,E’’),k’’>PVC

Árvore de Busca

<G’’’= (V’’ - {v}, E’’’), k’’’ = k’’ - 1>

PVC = PVC {v}

Page 24: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Algoritmo de Balasubramanian (8)

Árvore ternária. Interrompemos o crescimento da árvore

quando |PVC| = k. Um grafo resultante vazio significa que

PVC é uma cobertura por vértices de tamanho menor ou igual a k para G.

Se percorremos todos os nós da árvore, podemos concluir que não existe a cobertura por vértices desejada.

Page 25: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Algoritmo de Balasubramanian (9)

v1

v2

v3 v5

v4

v6

v7

v8

v9

v11

v12

grafo G

k = 4v10 v1

v2

v3 v5

v4

v6

v7

grafo G’H = {v8}k' = 3

<G’,k’>{v8}

árvore de busca

v1

v2

v3 v5

v4

v6

v7

grafo G’<G’, 3>

{v8}

árvore de busca

<G’’,k’’>PVC

<G’’,k’’>PVC

<G’’,k’’>PVC

v1

v2

v3 v5

v4

v6

v7

grafo G’<G’, 3>

{v8}

árvore de busca

<G’’,k’’>PVC

<G’’,k’’>PVC

v1

v2

v3 v5

grafo G’’<G’, 3>

{v8}

árvore de busca

<G’’,k’’>PVC

<G’’,k’’>PVC<G’’, 1>

{v8, v4, v6}

v1

v2

v3 v5

v4

v6

v7

grafo G’<G’, 3>

{v8}

árvore de busca

<G’’,k’’>PVC

<G’’,k’’>PVC

v1

v2

v3

v4

grafo G’’<G’, 3>

{v8}

árvore de busca

<G’’,k’’>PVC

<G’’,k’’>PVC<G’’, 1>

{v8, v5, v6}

v1

v2

v3 v5

v4

v6

v7

grafo G’<G’, 3>

{v8}

árvore de busca

<G’’,k’’>PVC

<G’’,k’’>PVC

v1

v2

v3

v4

v6

grafo G’’<G’, 3>

{v8}

árvore de busca

<G’’,k’’>PVC

<G’’,k’’>PVC<G’’, 1>{v8, v5, v7}

v1

v2

v3 v5

grafo G’’<G’, 3>

{v8}

árvore de busca

<G’’,k’’>PVC

<G’’,k’’>PVC<G’’, 1>

{v8, v4, v6}

v1

v2

v3 v5

grafo G’’<G’, 3>

{v8}

árvore de busca

<G’’,k’’>PVC

<G’’,k’’>PVC<G’’, 1>

{v8, v4, v6}

grafo G’’<G’, 3>

{v8}

árvore de busca

<G’’,k’’>PVC

<G’’,k’’>PVC<G’’, 0>

{v8, v4, v6, v2}

v1

v2

v3 v5

v4

v6

v7

v8

v9

v11

v12

grafo G

v10

{v2, v4, v6, v8} é uma cobertura por vértices detamanho menor ou igual a 4 para o grafo G.

Page 26: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Algoritmo de Dehne et al (1)

Paraleliza o Teorema 1 de Balasubramanian et al, seguindo o modelo CGM.

Paraleliza as duas fases do algoritmo FPT. Resolve instâncias ainda maiores do que

aquelas resolvidas pelo seqüencial. Redução ao núcleo do problema paralelo:

p processadores ordenam as arestas pelo identificador do vértice em tempo O(1) para descobrir o grau dos vértices.

Page 27: Algoritmos FPT para o Problema da k-Cobertura por Vértices

Algoritmo de Dehne et al (2) Árvore limitada de busca paralelo:

<G’,k’>

0 1 . . . . . . p-1folhasi

log3 p