Computabilidade; Decidibilidade; O Problema Da Parada

17
Efraim Naassom Helem Dantas Rodrigues Computabilidade; Decidibilidade; O Problema da Parada Mossoró / RN Dezembro de 2015

description

Turing propôs o termo computável para designar a totalidade de números reaiscuja expansão decimal pode ser calculada através de recursos finitos. Para isso, ele buscouentender os processos envolvidos na atividade de computar um número por um ser humano,então Turing definiu a máquina de computar. A máquina de computar de Turing foifuturamente usada para descobrir quais seriam os problemas computáveis. Ao passo queTuring estudava os números computados pela máquina de computar com uma aplicação aoEntscheidungsproblem, Church estudava o conceito de calculabilidade efetiva, que apesarde terem sidos estudos completamente desvinculados, abordavam conceitos equivalentes.O esclarecimento desses conceitos feito por Turing e Church, serviu como base para oaprofundamento da Computabilidade, Decidibilidade, e O Problema da Parada.

Transcript of Computabilidade; Decidibilidade; O Problema Da Parada

Page 1: Computabilidade; Decidibilidade; O Problema Da Parada

Efraim Naassom Helem Dantas Rodrigues

Computabilidade; Decidibilidade; O Problemada Parada

Mossoró / RN

Dezembro de 2015

Page 2: Computabilidade; Decidibilidade; O Problema Da Parada

Efraim Naassom Helem Dantas Rodrigues

Computabilidade; Decidibilidade; O Problema da Parada

Trabalho referente a terceira unidade da dis-ciplina Teoria da Computação que abordaComputabilidade, Decidibilidade, e Problemada Parada.

Universidade Federal Rural do Semi-Árido – UFERSA

Curso Ciência da Computação

Graduação

Mossoró / RNDezembro de 2015

1

Page 3: Computabilidade; Decidibilidade; O Problema Da Parada

ResumoEsse texto mostra como os conceitos de computabilidade, decidibilidade foram induzidose como podem ser usados. Além disso, o texto também conta a história do surgimentodos estudos que buscam conhecer os limites das máquinas computacionais. Sendo assim, épossível entender como a computabilidade de um problema pode ser verificada, bem comose um problema é decídivel, e ainda que o problema da parada não é solucionável.

Palavras-chaves: Computabilidade. Decidibilidade. Problema da Parada. Alan Turing.Alonzo Church.

2

Page 4: Computabilidade; Decidibilidade; O Problema Da Parada

Sumário

Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41. Computabilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51..1 Exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102. Decidibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112..1 Exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123. O Problema da Parada . . . . . . . . . . . . . . . . . . . . . . . . . . 12

Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

Page 5: Computabilidade; Decidibilidade; O Problema Da Parada

Introdução

Turing propôs o termo computável para designar a totalidade de números reaiscuja expansão decimal pode ser calculada através de recursos finitos. Para isso, ele buscouentender os processos envolvidos na atividade de computar um número por um ser humano,então Turing definiu a máquina de computar. A máquina de computar de Turing foifuturamente usada para descobrir quais seriam os problemas computáveis. Ao passo queTuring estudava os números computados pela máquina de computar com uma aplicação aoEntscheidungsproblem, Church estudava o conceito de calculabilidade efetiva, que apesarde terem sidos estudos completamente desvinculados, abordavam conceitos equivalentes.O esclarecimento desses conceitos feito por Turing e Church, serviu como base para oaprofundamento da Computabilidade, Decidibilidade, e O Problema da Parada. [3]

Page 6: Computabilidade; Decidibilidade; O Problema Da Parada

1. ComputabilidadeO termo computável foi proposto por Alan Turing para deisgnar a totalidade de

númeos reais cuja expansão decimal pode ser calculada através de recursos finitos. Propondoentão o termo computabilidade, Turing descreveu uma máquina teórica finita chamadade “máquina de computar”; os números reais que pudessem ter sua expansão decimalcomputada por contáveis operações da máquina seriam chamados de “números computadospela máquina”. Turing porém, enfrentava o problema de provar matematicamente queos números computados eram realmente números considerados computáveis, em suma,seria necessário provar que a máquina realmente seria capaz de reconhecer os númeroscomputáveis. Foi em 1936 que Turing publicou o artigo On computable numbers, withan application to the Entscheidungsproblem baseando-se em processos efetuados peloshumanos ao computar um número, e introduzindo formalmente a noção de computabilidade.Alonzo Church publicava o artigo An unsolvable problem of elementary number theory quepropunha uma definição para calculabilidade efetiva; Church assim esclarecia o conceitode calculabilidade efetiva, vezes confundido com o conceito de satisfatoriedade, como ummecanismo M que fosse definido por um conjunto finito de instruções sendo cada instruçãodescrita de maneira finita de forma que a calculabilidade efetiva seria caracterizada pornão requerer intuição, inteligência, ou criatividade. Apesar de Church e Turing teremcoincidido em estudar o mesmo conceito, seus estudos eram completamente desvinculadose mesmo assim eles justificavam a mesma fundamentação matemática. Turing admitiaisso publicamente em seu artigo publicado em 1936 escrevendo: “Em um artigo recenteAlonzo Church introduziu a ideia de calculabilidade efetiva, que é equivalente a minhacomputabilidade, mas diferentemente definida.” [3]

5

Page 7: Computabilidade; Decidibilidade; O Problema Da Parada

Figura 1 – Alan Turing

O termo computabilidade é usado hoje como algo que busca investigar a existênciaou não de algoritmos que solucionem determinada classe de problemas. Para assim verificar-se que tipos de problemas podem ser resolvidos por uma máquina finita (computador).O estudo da computabilidade mostra sua importância em evitar trabalho para buscarsoluções que não existem. Em outras palavras a computabilidade busca responder seexiste um conjunto finito de instruções que resolvem dado problema mecanicamente. Éimportante considerar a hipótese de Church a fim de que métodos usados para verificarcomputabilidade sejam introduzidos.

A Máquina de Turing definida em 1936 buscava explorar os limites da capacidade deexpressar soluções de problemas. As máquinas são tão gerais que podem simular quaisquerpossível computação, além disso, não há relatos de um modelo “algorítmico” mais geral queas Máquinas de Turing; mesmo havendo a tentativa de criar máquinas tão gerais quanto,como foi feito por Kleene (que foi aluno de Church em 1930) em 1936 apresentando aMáquina de Post por exemplo.

Com base nisso, a Hipótese de Church intuitivamente defende:

“A capacidade de computação representada pela Máquina de Turing é o limite

6

Page 8: Computabilidade; Decidibilidade; O Problema Da Parada

máximo que pode ser atingido por qualquer dispositivo de computação.” [1]

Figura 2 – Alonzo Church

Por as máquinas de Turing operarem com uma fita infinita, é possível simulare capturar o que é possível, ou não, ser processado por um computador com memóriailimitada ou abundante.

Definição 1: Uma máquina de Turing é uma 7-upla, (Q,Σ,Γ,δ, q0, qaceita, qrejeita),onde Q,Σ,Γ são todos conjuntos finitos1 Q é o conjunto de estados,2 Σ é o alfabeto de entrada sem o símbolo em branco t,3 Γ é alfabeto de fita, onde t ∈ Γ e Σ ⊆ Γ,4 δ: Q × Γ −→ Q × Γ × {E,D} é a função de transição,5 q0 ∈ Q é o estado inicial, qaceita ∈ é o estado de aceitação, e6 qrejeita ∈ Q é o estado de rejeição, onde qrejeita 6= qaceita.

Fonte: [2]

7

Page 9: Computabilidade; Decidibilidade; O Problema Da Parada

Aqui é apresentado o exemplo, retirado de [2], de uma máquina de Turing M2 quereconhece a linguagem A = { 02n | n ≥ 0 }, que consiste em todas as cadeias de 0s cujocomprimento é uma potência de 2.

M2 = “Sobre a cadeia de entrada w:

1. Faça uma varredura da esquerda para a direita na fita, marcando um 0 não, e outro,sim.

2. Se no estágio 1, a fita continha um único 0, aceite.

3. Se no estágio 1, a fita continha mais que um único 0 e o número de 0s era ímpar,rejeite.

4. Retorne a cabça para a extremidade esquerda da fita.

5. Vá para o estágio 1.”

Formalmente M2 = (Q,Σ,Γ,δ, q1, qaceita, qrejeita), onde:

• Q = { q1, q2, q3, q4, q5, qaceita, qrejeita },

• Σ = { 0 } e

• Γ = {0,x,t}.

• Os estados inicial, de aceitação e de rejeição são q1, qaceita e qrejeita respectivamente.

• δ é descrito como um diagrama de estados mostrado na seguinte figura.

8

Page 10: Computabilidade; Decidibilidade; O Problema Da Parada

Figura 3 – Máquina de Turing que reconhece a linguagem A = { 02n | n ≥ 0 }

Sabendo-se do poder da máquina de Turing, preocupações com limitações reaisde uma implementação não devem ser desconsiderados, bem como tamanho da memóriaprincipal, tempo de execução, entre outros. Os estudiosos de ciências da computaçãogeralmente concentram-se nos problemas com respostas binárias do tipo sim ou não. Avantagem de se concentrar nesses problemas é que eles podem ser tratados como a verificaçãose determinada linguagem é recursiva, associando as condições de ACEITA/REJEITA deuma máquina universal às respostas sim/não respectivamente. Sendo assim, é possívelafirmar que:

a classe os problemas solucionáveis é equivalente à classe das linguagens recursivas

Tem-se que alguns problemas não solucionáveis são parcialmente solucionáveis, issosignifica dizer que existe um algoritmo capaz de responder sim, embora, eventualmente,possa ficar em loop infinito para uma resposta que deveria ser não. Então, tem-se que:

a classe dos problemas parcialmente solucionáveis é equivalente à classe das lingua-gens enumeráveis recursivamente

Portanto, tem-se que problemas parcialmente solucionáveis são computáveis. Sendoassim, ainda temos que um problema é parcialmente solucionável se existe um algoritmo(Máquina Universal, por exemplo Máquina de Turing) que solucione o problema tal quepare quando a resposta é afirmativa (ACEITA). Porém, quando a resposta esperada fornegativa, o algoritmo pode parar (REJEITA) ou permanecer processando indefinidamente

9

Page 11: Computabilidade; Decidibilidade; O Problema Da Parada

(LOOP). [1]

1..1 Exemplo

O exemplo apresentado aqui é o problema de reconhecer números menores ou iguaisa 3. Para resolver esse problema, é possível escrever o seguinte algoritmo de forma queeste tenha como saída a linguagem A = {1n0 | onde 0 ≤ n ≤ 3 } a ser reconhecida pelamáquina de Turing que será descrita em breve.

Algoritmo 1: Reconhece valores menores ou iguais a três.1 leia (x)2 enquanto x 6= 33 mostre (1)4 x = x + 15 mostre (0)6 fim

A máquina de Turing M3 é proposta para reconhecer a linguagem gerada peloalgoritmo acima.

Formalmente M3 = (Q,Σ,Γ,δ, q1, qaceita, qrejeita), onde:

• Q = { q1, q2, q3, q4, qaceita, qrejeita },

• Σ = { 0 , 1} e

• Γ = {t}.

• Os estados inicial, de aceitação e de rejeição são q1, qaceita e qrejeita respectivamente.

• δ é descrito como um diagrama de estados mostrado na seguinte figura.

10

Page 12: Computabilidade; Decidibilidade; O Problema Da Parada

Figura 4 – Exemplo de máquina de Turing que reconhece a linguagemA = {1n0 | onde 0 ≤ n ≤ 3 }

2. DecidibilidadeNa seção anterior foram definidos conceitos fundamentais para o estudo da compu-

tabilidade e decidibilidade, por exemplo, foi-se introduzida a máquina de Turing comorecurso usado para verificar computabilidade/solucionabilidade de um problema, assimbuscando investigar a existência ou não de algoritmos que solucionem determinada classede problemas.

Diz-se que um problema é decidível se sua solução é alcançada em tempo finito, emoutras palavras, se existe uma máquina de Turing que retorna uma resposta. O conceito dedecidibilidade não trata da quantidade de tempo gasto e sim se ele é finito. [2] A principalmotivação para estudar decidibilidade é porque o estudo decidibilidade ajuda a identificarproblemas insolúveis, além de que o estudo aponta para possibilidades de simplificações

11

Page 13: Computabilidade; Decidibilidade; O Problema Da Parada

e/ou alterações do problema original para que ele possa se tornar solúvel.

O estudo da decidibilidade foca na investigação de se determinada cadeia é membrode determinada linguagem. Para isso, os problemas computacionais são representadosatravés de linguagens. Por exemplo, testar se um autômato finito determinístico b aceitauma entrada w é o mesmo que o problema de se testar se 〈B,w〉 é um membro da linguagemde autômatos finitos determinísticos, assim sendo, mostrar que a linguagem é decidível é omesmo que mostrar que o problema computacional é decidível. [2]

2..1 Exemplo

O exemplo usado aqui será baseado nas definições feitas anteriormente onde édesejável testar se 〈B,w〉 é um membro da linguagem AAF D. Semelhantemente como éfeito em computabilidade, para verificar a decidibilidade de um problema, é necessáriouma máquina de Turing. Sendo assim, seja:

M4 = “Sobre a entrada 〈B,w〉, onde B é um AFD, e, w, uma cadeia:

1. Simule B sobre a entrada w.

2. Se a simulação termina em um estado de aceitação, aceite. Se ela termina em umestado de não-aceitação, rejeite.” [2]

3. O Problema da ParadaO problema da parada é um problema de decisão sobre as propriedades de programas

em um modelo de máquina. O problema procura determinar se um dado programa e umadada entrada para o programa vai parar quando executado com a entrada. Para a verificaçãodesse problema, limitações de máquina não devem ser consideradas, o problema procurasimplesmente responder se o programa vai parar com uma determinada entrada. Umaalternativa descuidada para verificar esse problema é simplesmente executar o programapor alguns passos e verificar se uma hora o programa vai parar, entretanto, se o programanão parar, não é possível saber se ele executará para sempre ou se irá parar eventualmente.

Alan Turing provou em 1936 que não é possível que exista um algoritmo geral pararesolver o problema da parada. O problema da parada pode ser descrito como segue:

Dada uma máquina Universal M qualquer e uma palavra w qualquer sobre o alfabetode entrada, existe um algoritmo que verifique se M pára, aceitando ou rejeitando, aoprocessar a entrada w? [1]

O problema da parada pode ser redefinido pela seguinte linguagem:

12

Page 14: Computabilidade; Decidibilidade; O Problema Da Parada

AMT{〈M,w〉 | M é uma Máquina de Turing e M aceita a entrada w}

É desejável demonstrar que AMT não é recursiva, consequentemente que o problemada parada não é solucionável. Sipser, Michael [2] prova a afirmação feita anteriormente daseguinte forma:

“Supomos que AMT seja decidível e obtemos uma contradição. Suponha que H sejaum decisor para AMT . Sobre a entrada 〈M,w〉, na qual M é uma MT, e w, é uma cadeia,H pára e aceita se M aceita w. Além disso, H pára e rejeita se M falha em aceitar w. Emoutras palavras, assumimos que H seja uma MT, onde

H(〈M,w〉) =

aceite se M aceita w

rejeite se M não aceita w.

Agora é construída uma máquina de Turing D com H como uma subrotina. Essanova MT chama H para determinar o que M faz quando a entrada para M é a própriadescrição 〈M 〉. Uma vez que D tenha determinado essa informação, ela faz o oposto. Ouseja, ela rejeita se M aceita e aceita se M não aceita. O que segue é uma descrição de D.

D = “Sobre a entrada 〈M〉, onde M é uma MT:

1. Rode H sobre a entrada 〈M,〈M〉〉.

2. Dê como saída o oposto do que H dá como saída; ou seja, se H aceita, rejeite e se Hrejeita, aceite.”

A idéia de rodar uma máquina sobre a sua própria máquina é algo que de fatoocorre ocasionalmente na prática. Por exemplo, um compilador é um programa que traduzoutros programas. Um compilador para a linguagem Pascal pode, ele próprio, ser escritoem Pascal, portanto rodar esse programa sobre si próprio faria sentido. Então, tem-se que,

D(〈M〉) =

aceite se M não aceita 〈M〉

rejeite se M aceita 〈M〉.

Quando D é executado com sua própria descrição 〈D〉 tem-se

D(〈D〉) =

aceite se D não aceita 〈D〉

rejeite se D aceita 〈D〉.

Em suma, independentemente do que D faz, ela é forçada a fazer o oposto, o queé obviamente uma contradição. Consequentemente, nem a MT D nem a MT H podemexistir.” [2]

13

Page 15: Computabilidade; Decidibilidade; O Problema Da Parada

Portanto, foi provado que O Problema da Parada não é solucionável.

14

Page 16: Computabilidade; Decidibilidade; O Problema Da Parada

Conclusão

Neste trabalho, foi possível perceber, que dispositivos com quantidades ilimitadasde memória e modelos computacionais universais não são suficientes para resolver todosos problemas da computação. Com este estudo, foi possivel conceber formas para verificarestes limites e que há limites mesmo nos modelos computacionais mais gerais, como aMáquina de Turing, mencionada aqui várias vezes. Mesmo com a MT fazendo tudo queum computador real pode fazer, uma MT não pode resolver certos problemas.

Page 17: Computabilidade; Decidibilidade; O Problema Da Parada

Referências

[1] Asmuz Diverio, Tiarajú e Blauth Menezes, Paulo.: Teoria da Computação - MáquinasUniversais e Computabilidade, Ed. Bookman, 2008.

[2] Sipser, Michael.: Introdução à Teoria da Computação, Ed. Thomson, 2007.

[3] Cafezeiro, Isabel.: Recontando a computabilidade, Revista Brasileira de História daCiencia, Rio de Janeiro, 2010.