Vamos definir uma forma mais geral de redutibilidade polinomial, que pode ser aplicada a uma classe mais geral de problemas: problemas de procura em que para cada instˆancia I, a resposta (em vez de ser apenas sim ou n˜ao) pode ser um elemento dum conjunto finito de solu¸c˜oes ou n˜ao (se o dito conjunto for vazio). Reparar que esta classe cont´em os problemas de decis˜ao e os problemas de optimiza¸c˜ao.
Um problema de procura Π consiste num conjunto DΠ de instˆancias, e para cada I ∈ DΠ num
Um algoritmo resolve o problema Π, se dado uma instˆancia I tem como resposta n˜ao se SΠ[I] = ∅
ou se tem como sa´ıda uma solu¸c˜ao s pertencente a SΠ[I].
Por exemplo, o problema do caixeiro viajante tem como solu¸c˜oes todas as voltas de comprimento m´ınimo, e um algoritmo resolve o problema se para cada instˆancia indicar uma das poss´ıveis solu¸c˜oes.
Um problema de decis˜ao Π pode ser formulado como um problema de procura definindo SΠ[I] =
{sim} se I ∈ SΠ e SΠ[I] = ∅, caso contr´ario.
Formalmente, dado um alfabeto um problema de procura vai corresponder a uma rela¸c˜ao bin´aria em Σ+. A uma rela¸c˜ao bin´aria R em Σ+ pode-se associar uma fam´ılia de fun¸c˜oes f : Σ+ −→ Σ+
tal que para todo x ∈ Σ+, f (x) = se n˜ao existe nenhum y ∈ Σ+ tal que (x, y) ∈ R ou f (x) = y
se algum y existe. Diz-se que f realiza R. Uma TM M resolve R se a fun¸c˜ao fM calculada por M
realiza R.
Dado um problema de procura Π e uma codifica¸c˜ao c sobre Σ? associ´amos a rela¸c˜ao R[Π, c]
definida por:
R[Π, c] = {(x, y) | x = c(I), I ∈ DΠ e y = c(s), s ∈ SΠ[I]}
O problema Π com codifica¸c˜ao c ´e sol´uvel em tempo polinomial se existe uma TM polinomial que resolve R[Π, c].
Exemplo 2.5.1 Podemos identificar uma linguagem L ⊆ Σ+ com a rela¸c˜ao bin´aria em Σ+, tal
que R= {(x, y) | x ∈ Σ+ and x ∈ L} e onde y ´e um elemento fixo de Σ+. Podemos concluir que
um problema de decis˜ao ´e um problema de procura.
Podemos ainda definir uma classe especial de problemas de procura relacionados directamente com os problemas em NP e em P.
Seja L ∈ NP. Pelo Teorema 2.2.1 existe uma rela¸c˜ao RL tal que para todo x, existe y tal que
RL(x, y) se e s´o se x ∈ L. O problema de procura associado a L, F L ´e o seguinte: dado x, procurar
y tal que RL(x, y) se tal y existe e se n˜ao existir retornar n˜ao.
A classe dos problemas de procura associados com linguagens em NP denota-se por FNP. O subconjunto de problemas associados com linguagens em P, denota-se FP.
Exemplo 2.5.2 SATA ∈ FNP ´
E f´acil concluir que FP = FNP se e s´o se P = NP. 2.5.1 Redu¸c˜ao de Turing
Em termos de problemas, uma redu¸c˜ao polinomial de Turing dum problema Π num problema Π0 ´e um algoritmo determin´ıstico A que resolve Π usando uma subrotina S que resolve Π0, e tal que se
S ´e um algoritmo polinomial para Π0 ent˜ao A ´e um algoritmo polinomial para Π. Diz-se que Π ´e Turing redut´ıvel aΠ0, e representa-se por Π ≤t Π0.
Em termos de linguagens corresponde a existir uma m´aquina de Turing determin´ıstica com or´aculo Π0 que reconhece Π em tempo polinomial.
Defini¸c˜ao 2.5.1 Uma m´aquina de Turing com or´aculo (MTO) corresponde a uma m´aquina de Tu- ring b´asica (com uma fita) O= (S, Γ, Σ, , B, s0, δ, F) com as seguintes caracter´ısticas adicionais:
• possu´ı uma fita adicional – a fita de or´aculo – e uma cabe¸ca de escrita/leitura que opera nessa fita.
• o conjunto de estados S inclui dois estados especiais sc, estado de consulta do or´aculo e sr,
estado de continua¸c˜ao da computa¸c˜ao.
• A fun¸c˜ao de transi¸c˜ao ´e δ: S \ F ∪ {sc} × Γ × Σ −→ S × Γ × Σ × {←, →} × {←, →}
Um passo de computa¸c˜ao duma MTO ´e an´alogo ao de uma TM b´asica (considerando as duas fitas) excepto quando o controlo finito se encontra no estado sc. Neste estado, a computa¸c˜ao
depende duma fun¸c˜ao de or´aculo g : Σ? −→ Σ?. Seja y ∈ Σ? a sequˆencia de s´ımbolos nas c´elulas
de 1 a |y| da fita de or´aculo e seja g(y) = z. ent˜ao, num passo de computa¸c˜ao a fita de or´aculo ´e modificada para conter a sequˆencia z ∈ Σ? nas c´elulas de 1 a |z| e brancos nas restantes c´elulas. A
cabe¸ca de or´aculo fica a ler a c´elula 1 e os estado passa a ser sr. A fita normal e sua cabe¸ca n˜ao
s˜ao alteradas neste passo.
Exerc´ıcio 2.5.1 Descreve formalmente um passo de computa¸c˜ao duma MTO. Exerc´ıcio 2.5.2 Generaliza uma MTO para k-fitas normais.
Uma MTO O com fun¸c˜ao de or´aculo g associada designa-se por Og. As no¸c˜oes de computa¸c˜ao,
fun¸c˜ao calculada fOg e complexidade TOg(n) s˜ao definidas de modo idˆentico ao das TM b´asicas.
Defini¸c˜ao 2.5.2 Sejam R e R0 duas rela¸c˜oes bin´arias em Σ?. Uma redu¸c˜ao polinomial de Turing
de R em R0, R ≤t R0, ´e uma MTO O tal que para toda a fun¸c˜ao g: Σ? −→ Σ? que realiza R0, Og
´
e uma MTO polinomial e a fun¸c˜ao fOg calculada por Og realiza R.
Proposi¸c˜ao 2.5.1 A rela¸c˜ao ≤t ´e transitiva.
Exerc´ıcio 2.5.3 Mostra a Proposi¸c˜ao 2.5.1.
Proposi¸c˜ao 2.5.2 Se Π e Π0 s˜ao problemas de decis˜ao ent˜ao: Π ≤pm Π
0
Dem. A transforma¸c˜ao F da redu¸c˜ao polinomial ≤pm define um algoritmo para resolver Π usando
uma subrotina para resolver Π0: dada uma instˆancia de Π, constr´oi uma instˆancia F (X) de Π0, aplica a subrotina a F (X) e tem como resultado a resposta dada pela subrotina (pois X tem solu¸c˜ao sse F (X) tem solu¸c˜ao).
Exerc´ıcio 2.5.4 Enuncia e demonstra a Proposi¸c˜ao 2.5.2 em termos de linguagens, rela¸c˜oes e m´aquinas de Turing com or´aculo.
Defini¸c˜ao 2.5.3 Uma rela¸c˜ao R ´eNP-hard se existe uma linguagem L ∈ NPC tal que L ≤t R.
Um problema de procuraΠ diz-se NP-hard se existe um problema NP-completo Π0 tal queΠ0 ≤t
Π.
Em particular, como j´a visto, um problema de decis˜ao Π ´e NP-hard se ∀Π0 ∈NP, Π0 ≤t Π e ´e
NP-completo se al´em disso Π ∈ NP.
Exerc´ıcio 2.5.5 Mostrar que dado um problema Π ∈ NP e o seu problema complementar Πc, se tem Π ≤t Πc e vice-versa. Explica porque n˜ao parece para muitos problemas que se possa ter
Πc≤p m Π.
Pelo exerc´ıcio anterior conclu´ımos que se Π ´e NP-completo ou NP-hard ent˜ao Πc ´e NP-hard. Vimos que um problema de decis˜ao D n˜ao ´e ”mais dif´ıcil”que o correspondente de optimiza¸c˜ao O, vejamos que muitas vezes tamb´em n˜ao ´e ”mais f´acil”! Isto ´e n˜ao s´o D ≤t O mas tamb´em
O ≤t D. Se o problema D ´e NP-completo ent˜ao o problema de optimiza¸c˜ao O pode ser resolvido
em tempo polinomial se e s´o se P = NP.
Exemplo 2.5.3 Consideremos o problema do caixeiro viajante mais uma vez. Comecemos por definir um problema interm´edio:
(TSE)
Instˆancia: Um conjunto C = {c1, c2, . . . , cm} de cidades, d : C × C −→ N distˆancia, B ∈ N e uma
volta parcial Θ = hcπ(1), cπ(2), . . . , cπ(k)i de k cidades distintas, 1 ≤ k ≤ m.
Quest˜ao: Pode-se estender Θ a uma volta completa hcπ(1), cπ(2), . . . , cπ(k), cπ(k+1), . . . cπ(m)i com comprimento total menor ou igual a B?
Este problema ´eNP (mostra!) e como TSP ´e completo, tem-se que TSE ≤t TSP. Seja (TSO)
o problema de optimiza¸c˜ao (p´agina 15), resta ver que TSO ≤t TSE e por transitividade vem
TSO ≤t TSP.
Considerem-se instˆancias de TSE e TSO para C e d comuns. Suponhamos que S(C, d, Θ, B) ´e uma subrotina que resolve TSE. Seja B? a volta ´optima para essa instˆancia de TSO e suponhamos que essa volta ´optima come¸ca em c1. ´E ´obvio que B? tem como limite inferior BM IN = m e como
limite superior BM AX = mx onde x = max{d(ci, cj) | (ci, cj) ∈ C × C}. Podemos ent˜ao usar
uma pesquisa bin´aria para determinar B? que chama S(C, d, hc
1i, B) para v´arios valores de B, no
m´aximo dlog2Be vezes: BM IN ← m BM AX ← mx while BM AX− BM IN 6= 1 do B ← d12(BM AX + BM IN)e if S(C, d, hc1i, B) = sim then BM AX ← B else BM IN ← B end if end while B? ← B M IN
Conhecido B? determina-se uma volta ´optima usando a subrotina S. Para isso constroem-se sequˆencias Θ que possam ser estendidas a voltas ´optimas. Dado hc1i e como ´e estend´ıvel, existe
cj ∈ C \ {c1} tal que hc1, cji ´e uma volta parcial estend´ıvel. Podemos encontrar cj no m´aximo em
m −2 chamadas a S[C, d, hc1, cji, B?]. Ent˜ao uma volta ´optima pode ser constru´ıda usando S no
m´aximo(m − 1)(m − 2)/2 vezes. Considerando o comprimento dos dados, n = m + dlog2BM AXe, o
algoritmo anterior fornece uma redu¸c˜ao polinomial de Turing entre TSO e TSE, como pretendido. Note-se que basta provar que um dado problema ´e Turing–redut´ıvel a um problema em NP para saber que ele n˜ao ´e ”mais dif´ıcil”que um problema NP-completo.
Defini¸c˜ao 2.5.4 Um problema Π ´e NP-easy se existe um problema Π0 ∈NP tal que Π ≤t Π0.
Exerc´ıcio 2.5.6 Mostrar que os problemas de optimiza¸c˜ao (ou de procura de solu¸c˜ao) associados com os seguintes problemas NP-completos s˜ao NP-easy:
a) SAT b) VC
c) HC
Conclu´ımos assim que a restri¸c˜ao feita aos problemas de decis˜ao na teoria apresentada n˜ao provocou perda de generalidade, pois a maior parte dos problemas cujos correspondentes de decis˜ao s˜ao NP-completos, s˜ao NP-easy e portanto s´o ser˜ao resolvidos em tempo polinomial se P = NP ! Exerc´ıcio 2.5.7 Considera o problema de decis˜ao seguinte:
Instˆancia: Dado um conjunto A, uma medida s : A −→ Z+, e dois inteiros n˜ao negativos B ≤
P
a∈As(a) e K ≤ 2|A|.
Quest˜ao: Existem pelo menos K subconjuntos A0 ⊆ A tal queP
a∈A0s(a) ≤ B?
Mostra que PAR ≤t K-´esimo Conjunto Maior. Ser´a que K-´esimo Conjunto Maior ∈ NP?
Sugest˜ao: Considera uma subrotina S[A, s, B, K] para K-´esimo Conjunto Maior. SeP
a∈A0s(a)
n˜ao ´e divis´ıvel por 2, a resposta ´e n˜ao. Sen˜ao, determina por pesquisa bin´aria o n´umero L∗ de subconjuntos A0 ⊆ A satisfazendo P
a∈A0s(a) ≤ b, com b = Pa∈As(a)/2. Depois basta chamar
S[A, s, b − 1, L∗].