. . . . Similarmente, os problemas de se testar se a linguagem de uma m´aquina de Tu-ring ´e uma linguagem livre-do-contexto, uma linguagem decid´ıvel, ou mesmo uma linguagem finita, podem ser mostrados serem indecid´ıveis com provas semelhantes.
Na verdade, um resultado geral, chamado Teorema de Rice, enuncia que testar qual-quer propriedade das linguagens reconhecidas por m´aquinas de Turing ´e indecid´ıvel.
Damos o Teorema de Rice no Problema 5.22.
At´e agora, nossa estrat´egia para provar que linguagens s˜ao indecid´ıveis envolve uma reduc¸˜ao a partir de . `As vezes reduzir a partir de alguma outra linguagem indecid´ıvel, tal como , ´e mais conveniente quando estamos mostrando que certas linguagens s˜ao indecid´ıveis. O teorema a seguir mostra que testar a equivalˆencia de duas m´aquinas de Turing ´e um problema indecid´ıvel. Poder´ıamos prov´a-lo por uma reduc¸˜ao a partir de , mas usamos essa oportunidade para dar um exemplo de uma prova de indecidibilidade por reduc¸˜ao a partir de . Seja
e s˜aoMT’s e
Teorema 5.4 . . . .
´e indecid´ıvel.
. . . . Id´eia da prova. Mostre que, se fosse decid´ıvel, tamb´em seria decid´ıvel, dando uma reduc¸˜ao de para . A id´eia ´e simples. ´e o problema de se testar se a linguagem de umaMT´e vazia. ´e o problema de se testar se as linguagens de duasMT’s s˜ao a mesma. Se uma dessas linguagens acontece de ser* , acabamos com o problema de se testar se a linguagem da outra m´aquina ´e vazia, ou seja, o problema . Portanto, em um certo sentido, o problema ´e um caso especial do problema no qual uma das m´aquinas est´a fixada para reconhecer a linguagem vazia. Essa id´eia faz com que dar a reduc¸˜ao fique f´acil.
Prova. Supomos que aMT decida e construimos aMT" para decidir da seguinte maneira.
"
“Sobre a entrada , onde ´e umaMT:
1. Roder sobre a entrada
, onde ´e uma MTque rejeita todas as entradas.
2. Se aceita, aceite; se rejeita, rejeite.”
Se decide ,
"
decide . Mas ´e indecid´ıvel pelo Teorema 5.2, portanto tamb´em tem que ser indecid´ıvel.
. . . .
A hist´oria de computac¸˜ao para uma m´aquina de Turing sobre uma entrada ´e sim-plesmente a seq¨uˆencia de configurac¸˜oes pelas quais que a m´aquina passa quando ela processa a entrada. ´E um registro completo da computac¸˜ao dessa m´aquina.
Definic¸˜ao 5.5 . . . . Seja uma m´aquina de Turing e uma cadeia de entrada. Uma hist ´oria de computac¸˜ao de aceitac¸˜ao para sobre ´e uma seq¨uˆencia de configurac¸˜oes
, onde
´e a configurac¸˜ao inicial de sobre , ´e uma configurac¸˜ao de aceitac¸˜ao de , e cada
"
legitimamente segue de
" conforme as regras de . Uma hist ´oria de computac¸˜ao de rejeic¸˜ao para sobre ´e definida similarmente, exceto que ´e uma configurac¸˜ao de rejeic¸˜ao.
Hist´orias de computac¸˜ao s˜ao seq¨uˆencias finitas. Se n˜ao p´ara sobre , nenhuma hist´oria de computac¸˜ao de aceitac¸˜ao ou de rejeic¸˜ao existe para sobre . M´aquinas determin´ısticas tˆem no m´aximo uma hist´oria de computac¸˜ao sobre qualquer entrada.
M´aquinas n˜ao-determin´ısticas podem ter muitas hist´orias de computac¸˜ao sobre uma
´unica entrada, correspondendo aos v´arios ramos da computac¸˜ao. Por enquanto, conti-nuamos a nos concentrar em m´aquinas determin´ısticas. Nossa primeira prova de inde-cidibilidade usando o m´etodo da hist´oria de computac¸˜ao concerne um tipo de m´aquina chamada autˆomato linearmente limitado.
Definic¸˜ao 5.6 . . . . Um autˆomato linearmente limitado ´e um tipo restrito de m´aquina de Turing no qual a cabec¸a da fita n˜ao pode mover para fora da parte da fita contendo a entrada. Se a ´maquina tentar mover sua cabec¸a para fora de qualquer uma das extremidades da entrada, a cabec¸a permanece onde est´a, da mesma maneira que a cabec¸a n˜ao mover´a para fora da extremidade esquerda da fita de uma m´aquina de Turing comum.
Um autˆomato linearmente limitado ´e uma m´aquina de Turing com uma quantidade limitada de mem´oria, como mostrado esquematicamente na Figura 5.1. Ele pode re-solver somente problemas que requerem mem´oria que pode caber dentro da fita usada para a entrada. Usando um alfabeto de fita maior que o alfabeto de entrada permite a mem´oria dispon´ıvel a ser aumentada de at´e um fator constante. Da´ı dizemos que para uma entrada de comprimento , a quantidade de mem´oria ´e linear em —da´ı o nome desse modelo.
Figura 5.1: Esquema de um autˆomato linearmente limitado
A despeito de sua restric¸˜ao de mem´oria, autˆomatos linearmente limitados s˜ao bas-tante poderosos. Por exemplo, os decisores para , , , e todos s˜ao ALL’s. TodaLLCpode ser decidida por umALL. Na verdade, chegar a uma linguagem decid´ıvel que n˜ao pode ser decidida por umALLd´a algum trabalho. Desenvolvemos as t´ecnicas para fazer isso no Cap´ıtulo 9.
Aqui, ´e o problema de se testar se umALLaceita sua entrada. Muito embora
seja o mesmo que o problema indecid´ıvel onde a m´aquina de Turing ´e restrita a ser umALLm podemos mostrar que ´e decid´ıvel. Seja
´e umALLque aceita a cadeia
Antes de provar a decidibilidade de , achamos que o lema a seguir ´e ´util. Ele diz que umALLpode ter somente um n´umero limitado de configurac¸˜oes quando uma cadeia de comprimento ´e a entrada.
Lema 5.7 . . . . Seja umALLcom estados e s´ımbolos no alfabeto de s´ımbolo. Existem exata-mente configurac¸˜oes distintas de para uma fita de comprimento .
Prova. Lembremo-nos de que uma configurac¸˜ao de ´e como um retrato instantˆaneo no meio de sua computac¸˜ao. Uma configurac¸˜ao consiste do estado do controle, posic¸˜ao da cabec¸a, e conte´udo da fita. Aqui, tem estados. O comprimento de sua fita ´e , portanto a cabec¸a pode estar em uma das posic¸˜oes, e poss´ıveis cadeias de s´ımbolos de fita aparecem na fita. O produto dessas trˆes quantidades ´e o n´umero total de diferentes configurac¸˜oes de com uma fita de comprimento .
. . . . Teorema 5.8 . . . .
´e decid´ıvel.
. . . . Id´eia da prova. De modo a decidir se oALL aceita a entrada , simulamos sobre
. No decorrer da simulac¸˜ao, se p´ara e aceita ou rejeita, aceitamos ou rejeitamos conformemente. A dificuldade ocorre se entra em loop sobre . Precisamos de ser capazes de detectar a entrada em loop de modo que possamos parar e rejeitar.
A id´eia para detectar quando est´a em loop ´e que, `a medida que computa sobre , ela continua a repetir essa configurac¸˜ao muitas e muitas vezes e por conse-guinte est´a em loop. Devido ao fato de ´e umALL, a quantidade de fita que lhe ´e dispon´ıvel ´e limitada. Pelo Lema 5,7, pode estar em somente um n´umero limitado de configurac¸˜oes sobre essa quantidade de fita. Portanto somente uma quantidade limi-tada de tempo est´a dispon´ıvel a antes que ela entre em alguma configurac¸˜ao em que ela tenha entrado anteriormente. Detectar que est´a em loop ´e poss´ıvel simulando
para o n´umero de passos dado pelo Lema 5.7. se n˜ao parou at´e a´ı, ela tem que estar em loop.
Prova. O algoritmo que decide ´e o seguinte.
“Sobre a entrada
, onde ´e umALLe ´e uma cadeia:
1. Simule sobre por passos ou at´e que ela p´are.
2. Se parou, aceite se ela aceitou e rejeite se ela rejeitou. Se ela n˜ao parou, rejeite.”
Se sobre n˜ao parou dentro de passos, ela tem que estar repetindo uma configurac¸˜ao de acordo com o Lema 5.7 e portanto em loop. ´E por isso que nosso algoritmo rejeita nessa instˆancia.
. . . . O Teorema 5.8 mostra queALL’s eMT’s diferem de uma maneira essencial: Para ALL’s o problema da aceitac¸˜ao ´e decid´ıvel, mas paraMT’s n˜ao o ´e. Entretanto, alguns outros problemas envolvendoALL’s permanecem indecid´ıveis. Uma ´e o problema da vacuidade
´e umALLonde
*
. Para provar que ´e indecid´ıvel, damos uma reduc¸˜ao que usa o m´etodo da hist´oria de computac¸˜ao.
Teorema 5.9 . . . .
´e indecid´ıvel.
. . . . Id´eia da prova. Esta prova ´e por reduc¸˜ao a partir de . Mostramos que, se fosse decid´ıvel, tamb´em seria. Suponha que seja decid´ıvel. Como podemos usar essa suposic¸˜ao para decidir ?
Para umaMT e uma entrada podemos determinar se aceita construindo um certoALL e a´ı testar se
´e vazia. A linguagem que reconhece compreende todas as hist´orias de computac¸˜ao para sobre . Se aceita , essa linguagem cont´em uma cadeia e portanto ´e n˜ao-vazia. Se n˜ao aceita , essa linguagem ´e vazia.
Se podemos determinar se a linguagem de ´e vazia, claramente podemos determinar se aceita .
Agora descrevemos como construir partir de e . Note que precisamos mos-trar mais que a mera existˆencia de . Temos que mostrar como uma m´aquina de Turing pode obter uma descric¸˜ao de dadas as descric¸˜oes de e .
Construimos para aceitar sua entrada
se
´e uma hist´oria de computac¸˜ao de aceitac¸˜ao para sobre . Relembremo-nos que uma hist´oria de computac¸˜ao de aceitac¸˜ao ´e a seq¨uˆencia de configurac¸˜oes,
pela qual passa quando ela aceita alguma cadeia . Para os prop´ositos desta prova assumimos que a hist´oria de computac¸˜ao de aceitac¸˜ao ´e apresentada como uma ´unica cadeia, com as configurac¸˜oes separadas uma da outra pelo s´ımbolo #, como mostrado na Figura 5.2.
#
( )& '
#
( )& '
#
( ) & '
# #
( ) & '
#
Figura 5.2: Uma poss´ıvel entrada para
O ALL funciona da seguinte maneira. Quando ele recebe uma entrada
, supostamente aceita
se
´e uma computac¸˜ao de aceitac¸˜ao para sobre . Primeiro,
quebra
conforme os delimitadores em cadeias
. Ent˜ao verifica se a
"
satisfaz as trˆes condic¸˜oes de uma hist´oria de computac¸˜ao:
1. ´e uma configurac¸˜ao inicial para sobre . 2. Cada
" legimitamente segue de
"
. 3. ´e uma configurac¸˜ao de aceitac¸˜ao para .
A configurac¸˜ao inicial para sobre ´e a cadeia , , onde ´e o estado inicial para sobre . Aqui, tem essa cadeia diretamente embutida, de modo que ela seja capaz de verificar a primeira condic¸˜ao. Uma configurac¸˜ao de aceitac¸˜ao ´e uma que cont´em o estado , portanto pode verificar a terceira condic¸˜ao fazendo uma varredura em por . A segunda condic¸˜ao ´e a mais dif´ıcil de verificar. Para cada par de configurac¸˜oes adjacentes, verifica se
"
legitimamente segue de
"
. Esse passo envolve verificar que
"
e
"
s˜ao idˆenticas exceto pelas posic¸˜oes sob e adjacente `a cabec¸a en
"
. Essas posic¸˜oes tˆem que ser atualizadas conforme a func¸˜ao
de transic¸˜ao de . Ent˜ao, verifica que a atualizac¸˜ao foi feita corretamente fazendo um zigue-zague entre posic¸˜oes correspondentes de
"
e
"
. Para manter o registro das posic¸˜oes correntes enquanto faz o zigue-zague, marca a posic¸˜ao corrente com pontos sobre a fita. Finalmente, se as condic¸˜oes 1, 2, e 3 s˜ao satisfeitas, aceita sua entrada.
Note que oALL n ˜ao ´e constru´ıdo para os prop´ositos de verdadeiramente rod´a-lo sobre alguma entrada—uma confus˜ao comum. Construimos somente para o prop´osito de alimentar uma descric¸˜ao de num decisor para que assumimos existir. Uma vez que esse decisor retorna sua resposta podemos invertˆe-la para obter a resposta se aceita . Por conseguinte podemos decidie , uma contradic¸˜ao.
Prova. Agora estamos prontos para enunciar a reduc¸˜ao de para . Suponha que aMT decida . Construa aMT
"
que decide da seguinte forma.
"
“Sobre a entrada
, onde ´e umaMTe ´e uma cadeia:
1. Construa oALL a partir de e conforme descrito na id´eia da prova.
2. Rode sobre a entrada .
3. Se rejeita, aceite; se aceita, rejeite.”
Figura 5.3: OALL verificando uma hist´oria de computac¸˜ao de umaMT
Se aceita , ent˜ao
* . Por conseguinte n˜ao tem hist´oria de computac¸˜ao de aceitac¸˜ao sobre e n˜ao aceita . Consequentemente
"
rejeita
. Similarmente se rejeita , a linguagem de ´e n˜ao-vazia. A ´unica cadeia que pode aceitar ´e uma hist´oria de computac¸˜ao de aceitac¸˜ao para sobre . Por-tanto tem que aceitar . Consequentemente,
"
aceita
. A Figura 5.3 mostra tal verificac¸˜ao de uma hist´oria de computac¸˜ao de umaMT.
. . . . Podemos tamb´em usar a t´ecnica de reduc¸˜ao via hist´orias de computac¸˜ao para es-tabelecer a indecidibilidade de certos problemas relacionados a gram´aticas livres-do-contexto e autˆomatos a pilha. Relembremo-nos de que no Teorema 4.7 apresentamos um algoritmo para decidir se uma gram´atica livre-do-contexto gera alguma cadeia, ou seja, se
* . Agora mostramos que um problema relacionado ´e indecid´ıvel.
E o problema de se testar se uma gram´atica livre-do-contexto gera todas as cadeias´ poss´ıveis. Provar que esse problema ´e indecid´ıvel ´e o passo principal na demostrac¸˜ao de que o problema da equivalˆencia para gram´aticas livres-do-contexto ´e indecid´ıvel.
Seja
"
´e umaGLCe
Teorema 5.10 . . . .
"
´e indecid´ıvel.
Prova. Esta prova ´e por contradic¸˜ao. Para obter a contradic¸˜ao assumimos que
"
´e decid´ıvel e usamos essa suposic¸˜ao para mostrar que ´e decid´ıvel. Esta prova ´e se-melhante `aquela do Teorema 5.9 mas com um pequeno truque extra: Ela ´e uma reduc¸˜ao de via hist´orias de computac¸˜ao, mas temos que modificar a representac¸˜ao das hist´orias de computac¸˜ao levemente por uma raz˜ao t´ecnica que explicamos mais adi-ante.
Agora descrevemos como usar um procedimento de decis˜ao para
"
para
decidir . Para umaMT e uma entrada construimos umaGLC que gera todas as cadeias se e somente se n˜ao aceita . Portanto, se n˜ao aceita , n ˜ao gera alguma cadeia espec´ıfica. Essa cadeia ´e—adivinhe—a hist´oria de computac¸˜ao de aceitac¸˜ao para sobre . Ou seja, ´e projetada para gerar todas as cadeias que n ˜ao s˜ao hist´orias de computac¸˜ao de aceitac¸˜ao para sobre .
Para fazer a GLC gerar todas as cadeias que falhem em ser uma hist´oria de computac¸˜ao de aceitac¸˜ao para sobre , utilizamos a seguinte estrat´egia. Uma cadeia pode falhar em ser uma hist´oria de computac¸˜ao de aceitac¸˜ao por v´arias raz˜oes. Uma hist´oria de computac¸˜ao de aceitac¸˜ao para sobre aparece como # # # # #, onde
"
´e a hist´oria de computac¸˜ao para no
.
-´esimo passo da computac¸˜ao sobre . Ent˜ao gera todas as cadeias que
1. n˜ao comec¸am com ,
2. n˜ao terminam com uma configurac¸˜ao de aceitac¸˜ao, ou 3. onde algum
"
n˜ao leva corretamente a
"
sob as regras de .
Se n˜ao aceita , nehuma hist´oria de computac¸˜ao de aceitac¸˜ao existe, portanto todas as cadeias falham de uma maneira ou de outra. Por conseguinte geraria todas as cadeias, como desejado.
Agora vamos `a verdadeira construc¸˜ao de . Ao inv´es de construir , construimos umAP . Sabemos que podemos usar a construc¸˜ao dada no Teorema 2.12 na p´agina 106 para converter para umaGLC. Fazemos isso porque, para nossos prop´ositos, projetar umAP´e mais f´acil que projetar umaGLC. Nesta instˆancia, comec¸ar´a ra-mificando n˜ao-deterministicamente para adivinhar qual das trˆes condic¸˜oes anteriores verificar. Um ramo verifica se o comec¸o da cadeia de entrada ´e e aceita se n˜ao o ´e.
Um outro ramo verifica se a cadeia de entrada termina com uma configurac¸˜ao contendo o estado de aceitac¸˜ao, , aceita se n˜ao o ´e.
O terceiro ramo dever´a aceitar se alguma
"
n˜ao leva corretamente a
"
. Ele funciona fazendo uma varredura na entrada at´e que ele n˜ao-deterministicamente decide que ela veio para
"
. A seguir, ele empilha
"
at´e que ele chega no final marcado pelo s´ımbolo #. Ent˜ao, desempilha para comparar com
" . Elas deveriam casar exceto em torno da posic¸˜ao da cabec¸a onde a diferenc¸a ´e ditada pela func¸˜ao de transic¸˜ao de
. Finalmente, aceita se ´e descasamento ou uma atualizac¸˜ao incorreta.
O problema com essa id´eia ´e que, quando desempilha
"
, ela est´a na ordem reversa e n˜ao est´a adequada para comparac¸˜ao com
"
. Nesse ponto o truque na prova aparece: Escrevemos uma hist´oria de computac¸˜ao de aceitac¸˜ao diferentemente.
Alternadamente, uma em cada configurac¸˜ao aparece na ordem reversa. As posic¸˜oes
´ımpares permanecem escritas na ordem de-tr´as-para-a-frente, mas as posic¸˜oes pares s˜ao escritas de-frente-para-tr´as. Por conseguinte uma hist´oria de computac¸˜ao de aceitac¸˜ao apareceria como mostrado na Figura 5.4.
#
&
( ) & '
#
&
( )& '
#
&
( ) & '
#
&
( )& '
# , #
&
( ) & '
#
Figura 5.4: Alternadamente, uma em cada duas configurac¸˜oes escritas em ordem revers Nessa forma modificada oAP´e capaz de empilhar uma configurac¸˜ao de modo que quando ela ´e desempilhada a ordem est´a adequada para comparac¸˜ao com a pr´oxima.
Projetamos para aceitar qualquer cadeia que n˜ao ´e uma hist´oria de computac¸˜ao de aceitac¸˜ao na forma modificada.
5.2 Um problema indecid´ıvel simples . . . .
Nesta sec¸˜ao mostramos que o fenˆomeno da indecidibilidade n˜ao est´a confinado a pro-blemas concernentes a autˆomatos. Damos um exemplo de um problema indecid´ıvel concernente a simples manipulac¸˜oes de cadeias. ´E chamado o problema da corres-pondˆencia de Post, ou PCP.
Podemos descrever esse problema facilmente como um tipo de charada. Comec¸amos com uma colec¸˜ao de domin´os, cada um combinando duas cadeias, uma em cada lado.
Um domin´o individual tem a seguinte aparˆencia a ab e uma colec¸˜ao de domin´os ´e da forma
b ca
a
ab
ca
a
abc c
O trabalho ´e fazer uma lista desses domin´os (repetic¸˜oes permitidas) de modo que a cadeia que obtemos lendo os s´ımbolos em cima ´e a mesma que a cadeia de s´ımbolos embaixo. Essa lista ´e chamada um emparelhamento. Por exemplo, a seguinte lista ´e um emparelhamento para essa charada.
a ab
b ca
ca a
a ab
abc c
Lendo a cadeia de cima obtemosabcaaabc, que ´e a mesma ao ler a de baixo. Pode-mos ilustrar esse emparelhamento deformando os domin´os de modo que os s´ımbolos correspondentes de cima e de baixo se alinham.
Para algumas colec¸˜oes de domin´os encontrar um emparelhamento pode n˜ao ser poss´ıvel. Por exemplo, a colec¸˜ao
abc ab
ca
a
acc
ba
n˜ao pode conter um emparelhamento porque toda cadeia de cima ´e maior que a cadeia de baixo correspondente.
O problema da correspondˆencia de Post ´e determinar se uma colec¸˜ao de domin´os tem um emparelhamento. Esse problema ´e insol´uvel por algoritmos.
Antes de chegar ao enunciado formal desse teorema e sua prova, vamos enunciar o problema precisamente e ent˜ao express´a-lo como uma linguagem. Uma instˆancia do PCP ´e uma colec¸˜ao de domin´os
e um emparelhamento ´e uma seq¨uˆencia
. .
.
, onde
" "
"
" "
,
"
. O problema ´e determinar se tem um emparelhamento. Seja
´e uma instˆancia do problema da correspondˆencia de Post com um emparelhamento
.
Teorema 5.11 . . . .
´e indecid´ıvel.
. . . . Id´eia da prova. Conceitualmente esta prova ´e simples, embora tenha muitos detalhes t´ecnicos. A t´ecnica principal ´e reduc¸˜ao a partir de via hist´orias de computac¸˜ao de aceitac¸˜ao. Mostramos que de qualquerMT e entrada podemos construir uma instˆancia onde um emparelhamento ´e uma hist´oria de computac¸˜ao de aceitac¸˜ao para sobre . Se pud´essemos determinar se a instˆancia tem um emparelhamento, ser´ıamos capazes de determinar se aceita .
Como podemos construir de modo que o emparelhamento seja uma hist´oria de computac¸˜ao de aceitac¸˜ao para sobre ? Escolhemos os domin´os em de modo que fazer um emparelhamento forc¸a que uma simulac¸˜ao de ocorra. No empare-lhamento, cada domin´o liga uma posic¸˜ao ou posic¸˜oes em uma configurac¸˜ao com a(s) correspondente(s) na pr´oxima configurac¸˜ao.
Antes de chegar `a construc¸˜ao tratamos dois pequenos detalhes t´ecnicos. (N˜ao se preocupe demais com eles na sua primeira leitura dessa construc¸˜ao.) Primeiro, por con-veniˆencia em construir , assumimos que sobre nunca tenta mover sua cabec¸a para fora da extremidade esquerda da fita. Isso requer primeiro alterar para evitar esse comportamento. Segundo, modificamos o PCP para requerer que um emparelha-mento comece com o primeiro domin´o
Mais adiante mostramos como eliminar esse requisito. Chamamos esse problema o problema da correspondˆencia de Post modificado, PCPM. Seja
´e uma instˆancia do problema da correspondˆencia de Post com um emparelhamento que comec¸a com o primeiro domin´o
. Agora vamos aos detalhes da prova e projetar para simular sobre .
Prova. Supomos que aMT decide o PCP e construimos
"
que decide . Seja