A Máquina de Turing Universal Indecidibilidade SCC-505 - Capítulo 4 Máquinas de Turing e a Teoria da Computabilidade João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação - Universidade de São Paulo http://www.icmc.usp.br/~joaoluis 2012 João Luís G. Rosa c 2012 - SCC-505: IV. Máquinas de Turing e a Teoria da Computabilidade 1/49
50
Embed
SCC-505 - Capítulo 4 Máquinas de Turing e a Teoria da ...wiki.icmc.usp.br/images/7/73/SCC0505Cap4.pdf · A Máquina de Turing Universal Indecidibilidade SCC-505 - Capítulo 4 Máquinas
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
A Máquina de Turing UniversalIndecidibilidade
SCC-505 - Capítulo 4Máquinas de Turing e a
Teoria da Computabilidade
João Luís Garcia Rosa1
1Departamento de Ciências de ComputaçãoInstituto de Ciências Matemáticas e de Computação - Universidade de São Paulo
A Máquina de Turing e Funções Numéricas [4]A Tese de Church-TuringA Máquina Universal
Algoritmo
Um algoritmo1 é um conjunto finito de instruções que, seseguido, realiza uma determinada tarefa. Deve satisfazeros seguintes critérios [3]:
1 Entrada: Zero ou mais quantidades são supridas;2 Saída: No mínimo uma quantidade é produzida;3 Clareza: Cada instrução é clara e não ambígua;4 Finitude: Se o algoritmo for percorrido passo a passo
(trace), então em todos os casos, o algoritmo terminadepois de um número finito de passos;
5 Efetividade: Toda instrução deve ser muito básica, de talforma que possa ser realizada, em princípio, por umapessoa usando apenas lápis e papel. Não é suficiente quecada operação seja definida como no critério 3; elatambém tem de ser factível.
1A palavra “algoritmo” vem do nome de um matemático persa (825 d.C.), Abu Ja’far Mohammed ibn Musa al
A Máquina de Turing e Funções Numéricas [4]A Tese de Church-TuringA Máquina Universal
Funções Numéricas: Notação Unária
Sempre se pensou apenas nas máquinas de Turing comoaceitadores de linguagem.É também importante usar estas máquinas comodispositivos que computam funções numéricas, isto é, quemapeiam Nk → N.Pretende-se codificar o conjunto dos números naturais nanotação unária.Então o código para 0 é 1, o código para 1 é 11, 2 é 111, 3é 1111, etc.Escreve-se nu para simbolizar o n codificado em unário.
A Máquina de Turing e Funções Numéricas [4]A Tese de Church-TuringA Máquina Universal
Funções Numéricas: Notação Unária
Definição: Uma máquina de Turing M computa umafunção ϕ(k)
M de aridade k como se segue.Na entrada (n1, ...,nk ), n1, ...,nk são colocados na fita de Mem unário, separados por brancos simples.A cabeça de M é colocada sobre o 1 mais a esquerda denu
1 , e o controle de estados finitos de M é colocado em q0.Em outras palavras, M tem DI inicial
q0nu1Bnu
2B...Bnuk
Se e quando M terminar o processamento, os 1’s na fitasão contados e seu total é o valor de ϕ(k)
A Máquina de Turing e Funções Numéricas [4]A Tese de Church-TuringA Máquina Universal
A Tese de Church
Depois de meio século de estudos, achou-se que asfunções computáveis são invariantes ao longo de umagrande faixa de diferentes mecanismos de definição - cadasistema formal estudado foi mostrado computar ou todasas funções Turing-computáveis ou algum subconjuntodelas.Isto levou o lógico matemático americano Alonzo Church aformular a tese de Church:
todos os mecanismos de computação definem amesma classe de funções computáveis.
Um conceito familiar em ciência da computação é quequando um computador, M, for suficientemente de“propósito geral”, um programa escrito em qualquer outramáquina pode ser recodificado para fornecer um programapara M que computará a mesma função.
A Máquina de Turing e Funções Numéricas [4]A Tese de Church-TuringA Máquina Universal
O Resultado de Turing
Apresenta-se um resultado de 1936 devido ao matemáticoinglês A. M. Turing que antecipa o computador digital porquase uma década e ainda carrega a ideia inicial dasentença anterior: ou seja, que existe uma máquina deTuring U que é universal, no sentido de que ocomportamento de qualquer outra máquina M pode sercodificado como uma cadeia e(M) tal que U processaráqualquer cadeia da forma (e(M),w) da forma como wseria processado por M; diagramaticamente, significa
A Máquina de Turing e Funções Numéricas [4]A Tese de Church-TuringA Máquina Universal
A Máquina Universal
Suponha uma máquina com p cabeças percorrendo umaúnica fita na qual são impressos símbolos do alfabeto Σ′.A qualquer tempo a caixa de controle estará no estado qde Q e receberá como entrada os p símbolos percorridospelas suas cabeças, isto é, um elemento de (Σ′)p.A saída da unidade de controle é um elemento de((Σ′)p ×M) ∪ {pare}, onde M = I | I é uma instruçãopossível às cabeças para mover ao máximo a distância 1.Então, a máquina de Turing é especificada pelasquíntuplas
A Máquina de Turing e Funções Numéricas [4]A Tese de Church-TuringA Máquina Universal
A Máquina Universal
com a única diferença de que os x ’s e os I’s são “vetores,”e que se deve empregar uma convenção para resolverconflitos se duas cabeças tentam imprimir símbolosdiferentes num único “quadrado.”Uma computação de tal máquina começa com a atribuiçãode um estado à unidade de controle e a atribuição dasposições iniciais para as cabeças.Como de costume, é assumido que a fita tem no máximofinitamente muitos quadrados não brancos.Então a computação prossegue normalmente, parandoquando e apenas quando nenhuma quíntupla começandocom qixj é aplicável.
A Máquina de Turing e Funções Numéricas [4]A Tese de Church-TuringA Máquina Universal
Máquinas de Turing Multicabeças
Diz-se que uma cadeia w é aceita por uma máquina deTuring de 2 cabeças e 2 fitas se, quando w é escrita na fita1 e a cabeça 1 percorre o símbolo mais a esquerda de wno estado q0, e a fita 2 está inicialmente em branco, Mfinalmente para em seu estado de aceitação qa.
A Máquina de Turing e Funções Numéricas [4]A Tese de Church-TuringA Máquina Universal
Máquinas de Turing Não Determinísticas
Teorema: Seja L uma linguagem que possa serreconhecida por uma máquina de Turing de k cabeças e kfitas. Então L = T (M) para alguma máquina de Turing de1 cabeça e 1 fita.Definição: Uma máquina M é chamada de máquina deTuring não determinística se ela incluir quíntuplas queespecifiquem movimentos múltiplos para um dado parestado/símbolo, isto é, se ela é definida como na Definiçãode Máquina de Turing do capítulo 3, exceto que agora δmapeia Q × Σ′ a subconjuntos de Q × Σ′ × {L,S,R}.
A Máquina de Turing e Funções Numéricas [4]A Tese de Church-TuringA Máquina Universal
Máquinas de Turing Não Determinísticas
Diz-se que uma máquina de Turing não determinística Maceita uma cadeia w se existir alguma cadeia detransições da máquina na entrada w que alcança uma DIde parada que inclui o estado de aceitação qa.A definição de aceitação está de acordo com a definiçãode aceitação não determinística dada para aceitadores deestados finitos não determinísticos.O próximo resultado mostra que, assim como com osAFNs, o não determinismo não adiciona potênciacomputacional nova ao modelo determinístico original.(Isto não é verdadeiro para todas as máquinas que foramestudadas - autômatos de pilha não determinísticos(capítulo 2) são mais potentes que os autômatos de pilhadeterminísticos.)
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
Uma Linguagem que não é RE
É possível achar numa enumeração de máquinas deTuring a máquina Mi , a “i-ésima máquina de Turing”.Imagine que seu código binário seja wi .Muitos inteiros não correspondem a nenhuma máquina deTuring.Se wi não é um código de máquina de Turing válido, Miserá a máquina de Turing com um estado e nenhumatransição.Ou seja, Mi é uma máquina de Turing que para paraqualquer entrada.Portanto, T (Mi) é ∅ se wi falha ao ser um código de umamáquina de Turing válida.
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
Uma Linguagem que não é RE
Definição: A linguagem Ld , a linguagem dediagonalização, é o conjunto de cadeias wi tal que wi nãoestá em T (Mi).Ou seja, Ld consiste de todas as cadeias w tal que amáquina de Turing M cujo código é w não aceita quandorecebe w como entrada.A razão do nome linguagem de “diagonalização” pode serentendida através da figura 3.A tabela informa, para todo i (linha) e j (coluna), se amáquina de Turing Mi aceita a cadeia de entrada wj : 1significa “sim” e 0 significa “não”.Pode-se pensar na i-ésima linha como o vetorcaracterístico para a linguagem T (Mi); ou seja, os 1’snesta linha indicam as cadeias que são elementos destalinguagem.
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
Uma Linguagem que não é RE
Os valores na diagonal dizem se Mi aceita wi .Para construir a Ld , complementa-se a diagonal.Por exemplo, se a figura 3 for a tabela correta, então adiagonal complementada seria 1, 0, 0, 0, ...Portanto, Ld contém w1 = λ, não contém w2 a w4, que são0, 1 e 00, e assim por diante.O truque de complementar a diagonal para construir ovetor característico de uma linguagem que não pode ser alinguagem que aparece em nenhuma linha é chamado dediagonalização.
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
Uma Linguagem que não é RE
Isto funciona porque o complemento da diagonal é elepróprio um vetor característico que descreve a pertinênciaem alguma linguagem, a Ld .Este vetor característico discorda em alguma coluna comtoda linha da tabela.Portanto, o complemento da diagonal não pode ser o vetorcaracterístico de nenhuma máquina de Turing.Teorema: Ld não é uma linguagem recursivamenteenumerável (RE). Ou seja, não há nenhuma máquina deTuring que aceite Ld .
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
Uma Linguagem que não é RE
PROVA: Suponha que Ld seja T (M) para alguma máquinade Turing M. Como Ld é uma linguagem sobre o alfabeto{0,1}, M estaria na lista das máquinas de Turing, já queesta lista inclui todas as máquinas de Turing com alfabetode entrada {0,1}. Portanto, há pelo menos um código paraM, por exemplo, M = Mi . Agora será que wi está em Ld?
Se wi está em Ld , então Mi aceita wi . Mas então, peladefinição de Ld , wi não está em Ld , porque Ld contémapenas aqueles wj tal que Mj não aceita wj .Similarmente, se wi não está em Ld , então Mi não aceitawi . Portanto, por definição de Ld , wi está em Ld .
Como wi não pode estar e não estar em Ld ao mesmotempo, há uma contradição na suposição de que M existe.Ou seja, Ld não é uma linguagem recursivamenteenumerável. �
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
O Problema da Parada
Tendo demonstrado a potência e flexibilidade decomputação efetiva, como capturadas nas máquinas deTuring, mostrar-se-á agora que mesmo esta potência eflexibilidade têm limites.Uma questão muito prática para o cientista de computaçãoé: este programa processará dados da forma pretendida?Mesmo mais fundamental, talvez, do que determinar se ounão um programa está correto é dizer se ou não eleterminará, fornecendo a resposta correta.Reescrevendo a última questão em termos das máquinasde Turing, então, tem-se o seguinte:
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
O Problema da Parada
Definição
O Problema da Parada: Dada uma máquina de Turing Mn comsemântica ϕn e uma cadeia de dados w , ϕn(w) é definida? Istoé, Mn sempre para se iniciada no estado q0 percorrendo oquadrado mais a esquerda de w?
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
O Problema da Parada
Seria muito bom se fosse possível achar algum testadorde parada universal que, quando dado um número n euma cadeia w , poderia efetivamente dizer se ou não amáquina Mn sempre parará se sua entrada de dados for w .Entretanto, o teorema 32 dirá que tal máquina não existe.Antes de mostrar que nenhum procedimento efetivo poderesolver o problema da parada, veja por que oprocedimento óbvio falha.Vai-se pegar a máquina universal U e “rodá-la” na fita(e(Mn),w).Quando ela para, o controle é transferido para umasub-rotina que imprime um 1 para significar que acomputação de Mn em w parou realmente.
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
O Problema da Parada
Mas quando o controle pode ser transferido para umasub-rotina que imprime um 0 para significar que Mn nuncapara com os dados w?Depois de muitas simulações por U, é possível concluirque Mn nunca parará em w , ou que, depois de muitotempo, as computações pararão?Esta abordagem claramente falha.Mas para provar que todas as abordagens que tentamdecidir a terminação algoritmicamente necessariamentefalharão é tarefa bem menos óbvia, e para isso deve-seusar um argumento baseado no argumento diagonalusado por Cantor para mostrar que nenhuma enumeraçãopoderia incluir todos os números reais.
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
Argumento diagonal de Cantor
Figure : Uma ilustração do argumento diagonal de Cantor para aexistência de conjuntos incontáveis. A sequência final (Eu) não podeocorrer em nenhum outro lugar na listagem acima [7].
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
O Problema da Parada
CantorO matemático russo Georg Ferdinand Ludwig Philipp Cantorprovou que os números reais não são contáveis em 1874. Eleproduziu seu famoso “argumento diagonal” em 1890, que deuuma segunda prova, mais enfática e interessante, de que osnúmeros reais não são contáveis.
Para antever o estudo do problema da parada, primeiroserá fornecido um resultado que relaciona a enumeraçãodas máquinas de Turing com a discussão de funçõesnuméricas.Lembre-se que uma função Turing-computável ψ é total seela retorna uma saída para toda entrada.
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
O Problema da Parada
Teorema: Não existe nenhuma função Turing-computáveltotal g que enumera as funções Turing-computáveis totaisno seguinte sentido: a função Turing-computável ψ é totalse e somente se ψ for igual à função ϕg(n) computada porMg(n) para algum n.
Teorema: (A Insolubilidade do Problema da Parada).Considere a função pare : N→ N definida como:
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
O Problema da Parada
Antes de provar este resultado, far-se-á algumasobservações.
Primeiro, note que pare é uma função total com certeza.Ela tem um valor definido para toda entrada.O que se está tentando mostrar é que pare não écomputável: não existe nenhum método (formalmenteexpresso como uma máquina de Turing) para calcular osvalores de pare.Note também que o Teorema 32 é muito conservador.Apenas considera-se a não computabilidade de Turing.De fato, se a tese de Church estiver subscrita, pare não écomputável por nenhum algoritmo especificado emqualquer linguagem de programação.
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
O Problema da Parada
PROVA DO TEOREMA: Suponha que se construa umamatriz N× N, estabelecendo a entrada (i , j) para ↓ se acomputação de ϕi(j) termina, enquanto estabelece-se a ↑caso contrário. Para construir uma função ϕ não noconjunto de ϕ’s adota-se o argumento diagonal de Cantor:movendo para baixo na diagonal, “inverte-se as setas,”dando a ϕ(x) o comportamento da parada oposto a ϕx (x):
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
O Problema da Parada
Agora se pare for computável, existe certamente umamáquina de Turing que computa ϕ.Entretanto, o argumento diagonal garante que ϕ não écomputável, se ϕ for ϕj para algum j ter-se-ia ϕj(j) = 1 seϕj(j) =⊥ enquanto ϕj(j) =⊥ se ϕj(j) = 1 - umacontradição.Assim nenhum método de cálculo para pare pode existir. �
Portanto, exibiu-se um problema geral em ciência dacomputação, natural, interessante e valioso, que não temsolução algorítmica. (Este resultado é extremamentefundamental e está fortemente relacionado com oresultado famoso do lógico austríaco Kurt Gödel daincompletude das teorias formais da aritmética.)
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
Teorema da Incompletude de Gödel
Teorema da Incompletude de GödelO matemático alemão David Hilbert estabeleceu em 1900 queos matemáticos deveriam buscar expressar a matemática naforma de um sistema formal, consistente, completo e decidível.Em 1931, Gödel provou que o ideal de Hilbert era impossívelde satisfazer, mesmo no caso da aritmética simples. Esteresultado é conhecido como primeiro teorema da incompletudede Gödel. Mais tarde, em 1939, Turing e Church mostraramindependentemente que nenhum sistema formal consistenteda aritmética é decidível, nem mesmo a lógica de predicadosde primeira ordem, considerado mais fraco, é decidível [1].
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
Problemas Indecidíveis
Definição: Um conjunto S ⊂ N é decidível se apertinência em S pode ser determinada algoritmicamente.Isto é, S é decidível (ou recursivo ou solúvel) se a funçãocaracterística de S,
χS(x) =
{1 se x ∈ S0 se x /∈ S
é Turing-computável.Se S não é decidível, diz-se que S é indecidível, ouinsolúvel ou não recursivo ou, em casos que requer ênfaseconsiderável, recursivamente insolúvel.
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
Problemas Indecidíveis
Algumas linguagens não são decidíveis
Lembre-se da enumeração feita com as máquinas de Turing.Como existem incontáveis linguagens e somente um númerocontável de máquinas de Turing (enumeração), conclui-se quealgumas linguagens não são decidíveis por máquinas deTuring, nem mesmo reconhecidas por máquinas de Turing.
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
Problemas Indecidíveis
Tem-se um exemplo de um conjunto indecidível: oconjunto
K = { n | ϕn(n) retorna um valor }é recursivamente insolúvel. O próximo resultado mostracomo mapear a indecidibilidade de K na teoria dalinguagem.Definição: Seja G uma gramática do tipo 0 sobre algumalfabeto V ∪ Σ. O problema de dedução para G é oproblema de determinar, dadas as cadeias arbitrárias x , yem (V ∪ Σ)∗, se x ⇒∗ y em G.Teorema: O problema de dedução para gramáticas do tipo0 é indecidível.
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
Problemas Indecidíveis
Contrastando com o resultado anterior, tem-se o seguinte:Teorema: O problema de dedução para gramáticassensíveis ao contexto é decidível.Corolário: O problema de dedução para gramáticas livresde contexto é decidível.Definição: Dada uma classe de gramáticas C, oproblema de esvaziamento para C é o problema dedeterminar para G arbitrária em C, se a linguagem L(G) évazia.Teorema: O problema de esvaziamento para gramáticaslivres de contexto é decidível.
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
Linguagens Recursivas
Linguagens recursivamente enumeráveis (RE) são aceitas(reconhecidas) por máquinas de Turing.Linguagens RE podem ser agrupadas em duas classes:
1 Classe 1 (linguagens recursivas): cada linguagem Lnesta classe tem uma máquina de Turing (pensada comoum algoritmo) que não apenas aceita cadeias de L, comotambém indica quais cadeias não estão em L através daparada.
2 Classe 2 (RE mas não recursivas): cada linguagem Lnesta classe tem uma máquina de Turing (não pensadacomo um algoritmo) que aceita cadeias de L, mas podenão parar quando uma cadeia de entrada não está em L.
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
Linguagens Recursivas
Definição: Formalmente, uma linguagem L é recursiva seL = T (M) para alguma máquina de Turing M tal que:
1 Se w ∈ L, então M aceita (e portanto para no estado deaceitação).
2 Se w /∈ L, então M rejeita (para num estado de nãoaceitação).
Uma máquina de Turing deste tipo corresponde à noçãoformal de algoritmo.Uma dada linguagem L, pensada como um problema, échamada de decidível se L é uma linguagem recursiva; eindecidível caso contrário.A existência ou não existência de um algoritmo pararesolver o problema (isto é, o problema é decidível ouindecidível) é mais importante do que a existência de umamáquina de Turing para resolver o problema.
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
Decidibilidade e Aceitabilidade
Decidibilidade e AceitabilidadeA noção de decidibilidade é mais restrita que a deaceitabilidade (ser reconhecível), uma vez que neste últimocaso, é permitido que a máquina de Turing nunca pare.
A Linguagem de DiagonalizaçãoO Problema da ParadaProblemas Indecidíveis
A Linguagem Universal
Definição: A linguagem universal Lu é o conjunto decadeias binárias, que codificam um par (M,w), onde M éuma máquina de Turing com o alfabeto de entrada binárioe w é uma cadeia em (0 + 1)∗, tal que w está em T (M).Ou seja, Lu é o conjunto de cadeias que representam umamáquina de Turing e uma entrada aceita por esta máquinade Turing. A máquina de Turing universal U processaLu, ou seja, Lu = T (U).Lu não é recursiva, apesar de ser uma linguagem RE.
[4] Moll, R. N., Arbib, M. A., and Kfoury, A. J.An Introduction to Formal Language Theory.Springer-Verlag, 1988.
[5] Rosa, J. L. G.Linguagens Formais e Autômatos.Editora LTC. Rio de Janeiro, 2010.
[6] Turing, A.M.On Computable Numbers, with an Application to theEntscheidungsproblem.Proceedings of the London Mathematical Society, 2 42:230-65, 1937.