Este documento apresenta 8 questões sobre a complexidade de algoritmos. As questões abordam classes de problemas como P, NP, NPC e NPI e pedem para: 1) definir estas classes e dar exemplos; 2) analisar relacionamentos entre problemas hipotéticos; 3) provar que determinados problemas são NP-completos; e 4) formular algoritmos para resolver versões de decisão e otimização de problemas NP-completos.
1. 1º NPC
CT907 – Complexidade de Algoritmos
prof. Jerffeson Teixeira de Souza
Data de Entrega: 04 de Novembro
Q1. Responda as seguintes questões sobre classes de problemas:
a) Defina as classes de problemas P, NP, NPI, NPC (NP-Completo) e
NPD (NP-Difícil).
b) Apresente pelo menos dois exemplos de problemas que pertencem
a cada uma das classes descritas acima.
c) Discuta a questão “P = NP ?”.
Q2. Suponha que existem 4 problemas: A, B, C e D. Cada um desses
problemas pode ou não pertencer a classe NP. No entanto, sabemos o
seguinte sobre eles:
i. Existe uma redução em tempo polinominal de A para B.
ii. Existe uma redução em tempo polinominal de B para C.
iii. Existe uma redução em tempo polinominal de D para C.
Avalie, justificando sua resposta, cada afirmação abaixo como:
Com certeza é verdadeira, independentemente de quais são os
problemas A, B, C e D, e independentemente da veracidade de
relacionamentos entre as classes de problemas, como “P = NP?”.
Talvez seja verdadeira, dependendo de quais são os problemas A, B, C e
D, e /ou dependendo da veracidade de relacionamentos entre as classes
de problemas, como “P = NP?”.
Nunca é verdadeira, independente de quais são os problemas A, B, C e
D, e independentemente da veracidade de relacionamentos entre as
classes de problemas, como “P = NP?”.
a) B é NP-Completo e D está em P
b) Se A é NP-Completo então C é NP-Completo
c) Se C está em P então D está em P
d) Se A é NP-Completo e B está em NP, então B é NP-Completo
e) A é NP-Completo e C está em P
2. Q3. Considere o problema SUBSET_SUM: Dada uma seqüência de números
não negativos a1,...,an,T , decide se existe um subconjunto S {1,...,n} tal
que i S ai = T. O problema SUBSET-SUM é NP-Completo.
Agora considere o seguinte problema:
PARTITION: Dada uma seqüência de números não negativos b1,...,bm ,
decide se existe uma partição de {1,...,m} em dois subconjuntos disjuntos
U e V tal que i U bi = j V bj, ou seja, deseja-se saber se existe uma
maneira de dividir a seqüência b1,...,bm em duas subseqüências
disjuntos que quando somadas tem o mesmo valor.
a) Prove que o problema PARTITION é NP-Completo.
b) Suponha que existe um algoritmo de tempo polinomial (PART) que
resolve PARTITION. Descreva um algoritmo de tempo polinomial
(PART_SEARCH) que, usando o algoritmo PART, resolve a versão
de busca do problema PARTITION, ou seja, dado b1,...,bm , seu
algoritmo PART_SEARCH deve retornar uma partição de {1,...,m}
em dois subconjuntos disjuntos U e V tais que i U bi = j V bj, ou
retornar “Sem solução” se nenhum particionamento é possível.
(Dica: pense em uma forma de verificar se dois números da
seqüência podem pertencer ao mesmo subconjunto da partição).
Q4. Um conjunto independente de um grafo G = (V, E) é um subconjunto
V´ V de vértices, tal que cada aresta em E é incidente em no máximo
um vértice em V´. O problema do conjunto independente é encontrar
um conjunto independente de tamanho máximo em G.
a) Formule um problema de decisão relacionado para o problema do
conjunto independente e prove que ele é NP-Completo.
Dica: Use uma redução a partir do problema do Clique.
b) Vamos supor que você recebeu uma sub-rotina de “caixa-preta” para
resolver o problema de decisão que definiu na parte (a). Forneça um
algoritmo para encontrar um conjunto independente de tamanho
máximo. O tempo de execução de seu algoritmo deve ser polinomial
em |V| e |E|, onde consultas à caixa preta são contadas como um
único passo.
c) Forneça um algoritmo eficiente para resolver o problema do conjunto
independente quando cada vértice em G tem grau 2. Analise o tempo
de execução e prove que seu algoritmo funciona corretamente.
3. Q5. Considere o seguinte problema:
HALF-CLIQUE = { G : G é um grafo não direcionado que possui um
clique com exatamente n/2 vértices, onde n é um número par e
representa o número de vértices de G. }
Mostre que HALF-CLIQUE NPC.
Q6. O problema do Isomorfismo de Grafos é um famoso problema em NPI.
Seja então ISO_GRAF = { G , H |G e H são isomorfos}.
Mostre que ISO_GRAF NP.
Q7. O problema do Isomorfismo de SubGrafos pode ser definido da
seguinte forma:
ISO_SUBGRAF = { G , H |G é isomorfo à um subgrafo de H}.
Mostre que ISO_SUBGRAF NPC.
Dica: Use uma redução a partir do problema do Clique.
Q8. Considere o problema do conjunto dominante como definido abaixo:
CONJ_DOM = { G,k : G tem um conjunto dominante de k nós, ou seja,
existe um subconjunto de nós de G de k nós, onde todo outro nó de G é
adjacente a algum nó do subconjunto. }
Mostre que CONJ_DOM NPC.
Dica: Use uma redução a partir do problema da cobertura de vértices.
Boa Sorte !!