1) O documento discute o problema NP-completo de Set Packing e mostra que ele pertence à classe NP.
2) Ele também mostra como o problema NP-completo Independent Sets pode ser transformado polinomialmente em Set Packing, mostrando que este último problema também é NP-completo.
3) A transformação mapeia cada vértice e suas arestas incidentes em um conjunto no problema de Set Packing, de modo que uma solução para um problema é também uma solução para o outro.
1. Provas NP Completo
SET PACKING
Projeto e Análise de Algoritmos
1o. Semestre de 2014
Hugo Santos – silvasantosh@gmail.com
2. Definição
O problema Set Packing pode ser definido como:
Dado um universo U e uma família S dos subconjuntos de U, um packing é uma
subfamília C ⊂ S dos conjuntos em que todos os conjuntos em C são disjuntos par-a-
par.
Na sua versão de problema de decisão a entrada é o par (U, S) e um
inteiro k > 0. A pergunta a ser respondida é: existe um conjunto C,
onde |C| ≥ k?
3. Etapas da Prova NP-Completo
1) Mostrar que Set Packing (π) está em NP:
a) problemas de decisão cuja solução pode ser verificada em
tempo polinomial com algoritmo determinista.
2) Mostrar que um problema NP-completo conhecido (π‘) pode ser
polinomialmente transformado para ele (π‘ α π).
4. Mostrar que Set Packing (π) está em NP
1) Algoritmo determinista para verificar a solução em tempo
polinomial:
O primeiro passo é verificar se C possui no mínimo k elementos e na sequência
verificar se cada par Si e Sj possui interseção vazia. A complexidade deste algoritmo
pode ser dada por O(|C|2), onde m é o tamanho do maior conjunto pertencente a C.
Logo é polinomial.
5. Mostrar que um problema NP-completo conhecido (π‘)
pode ser polinomialmente transformado para ele (π‘ α π)
1) Consideremos π‘ o problema dos conjuntos independentes
(Independent Sets), que é sabidamente NP-Completo para seu
problema de decisão.
2) Problema: Qual é o maior subconjunto de vertices de V tal que
nenhum par de vertices são adjascentes?
6. Mostrar que um problema NP-completo conhecido (π‘)
pode ser polinomialmente transformado para ele (π‘ α π)
1) No problema de decisão do conjunto independente, a entrada é
um grafo não direcionado e um número k, e a saída é um valor
booleano: true se o gráfico contém um conjunto independente de
tamanho k, e false caso contrário.
2) A intuição necessária é que cada vértice vi possui associado a ele a
lista de arestas incidentes. A condição para que vi faca parte da
solução é ele não possuir nenhuma aresta incidente comum aos
demais vértices já presentes na solução. Então para transformar
este problema em um Set Packing, basta criar um grafo G onde
cada vértice vi possui um conjunto de arestas incidentes
exatamente igual a cada Si existente em S e definir k’ = k.
7. Mostrar que um problema NP-completo conhecido (π‘)
pode ser polinomialmente transformado para ele (π‘ α π)
1) Para validar a solução, inicialmente iremos assumir que G possui
um conjunto de vértices independentes com no mínimo k
elementos, T. cada vi ϵ T iremos adicionar o conjunto de arestas
incidentes, Si, em C. Note que |C| = |T| e que Si ∩ Sj = Ø; ∀Si,Sj ϵ C
e i ≠ j, como |T| ≥ k podemos concluir que T é uma solução para o
problema Set Packing.