Upload
diego-vasconcelos
View
217
Download
3
Embed Size (px)
Citation preview
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
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
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.
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.
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.
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
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.
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
Problemas FPT (2) Existem duas técnicas algorítmicas
comuns em algoritmos FPT: Redução ao núcleo do problema. Árvore limitada de busca.
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)).
Á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.
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 )
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.
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.
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
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.
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.
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).
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}
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}
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.
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}
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.
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.
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.
Algoritmo de Dehne et al (2) Árvore limitada de busca paralelo:
<G’,k’>
0 1 . . . . . . p-1folhasi
log3 p