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

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

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

Apresentações semelhantes


Apresentação em tema: "Algoritmos FPT para o Problema da k-Cobertura por Vértices"— Transcrição da apresentação:

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

2 Roteiro Problema da k-Cobertura por Vértices Problemas NP-completos
Complexidade Parametrizada Problemas FPT Algoritmo de Buss Algoritmo de Balasubramanian et al

3 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 = 4 A cobertura por vértices não é necessariamente única. v2 v5 v6 v7 k = 4 v4

4 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.

5 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.

6 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 a k-Cobertura por Vértices): parte principal: grafo; parâmetro: número inteiro.

7 Complexidade Parametrizada (2)
COMPLEXIDADE CLÁSSICA COMPLEXIDADE PARAMETRIZADA parâmetro ENTRADA Parte principal da entrada contribui polinomialmente Isolar a explosão combinatorial apenas em termos do parâmetro.

8 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.

9 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

10 Problemas FPT (2) Existem duas técnicas algorítmicas comuns em algoritmos FPT: Redução ao núcleo do problema. Árvore limitada de busca.

11 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)).

12 Á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.

13 Problemas FPT (5) A k-Cobertura por Vértices foi um dos primeiros problemas que provou-se ser FPT. A seguir, alguns resultados:

14 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.

15 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.

16 Algoritmo de Buss (3) grafo G grafo G’ grafo G’ grafo G’ grafo G k = 3
v1 v2 v3 v4 v5 v6 grafo G v1 v2 v3 v4 v6 grafo G’ v6 será removido porque é um vértice isolado v1 v2 v3 v4 grafo G’ Como G’ tem menos do que k.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 uma cobertura por vértices de tamanho menor ou igual a 3 para o grafo G k = 3 H = {v5} k’ = k - |H| = 2 v5 será removido porque tem grau maior que 3. Como |H| < k, continua...

17 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 k k2). Algoritmo executa o método da redução ao núcleo do problema e depois, o método da árvore limitada de busca.

18 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.

19 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).

20 Algoritmo de Balasubramanian (4)
Caso 1: caminho simples v, v1, v2, v3. v v1 v2 v3 Caminho gerado em G’’ <G’’=(V’’,E’’),k’’> PVC <G’’’,k’’’> PVC Árvore de Busca <G’’’= (V’’ - {v1,v3}, E’’’), k’’’ = k’’ - 2> PVC = PVC  {v1,v3} v v1 v2 v3 Caminho gerado em G’’ <G’’=(V’’,E’’),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 gerado em G’’ <G’’=(V’’,E’’),k’’> PVC <G’’’,k’’’> PVC Árvore de Busca v v1 v2 v3 Caminho gerado em G’’ <G’’=(V’’,E’’),k’’> PVC <G’’’,k’’’> PVC Árvore de Busca <G’’’= (V’’ - {v,v2}, E’’’), k’’’ = k’’ - 2> PVC = PVC  {v,v2}

21 Algoritmo de Balasubramanian (5)
Caso 2: ciclo v, v1, v2, v. v v1 v2 Caminho gerado em G’’ <G’’=(V’’,E’’),k’’> PVC <G’’’,k’’’> PVC Árvore de Busca <G’’’= (V’’ - {v1,v2}, E’’’), k’’’ = k’’ - 2> PVC = PVC  {v1,v2} v v1 v2 Caminho gerado em G’’ <G’’=(V’’,E’’),k’’> PVC <G’’’,k’’’> PVC Árvore de Busca v v1 v2 Caminho gerado em G’’ <G’’=(V’’,E’’),k’’> PVC <G’’’,k’’’> PVC Árvore de Busca <G’’’= (V’’ - {v,v1}, E’’’), k’’’ = k’’ - 2> PVC = PVC  {v,v1} v v1 v2 Caminho gerado em G’’ <G’’=(V’’,E’’),k’’> PVC <G’’’,k’’’> PVC Árvore de Busca <G’’’= (V’’ - {v,v2}, E’’’), k’’’ = k’’ - 2> PVC = PVC  {v,v2}

22 Algoritmo de Balasubramanian (6)
Caso 3: caminho simples v, v1, v2. v v1 v2 Caminho gerado em G’’ <G’’=(V’’,E’’),k’’> PVC Árvore de Busca <G’’’= (V’’ - {v1}, E’’’), k’’’ = k’’ - 1> PVC = PVC  {v1} v v1 v2 Caminho gerado em G’’ <G’’=(V’’,E’’),k’’> PVC Árvore de Busca

23 Algoritmo de Balasubramanian (7)
Caso 4: caminho simples v, v1. v v1 Caminho gerado em G’’ <G’’=(V’’,E’’),k’’> PVC Árvore de Busca <G’’’= (V’’ - {v}, E’’’), k’’’ = k’’ - 1> PVC = PVC  {v} v v1 Caminho gerado em G’’ <G’’=(V’’,E’’),k’’> PVC Árvore de Busca

24 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.

25 Algoritmo de Balasubramanian (9)
v1 v2 v3 v4 v6 grafo G’’ <G’, 3> {v8} árvore de busca <G’’,k’’> PVC <G’’, 1> {v8, v5, v7} v1 v2 v3 v5 grafo G’’ <G’, 3> {v8} árvore de busca <G’’,k’’> PVC <G’’, 1> {v8, v4, v6} v1 v2 v3 v5 grafo G’’ <G’, 3> {v8} árvore de busca <G’’,k’’> PVC <G’’, 1> {v8, v4, v6} v1 v2 v3 v5 v4 v6 v7 v8 v9 v11 v12 grafo G v10 {v2, v4, v6, v8} é uma cobertura por vértices de tamanho menor ou igual a 4 para o grafo G. grafo G’’ <G’, 3> {v8} árvore de busca <G’’,k’’> PVC <G’’, 0> {v8, v4, v6, v2} v1 v2 v3 v5 v4 v6 v7 grafo G’ <G’, 3> {v8} árvore de busca <G’’,k’’> PVC v1 v2 v3 v5 v4 v6 v7 grafo G’ <G’, 3> {v8} árvore de busca <G’’,k’’> PVC 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 v8 v9 v11 v12 grafo G k = 4 v10 v1 v2 v3 v5 v4 v6 v7 grafo G’ <G’, 3> {v8} árvore de busca <G’’,k’’> PVC v1 v2 v3 v5 v4 v6 v7 grafo G’ <G’, 3> {v8} árvore de busca <G’’,k’’> PVC v1 v2 v3 v5 grafo G’’ <G’, 3> {v8} árvore de busca <G’’,k’’> PVC <G’’, 1> {v8, v4, v6} v1 v2 v3 v4 grafo G’’ <G’, 3> {v8} árvore de busca <G’’,k’’> PVC <G’’, 1> {v8, v5, v6}

26 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.

27 Algoritmo de Dehne et al (2)
Árvore limitada de busca paralelo: <G’,k’> 1 . . . p-1 folhas i log3 p


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

Apresentações semelhantes


Anúncios Google