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
Download

G k