Escolar Documentos
Profissional Documentos
Cultura Documentos
1. Questão 1
O problema da Mochila consiste em: dado um conjunto A de n itens, cada um deles
estando associado a um peso A e um valor C, ambos inteiros positivos, e um inteiro B, o
problema é encontrar um subconjunto dos itens tal que o peso seja no máximo B e possua
valor máximo.
1.2. Mochila ∈ NP
Um problema NP (não determinı́stico polinomial) é aquele que possui um certificador efi-
ciente, ou seja, dado um certificado, que é uma solução para o problema, e uma instância,
pode-se provar que o certificado está em tempo polinomial.
Para o problema da Mochila, temos que a instância do problema corresponde ao
conjunto A, com seus respectivos itens com pesos e valores, e os inteiros B e V. A partir
disso, utiliza-se a estratégia abaixo para determinar se o certificado N, o qual corresponde
à um subconjunto de A, é uma solução verdadeira:
1. Verifique se a quantidade de elementos presentes em N é <= B
2. Percorrer o subconjunto N somando os valores de cada item
3. Verificar se tal soma possui valor >= V
O algoritmo acima leva tempo linear de acordo com o tamanho do subconjunto
N’, permitindo assim concluir que o certificado está em tempo polinomial e, portanto, tal
problema pertence à classe NP.
Logo, temos que tal solução é uma solução verdadeira para o problema da
Mochila. Convém destacar anda que, uma vez que encontramos uma solução verdadeira
para o problema da Mochila, temos um subconjunto {1, 2, ..., t}, logo:
X X X X
Aj Sj <= B = te Cj Sj >= V = t
j∈T j∈T j∈T j∈T
Concluı́mos, portanto, que tal solução também é verdadeira para o problema Sub-
set Sum. A partir disso, foi possı́vel demonstrar a redução de Subset Sum para o problema
da Mochila, o qual pertence a classe NP-completo.
2. Questão 2
Considerando um grafo não direcionado G = (V, E), uma cobertura de vértices é um
subconjunto de vértices de um grafo em que todas as arestas do grafo são incidentes
em pelos um dos vértices deste subconjunto. Desta forma, o problema da Cobertura de
Vértices é: dado um determinado grafo G = (V, E) e um inteiro k, G possui uma cobertura
de vértices de no máximo k vértices? Por exemplo, no grafo ilustrado abaixo, a cobertura
de vértices é >= 2.
3. Questão 3
O problema Profit Schedulling, explicitado no enunciado da questão, é NP, tendo em
vista que é fácil verificar em tempo polinomial se um determinado cronograma atende às
condições. Ele pode ser provado ser NP-completo por meio de uma redução do problema
Subset Sum.
4. Questão 4
O problema dos dois caminhões descrito nesta questão consiste em: dado um número V
de endereços e dois caminhões disponı́veis ara realizar as entregas, encontrar dois ciclos
que começam em s, sendo que s pertence à V, de modo que toda localização em V esteja
em pelo menos um dos ciclos e ambos tenham tamanho menor ou igual a k.
Para demostrar que tal problema pertence a classe NP-completo será utilizada
uma redução polinomial do problema do Ciclo Hamiltoniano, o qual corresponde a um
caminho feito em um grafo G (V, E) que passa uma única vez em cada vértice e o vértice
inicial é igual ao vértice final.
Dessa maneira, deve-se provar que uma solução verdadeira para o problema dos
Dois Caminhões corresponde também a uma solução verdadeira para o Ciclo Hamiltoni-
ano. Para isso o problema é modelado em um grafo G (V, E), no qual os vértices repre-
sentam as localizações e as arestas a distância entre elas. Em seguida devemos manter o
segundo motorista ocupado e para isso será adicionado um novo vértice com distância k/2
do vértice s e distância k + 1 para todos os demais.
Assim teremos a seguinte redução polinomial: dada uma instância de Ciclo Hamil-
toniano com n vértices iremos montar um grafo de modo que cada distância d (v, w) será
igual a 2 se houver uma aresta no grafo original e igual 4, caso contrário. Além disso será
adicionado um vértice 0 tal que d(s, 0) = d(0, s) = n e d(v, 0) = d(0, v) = 2n + 1 para todo
vértice diferente de s, nesse caso k terá valor igual a 2n.
A partir da modelagem feita acima concluı́mos que o Ciclo Hamiltoniano pode
ser reduzido para o problema dos dois caminhões, o qual pertence a classe NP-completo.
5. Questão 5
O problema Subset Sum consiste em: dado um conjunto S de números e um número t,
decidir se existe um subconjunto T de S tal que a soma de T seja igual a t. O problema
de Partição consiste em determinar se um conjunto S qualquer contém dois subconjuntos
(partições), com ambos tendo exatamente a mesma soma entre seus elementos.
5.1. Partição ∈ NP
Um problema é NP quando, dado um certificado, que é uma solução para o problema, e
uma instância, pode-se provar que o certificado está em tempo polinomial. No caso do
problema de Partição, a instância será um conjunto S e duas partições A e A’. A prova de
que este problema pertence à classe NP pode ser feita da seguinte maneira:
1. Para cada elemento x em A e x’ em A’, verifique se todos os elementos perten-
centes a S estão cobertos.
2. Seja S1 = 0 e S2 = 0.
3. Para cada elemento x em A adicione esse valor a S1.
4. Para cada elemento x’ em A’ adicione esse valor a S2.
5. Verifique se o valor de S1 é igual ao valor de S2.
O algoritmo acima leva tempo linear de acordo com o tamanho do conjunto de números,
portanto, o certificado está em tempo polinomial e o problema de Partição pertence à
classe NP.
No segundo caso, representado na Figura 3 pela cor azul, pode-se assumir que
( )
X
S ′ = S ∪ 2t − n ,
n∈S
ou seja,
X X X
n= n + 2t − n = 2t.
n∈S ′ n∈S n∈S
Dessa forma, comprova-se que S’ pode ser dividido em dois subconjuntos cujas somas
são iguais.
Por fim, no terceiro caso, representado na Figura 3 pela cor verde, pode-se assumir
que ( )
X
S′ = S ∪ n − 2t ,
n∈S
ou seja, !
X X X X
n= n+ n − 2t = 2 ∗ n−t .
n∈S ′ n∈S n∈S n∈S
também é possı́vel concluir que S’ pode ser dividido em dois subconjuntos cujas somas
são iguais. A instância é verdadeira para o ambos os problemas, provando que o Subset
Sum é redutı́vel ao problema da Partição e que este é NP-completo.