Вы находитесь на странице: 1из 8

Universidade Federal de Uberlndia a Bacharelado em Cincia da Computao e ca Soluo da 2a Prova de Teoria da Computao - 12/02/2007 ca ca

Questo 1 (Valor = 20 pontos) a Descubra o erro na seguinte demonstrao de que P = N P : ca Considere o seguinte algoritmo para o problema SAT : No input , tente todas as poss veis avaliaes das variveis proposicionais de . Responda sim se uma delas satisfaz . Este co a algoritmo evidentemente exponencial em tempo. Assim SAT tem complexidade exponencial. e a Portanto, SAT no est em P. E fcil mostrar que SAT est em NP. Logo, acabamos de exibir a a a um problema que est em NP e no est em P. Portanto, P = NP. a a a Soluo: O erro est no seguinte: o fato de existir um algoritmo exponencial para resolver ca a o problema no implica que TODO ALGORITMO que resolve o problema exponencial!! a e No est exclu a hiptese de existir um algoritmo polinomial que resolve SAT. Portanto, no a a da o a podemos armar com segurana que SAT no P. c a e Questo 2 (Valor = 20 pontos) a Mostre que se existe um problema NP-completo tal que seu complementar NP ento NP = e a co-NP. Soluo: Suponha que A um problema NP-completo tal que A NP. Vamos mostrar que NP ca e e e = co-NP. Para isto, vamos mostrar que todo problema B N P co-NP (isto , B NP) e e e vice-versa. e e a 1. Seja B NP. Queremos mostrar que B NP. Como A NP-completo e B NP, ento B reduz polinomialmente a A. Isto implica que : B P A Por hiptese, sabemos que A NP. Seja R um algoritmo NP que resolve A. Seja f a o e a e transformao polinomial f : B A. Ento R f um algoritmo NP que resolve B. ca Portanto B NP. e 2. A reciproca (co-NP NP) anloga. e a Questo 3 (Valor = 25 pontos) a Considere o problema do CAIXEIRO VIAJANTE: INPUT : Grafo no-dirigido G, funo d : EG N que associa a cada aresta e seu compria ca mento d(e), um nmero B > 0. u

PERGUNTA: Existe um circuito passando por todos os vrtices tal que a soma dos comprimene tos das arestas do circuito B ? e Mostre que o problema do caixeiro viajante NP-completo. Em sua argumentao, voc pode e ca e utilizar os seguintes fatos sem demonstrao: ca (1) o problema SAT NP-completo: provado diretamente pela denio de NP-completude e ca (Teorema de Cook-Levin) (2) SAT se reduz a 3-SAT. (3) 3-SAT se reduz a HAMCIRC O problema HAMCIRC o seguinte: e INPUT : Grafo dirigido G. PERGUNTA: Existe um circuito passando por todos os vrtices uma unica vez ? e Todos os outros fatos utilizados em sua argumentao de que o problema do caixeiro viajante ca e NP-completo que so diferentes dos expostos acima, devem ser demonstrados. a Soluo: ca 1. CAIXEIRO VIAJANTE (CV) NP: Consideremos o seguinte vericador V para CV, que e recebe como input < G, d, B, c >, onde < G, d, B > o input de CV e c um certicado, e e isto , uma sequncia de vrtices (a1 , a2 , ..., a1 ), comeando e terminando no mesmo vrtice e e e c e a1 . No (1) (2) (3) input < G, d, B, c > faa: c Verica se (a1 , a2 ), (a2 , a3 ), ..., (an1 , an ), (an , a1 ) so arestas de G. Se no for, rejeita. a a Calcula a soma d(a1 , a2 ) + ... + d(an , a1 ) = D Verica se D B. Se for, aceita. Se no for, rejeita. a

Anlise da complexidade de V com relao ao tamanho do input: a ca 2) Estgio (1): O(n a Estgio (2): O(n2 ) a Estgio (3): O(1) a Logo, V O(n2 ). e 2. Mostremos que existe reduo polinomial de HAMCIRC para CV. Primeiramente, mostremos ca que existe reduo polinomial de HAMCIRC para UHAMCIRC (caminho hamiltoniano ca no-dirigido). a A aplicao f foi vista em sala de aula: dado um grafo G instncia de HAMCIRC, denica a mos f (G) = G tal que: Vrtices de G = {uin , umid , uout | u VG }. e

Arestas de G : {(uin , umid ), (umid , uout ) | u VG } {(uout , vin ) | (u, v) EG }. Foi mostrado em sala de aula que G HAMCIRC se e somente se G UHAMCIRC. Agora, mostremos uma reduo f : UHAMCIRC CV ca Seja < G > instncia de UHAMCIRC. Denimos f (< G >) =< G , d, B > como sendo: a G =G d(a, b) = 1, para (a, b) aresta de G (= G ). B = n = nmero de vrtices de G. u e Ento: se existe um circuito hamiltoniano passando por todos os vrtices de G uma unica a e vez, ento o nmero de arestas no circuito n. Logo, o comprimento total n B. a u e e Reciprocamente, se existe um caminho passando por todos os vrtices de G tal que o come primento das arestas d B, ento d n, j que B = n. Mas se o caminho passa por e a a todos os vrtices, ento d n. Logo, d = n e portanto, s existem n arestas no caminho, e a o o que implica somente n vrtices no caminho, o que implica que cada vrtice percorrido e e e uma unica vez. Logo existe caminho hamiltoniano em G. Pelo demonstrado em sala de aula, sabemos que HAMCIRC NP-completo. Logo UHAMe CIRC NP-completo, pela transformao polinomial que indicamos. E portanto, CV e ca e NP-completo, utilizando a transformao polinomial descrita acima. ca Questo 4 (Valor = 35 pontos) a Considere os problemas PARTITION e SUM-SET descritos a seguir: SUM-SET: INPUT : um conjunto de n nmeros naturais maiores do que zero S = {a1 , a2 , ..., an }, e um u nmero t > 0 u PERGUNTA : existe um subconjunto de P S tal que sP s = t ? PARTITION: INPUT : um conjunto de n nmeros naturais maiores do que zero S = {a1 , a2 , ..., an }, u PERGUNTA : existe um subconjunto de P S tal que sP s = sSP s ? O objetivo deste exerc mostrar que o problema PARTITION NP-completo. cio e e 1. (10 pontos) Mostre que PARTITION NP. e Soluo: Vamos exibir um vericador polinomial par PARTITION. Considere o seguinte ca algoritmo V que recebe como input um conjunto S = {a1 , ..., an } de nmeros naturais posu itivos e um certicado c = {i1 , ..., ik } {1, ..., n} (um conjunto de indices correspondentes

a um subconjunto de S): V = No input < {a1 , ..., an }, {i1 , ..., ik } > faa: c (1) Verica se {i1 , ..., ik } {1, ..., n}. Se no for, rejeita. a (2) t := ai1 + ... + aik ; (3) H := a1 +...+an ; 2 (4) Se t = H aceita. Seno rejeita a Anlise de complexidade: a Estgio 1: O(m), a Estgio 2: O(m2 ) onde m = TAMANHO do input a1 , ..., an (escritos em representao a ca binria, separados por #)) a Estgio 3: O(m2 ) a Estgio 4: O(m2 ) a Logo: complexidade de V O(m2 ), onde m = tamanho do input. e 2. (15 pontos) Vamos denir uma funo f que associa a cada instncia de SUM-SET uma ca a s instncia de PARTITION. Seja < S, t > uma instncia de SUM-SET. Seja H = sS . a a 2 Seja S = S {an+1 , an+2 }, onde an+1 = 2H + 2t e an+2 = 4H. Repare que an+1 e an+2 so inteiros, mesmo se H no for. Dena f (< S, t >) = S . a a Mostre que f uma reduo polinomial de SUM-SET para PARTITION. e ca Soluo: ca f polinomial: a funo f calculada pelo seguinte algoritmo simples: e ca e f = No input < {a1 , ..., an }, t > faa: c (1) Calcula a1 + ... + an = 2H, onde m = TAMANHO do input a1 , ..., an (escritos em representao binria, separados por #)) ca a (2) Calcula 2t (3) Calcula 2(a1 + ... + an ) = 4H Anlise: a (1) O(m2 ), (2) O(m), (3) O(m). Logo, f O(m2 ). e a Seja < S, t > SUM-SET. Ento existe um subconjunto P S tal que Sabemos que:
sP

s = t.

x = 2H + 2H + 2t + 4H
xS

= 8H + 2t

ca Logo: ( xS x)/2 = 4H + t. Portanto, para conseguir uma partio de S , basta considerar o conjunto de nmeros P {an+2 } S . Como xP x = t e an+2 = 4H, u ento xP x = 4H + t = ( xS x)/2. a Reciprocamente, suponhamos que f (< S, t >) = < S > PARTITION. Ento, a existe um subconjunto P S tal que xP x = ( xS x)/2 = 4H + t. Temos: (1) an+1 e an+2 no podem estar ambos em P (isto , ou um ou outro no est em a e a a P ), pois se ambos estivessem em P ter amos:

x an+1 + an+2 = 6H + 2t > 4H + t


xP

(2) P deve conter an+1 ou an+2 : suponha que no contivesse nenhum dos dois. Ento a a teriamos:

x
xP xS

x = 2H < 4H + t

Logo, conclu mos que P deve conter obrigatoriamente ou an+1 ou an+2 , mas no ambos. a (a) Se an+1 = 2H + 2t P : como xP x = 4H + t ento xP {an+1 } x = 4H + t a 2H 2t = 2H t. Considere P = S P , onde P = P {an+1 }. Ento temos que a P S e: x=t . Logo, < S, t > SUM-SET, pois conseguimos mostrar a existncia de um subconjunto e P de S tal que a soma de seus elementos igual a t. e (b) Se an+2 = 4H P : como xP x = 4H + t ento a P = P {an+2 }. Ento temos que P S e : a x=t . Logo, < S, t > SUM-SET, pois conseguimos mostrar a existncia de um subconjunto e P de S tal que a soma de seus elementos igual a t. e 3. (10 pontos)Utilizando resultados demonstrados em sala de aula, conclua que PARTITION NP-completo. e
xP xP {an+2 } x xP

= t. Considere

Soluo: Foi mostrado em sala de aula que SUM-SET NP-completo pois (1) SUM-SET ca e NP, (2) existe reduo polinomial de 3-SAT para SUM-SET e de SAT para 3-SAT, e (3) e ca o problema SAT NP-completo (Teorema de Cook-Levin). e Pelo item (a), sabemos que PARTITION NP. Pelo item (b), provamos que SUM-SET e reduz polinomialmente a PARTITION. Logo, PARTITION NP-completo. e Questo 5 (Valor = 30 pontos) a Considere o problema PARTITION: INPUT : um conjunto de n nmeros naturais maiores do que zero S = {a1 , a2 , ..., an }, u PERGUNTA : existe um subconjunto de P S tal que sP s = sSP s ? Este problema pode ser resolvido pelo algoritmo explicado a seguir. Seja H = N , onde N = a1 + a2 + ... + an . 2 Algoritmo que decide PARTITION M = No input S = {a1 , a2 , ..., an } faa: c 1. Calcula N e verica se par. Se no for, rejeita; e a 2. B(0) := {0}; 3. Para i = 1, 2, ..., n faa c 4. B(i) := B(i 1); 5. Para j = ai , ai + 1, ai + 2, ..., H faa c 6. Se j ai B(i 1) ento insere j em B(i); a 7. Verica se H B(n). Se a resposta SIM, aceita. Se for NAO, rejeita. e Pede-se: 1. (5 pontos) Execute M no input S = {8, 25, 52, 35}. Soluo: ca H = (8 + 25 + 52 + 35)/2 = 60 B(0) = {0} B(1) = {0, 8} B(2) = {0, 8, 25, 33} B(3) = {0, 8, 25, 33, 52, 60} B(4) = {0, 8, 25, 33, 52, 60, 35, 43} H = 60 B(4). Resposta=SIM 2. (5 pontos) Mostre que os conjuntos B(i) produzidos pelo algoritmo M satisfazem o seguinte: B(i) = {b N | b H e existe P {a1 , ..., ai } tal que b =
sP

s}

Conclua que M aceita seu input se e somente se existe um subconjunto P S tal que e sP s = sSP s (isto , M resolve o problema PARTITION). Soluo: ca Mostremos por induo sobre i que P(i) verdadeiro para todo i = 0, 1, ..., n, onde: ca e P(i) : B(i) = {b N | b H e existe P {a1 , ..., ai } tal que b =
sP

s}

Soluo: ca A partir das linhas (4),(5) e (6) do algoritmo, podemos armar que para todo i = 1, ..., n tem-se que: B(i) = B(i 1) {x + ai | x B(i 1) e ai x + ai H} Mostremos que P(i) verdadeiro para todo i = 0, ..., n. e Base da induo: Por denio, B(0) = {O}. Por outro lado, o unico b N tal que ca ca existe P {a1 , ..., an } vericando b = xP x b = 0 (com P = . e Passo da induo: supondo P(i) verdadeiro, mostrar que P(i + 1) tambm . ca e e B(i + 1) = B(i) {x + ai+1 | x B(i) e ai+1 x + ai+1 H} Por hiptese de induo temos que: o ca B(i) = {b N | b H e existe P {a1 , ..., ai } tal que b =

sP

s}

Seja b B(i+1). Se b B(i) ento existe P {a1 , ..., ai } tal que b = sP s. E claro a que P {a1 , ..., ai , ai+1 }. Se b = x+ai+1 , para x B(i), ento existe P {a1 , ..., ai } a tal que x= sP s. Considerando P = P {ai+1 }, temos que P {a1 , ..., ai , ai+1 } e s = sP s + ai+1 = x + ai+1 = b. Logo, mostramos que todo b B(i + 1), b est em B(i) {x + ai+1 | x B(i) e ai+1 x + ai+1 H} a
sP

A rec proca se mostra de forma anloga, isto , todo b B(i) {x + ai+1 | x B(i) a e e ai+1 x + ai+1 H} est em B(i + 1). a M aceita seu input {a1 , ..., an } se e somente se H B(n). Logo, M aceita seu input se e somente se existe um subconjunto P {a1 , ..., an } tal que xP x = H. O que equivalente a armar que M decide PARTITION. e 3. (10 pontos) Mostre que a complexidade de M O(nH). e

Soluo: ca O algoritmo que dado H calcula os conjuntos B(i), para i = 1, ..., n e testa se H B(n) tem complexidade O(nH) (estgios 2 a 7). a Estgio a Estgio a Estgio a Estgio a Estgio a Estgio a 2: O(1) 3: loop repetido n vezes 4: O(1) 5: loop repetido H vezes no mximo a 6 : testa se j ai B(i) : O(1) 7 : testa se H B(n) : O(1).

Logo, a complexidade de 2 a 7 O(nH). A complexidade do estgio 1 O(m2 ), onde m e a e = tamanho do input a1 , ..., an . Assim, aparentemente, poder-se-ia se pensar que a complexidade deste algoritmo polie nomial. O item seguinte esclarece isto. 4. (10 pontos) Como PARTITION NP-completo, sabemos que M no polinomial. Por e a e outro lado, fato que M O(nH). Explique esta aparente contradio. e e ca Na verdade, a complexidade do algoritmo se mede em relao ao tamanho da repca resentao binria do input a1 , ..., an : cada ai so nmeros inteiros escritos em sua ca a a u representao binria. O tamanho do input m. Assim, a complexidade seria polinomial ca a e se fosse O(mk ) para algum k. Mostramos que o estgio (1) O(m2 ). Mas o restante a e do algoritmo, de 2 a 7 O(nH), isto , polinomial no tamanho da grandeza dos e e e nmeros a1 , ..., an e no no tamanho de sua representao binria. Sabemos que a ordem u a ca a de grandeza de um nmero exponencial com relao ao tamanho de sua representao u e ca ca binria, como discutimos em sala de aula. a