Sie sind auf Seite 1von 10

1

Unipac Unipac Computa Computa o o


Bibliografia:
----------------
CORMEN, Thomas H. et al. Algoritmos: teoria e prtica. 2.
ed. Rio de Janeiro: Campus, 2002
ZIVIANI, Nivio. Projeto de algoritmos: com implementaes em pascal e
C. 2. ed. rev. ampl. Sao Paulo: Thomson, 2005.
SALVETTI, Dirceu Douglas; BARBOSA, Lisbete Madsen. Algoritmos.
So Paulo: Pearson Education, 2004.
AEDs III
Problemas NP-Completo
Traduo, adaptaes e comentrios:
Professor: Ciro Meneses Santos
Professor: Andr Gustavo dos Santos
O que pode e o que no pode ser
resolvido eficientemente por
computadores.
O objetivo estudar as limitaes
dos problemas com respeito
complexidade dos algoritmos que
os resolvem.
Problemas Problemas NP NP- -Completo Completo
Conte Conte do do
Problemas NP-Completo
Tipos de problemas
A Classe P
A Classe NP
Algoritmo No Determinismo
Transformaes Polinomiais
A Classe NP-Completo
A Classe NP-Difcil
A questo da computabilidade foi
proposta por Hilbert em 1900, que
conjecturava que todo problema bem
posto seria demonstrvel.
Em 1931. Godel apresentou o Teorema
da Completude, mas ainda havia a
questo formal da definio de
computabilidade, que foi fechada em
1936, com a apresentao e a aceitao
da Tese de Church.
Introdu Introdu o o
Introdu Introdu o o
Anteriormente havamos estudado como medir a
eficincia de um algoritmo atravs do clculo de
sua complexidade. Mas uma vez calculada a
complexidade, como reconhecer se o algoritmo
correspondente ou no eficiente? O mximo
que fazamos era compar-lo com outros
algoritmos. Agora definimos o seguinte: Um
algoritmo eficiente quando a sua
complexidade for um polinmio no tamanho da
entrada.
Assim, algoritmos de complexidade 0(1), 0(n),
0(n
2
),0(n
5
), so algoritmos chamados de
eficientes. Embora log n no seja um
polinmio, seu valor menor que n, ou seja,
no pior que um polinomial , por isso pode
ser encaixado entre os polinomiais, ou seja,
0(log n), 0(n
2
log n) tambm esto entre os
polinomiais.
Os demais so genericamente chamados de
exponenciais, como 0(2
n
), 0(3
n
), 0(n!) e outros
Cuja complexidade no pode ser expressa por
um polinmio.
Introdu Introdu o o
2
Considere a coleo de todos os algoritmos para
resolver um certo problema. O interesse ento
saber se nessa coleo existe algum algoritmo
que seja eficiente (limite superior polinomial), isto ,
de complexidade polinomial. Se existir tal
algoritmo o problema chamado de tratvel, e
intratvel caso contrrio (limite inferiro exponencial).
A idia que um problema tratvel pode ser
resolvido, para entradas e sadas de tamanho
razovel, atravs de um programa de
computador.
Por outro lado, um algoritmo de complexidade
no polinomial, de algum problema intratvel,
poderia em certos casos levar sculos para
computar os dados de entrada e sada de
tamanhos relativamente reduzidos.
Introdu Introdu o o
Suponha que um algoritmo 0(2
n
) gaste 1 hora para
resolver um problema de tamanho n=50. Ento levaria
cerca de 2 horas para n=51, e um ano para n=59.
Mesmo um milho de computadores trabalhando
juntos, dada um deles um milho de vezes mais rpido
que os atuais no seriam suficientes para chegar a n =
100.
De acordo com esta definio, para mostrarmos que um
problema tratvel, basta apresentar um algoritmo
polinomial que o resolva. Por outro lado, para verificar
que intratvel, h necessidade de provar que todo
possvel algoritmo que o resolva no possui
complexidade polinomial. Isto bastante difcil de se
mostrar, e conforme veremos mais adiante, existem
vrios problemas que no se sabe se so tratveis ou
no. O que se sabe que por enquanto no so
tratveis.
Introdu Introdu o o
Os problemas para os quais conhecemos apenas
algoritmos exponenciais so geralmente
problemas onde existe um grande nmero de
alternativas e precisamos verific-las para saber
qual responde ao problema. Quando o nmero
de alternativas exponencial fica difcil
desenvolver um algoritmo eficiente. Se
testarmos uma de cada vez o algoritmo se torna
exponencial. Se conseguimos descobrir alguma
propriedade particular do problema que elimine
algumas alternativas sem necessidade de
verific-las, podemos melhorar o desempenho
do algoritmo. Isto depende de um estudo
aprofundado do problema da busca destas
propriedades. Se consegussemos testar todas
simultaneamente o desempenho seria
consideravelmente melhorado.
Introdu Introdu o o
Existem algumas classes gerais de problemas
que podem ser resolvidos por algoritmos, entre
elas os problemas de deciso, de localizao
e de otimizao.
Num problema de deciso, o objetivo consiste
em decidir se a resposta SIM ou NO.
Num problema de localizao, o objetivo
localizar uma certa estrutura que satisfaa um
conjunto de propriedades dadas.
Se as propriedades envolvem algum critrio de
otimizao, ento o problema torna-se um
problema de otimizao.
Tipos de problemas Tipos de problemas
Em alguns casos existem problemas onde podemos
identificar, um de deciso, outro de localizao e outro de
otimizao que podem estar associados.
Tipos de problemas Tipos de problemas
Problema de Localizao
Encontrar uma estrutura S que satisfaa uma propriedade P.
Resposta: Uma estrutura S.
Problema de Deciso
Existe uma estrutura S que satisfaa uma propriedade P ?
Resposta: Sim ou No.
Problema de Otimizao
Encontrar uma estrutura S que satisfaa uma propriedade P
e que seja a melhor, segundo algum critrio C de medida.
Resposta: uma estrutura S tal que no haja outra melhor.
Problema de clique em um grafo
(Um clique em um grafo um subconjunto de vrtices contendo
todas as arestas possveis entre eles)
Deciso: Dado o grafo G abaixo, existe um clique de
tamanho maior ou igual a 3?
Localizao: Dado o grafo G abaixo, encontre um
clique de tamanho maior ou igual a 3.
Otimizao: Dado o grafo G abaixo, qual o maior
clique?
Tipos de Problemas Tipos de Problemas
Exemplos
Deciso: SIM (j que existe um clique > 3)
Localizao: {c,e,f} ( um clique do
tamanho > 3)
Otimizao: {c,d,e,f} (o maior clique de
tamanho = 4)
b
a
d
c
e
f
3
Problema do caixeiro viajante PCV
(O percurso do caixeiro viajante deve passar por todos os vrtices
exatamente uma vez, e voltar a origem, Ciclo de Hamilton)
Deciso: Dado o grafo G abaixo, existe um percurso de
peso total menor ou igual a 17?
Localizao: Dado o grafo G abaixo, encontre um
percurso de peso total de tamanho menor ou igual a 17.
Otimizao: Dado o grafo G abaixo, qual o percurso de
menor peso?
Tipos de Problemas Tipos de Problemas
Exemplos
Deciso: SIM (j que existe um percurso
de peso total s 17)
Localizao: {a,b,c,d,a} (que um
percurso de peso total = 16
Otimizao: {a,b,d,c,a} (que o menor
percurso de peso total =11)
d
a
c
b
5 2
6
1
4
2
Tipos de Problemas Tipos de Problemas
Naturalmente, o custo de se resolver um
problema de deciso no maior que o de se
resolver um problema de localizao. Resolvendo
um de localizao estaremos resolvendo o de
deciso associado. E o custo de se resolver um
problema de localizao no maior que o de um
de otimizao. Resolvido um de otimizao
resolvemos o de localizao associado.
Para a diviso de problemas nas classe P, NP, NP-
completo e NP-difcil, vamos utilizar geralmente
problemas de deciso. Se o problema de deciso
intratvel, tambm o de localizao e de
otimizao o sero.
A Classe P A Classe P
A classe P de problemas de deciso contm os
problemas cuja complexidade de seu pior caso
uma funo polinomial no tamanho da entrada.
Por exemplo, o problema de ordenao de
nmeros em um vetor pertence classe P j que
existem algoritmos polinomiais que resolvem o
problema, entre eles o Seleo 0(n
2
) e o
Quicksort 0(n log n).
Ordenao: dada uma lista contendo n itens, coloc-los
em ordem segundo algum critrio de ordenao. Existem
algoritmos polinomiais para resolver este problema, como
insero O(n
2
), Seleo O(n
2
), Heapsort (n log n), portanto
o problema da classe P.
Caminho mais curto: dado um grafo G com pesos
positivos nas arestas contendo n vrtices, e dois vrtices v
e w do grafo, encontrar o caminho mais curto entre v e w.
O algoritmos proposto por Dijkstra encontra a soluo em
tempo O(n
2
), logo o problema da classe P.
A Classe P A Classe P
Para se demonstrar que um problema pertence classe
P basta mostrar um algoritmo polinomial que o resolva.
Mas para demonstrar que um problema no pertence
classe P, no basta mostrar um algoritmo exponencial,
e nem dizer que todos os algoritmos conhecidos para
resolve-lo sejam exponenciais.
Devemos provar que no existe algoritmo polinomial
para resolve-lo. Por exemplo, os algoritmos conhecidos
at agora para o PCV so todos exponenciais.
Entretanto, no conhecida uma prova de que seja
impossvel obter um algoritmo polinomial para resolver
o PCV. Sabemos apenas que ningum foi capaz de criar
um algoritmo polinomial. No se sabe portanto se o
caixeiro viajante pertence ou no classe P. como
veremos a seguir, muitos problemas ainda esto
indefinidos nesta questo.
Problemas aparentemente Problemas aparentemente
Dif Dif ceis ceis
Satisfabilidade
1. Satisfabilidade - Satisfyability
Uma expresso booleana dita satisfativel se existe uma
atribuio de valores, verdadeiro ou false, as variveis de tal
modo que o valor da expresso seja verdadeiro
Dados: uma expresso booleana E na FNC
Deciso: E pode ser satisfeita?
Considere um conjunto de variveis booleanas x1,
x2, x3.... E seus complementos x1, x2, x3... Se a
varivel x
i
verdadeira seu complemento falso, e
vice-versa. Uma expresso est na FNC (forma
normal conjuntiva) quando as variveis esto
dispostas em clusulas ligadas por AND
(representado por *).
Assim: dada a expresso:
E1 = (x1 + x2) * (x1 + x2 + x3) * (x1 + x2 + x3).
Verificar se ela pode ser satisfeita. Resposta: SIM.
Basta atribuir os valores x1= V, x2 = V e x3 = V que
E = V. Existem outros valores que tambm provam
que a resposta SIM.
E2 = (x1 + x2)*(x1 + x3 + x2)*(x3)
Como outro exemplo, dada a expresso:
E3 = x1 * x1 verificar se ela pode ser satisfeita.
Claramente a resposta NO.
Se x1 = V e x1 = F e vice-versa.
Assim a expresso E sempre ser falsa.
Problemas aparentemente Problemas aparentemente
Dif Dif ceis ceis
Satisfabilidade
4
2. Clique Dados:
Um grafo G e um inteiro k > 0
Deciso: G possui um clique de tamanho > k?
Dado um grafo G = (V.A), um clique um
subconjunto V de V tal que todo par de vrtices de
V seja adjacente. Isto , se v e w pertence a V,
ento existe a aresta (v,w) deve existir em A. No
grafo abaixo {d,b,e} um clique de
tamanho 3. O problema consiste
em dado um grafo verificar se
h um clique de tamanho pelo
menos igual a um valor dado.
Problemas aparentemente Problemas aparentemente
Dif Dif ceis ceis
Clique
b
f
h
a
c
d
g
e
3. Conjunto Independente
Dados: um grafo G e um inteiro k > 0
Deciso: G possui um conjunto independente de
tamanho > k?
Dado um grafo G = (V.A), um conjunto independente de
vrtices um subconjunto V de V tal que todo par de
vrtices de V no seja adjacente. Isto , se v e w
pertence a V, ento existe a aresta (v,w) no existe em
A. No grafo {a, b, c, g, h} um conjunto
independente de tamanho 5.
O problema consiste em dado
um grafo verificar se h um
conjunto independente de
tamanho pelo menos igual a um valor dado.
Problemas aparentemente Problemas aparentemente
Dif Dif ceis ceis
Conjunto Independente
b
f
h
a
c
d
g
e
4. Ciclo Hamiltoniano Direcionado
Dados: Dgrafo D
Deciso: D possui um ciclo hamiltoniano?
Um ciclo hamiltoniano em um dgrafo (grafo com
arestas direcionadas) um ciclo que contm
exatamente uma vez cada vrtice de D. assim, no
grafo G1 abaixo o ciclo a, c, f, e, d, b, a um ciclo
hamiltoniano. E o grafo G2 no possui ciclo
hamiltoniano.
a
d
c
e
b
G2
Problemas aparentemente Problemas aparentemente
Dif Dif ceis ceis
Ciclo Hamiltoniano Direcionado
d
G1
a
c
f
e
b
5. Colorao
Dados: grafo G e um inteiro k > 0
Deciso: G possui uma colorao com no mximo k
cores?
Uma colorao em um grafo G consiste em se atribuir
cores aos vrtices de G de tal forma que vrtices
adjacentes possuam cores diferentes. O grafo abaixo
admite uma colorao com 3 cores.
X(G) Nmero cromtico de G o menor nmero de
cores necessrio para colorir G.
Problemas aparentemente Problemas aparentemente
Dif Dif ceis ceis
Colorao
a
d
c
f e b
a vermelho
b azul
c amarelo
d azul
e amarelo
f azul
Algoritmos no Algoritmos no- -
determin determin sticos sticos
Notao:
escolhe(S); funo que escolhe arbitrariamente
um elemento de S.
falha: sinal de terminao sem sucesso
sucesso: sinal de terminao com sucesso
Um algoritmo no determinstico um algoritmo que
faz uso da funo escolhe(S) e das instrues falha e
sucesso.
Um algoritmo no determinstico termina com
insucesso sse no existe escolha que leve a uma
terminao com sucesso. Portanto, se pelo menos uma
escolha levar ao sucesso, o algoritmo termina com
sucesso.
Os algoritmos no determinsticos so interessantes, na
soluo de problemas em que existem vrias
alternativas para serem testadas.
A Classe NP A Classe NP
Define-se a classe NP de problemas como sendo aquela que
compreende todos os problemas de deciso t . Tais que existe
uma justificativa resposta SIM para t, cujo passo de
reconhecimento pode ser realizado por um algoritmo
polinomial no tamanho da entrada de t.
Vale ressaltar que na definio da classe NP no se exige uma
soluo polinomial para t, apenas que exista um algoritmo
polinomial para verificar a resposta SIM. Alm disso, o
tamanho da justificativa dada pelo passo de exibio no pode
ser exponencial com a entrada de t, pois o tamanho da
justificativa seria grande demais e qualquer algoritmo levaria
um tempo exponencial no tamanho da entrada de t para
verific-la mesmo um algoritmo polinomial em relao ao
tamanho da justificativa. Tambm no exigido nada em
relao a justificativa NO dada pelo passo de exibio. De
fato, h problemas de NP que admitem algoritmos polinomiais
para suas justificativas NO e outros para os quais tal
algoritmo no conhecido.
5
A Classe NP A Classe NP
O termo NP vem de No-determinista Polinomial. A
idia que um problema NP pode ser resolvido
polinomialmente por uma mquina no-
determinista. Uma mquina no-determinista
consegue escolher, entre vrias alternativas, aquela
que leva soluo. (Oraclo, Adivinha). Desta forma,
o resultado no determinstico, ou seja, os passos
no so seguidos de uma forma sistemtica. Uma
mquina no-determinista possui uma funo
ESCOLHE que toma estas decises.
A Classe NP A Classe NP
Suponha que por algum processo um problema de
deciso t foi resolvido. Ento deve haver alguma
forma de se testar se a soluo SIM ou NO dada
ao problema, realmente a soluo. Para fazer isto
a soluo composta por um conjunto de
argumentos que, quando interpretados, atestam a
veracidade da resposta SIM ou NO dada ao
problema.
Considere o Problema clique, onde se procura um
clique de tamanho > k em um grafo G. uma
justificativa para uma resposta SIM pode ser obtida
apresentando-se um clique C de tamanho > k.
O teste de veracidade ser feito observando-se
se de fato C um clique e se tem tamanho > k.
Uma justificativa para a resposta NO pode ser
feita listando-se todos os clique do grafo. O teste
de veracidade consiste em se observar que a
lista realmente contm todos os clique e que o
tamanho de cada um deles < k.
O processo de se justificar respostas a
problemas de deciso compe-se de duas fases
distintas:
FASE 1: Exibio
- exibir uma justificativa
FASE 2: Reconhecimento
- verificar que a justificativa apresentada no
processo de exibio de fato satisfatria.
A Classe NP A Classe NP
Problema de Ciclo de Hamiltoniano
Soluo: Sim
Exibio: Consiste da sequncia C de vrtices
a,b,c,d,e,f,a
Reconhecimento: Deve-se verificar que C e um ciclo
(basta verificar que existem as arestas de (a,b),(b,c) e ...
(f,a)) e contm cada vrtice de G exatamente uma vez
(basta ordenar os vrtices e verificar que no h vrtices
repetidos e se existe todos os vrtices de G).
Tipos de Problemas Tipos de Problemas
Exemplos
G1
a
c
f
e
b
d
Problema de Ciclo de Hamiltoniano
Soluo: No
Exibio: Consiste da apresentao das sequncias
{(a,b,c,a),(e,c,d,e),(e,c,f,e),(e,d,c,f,e)}
Reconhecimento: Deve-se comprovar que cada
sequncia de vrtices um cliclo no Hamiltoniano. A
verificao deve ser feita para todos os ciclos, o que pode
ser exponencial. At o momento, desconhecido se
existe algum outro processo para justificar a respota
NO a Ciclo de Hamiltoniano, tal que o passo de
reconhecimento possa ser feito
por algum algoritmo polimonial.
Tipos de Problemas Tipos de Problemas
Exemplos
G2
a
c
f
e
b
d
Tipos de Problemas Tipos de Problemas
Exemplos
Ciclo Hamiltoniano em mquina no-determinsta
Entrada: grafo G = (V,A)
n = |V| // nmero de vrtices do grafo
for i = 1 to n
marca[i] = no visitado
x = 1
marca[x]=visitado
for i = 2 to n
prox = ESCOLHE(V) //escolhe um dos vrtices
if(marca[prox] = visitado) ou (aresta(x,prox) e A)
return NO
marca[prox] = visitado
x = prox
if(aresta(x,1) e A)
return SIM
else return NO
6
A Classe NP A Classe NP
Como mostrar que um determinado problema esta
em NP?
Elabore um algoritmo no-deterministico que
execute em tempo polinomial para resolver o
probelma. OU
Define-se uma justificativa J para a resposta
SIM.
Elabora-se um algoritmo polinomial para
reconhecer se J est correta. A entrada desse
algoritmo consiste de J e da entrada de t.
Se no pudermos elaborar um algoritmo polinomial para
reconhecer a justificativa SIM ou um algoritmo no-
deterministico, no significa que o problema no pertence
a NP, mas que ainda no sabemos se pertence ou no.
Problema Clique NP?
(i) A justificativa para a soluo SIM um subconjunto
V de vrtices do grafo G.
(ii) Para verificar a justificativa SIM basta:
- verificar o tamanho do subconjunto apresentado O|V|
- contar os vrtices e verificar se o tamanho maior ou igual
ao valor K de entrada. O(1).
- verificar se existe arestas em G entre todos os pares de
vrtices de V, que pode ser feito max O(|v|
2
) para cada
vrtices de V verificar se existem arestas para os outros.
Como tudo pode ser feito em tempo polinomial, ento
Clique NP.
Problemas NP Problemas NP
Exemplos
Problema Ciclo Hamiltoniano NP?
(i) A justificativa para a soluo SIM uma sequncia
de vrtices de G.
(ii) Para verificar a justificativa SIM basta:
- verificar se cada vrtice aparece exatamente uma vez contar
quantos existem, O(n) e verificar se no h repetido O(n)
basta marcar enquanto verifica e observar se no marcou mais
de uma vez.
- verificar se existem arestas ligando os vrtices consecutivos,
O(n) medida que percorre a sequncia observar o valor em
uma matriz de adjacncia
(iii) Para verificar a justificativa NO (no e simples):
- Listar todos os ciclos de G e mostrar que eles no so
hamiltonianos.
Como tudo pode ser feito em tempo polinomial, ento
Ciclo Hamiltoniano NP.
Problemas NP Problemas NP
Exemplos
Todo problema pertencente classe P pertence
classe NP? ( P _ NP )
A demonstrao pde ser feita da seguinte forma:
A questo P A questo P NP? NP?
Seja t e P um problema de deciso.
Existe ento um algoritmo A que apresenta a soluo
de t em tempo polinomial no tamanho de sua
entrada.
Em particular A pode ser utilizado como algoritmo
de reconhecimento para uma justificativa resposta
SIM de t.
Logo t e NP.
NP P
A pergunta natural seguinte seria P = NP ou P=NP? Ou
seja, todos os problemas para os quais conhecemos em
algoritmo polinomial para verificar a justificativa SIM
tambm admitem um algoritmo polinomial para ser
solucionado, s ainda no conhecemos tal algoritmo? Ou
existem problemas em NP para os quais no h como se
propor um algoritmo polinomial para solucion-lo, mesmo
conhecendo um algoritmo para se verificar a soluo SIM?
At o momento no se conhece uma resposta a esta
pergunta
3
.
A questo A questo P=NP P=NP ou P ou P NP? NP?
3
recentemente, em 24 de maio de 2000, foi proposto um prmio
de um milho de dlares para quem responder a esta pergunta. As
regras podem ser vista em www.claymath.org.
Concluses sobre Concluses sobre
Problemas NP Problemas NP
Como ilustrao considere que voc tenha chegado a
uma festa e que saber se existe algum conhecido na
festa. Para solucionar o problema voc teria que olhar
para cada pessoa, o que seria O(n), sendo n o nmero
de pessoas na festa.
Suponha que algum se apresente como seu
conhecido. A verificar da soluo SIM pode ser feita
em O(1), claro. Isto apenas uma ilustrao para
mostrar que provavelmente encontrar a soluo
mais difcil que verificar uma soluo SIM, j que o
problema apresentado claramente pertence classe
P.
7
Concluses sobre Concluses sobre
Problemas NP Problemas NP
Outro exemplo interessante o seguinte: se algum
te diz que o nmero 13.717.421 pode ser escrito como
3607 X 3803 fcil verificar
4
.
H fortes evidencias que P = NP pois a classe NP
incorpora um grande nmero de problemas com
grande interesse prtico, para os quais inmeros
pesquisadores j desenvolveram esforos para
elaborar algoritmos eficientes e ainda no obtiveram
sucesso.
4.
recentemente, em agosto de 2002, foi proposto um algoritmo
polinomial para este problema, mostrando que, neste problema,
tanto verificar quanto resolver possuem algoritmos eficientes.
Suponha que queiramos resolver um certo problema
P1 e j conhecemos um algoritmo para resolver um
outro problema P2.
Uma transformao do problema P1 (com dados de
entrada E1 e soluo S1) no problema P2 (com dados
de entrada E2 e soluo S2) consiste em:
(i) transformar os dados de entrada E1 do problema
P1 em dados de entrada E2 para o problema P2.
(ii) transformar a soluo S2 e P2 obtida com os
dados de entrada E2 em uma soluo S1 e P1.
Transforma Transforma es es
polinomial polinomial
Um problema P1 dito polinomialmente transformvel em um
problema P2, denotado por P1 P2, quando:
(i) a transformao de E1 e E2 e de S2 e S1 podem ser
feitas em tempo polinomial.
(ii) para toda possvel entrada E1 e P1, P2 admite
resposta SIMse e somente se P1 possui resposta SIM.
Quando um problema P1 polinomialmente transformvel
em P2, dizemos tambm que P1 se reduz a P2, ou seja,
resolver P1 reduzido a resolver P2. Resolvendo P2
tambm resolveremos P1.
Dados
de P1
Dados
de P2
Soluo
de P2
Soluo
de P1
Transformao
de E1 emE2
Transformao
de S1 emS2
Algoritmo
resolver P2
para
Esquema para Esquema para
transforma transforma es es
Sejam t1 e t2 dois problemas SIM ou NO
Suponha que um algoritmo A2 resolva t2.
Se for possvel transformar t1 em t2 e a soluo de
t2 em soluo de t1, ento A2 pode ser utilizado
para resolver t1.
Se pudermos realizar as trasnformaes nos dois
sentidos em tempo polinomial, ento t1
polinomialmente transformvel em t2.
O contrrio no necessariamente verdadeiro, ou
seja, se P1 e P, no implica que P2 e P. podemos
transformar um problema simples em um complexo
e mostrarmos que a soluo do problema complexo
encontra uma soluo do simples.
Transforma Transforma es es
Transforma Transforma es es
Exemplo
Clique Conjunto Independente
Seja P1 o problema clique e P2 o problema Conjunto
Independente. A entrada E1 para o problema clique
consiste em um grafo G = (V.A) e um inteiro k>0. Para
transformar esta entrada na entrada E2 para o problema
conjunto Independente, considere o grafo G = (V,A) e o
mesmo inteiro k. O grafo G contm os mesmos vrtices
que G, mas contm apenas as arestas que no existem em
G, ou seja, dois vrtices ligados por alguma aresta em G
no so ligados em G, e dois vrtices no ligados em G
so ligados em G . Isto demonstra que Clique Conjunto
Independente.
Transforma Transforma es es
Exemplo
Clique Conjunto Independente
(i) A construo de G a partir de G polinomial. A
transformao da soluo tambm polinomial, na verdade
O(1) pois nem h necessidade de transformao neste caso.
(ii) Existe um conjunto independente de tamanho > k em G e
somente se existe um clique de tamanho > k em G.
G1
a
c
f
e
b
d
G1
a
c
f
e
b
d
Note que {a,b,d,f} um
conjunto independente
de G de tamanho 4. O
mesmo conjunto um
clique em G.
Problemas como clique e
conjunto Independentes
so chamados problemas
equivalentes. (t1 t 2 e
t2 t1).
8
A Classe NP Completo A Classe NP Completo
Esta classe envolve os problemas de maior dificuldade
entre todos os problemas de NP. Os problemas
pertencentes a classe de NP-completo so todos
equivalentes entre si. Um problema t pertence classe
NP-completo se as seguintes condies forem satisfeitas:
(i) t e NP
(ii) todo problema de deciso t e NP satisfaz t t.
Isto implica que:
t e NP, t NP-Completo; ento
Se t e NP-Completo e t = P ento P = NP.
Sejam t1 e t2 problemas de deciso e NP. Se t1 NP-
Completo e t1 t2 ento t2 tambm NP-completo.
A Classe NP Completo A Classe NP Completo
Mostrar que um Problema e NP-Completo
Mostre que o problema esta em NP
Existe um algo no-determinstico (confirmao para SIM)
Mostre que um problema NP-Completo conhecido
pode ser polinomialmente transformado para ele
Satisfabilidade t
Cook apresentou uma prova direta de que SAT e NP-
Completo
SAT t1 e t1 t2 => SAT t2
Demostra Demostra es es
Exemplo
Clique NP-Completo?
Entrada: Grafo G e inteiro k
Seja C um Clique, possvel verificar em tempo polinomial.
Logo Clique e NP.
SAT NP-Completo
Entrada: Expresso genrica.
Transformao de um problema NP-Completo para Clique.
Soluo de SAT pode ser utilizada para soluo Clique?
O grafo G construdo da seguinte maneira: Existe um vrtice diferente em G
para cada ocorrncia de varivel em E; existe uma aresta (vi,vj) em G, para
cada par de variveis xi,xj de E, tais que xi = xj, e xi, xj ocorrem em clusulas
diferentes de E. Desta forma, cada aresta (vi,vj) de G tal que as variveis xi e
xj, correspondentes em E, ento em clusulas diferentes e podem assumir o
valor verdadeiro simultaneamente. Logo um clique em G com p vrtices
corresponde em E a p variveis, uma em cada clusula
SAT NP-Completo e SAT Clique, ento Clique NP-Completo
x1
x2
x3
x1
x1
x2
x3
x2
E = (x1 + x2) * (x1 + x2 + x3) * (x1 + x2 + x3)
Note que cada clique de tamnaho 3 no
grafo ao lado corresponde a uma
atribuio de Verdadeiro s variveis
correspondentes em E de tal forma que
E seja satisfeita.
Em particular o clique mostrado diz
que se x1 = V, x2 = V e x3 = V, ento E
= V. Ou seja, uma soluo x1 = V, x2
= F e x3 = F.
Demostra Demostra es es
Exemplo
Demostra Demostra es es
Exemplo
Deciso - PCV NP-Completo?
Entrada: Grafo G e um inteiro k.
Seja um Grafo G, h um clico que passa por todos os vrtices
apenas uma vez com peso mximo igual a k.
E possvel elabora um algoritmo no-deterministico ou
verificar a resposta SIM.
Logo PCV e NP.
Ciclo Hamiltoniano NP-Completo
Entrada: Grafo G.
Transformao de um problema NP-Completo para PCV.
Soluo do Ciclo Hamiltoniano pode ser utilizada para soluo PVC?
Construmos um grafo G a partir de G contendo todos os vrtices e arestas
de G. Atribumos peso 1 a todos estas arestas. Criamos todas as demais
arestas no que no pertena a G com peso 2. Se existe um ciclo em G com
peso mximo n, ento existe um ciclo Hamiltoniano em G. Caso contrrio,
um ciclo em G dever passar por aresta e peso 2, o que ultrapassar o peso
total n.
d
a
e
c
f
b
d
a
e
c
f
b
1
1
1
1
1
1
2
2
2
2
G G
O ciclo {a, b, c, d, e f, a} em G tem peso total 6, e representa um ciclo
Hamiltoniano em G, um grafo de 6 vrtices.
Deciso PCV NP;
Deciso do Ciclo Hamiltoniano e NP-Completo
Deciso do Ciclo Hamiltoniano Deciso PCV
Ento, Deciso do PCV NP-Completo
Demostra Demostra es es
Exemplo
9
A Classe NP A Classe NP- -Dif Dif cil cil
A classe NP-Difcil (NP-Hard) compreende os
problemas para os quais apenas o passo (ii) do esquema
para se demonstrar que um problema NP-Completo
considerada, ou seja, um problema t NP-Difcil se um
problema NP-Completo t pode ser em t, t t,
no importando se t ou no NP. Desta forma, a classe
NP-Completa a interseco da classe NP-Difcil e NP.
Somente problemas de deciso podem ser NP-
Completo, j que em problemas de otimizao
necessitamos verificar se uma dada soluo realmente
a melhor, e isto no poder ser feitos em tempo
polinomial. Alm disso, se t
1
um problema de deciso
e t
2
o correspondente de otimizao, quase certo que
t
1
t
2
.
NP-
Difcil
NP-
Completo
NP
P
Demostra Demostra es es
Exemplo
Otimizao PCV NP-Difcil?
Entrada: Grafo G e um inteiro k.
Deciso PCV NP-Completo, Se resolvemos
otimizao do PCV para este grafo G, o peso total p
do ciclo encontrado o menor valor possvel. Se p s
k, ento o problema de deciso tem resposta SIM. Se
p > k ento o problema de deciso tem resposta
NO. Logo, possvel transformar polinomialmente
Deciso em Otimizao o PCV. Como a deciso NP-
Completo, ento a otimizao NP-Difcil.
Demostra Demostra es es
Exemplo
Halting problem NP-Difcil? (Parada)
O problema consiste em se decidir para qualquer algoritmo e
qualquer entrada se o algoritmo vai terminar ou entrar em loop
infinito.
Um exemplo de um problema NP-Difcil que no NP-
Completo.
Para mostrar que halting problem NP-Difcil, mostraremos
que SAT halting problema. A entrada do algoritmo a
expresso E com n variveis. O algoritmo testa as 2n
possibilidades de valores para as variveis. Se algum delas
satisfizer a expresso E, o algoritmo pra. Seno, entra em loop
infinito. Algoritmo para halt resolve SAT, logo Halt NP-
Difcil. Mas este problema indecidvel, ento no NP.
Exerc Exerc cios cios
Nas questes de 1 a 12, identifique se a afirmao
Verdadeira ou Falsa e justifique:
1. Sendo t1 e t2 dois problemas tais que t1 t2 e t2
e P, ento t1 e P.
2. Sendo t1 e t2 dois problemas tais que t1 t2 e t2
e P, ento t2 e P.
3. Como no se conhece um algoritmo polinomial
para Clique ento necessariamente clique e P.
4. Se existir um algoritmo polinomial para um
problema NP-completo, ento P=NP.
5. Se um problema t e P ento t e NP
6. Se um problema t e NP ento t e P
7. Se um problema t e NP-completo ento t e NP
8. Se um problema t e NP-difcil ento t e NP
9. Se um problema t e NP-difcil ento t e NP
10. Sendo t1 e t2 dois problemas, t1 e NP-completo
e t2 e NP-completo ento t1 t2 e t2 t1
11. Sendo t1 e t2 dois problemas, t1 e P e t2 e P
ento t1 t2 e t2 t1
12. Seja t o problema de se calcular o valor de 2
n
,
dado o valor de n, podemos dizer que t e P pois
no existe algoritmo polinomial, j que a
complexidade O(2
n
).
13. Considerando o problema de Colorao de
vrtices em grafos, mostre a diferena entre
problemas de deciso, localizao e otimizao.
Exerc Exerc cios cios
14. Mostre que o problema da colorao de vrtices e
NP
15. Dado um grafo G e um inteiro k, mostre que o
problema de se colorir os vrtices do grafo de
forma tal que nenhum vrtice adjacente tenha a
mesma cor, com um nmero de cores > k um
problema que pertence classe NP.
16. Mostre que o problema do Caixeiro Viajante e NP .
Problema do Caixeiro Viajante achar um percurso
de peso menor ou igual a k num grafo G contendo
aresta com peso entre todos os possveis pares de
vrtices.
17. Mostre que conjunto Independente um problema
NP-completo.
Exerc Exerc cios cios
10
18. Sabendo-se que o problema de Ciclo Hamiltoniano
em grafo no direcionado NP-completo, mostre
que o problema de Ciclo Hamiltoniano em grafo
direcionado tambm NP-completo.
19. Um funcionrio precisa visitar n cidades, sem
repeti-las, em qualquer ordem. Como as passagens
areas so fornecidas pela empresa, ele deseja
maximizar o programa de milhagens, ou seja,
escolher um caminho tal que a distncia percorrida
seja a mxima possvel. Sabendo-se que o Problema
do Caixeiro Viajante NP-completo, mostre o
problema do funcionrio tambm em NP-completo.
20. Sabendo-se que o problema de Ciclo Hamiltoniano
NP-completo, prove que o problema do Caixeiro
Viajante NP-completo.
Exerc Exerc cios cios

Das könnte Ihnen auch gefallen