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=4
A cobertura por vértices não
é necessariamente única.
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 a
k-Cobertura por Vértices):
- parte principal: grafo;
- parâmetro: número inteiro.
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.
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
Balasubramanian et al - 1
Balasubramanian et al - 2
Niedermeier e Rossmanith
Chen, Jia e Kanj
O(kn + (2k 2 ) k k 2 )
k
2
O(kn + 1.732051 k )
k
2
O(kn + 1.324718 k )
k
2
O(kn + 1.29175 k )
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)
grafo
grafo G’
G
G’
G
v1
v1
v3
v3
k=3
H = {v5}
v2
v2
v4
v4
v6
v6
v5
v5
k’ = k - |H| = 2
Cobertura
porformam
vérticesuma
para G’
{v2,v3}
+ {v5}
cobertura por vértices de
v5
v6
Como
alg.será
força
|H|
G’removido
tem
<bruta:
k, menos
continua...
até
porque
encontrar
do que
tem
um
tamanho
menor
ou
igual
aé
grau
vértice
k.k’
{v2,v3}.
arestas,
maior
isolado
que
continua...
3
para
o grafo
G3.
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.
Caminho gerado
em G’’
v
Árvore de Busca
<G’’=(V’’,E’’),k’’>
PVC
v1
v2
v3
<G’’’,k’’’>
<G’’’,k’’’>
<G’’’,k’’’>
<G’’’=
{v,v2},(V’’
E’’’),
-PVC
{v1,v2},
<G’’’= (V’’
E’’’),
- {v1,v3},
E’’’),
PVC(V’’ -<G’’’=
PVC
k’’’ = k’’ - 2>k’’’ = k’’ - 2> k’’’ = k’’ - 2>
PVC = PVC
PVC
 {v,v2}
= PVCPVC
 {v1,v2}
= PVC  {v1,v3}
Algoritmo de Balasubramanian
(5)
Caso 2: ciclo v, v1, v2, v.
Caminho gerado
Caminho gerado
em G’’
em G’’
vv
v1
v1
Árvore de Busca
Árvore de Busca
<G’’=(V’’,E’’),k’’>
<G’’=(V’’,E’’),k’’>
PVC
PVC
v2
v2
<G’’’,k’’’>
<G’’’,k’’’>
<G’’’,k’’’>
<G’’’,k’’’>
<G’’’,k’’’>
<G’’’,k’’’>
<G’’’=
(V’’ -<G’’’=
{v,v1},(V’’
E’’’),
-PVC
{v1,v2},
E’’’),
PVC
PVC
<G’’’=
(V’’
- {v,v2},PVC
E’’’),
PVC
PVC
k’’’ = k’’ - 2>k’’’ = k’’ - 2> k’’’ = k’’ - 2>
PVC = PVC
 {v,v1}
PVC
= PVC 
{v1,v2}
PVC
= PVC  {v,v2}
Algoritmo de Balasubramanian
(6)
Caso 3: caminho simples v, v1, v2.
Caminho gerado
em G’’
v
v1
v2
Árvore de Busca
<G’’=(V’’,E’’),k’’>
<G’’’=
(V’’ - {v1}, E’’’),
PVC
k’’’ = k’’ - 1>
PVC = PVC  {v1}
Algoritmo de Balasubramanian
(7)
Caso 4: caminho simples v, v1.
Caminho gerado
em G’’
v
v1
Árvore de Busca
<G’’=(V’’,E’’),k’’>
<G’’’=
(V’’ - {v}, E’’’),
PVC
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)
grafo G
grafo G’’
G’
v10
v11 v2
v1
v1 v9
H = {v8}
k' =v23
v8
v3
v3
v12 v5
v5
v6
v4
v4
árvore de busca
k3>= 4
<G’,
<G’,k’>
{v8}
<G’’,k’’>
<G’’,k’’>
v6 PVC
PVC
<G’’,k’’>
<G’’,k’’>
PVC
1>
0>
<G’’,
<G’’,
1> 1>PVC
<G’’,
{v8,
{v8,
v4,
v4,
v6,
{v8,
v6}
v2}
v5,
{v8,v6}
v5, v7}
v7
v7
{v2, v4, v6, v8} é uma cobertura por vértices de
tamanho 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’>
log3 p
folhas
0 1
...
i
...
p-1