Você está na página 1de 13

Universidade Federal de Pernambuco Centro de Informtica - CIn

Decidibilidade

Grupo: Augusto Csar N L Filho (acnlf) Rafael Menelau O. Cruz (rmoc)

Introduo
Muito antes dos computadores modernos terem sido inventados, a teoria da computao j havia sido iniciada e estava em desenvolvimento. Matemticos de todo o mundo buscavam resolver problemas atravs de processos com um nmero finito de passos que pudessem sempre retornar resultados corretos para uma mesma questo. Apesar de no bem definido durante sculos, o conceito de algoritmo sempre foi utilizado e aperfeioado de forma implcita pela comunidade matemtica. Durante o Segundo Congresso Internacional de Matemtica, realizado em Paris no ano de 1900, David Hilbert apresentou 23 questes no resolvidas pertinentes toda a sociedade matemtica. Nesta lista o dcimo problema dizia respeito aos algoritmos, usados ainda sem um conceito concreto, Hilbert requisitou explicitamente um algoritmo para a identificao de existncia de razes inteiras para um polinmio. Mesmo com o problema no resolvido ( ou provado que no pode ser resolvido ), um grande avano permitiu que ele fosse melhor analisado: a publicao da chamada Tese de Church-Turing, em 1936. O artigo definia precisamente a noo de algoritmo que fazia-se ausente at ento e estava inviabilizando a continuidade do estudo na rea. A Tese de Chuch-Turing afirma que, possuindo tempo e capacidade de espao suficiente, qualquer funo que pode ser computada naturalmente pode ser computada atravs de um algoritmo em um computador. Atravs disso possvel perceber que at o mais simples computador ( em questo de velocidade e tamanho de memria ) , possui teoricamente equivalente poder que um outro qualquer. Para a realizao da tese o importante conceito de Mquina de Turing foi definido e associado com algoritmos, da forma um algoritmo um processo descrito por uma Mquina de Turing( Gurevich 2000).

Mquina de Turing
A Mquina de Turing um modelo computacional semelhante um autmato finito , porm muito mais poderoso e com propsito de uso geral. rigor trata-se de um modelo abstrato de computador, restrito apenas aos aspectos lgicos do funcionamento do mesmo: Capacidade de armazenamento, estados e transies ignorando sua implementao fsica. Informalmente descrita, uma mquina de Turing consiste em: Uma fita divida em clulas adjacentes umas s outras. Em cada clula est escrito um smbolo de um alfabeto definido para a fita. O alfabeto contm obrigatoriamente um smbolo especial branco e um ou mais outros smbolos. Assume-se que a fita infinita, isto , a mquina de Turing possui fita suficiente para realizar sua computao. Inicialmente a fita possui apenas a cadeia de entrada preenchida e todas as demais clulas esto inicialmente com o smbolo vazio escrito.Note tambm que a mquina de Turing possui dois alfabetos, um para a fita e outro para a entrada, sendo eles nunca iguais visto que o de entrada no pode conter o smbolo vazio enquanto o de fita ,como descrito, obrigatoriamente o possui. Uma cabea, que pode ler, escrever smbolos e mover-se na fita, tanto para a esquerda como direita. Um registrador de estados, que armazena o estado da mquina de Turing. O nmero de estados diferentes sempre finito e existem pelomenos dois, o estado de aceitao e o de rejeio. Uma funo de transio que diz mquina que smbolo escrever, como mover a cabea e qual ser seu novo estado aps a mudana, dados o smbolo que ele acabou de ler na fita e o estado em que se encontra.

Apesar de sua semelhana com autmatos finitos, mquinas de Turing possuem diferenas essenciais: Mquinas de turing podem tanto ler como escrever da filha. A cabea pode mover-se para ambos os lados. A fita infinita Os estados de aceitao e rejeio so imediatamente processados.

Exemplo de uma mquina de Turing simples Uma mquina M que computa a soma de dois nmeros naturais n1 e n2, representados na notao unria. Entrada: 1n101n2; sada deve ser 1n1+n2. A idia deslocar o numero 0 at a extremidade direita da fita, ou seja at o fim da cadeia n2 e assim o resultado na fita ser a soma das mesmas. Algoritmo: 1. Enquanto no encontrar um 0 v para direita. Se encontrar v para 2, seno, rejeite. 2. V uma clula para a direita, se encontrar 1 , troque-o por 0 e v para 3, se encontrar o smbolo vazio aceite, se encontrar o smbolo 0, rejeite. 3. V uma clula para a esquerda e troque o 0 por um 1. e v para 1.

Mquina de Turing Universal "It is possible to invent a single machine which can be used to compute any computable sequence. If this machine U is supplied with the tape on the beginning of which is written the string of quintuples separated by semicolons of some computing machine M, then U will compute the same sequence as M" (italics added, Turing in Undecidable p. 128). A mquina de Turing universal definida acima pelo prprio Allan Turing assim chamada devido sua capacidade de simular qualquer outra mquina partir da descrio da mquina de entrada. Ela ilustra bem os problemas de indecibilidade e alguns exemplos sero apresentados na sesso referente ao Problema da Parada.

Decidibilidade
Linguagens Decidveis Uma linguagem decidvel uma linguagem em que existe uma mquina de Turing que, quando recebe uma cadeia de entrada aceita-a ou rejeita, dessa forma, a mquina de Turing sempre a decide. Exemplo 1: Neste exemplo ser testado o problema de aceitao referente a um AFD, ou seja, se o mesmo aceita uma cadeia w. Para isso ser estabelecida uma linguagem Aafd e sua decibilidade constatada aps o processo, ela esta definida como: Aafd = {<B,w> | B um AFD que aceita a cadeia de entrada w} Algoritmo para a mquina de Turing M: 1- Simule o autmato B com respeito entrada w 2- Verifique se ela termina em um estado de aceitao, caso sim , aceita, seno, rejeite. Detalhes referentes simulao do AFD foram abstrados para no fujir ao escopo, mas bom deixar claro que a maquina M faz verificaes de corretude da entrada <B,w> bem como realiza a simulao diretamente, fazendo registro de estados e realizando as transies pertinentes descritas na funo de transio do AFD. Na realidade tanto AFDs tal como o acima,um AFN ou expresso regular poderiam ser computados por uma mquina de Turing pois todos eles podem ser convertidos uns para os outros. O prximo exemplo faz referencia ao chamado teste de vacuidade(Sipser) para a linguagem de um autmato finito.Nela o objetivo verificar a aceitao ou no de alguma cadeia por um AFD.

Exemplo 2: Vafd = { <A> | A um AFD e L(A) = } Vafd decidvel ? Algoritmo: 1- Marque o estado inicial A e v para 2. 2- Enquanto nenhum novo estado for marcado, marque qualquer estado que possua uma transies chegando nele vindos de estados j macardos. 3- Se nenhum estado de aceitao estiver marcado, aceite, seno, rejeite. Os exemplos seguir tratam de problemas decidveis com relao linguagens livres do contexto. Exemplo 3: Analogamente ao problema de teste de aceitao do exemplo 1, o exemplo atual demonstra o problema de testar a gerao de uma cadeira por um GLC para assim constatar a decibilidade de uma linguagem, no caso, Aglc definida como: Aglc = { <G,w> | G uma GLC que gera a cadeia w } A primeira idia que surge tentar todas as possveis derivaes de G para constatar se alguma delas igual w. Apesar de simples e correta, a idia invivel tendo em vista que se G no gerar w a mquina entraria em loop infinito. Assim uma forma mais inteligente faz-se necessria. Utilizando a Forma Normal de Chomsky, certo que qualquer derivao ter 2n-1 com n sendo igual ao comprimento de w. Com base nisso e abstraindo dados especficos sobre a construo da Forma Normal o algoritmo ficar como: Algoritmo sobre <G,w> , sendo G a GLC e w a cadeia: 1- Aplique o processo para converter G de sua forma inicial para um GLC equivalente na Forma Normal de Chomsky. 2- Verifique o comprimento de w, se for maior que 0, liste todas as derivaes de 2n-1 passos ( com n = |w| ) , seno liste todas as derivaes com 1 passo. 3- Se alguma das derivaes gerar w, aceite, caso contrrio, rejeite.

O problema da parada:
Nesta seo falaremos de um dos mais importantes problemas conhecidamente indecidvel, o problema da parada que pode ser definido como: Dado a descrio formal de um programa como a entrada inicial, determinar se o programa, quando executado nesta entrada sempre para. O problema da parada foi um dos primeiro problemas a serem provados como indecidvel, em maio 1936 Alan Turing, em seu artigo On Computable Numbers With an Application to the Entscheidungsproblem, provou que no pode existir um procedimento geral para resolver o problema da parada para todas as entradas possveis em cima da Maquina de Turing, conseguindo a prova reduzindo o problema da parada ao Entscheidungsproblem, o qual havia sido provado como indecidvel por Alonzo Church em abril do mesmo ano. Muitos outros problemas depois foram provados como indicidveis utilizando o problema como base e usando a redutibilidade para mostrar que os dois problemas so equivalentes. Turing utilizou o mtodo da reduo ao absurdo para conseguir provar que o problema da parada indecidvel, ou seja ele assumiu que ela era decidvel e obteve uma contradio, chegando a uma prova bem similar utilizada por Gdel em seu teorema da incompletude. Idia da prova: Seja S uma Mquina de Turing tal que: M = {(S,w) | A uma Mquina de Turing e S aceita w} Supomos Halt seja um procedimento decisor para a maquina M, ou seja, Halt sempre para. Halt sobre a entrada (S, w) sendo A uma maquina de Turing e w uma cadeia, Halt aceita se S aceitar a cadeia w, caso S no aceite w, Halt rejeita M. Pegamos agora uma nova mquina de Turing D que possui o procedimento Halt como sua subrotina, chamando Halt para determinar o que S faz quando a entrada para S <S>, a sua prpria descrio. A mquina D faz o oposto, ou seja: D(<S>) = aceita se S no aceita <S> D(<S>) = rejeita se S aceita <S> Tentamos agora rodar a maquina de Turing D utilizando a sua mesma descrio denotada por <D> como entrada obetendo assim a seguinte definio: D(<D>) = aceita se D no aceita <D> D(<D>) = rejeita se D aceita <D>

Atravs deste exemplo chegamos a concluso de que independentemente do funcionamento da mquina D, ela se torna forada a fazer o contrario, chegando assim em uma contradio, portanto nem a mquina D nem o procedimento Halt podem existir.

O teorema de Rice:
Uma das conseqncias do problema da parada ser provado como um problema indecidvel o chamado teorema de Rice que conhecido tambm por the Rice-Myhill-Shapiro theorem. O teorema de Rice diz que todo o teste de qualquer propriedade que no sejam triviais relativas a linguagens reconhecidas por mquinas de Turing indecidvel. Exemplo: Seja P um problema sobre mquinas de Turing satisfazendo as seguintes propriedades: 1. para quaisquer mquinas M1 e M2, onde L(M1) = L(M2), temos que (M1) pertence a P se e somente se (M2) pertence a P. Em outras palavras, M pertence a P dependendo apenas da linguagem reconhecida por M. 2. Existem M1 e M2 tais que (M1) pertence a P e (M2) no pertence a P. Em outras palavras, P no trivial. Temos que P indecidvel. Idia da prova: Suponha que E decidvel por uma mquina de Turing R, usaremos esta suposio para construir uma maquina de Turing S que decide a maquina M definida no problema da parada, chegando assim em uma prova por contradio. Seja M1 uma maquina tal que (M1) pertence a P e M2 uma maquina tal que (M2) no pertence a P, A idia de usar R para construir uma S que decide M a seguite: Dada uma maquina D como entrada, modificamos D, de modo a obter uma maquina correspondente D tal que D se comporte como M1, se D aceita w e se comporta como M2, caso contrrio. Assim o problema de decidir se D aceita w se reduz ao problema de decidir se (D) pertence a P. A mquina S que decide M usando R definida da seguinte forma: S = Entrada: (D,w) , onde D uma mquina de Turing e w uma cadeia 1. Construa a seguinte maquina de Turing D: D = Entrada: cadeia w i. Executa D e M2 em paralelo ate chegar ao momento em que D e M2 param. ii. Se D aceita w, ento executa M1 sobre w;

se M1 aceita, aceite; se M1 rejeita, rejeite. iii. Se D rejeita w ento Se M2 aceita, aceite; se M2 rejeita, rejeite. 2. Execute R sobre a entrada (D) 3. Se R aceita, ento aceite; se R rejeita, ento rejeite. importante resaltar que o teorema de Rice aplicado s propriedades das linguagens que so aceitas pelas mquinas de Turing, no s mquinas de Turing em si propriamente ditas. Outros exemplos de problemas de deciso cuja a insolubilidade segue o teorema de Rice: Dada uma mquina de Turing T, L(T) no vazia? Dada uma mquina de Turing T, T aceita pelo menos duas strings? Dada uma mquina de Turing T, a linguagem aceita por T finita? Dada uma mquina de Turing T com alfabeto de entrada , L(T) igual a *? Dada uma mquina de Turing T, a linguagem aceita por T regular? Dada uma mquina de Turing T, a linguagem aceita por T recursiva?

Redutibilidade:
Falaremos agora sobre o principal mtodo utilizado para provar que determinados problemas so indecidveis por qualquer modelo computacional equivalente mquina de Turing, a utilizao da tcnica da reduo. Uma reduo nada mais do que um algoritmo para converter instncias de um problema P para instncias de um problema P,ou seja a reduo deve transformar instncias de p1 que possui uma resposta sim em uma instncia de p2 que possui a mesma resposta . Neste caso dizemos que P se reduz a P. Desta forma podemos garantir que resolver o problema P no mais difcil que resolver o problema P pois uma soluo para o problema P gera uma soluo para o problema P. No caso da teoria da computabilidade, podemos afirmar que se um dado problema P pode ser reduzido ao problema P e P um problema decidvel isto implica que P tambm decidvel, pois no caso poderamos utilizar uma soluo de P para resolver P. Da mesma maneira se P provado como insolvel e ele consegue ser reduzido a P isso implica que P tambm insolvel o que nos d um poderoso mtodo para provar que um problema idecidvel, que no caso seria pegar um problema conhecidamente indecidvel, como o problema da parada que ser explicado mais adiante, e reduzi-lo ao problema em prtica. podemos tambm utilizar o conceito de redutibilidade, na teoria da complexidade, para podermos provar que um determinado problema P NP-Completo. Provamos que P NP-Completo se conseguirmos realizar uma reduo em tempo polinomial do problema P para um outro problema Pconhecidamente como NP-Completo, como o problema de SAT ou o

problema da cobertura de vrtice. Neste caso dizemos que P eficientemente redutvel ao problema P. A seguir mostramos um exemplo de redutibilidade. Exemplo: Vamos considerar um problema relacionado, PARA com o problema de se determinar se uma mquina de Turing para (aceitando ou rejeitando) sobre uma dada entrada. Usamos a indecidibilidade do teorema mostrado no problema da parada, a mquina M, para provar a indecidibilidade de PARA reduzindo-o a ele. Seja: PARA = {(D,w) | D uma mquina de Turing e D para sobre a entrada w} Queremos provar que PARA indecidvel. Idia da Prova. Usaremos a prova por contradio assumindo que PARA decidvel usando a suposio para mostrar que o teorema provado no problema da parada tambm decidvel chegando assim a uma contradio. Vamos assumir que temos uma mquina de Turing R que decide PARA Ento usamos R para construir S, uma mquina que decide a mquina M dada no problema da parada. Prova. Vamos assumir com o propsito de obter uma contradico que a mquina R decide PARA. Construmos S para decidir D, e temos S operando da seguinte forma: S = Sobre a entrada (D,w), uma codificao de uma maquina de Turing D e uma cadeia w: 1. Rode R sobre a entrada (D,w). 2. Se R rejeita rejeite. 3. Se R aceita, simule D sobre w at que ela pare. 4. Se D aceitou, aceite; se D rejeitou rejeite. Claramente, se R decide PARA ento S decide M. como M indecidvel, PARA tambm tem que obrigatriamente ser indecidvel. Assim como este exemplo, existem uma srie de outros problemas que comprovadamente indecidveis na prxima seco Citaremos alguns deles dando uma breve descrio sobre cada um:

Outros problemas indecidveis:


Entscheidungsproblem : Entscheidungsproblem (problema de deciso em alemo) um dos primeiros e um dos mais importantes problemas de deciso. Ele consiste de um desafio na lgica simblica para achar um algortmo que seja de propsito geral que decide para um dado enunciado na lgica de primeira ordem se ela universalmente valida ou no. A prova foi dada por Alonzo Church em abril de 1936 e logo depois por Alan Turing em maio de 1936, trabalhando independentemente mostrando que era impossvel. Turing conseguiu reduzir este problema para o problema da parada para maquina de Turing. Tanto Church como Turing tiveram uma grande influncia do teorema da incompletude de Gdel. Post correspondence problem(PCP): um problema indecidvel, de deciso proposto por Emil Post em 1946. Por ele ser mais simples que o problema da parada e do que o Entscheidungsproblem , ele tem sido frequentemente utilizado quando queremos provar que um dado problema indecidvel, principalmente no estudo de linguagens formais, como por exemplo na equivalncia de reconhecedores sintticos de linguagens. O PCP tem como objetivo formar uma palavra de duas formas diferentes. So utilizadas duas seqncias <X1, X2, ..., XN> e <Y1, Y2, ..., YN>, consistindo de palavras sobre algum alfabeto finito como entrada para o problema. O problema tem como objetivo descobrir se possvel escolher alguma seqncia de Xs, cuja concatenao forma uma nova palavra, de forma que a mesma seqncia de escolhas feita para a seqncia Y, tambm forme a mesma palavra. Problema da equivalncia de programas: No existe um algoritmo que decide se dois procedimentos dados P e Q so equivalentes; mais precisamente, no existe um procedimento Eq(P, Q) tal que Eq pra com quaisquer dados de entrada, e Eq(P, Q) = T se os procedimentos P e Q calculam a mesma funo e Eq(P, Q) = F em caso contrrio Problema das Palavras em Grupos: indecidvel se duas palavras dadas representam o mesmo elemento de um grupo finitamente apresentado.

Concluso:
Dentre todos os modelos computacionais, o modelo da mquina de Turing sem duvida um dos mais importantes e mais estudados. Alguns afirmam este ser o pai da cincia da computao moderna e graas a ele diversos problemas clssicos puderam ser resolvidos. Apesar de muito poderosas, mquinas de Turing podem resolver apenas problemas que so algoritmicamente solveis. O exemplo do problema da parada descrito anteriormente um clssico de uma questo concreta e simples de ser formulada, porm impossvel de ser resolvido atravs da mquina de Turing. Mesmo com a indecibilidade de certos problemas, de extrema importncia ter conhecimento no assunto de forma poder identifica-los previamente e poder trata-los de forma adequada afim de evitar custos desnecessrios e perda de tempo. Enfim, incrvel o fato de que apesar da Tese de Church-Turing ter sido publicada a tanto tempo, os computadores modernos possuem o mesmo poder computacional que a mquina de Turing proposta.

Bibliografia:
Harel, D. (1992). Algorithmics The Spirit of Computing Sipser, M. (1996), Introduction to the Theory of Computation Kamvysselis, M. (1996). Universal Turing Machine. <http://web.mit.edu/manoli/turing/www/turing.html>. John Hopcroft and Jeffrey Ullman, Introduction to Automata Theory, Languages and Computation, Addison-Wesley http://en.wikipedia.org/wiki/List_of_undecidable_problems http://en.wikipedia.org/wiki/Rice%27s_theorem http://en.wikipedia.org/wiki/Halting_problem http://en.wikipedia.org/wiki/Entscheidungsproblem http://en.wikipedia.org/wiki/Computer_theory

Você também pode gostar