Set packing - NP Proof / Prova NP Set Packing

386 visualizações

Publicada em

Set packing is a classical NP-complete problem in computational complexity theory and combinatorics, and was one of Karp's 21 NP-complete problems.

Suppose we have a finite set S and a list of subsets of S. Then, the set packing problem asks if some k subsets in the list are pairwise disjoint (in other words, no two of them share an element).

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
386
No SlideShare
0
A partir de incorporações
0
Número de incorporações
10
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Set packing - NP Proof / Prova NP Set Packing

  1. 1. Provas NP Completo SET PACKING Projeto e Análise de Algoritmos 1o. Semestre de 2014 Hugo Santos – silvasantosh@gmail.com
  2. 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. 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. 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. 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. 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. 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.
  8. 8. EXEMPLO: (π‘ α π)

×