Vous êtes sur la page 1sur 6

Captulo 8: O problema da parada. Decidibilidade e computabilidade.

Jos Lucas Rangel 8.1 - Introduo. Como observado no captulo anterior, podemos substituir a definio informal de procedimento pela definio formal de mquina de Turing (mT). J vimos que, dependendo da forma como a mT construda, ela pode ser um procedimento gerador ou um procedimento reconhecedor; por outro lado, uma mT que sempre pra, qualquer que seja a sua entrada, um algoritmo. Portanto, um conjunto recursivamente enumervel (r.e.) uma linguagem reconhecida por uma mT; e um conjunto recursivo uma linguagem aceita por uma mT que sempre pra. Devemos, neste captulo, apresentar exemplos de linguagens que mostrem que as definies de conjunto recursivamente enumervel e de conjunto recursivo so no triviais. Uma vez que j foi provada a incluso da segunda classe na primeira, basta apresentar exemplos de conjuntos r.e. que no so recursivos, e de conjuntos enumerveis que no so r.e. Efetivamente, o reconhecimento de um conjunto no recursivamente enumervel , ento, uma tarefa que no pode ser realizada por nenhuma mquina de Turing, por nenhum procedimento, ou seja, uma tarefa incomputvel. Para que esses exemplos sejam apresentados, precisamos de alguns conceitos auxiliares. 8.2 - Enumerao de Mquinas de Turing. Para definir uma enumerao (e uma numerao) de todas as mquinas de Turing (mT) vamos introduzir uma codificao, que vai representar cada mT M = <K, , , , i, F> atravs de uma cadeia em um alfabeto adequado ; a enumerao das mT, determinsticas e no determinsticas, ser baseada em uma enumerao de *. Para isso conveniente fazer algumas suposies: Os estados de K esto ordenados: q0, q1, q2, , de tal forma que i = q0. De forma semelhante, os smbolos de , s0, s1, s2, esto ordenados, de forma que s0 o smbolo especial branco . Assim, para representar M, usaremos um alfabeto = {q, s, |, #, L, R} de forma que o estado qi representado por q|i, e o smbolo si representado por s|i. A representao ento usa as cadeias q, q|, q||, q|||, , s, s|, s||, s|||, para os estados e smbolos; note, em particular, que q o estado inicial, e s o smbolo branco. Os smbolos #, L, e R de so usados respectivamente como separador e como indicadores de movimento para a esquerda, e para a direita. Para representar a funo , devemos representar todos os valores de (q, s). Isso pode ser feito atravs de uma sequncia de quntuplas (qi, sj, qk, sl, r), com r{L, R}, que indicam que (qk, sl, r) (qi, sj).
Linguagens Formais J.L.Rangel 8-1

A cadeia correspondente tupla (qi, sj, qk, sl, r) em * q|i s|j q|k s|l r. Se M uma mT no determinstica, podemos ter vrias tuplas com os mesmos valores nos dois primeiros elementos. Por exemplo, se tivermos a tupla (q1, s2, q3, s4, L), indicando que (q3, s4, L) (q1, s2), a cadeia correspondente em * ser q|s||q|||s||||L. Para representar a funo , concatenamos as representaes das quntuplas correspondentes a , separadas por #. Para representar F, basta concatenar, sem separao, as cadeias que representam os estados. Por exemplo, F = {q1, q3, q5 } representado por q|q|||q|||||. A representao de M se reduz apenas representao de F e de , que podem ser separadas por ##. Exemplo: Seja M = <K, , , , i, F>, onde K = { p, q, r } = { a, b } = { , a, b, X } i=q F = { r }, sendo dada por (p, a) = {(q, a, R)} (q, a) = {(q, X, R)} (q, b) = {(r, a, L)} (q, ) = {(r, X, L)} Fazendo q0 = q, q1 = p, q2 = r, s0 = , s1 = a, s2 = b, s3 = X, temos a seguinte representao de M: q||##q|s|qs|R#qs|qs|||R#qs||q||s|L#qsq||s|||L Uma entrada aaab de M ser codificada em * como s|s|s|s||. Com essa codificao (ou alguma outra codificao semelhante), possvel representar as mT's e suas entradas atravs de cadeias em *, onde um alfabeto apropriado. Sabemos que * enumervel, e que podemos atribuir um natural a cada cadeia de *, e fazer referncia s cadeias de * como x0, x1, x2, . Assim, podemos atribuir mT representada por xi o nmero i, e fazer a referncia a ela como a i-sima mquina de Turing Mi. Entretanto, para que a notao Mi sempre represente uma mT, uma conveno adicional necessria. Observe que nem todas as cadeias xi de * correspondem a mT's. Por exemplo, a cadeia LLL no descreve nenhuma mT. Para que a cada natural i corresponda uma mT Mi, vamos associar a cada i tal que xi no descreve nenhuma mquina a mquina vazia ##, que no tem nenhum estado final, e nenhuma transio possvel. Incidentalmente, ## aceita a linguagem vazia . Assim, podemos falar em Mi, para qualquer i: ou M a mquina representada por xi, ou xi no representa nenhuma mquina, e Mi a mquina representada por ##. Note que fcil distinguir as cadeias de * que representam mT's das demais, uma vez que elas formam um conjunto regular. Semelhantemente, podemos enumerar as cadeias que representam entradas: x0, x1, x2 ...,
Linguagens Formais J.L.Rangel 8-2

de forma que poderemos falar na i-sima cadeia de entrada xi. Exerccio: Escolha uma enumerao de *. Para essa enumerao, descreva algoritmos que permitam dado um natural i, determinar a cadeia xi de * correspondente. dada uma cadeia x em ?*, determinar o natural i tal que x = xi. dada uma cadeia xi em *, determinar se xi ou no a representao de uma mT. Exerccio: Para uma enumerao determinada de *, (a) determine o nmero da sequncia ##. (b) determine qual a mquina M23. Suporemos daqui para a frente que est fixada uma enumerao de todas as mquinas de Turing, em algum alfabeto fixo. M0, M1, M2, M3, e de suas entradas, x0, x1, x2, x3, Codificao e decodificao. Podemos sempre supor que existem algoritmos com as seguintes finalidades: dado um natural i, determinar a cadeia xi. dado um natural i, determinar a representao de Mi. dada uma cadeia x, determinar i tal que x = xi. dada uma mT M, determinar i tal que M = Mi. Faremos referncia a esses algoritmos como algoritmos de codificao ou de decodificao. Como se trata de algoritmos, podemos supor que podem ser simulados por uma mT, ou usados por mT's como subrotinas. 8.3 - Mquina de Turing Universal. Vamos agora mostrar como pode ser construda uma mT universal U, que tem a propriedade de poder simular qualquer outra mT. Por simplicidade, vamos descrever uma mT universal U no determinstica. Para simular a computao de uma mT M qualquer, quando recebe como entrada a cadeia x, a idia a seguinte: U recebe uma entrada $, onde e so as representaes de M e x em algum alfabeto ; U simula M com entrada x; U aceita $ se M aceita x. Para a simulao, U constri uma representao de uma configurao de M em sua fita, e faz a simulao alterando essa configurao. A simulao parte da configurao inicial q Para cada mudana de configurao Ci | Ci+1, U deve identificar o estado e o smbolo lido em Ci, escolher uma entre as diversas transies previstas na funo de transio que faz parte de e construir a nova configurao Ci+1. Como U no determinstica, pode decidir "no-deterministicamente" quando uma configurao final Cf de M foi atingida, e apenas verificar que o estado contido em Cf um dos estados finais listados em .
Linguagens Formais J.L.Rangel 8-3

Todas as operaes envolvidas so operaes de cpia e de comparao de cadeias, e no oferecem nenhum problema maior. Naturalmente, a simulao de um passo da mquina M corresponde a um nmero considervel de passos de U, mas isto no um problema. Assim, a construo de U possvel. Frequentemente, conveniente supor que a mT U recebe como entrada i$j, para indicar que deve simular Mi com entrada xj, sendo i e j representados em alguma base adequada. Os passos adicionais necessrios so de codificao e decodificao, e podem, como j vimos, ser realizados por uma mT. A mT U frequentemente usada como uma subrotina, na construo de outras mT's, em geral atravs de frases como "ento, M simula Mi com entrada xj e se M parar, ...". Uma comparao que se faz frequentemente a da mquina de Turing universal U com o modelo de von Neumann, em que se baseiam os computadores comuns. O modelo de von Neumann se caracteriza justamente por ter o programa armazenado na memria, juntamente com os dados, durante a execuo. Note que U uma mquina de Turing, e, portanto, faz parte da enumerao M0, M1, M2, M3, sendo, para algum natural u, a mquina Mu. 8.4 - Uma linguagem no recursivamente enumervel. Vamos agora apresentar um exemplo de linguagem no recursivamente enumervel. Considere a linguagem L abaixo: L = { xi | xi no aceita por Mi } Fato: L no recursivamente enumervel. Dem.: Vamos mostrar, por contradio, que L no aceita por nenhuma mquina de Turing. Para isso, suponha que L aceita pela mT M. Como toda mT, M faz parte da enumerao das mT's, ou seja, para algum i, M = Mi, de forma que L = L(Mi). Vamos verificar se xi L. se tivermos xi L, como L = L(Mi), temos que Mi aceita x, e portanto xiL. se, alternativamente, tivermos xiL, ou seja, xiL(Mi), naturalmente, M no aceita xi, e portanto xiL. Estabelecida a contradio, conclumos que L no aceita por nenhuma mT M, e que L no recursivamente enumervel. Para a linguagem L, portanto, no existem um procedimento reconhecedor de L um procedimento enumerador de L uma gramtica, tipo 0 ou no, que gere L. Fato: , o complemento de L, uma linguagem recursivamente enumervel. Dem.: Temos = { xi | xi aceita por Mi }. Podemos descrever uma mT M que aceita L, da seguinte forma: a partir de xi, M obtm a representao de Mi. como foi descrito para a mquina universal U, M simula Mi com entrada xi.
Linguagens Formais J.L.Rangel 8-4

se Mi parar e aceitar xi, M tambm pra e aceita xi. Note que se Mi no pra, com entrada xi, ento M tambm no pra, com a mesma entrada Fato: A linguagem L no recursiva. Dem.: J vimos anteriormente que o complemento de uma linguagem recursiva tambm uma linguagem recursiva. Como o complemento de L L, que no r.e., e portanto, tambm no recursiva, L no pode ser recursiva. A linguagem L , portanto, tem uma gramtica tipo 0, mas no sendo recursiva, tambm no pode ser sensvel ao contexto, e no pode ter nenhuma gramtica tipo 1. 8.5 - Problemas decidveis e indecidveis. Para qualquer conjunto X no recursivo, a pergunta "x X?" no admite soluo atravs de um algoritmo que aceite x como entrada e responda SIM ou NO corretamente pergunta. Mas, do ponto de vista prtico, a diferena entre um conjunto no recursivamente enumervel, e um conjunto recursivamente enumervel que no recursivo pode ser considerada pequena. Com efeito, suponha que um conjunto L recursivamente enumervel mas no recursivo, e que dispomos de uma mT M que reconhece L, mas, no pra quando sua entrada no pertence a L. Suponha que, com entrada x, M foi executada por, digamos, mil passos, e que no parou. Nada podemos responder pergunta "x L ?". Ser que M vai parar nos prximos mil passos? Uma das maneiras de dizer que uma linguagem L no recursiva dizer que o problema "x L ?" no decidvel. De uma forma geral, um problema indecidvel um conjunto de questes que pode ser reduzido por codificao ao problema da pertinncia em uma linguagem no recursiva, e, assim, no pode ser respondido por uma mT que sempre pra; se um problema pode ser reduzido por codificao ao problema de pertinncia em uma linguagem recursiva, dizemos que decidvel. Um ponto importante que um problema indecidvel sempre envolve uma famlia de questes, ou questes em que aparece um parmetro. O problema P(i) - "Mi aceita xi?" pode ser indecidvel, mas o problema P(23) - "M23 aceita x23?" decidvel. Como prova disso, oferecemos duas mTs: Msim e Mno. Msim sempre pra e aceita qualquer entrada (sempre responde SIM); Mno sempre pra, mas nunca aceita qualquer de suas entradas (sempre responde NO). irrelevante o fato de ser difcil ou trabalhoso descobrir qual das duas mquinas corresponde resposta correta da pergunta "M23 aceita x23?", mas certamente uma das duas resolve corretamente o problema. De fato, o que indecidvel em "Mi aceita xi ?" exatamente qual das duas respostas corresponde a um valor de i arbitrrio, ou seja, qual das duas mquinas consideradas deve ser usada em cada caso. Reduo. Uma das tcnicas mais comuns de estabelecer se um problema decidvel ou indecidvel atravs de reduo desse problema a outro problema cuja resposta conhecida. Dizemos que P1 se reduz a P2 se a resposta a qualquer consulta a P1 pode ser deduzida da resposta a uma consulta apropriada a P2. Se P1 se reduz a P2, podemos dizer que, de certa forma, P2 mais geral que P1.
Linguagens Formais J.L.Rangel 8-5

Supondo que P2 indecidvel, e que P2 se reduz a P1, podemos concluir que P1 tambm indecidvel; por outro lado, se P1 decidvel, e P2 se reduz a P1, podemos concluir que P2 tambm decidvel. O problema da parada. Como exemplo da tcnica de reduo, vamos mostrar que o problema da parada das mquinas de Turing (halting problem) indecidvel. Este problema pode ser formulado como "Mi pra com entrada xj?", embora algumas vezes seja confundido o problema da aceitao "Mi aceita xj?". Como fcil reduzir qualquer um dos problemas ao outro, os dois problemas podem ser considerados equivalentes, e a confuso de certa forma justificada. Para verificar a equivalncia, basta verificar que sempre possvel alterar uma mT M, construindo outra mT M que aceita a mesma linguagem, de maneira tal que M tem as propriedades de parar sempre que atinge um estado final, e de nunca parar em um estado que no seja final. Isso quer dizer que M pra se e somente se aceita sua entrada. Vamos representar o problema da parada por Q(i,j) = Mi aceita xj? Como sabemos que P(i) = "Mi aceita xi?" indecidvel (veja a linguagem L acima), e sabemos que podemos reduzir P a Q, porque P(i) equivalente a Q(i, i), conclumos que o problema da parada Q indecidvel. Usualmente, a demonstrao de que um problema indecidvel , feita atravs de reduo, a partir do problema da parada, diretamente, ou ento, de forma indireta, a partir de problemas cuja indecidibilidade j foi provada anteriormente.

(junho 99)

Linguagens Formais J.L.Rangel 8-6

Vous aimerez peut-être aussi