Buscar

Parte 12

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Teoria da Computação 
 
Núcleo de Educação a Distância | Faculdade Impacta 
Texto base 
12 
 
Teoria da Computação 
Ana Paula Ferreira da Rocha 
Resumo 
NP-completo é um subconjunto de NP, o conjunto de todos os problemas de decisão cujas 
soluções podem ser verificadas em tempo polinomial. NP pode ser definido de forma 
equivalente como um conjunto de problemas de decisão que podem ser resolvidos em 
tempo polinomial em uma máquina de Turing não determinística. Problemas NP-
completos são estudados porque a capacitância de verificar rapidamente soluções para 
o problema (NP) parece estar relacionada à capacitância de resolver o problema 
rapidamente (P). Isso ocorre porque a definição de um problema NP-completo afirma 
que todo problema NP deve ser facilmente redutível, isto é, redutível polinomialmente a 
qualquer problema NP-completo. 
Introdução 
 Abordaremos a teoria dos problemas NP-completos e veremos como definir de 
forma equivalente como um conjunto de problemas de decisão podem ser resolvidos em 
tempo polinomial em uma máquina de Turing não determinística e sua capacidade de 
resolver problemas P com a utilização das operações booleanas. 
 
 
12.1. Problemas NP-Completos 
Um importante avanço na questão P versus NP veio no início dos anos 70 com o trabalho 
de Stephen Cook e Leonid Levin, eles descobriram certos problemas em NP cuja 
complexidade individual está relacionada aquela da classe inteira. Se um algoritmo de 
tempo polinomial existe para algum desses problemas, todos os problemas em NP seriam 
solúveis em tempo polinomial. Esses problemas são chamados NP-completos, o 
fenômeno de NP-completude é importante tanto por razões práticas quanto teóricas. 
Do lado teórico um pesquisador tentando mostrar que P é diferente de NP pode se 
concentrar em um problema NP-completo, se qualquer problema NP requer mais que um 
 
Teoria da Computação 
 
Núcleo de Educação a Distância | Faculdade Impacta 
tempo polinomial um NP-completo também requer. Além do mais um pesquisador 
tentando provar que P é igual a NP precisa somente encontrar um algoritmo de tempo 
polinomial para um problema NP-completo para atingir seu objetivo. 
Do lado prático o fenômeno da NP-completude pode evitar o desperdício de tempo na 
busca por um algoritmo de tempo polinomial não existente para resolver um problema 
específico. Muito embora possivelmente não tenhamos a matemática necessária para 
provar que o problema é insolúvel em tempo polinomial acreditamos que P é diferente de 
NP portanto provar que um problema é NP-completo é forte evidência de sua não 
polinomialidade. 
O primeiro problema NP-completo que apresentamos é chamado o problema da 
satisfatibilidade. Devemos nos recordar que variáveis podem tomar valores 
VERDADEIRO e FALSO estas são chamadas de variáveis booleanas. Geralmente 
representamos VERDADEIRO por 1 e FALSO por 0. As operações booleanas E, OU e 
NÃO são representadas pelos símbolos ∧, ∨ e ¬, respectivamente, são descritas na lista 
abaixo: 
0 ∧ 0 = 0 0 ∨ 0 = 0 0 = 1 
0 ∧ 1 = 0 0 ∨ 1 = 1 1 = 0 
 1 ∧ 0 = 0 1 ∨ 0 = 1 
 1 ∧ 1 = 1 1 ∨ 1 = 1 
Observe que utilizamos uma barra superior como abreviação para o símbolo ¬, o que 
significa que x é = ¬x. 
Uma fórmula booleana é uma expressão envolvendo variáveis booleanas e operações, 
por exemplo: 
 ∅ = ( x ∧ y) ∨ (x ∧ z ) 
Uma fórmula booleana é satisfatível se alguma atribuição de 0’s e 1’s às variáveis faz 
com que o valor da fórmula seja 1. A fórmula precedente é satisfatível porque a atribuição 
x = 0, y = 1 e z = 0 faz com que ∅ tenha valor 1, dizemos que a atribuição satisfaz ∅ o 
problema da satisfatibilidade é testar se uma fórmula booleana é satisfatível, seja 
 SAT = {<∅> | ∅ é uma fórmula booleana} 
Uma linguagem B é NP-completa se ela satisfaz duas condições: 
• B está em NP; 
• Toda A em NP é redutível em tempo polinomial a B. 
Se B é NP-completa e B ∈ NP, então P = NP, notamos que esta definição nos mostra a 
redutibilidade em tempo polinomial. 
Se B é NP-completa e B ≤ p C para C em NP, então C é NP-completa. 
Prova – já sabemos que C está em NP, portanto temos que mostrar que toda A que está 
em NP é redutível em tempo polinomial a C, devido ao fato de que B é NP-completa, 
toda linguagem em NP é redutível em tempo polinomial a B, e B por sua vez é redutível 
em tempo polinomial a C. Reduções em tempo polinomial compõem se A é redutível em 
tempo polinomial a C e C é redutível em tempo polinomial a B, então A é redutível em 
 
Teoria da Computação 
 
Núcleo de Educação a Distância | Faculdade Impacta 
tempo polinomial a B. Com isso todo linguagem em NP é redutível em tempo polinomial 
a C. 
O teorema de Cook-Levin 
Uma vez que temos um problema NP-completo podemos obter outros por redução em um 
tempo polinomial a partir do primeiro, contudo estabelecer o primeiro problema NP-
completo é mais difícil. 
SAT é NP-completo. 
Ideia da prova – mostrar que SAT está em NP é fácil, a parte difícil da prova é mostrar 
que qualquer linguagem em NP é redutível em tempo polinomial a SAT. Uma redução 
em tempo polinomial para cada linguagem A em NP para SAT, a redução para A toma 
uma cadeia w e produz uma fórmula booleana ∅ que simula a máquina NP para A sobre 
a entrada w. Se a máquina aceita ∅ tem uma atribuição que satisfaz correspondendo a 
computação de aceitação. Se a máquina não aceita nenhuma atribuição satisfaz ∅, 
consequentemente w está em A se e somente se ∅ é satisfatível. 
Prova – mostramos que SAT está em NP, uma máquina de tempo polinomial não 
determinístico pode adivinhar uma atribuição para uma dada fórmula ∅ e aceitar se a 
atribuição satisfaz ∅. Tomamos qualquer linguagem A em NP e mostramos que A é 
redutível em tempo polinomial a SAT, seja N uma máquina de Turing não determinística 
que decide A em tempo nk para alguma constante k, a seguinte noção ajuda a descrever 
a redução. 
Um tableau para N sobre w é uma tabela nk x nk cujas linhas são as configurações de um 
ramo da computação de N sobre a entrada w, como demonstrado na figura abaixo: 
 
Figura 1.1 – Um tableau é uma tabela nk x nk de configurações 
 
 
Fonte: Michael Sipser, 2007. 
Como demonstrado a configuração começa e termina com um símbolo #, sendo assim a 
primeira e última coluna de um tableau são todas de #’s. A primeira linha do tableau é a 
 
Teoria da Computação 
 
Núcleo de Educação a Distância | Faculdade Impacta 
configuração inicial de N, um tableau é de aceitação se qualquer linha do tableau é uma 
configuração de aceitação. 
Todo tableau de aceitação para N sobre w corresponde a um ramo da computação de N 
sobre w, o problema de se determinar se N aceita w é equivalente ao problema de se 
determinar se um tableau de aceitação para N sobre w existe. A descrição da redução em 
tempo polinomial ƒ de A para SAT, sobre a entrada w a redução produz uma fórmula ∅. 
Digamos que Q e 𝚪 sejam o conjunto de estados e o alfabeto de fita de N, seja C = Q ∪ 
𝚪 ∪ {#} para cada i e j entre 1 e nk e para cada s em C temos uma variável xi, j, s. 
Desenhando ∅ de modo que uma atribuição às variáveis que satisfaça a fórmula 
correspondente a um tableau de aceitação para N sobre w, a fórmula ∅ é o E das quatro 
partes: ∅celula∧ ∅inicio∧ ∅movimento∧ ∅aceita e descrevemos cada um por vez. 
Ligar uma variável xi, j, s corresponde a colocar um símbolo s em celula[i, j], a primeira 
coisa que temos que garantir de modo a obter uma correspondência entre uma atribuição 
e um tableau é que a atribuição liga exatamente uma variável para cada célula. A fórmula 
∅celula assegura esse requisito expressando-o em termos de operações booleanas: 
Figura 1.2 – Operação booleana 
 
 
Fonte: Michael Sipser, 2007. 
Os símbolos ∧ e ∨ significam iteração de E’s e OU’s respectivamente, no fragmento da 
fórmula anterior temos: 
 
É uma abreviação de: 
 xi, j, s1 V xi, j, s2 V... V xi, j, s1 
onde C = {s1, s2, ..., s1}, sendo ∅celula é na verdadeuma expressão grande que contém um 
fragmento para cada célula no tableau porque i e j variam de 1 a nk, a primeira parte de 
cada fragmento diz que pelo menos uma variável é ligada na célula correspondente. A 
segunda parte de cada fragmento diz que não mais que uma variável é ligada, ou seja, que 
em cada par de variáveis pelo menos uma é ligada na célula correspondente, esses 
fragmentos são conectados por operações ∧. 
A primeira parte de ∅celula dentro dos colchetes estipula que pelo menos uma variável que 
está associada a cada célula esta ligada, enquanto que a segunda parte estipula que não 
mais que uma variável está ligada para cada célula. Qualquer atribuição às variáveis que 
satisfaz ∅ e consequentemente ∅celula tem que ter exatamente uma variável ligada para 
toda célula, qualquer atribuição que satisfaz a fórmula específica um símbolo em cada 
 
Teoria da Computação 
 
Núcleo de Educação a Distância | Faculdade Impacta 
célula da tabela, as partes ∅inicio, ∅movimento e ∅aceita asseguram que a tabela é na verdade 
um tableau de aceitação. 
A fórmula ∅inicio assegura que a primeira linha da tabela é a configuração inicial de N 
sobre w estipulando que as variáveis correspondentes estão ligadas: 
 ∅inicio = x1, 1, # ∧ x1, 2, q0∧ 
 x1, 3, w1 ∧ x1, 4, w2, ∧ ... ∧ x1, n+2, wn ∧ 
 x1, n+3, ⊔ ∧ ... ∧ x1, nk- 1, ∧ x1, nk, # 
A fórmula ∅aceita garante que uma configuração de aceitação ocorre no tableau, ela 
assegura que qaceita, o símbolo para o estado de aceitação aparece em uma das células do 
tableau estipulando que uma das variáveis correspondentes está ligada: 
 
Figura 1.3 – ∅aceita 
 
Fonte: Michael Sipser, 2007. 
 
A fórmula qmovimento garante que cada linha da tabela corresponde a uma configuração 
que legalmente segue da configuração da linha precedente conforme as regras de N, ela 
faz isso assegurando que cada janela 2 x 3 de células é legal. Dizemos que uma janela 2 
x 3 é legal se aquela janela não viola as ações especificadas pela função de transição de 
N, uma janela é legal se ela pode aparecer quando uma configuração corretamente segue 
uma outra. 
Digamos que a, b e c são membros do alfabeto de fita e q1 e q2 são estados de N, assuma 
quando no estado q1 com a cabeça lendo um a, N escreve um b, permanece no estado q1 
e move para a direita, e que quando no estado q1com a cabeça lendo um b, N não 
deterministicamente. 
• Escreve um c, vai para q2 e move para a esquerda ou 
• Escreve um a, vai para q2 e move para a direita. 
Expressando formalmente, 𝛿(q1, a) = {(q1, b, D)} e 𝛿(q1, b) = {(q2, c, E), (q2, a, D)} 
 
Figura 1.4 – Exemplos de janelas legais 
 
Fonte: Michael Sipser, 2007. 
 
Teoria da Computação 
 
Núcleo de Educação a Distância | Faculdade Impacta 
 
Na figura acima as janelas (a) e (b) são legais porque a função de transição permite que 
N se move de maneira indicada, a janela (c) é legal porque, com q1 aparecendo no lado 
direito da linha superior não sabemos sobre que símbolo a cabeça está. Esse símbolo 
poderia ser um a, e q1 poderia modifica-lo para um b e mover para a direita, essa 
possibilidade daria origem a essa janela portanto ela não viola as regras de N. A janela 
(d) é legal porque as linhas superior e inferior são idênticas o que ocorreria se a cabeça 
não estivesse adjacente à localização da janela. Note que um # pode aparecer na esquerda 
ou na direita de ambas as linhas superior e inferior em uma janela legal. A janela (e) é 
legal porque o estado q1 lendo um b poderia ter estado imediatamente à direita da linha 
superior e ela teria então movido para a esquerda no estado q2 para aparecer na 
extremidade direita da linha inferior. Já a janela (f) é legal porque o estado q1 poderia ter 
estado imediatamente à esquerda da linha superior e ela poderia ter modificado o b para 
um c e movido para a esquerda. 
Já a figura abaixo nos apresenta janelas que não são legais para a máquina N: 
 
Figura 1.5 – Exemplos de janelas ilegais 
 
Fonte: Michael Sipser, 2007. 
 
Na janela (a) o símbolo central na linha superior não pode modificar porque um estado 
não estava adjacente a ele. A janela (b) não é legal porque a função de transição especifica 
que o b é modificado para um c mas não para um a, a janela (c) não é legal porque dois 
estados aparecem na linha inferior. 
 
Você sabia? 
Vamos aprofundar o conhecimento sobre Problemas NP-completos? Assista ao vídeo 
Problemas NP-Completos. Disponível em: 
< https://www.youtube.com/watch?v=VJucgdXGHyE>. Acesso em: 09 mai. 2023. 
 
 
 
Considerações finais 
 Como vimos NP-completo é um subconjunto de NP, o conjunto de todos os 
problemas de decisão cujas soluções podem ser verificadas em tempo polinomial. NP 
 
Teoria da Computação 
 
Núcleo de Educação a Distância | Faculdade Impacta 
pode ser definido de forma equivalente como um conjunto de problemas de decisão que 
podem ser resolvidos em tempo polinomial em uma máquina de Turing não 
determinística. Uma tarefa p em NP também é NPC se e somente se todas as outras tarefas 
em NP puderem ser convertidas em p em tempo polinomial. Problemas NP-completos 
são estudados porque a capacitância de verificar rapidamente soluções para o problema 
(NP) parece estar relacionada à capacitância de resolver o problema rapidamente (P). Não 
sabemos se todos os problemas do NP serão resolvidos tão cedo. Isso é chamado de 
problema P x NP. Mas se os problemas NP-completos podem ser resolvidos rapidamente, 
então todos os problemas NP podem ser resolvidos rapidamente. Isso ocorre porque a 
definição de um problema NP-completo afirma que todo problema NP deve ser 
facilmente redutível, isto é, redutível polinomialmente a qualquer problema NP-
completo. Por esta razão, costuma-se dizer que os problemas NP-completos são mais 
difíceis do que os problemas NP em geral. 
 
 
 
Teoria da Computação 
 
Núcleo de Educação a Distância | Faculdade Impacta 
Referências 
DIVERIO, Tiarajú Asmuz; MENEZES, Paulo Blauth. Teoria da Computação: 
máquinas universais e computabilidade. Porto Alegre: Bookman, 2011. 
MENEZES, Paulo Blauth. Linguagens Formais e Autômatos. 6. ed. Porto Alegre: 
Bookman, 2011. 
SIPSER, Michael. Introdução à Teoria da Computação. 2. ed. São Paulo: Cengage 
Learning, 2007.

Outros materiais