Máquina de Turing e Computabilidade •Máquinas de Turing são os autômatos mais potentes que estudaremos. •Elas podem computar qualquer função computável; •Há até quem acredite que tudo que é efetivamente computável é computável por uma MT. Outras noções de computabilidade • - cálculo (Church 1933); • Funções - recusivas (Gödel 1936); • Combinadores lógicos (Schönfinkel 1924, Curry 1929); • Sistema de Post (Post 1943); • Máquiinas de Turing (Turing 1936-7). Tese de Church-Turing Todos os sistemas acima captam a noção de computável. SIMULAÇÃO UNIVERSAL OU PROGRAMAS COMO DADOS. Máquina de Turing (Descrição Informal) ├ a b b a b a ■ ■ ■ ■ ambos sentidos, lê/escreve Q ... Máquina de Turing: •conjunto finito de estados Q; •uma fita semi-infinita, isto é, ela é delimitada à esquerda pelo símbolo ├ e infinita a direita; •o cabeçote da fita pode se mover para a direita e para esquerda da fita e pode escrever símbolos sobre a fita; •a entrada da fita é de tamanho finito e inicialmente está logo após o ├ (à direita); •as infinitas células a direita da cadeia de entrada todas também contém o símbolo especial nulo ■; •funcionamento começa no estado inicial S e o cabeçote sobre ├; •a cada passo a MT lê o símbolo sobre o cabeçote, e dependendo deste símbolo e do estado corrente, escreve um novo símbolo nesta célula, move o cabeçote para a direita ou para a esquerda e entra num novo estado (função de transição ); •a MT aceita a cadeia de entrada indo para um estado especial t e rejeita indo para um estado especial r; •para algumas cadeias de entrada a MT pode funcionar infinitamente sem nunca aceitá-la ou rejeitá-la. Uma Máquina de Turing é uma 9-tupla M = (Q,,,■,├,,s,t,r) onde: •Q é o conjunto finito de estados; • é o alfabeto de entrada (finito); • é o alfabeto da fita contendo como um subconjunto (finito) •u \ , símbolo nulo; •├ \ , delimitador à esquerda •: Qx Qxx{L,R}, função de transição •sQ, estado inicial •tQ, estado de aceitação •rQ, estado de rejeição Restrições: • Nunca escrever sobre├ e nunca se mover para fora da fita à esquerda. – Para todo pQ existe um qQ tal que (p,├) = (q,├,R) • Uma vez que a TM entra no estado de aceitação/rejeição ela nunca sai. – Para todo b existe c,c’ e d,d’{L,R} tal que (t,b) = (t,c,d) (r,b) = (r,c’,d’) EXEMPLO: MT que aceita { anbncn / n 0}. Informalmente: •A MTcomeça no estado inicial S, varre a entrada a direita, checando se é da forma a*b*c*. •Ela não escreve no seu caminho (formalmente ela escreve o que leu). •Até encontrar o primeiro ■, daí troca este símbolo por um delimitador à direita . •Agora a MT varre a fita a esquerda apagando o primeiro c que encontra, então o primeiro b e também o primeiro a. •A MT varre a direita apagando um a, um b, e um c. •A MT continua indo da direita para esquerda (e vice-versa) apagando uma ocorrência de cada letra a cada passo. • Se em algum passo ela encontra uma ocorrência de um símbolo e nenhuma de outra, ela rejeita a cadeia. • Senão, ela vai apagar todas as letras e no passo final terá somente nulos entre├ e , neste ponto a MT aceita a cadeia. Formalmente: Q={s,q1,…,q10,t,r} ={a,b,c} ={,■,} Função de transição: S q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 ├ a (S,├,R) (S,a,R) _ (r, _ , _ ) _ (r, _ , _ ) (t, _ , _ ) (r, _ , _ ) (r, _ , _ ) (r, _ , _ ) (r, _ , _ ) (q6,■,L) (q7,├,R) (q6,a,L) _ (q8,■,R) _ (q8,a,R) _ _ _ _ b (q1,b,R) (q1,b,R) (r, _ , _ ) (r, _ , _ ) (q5,■,L) (q5,b,L) _ (r, _ , _ ) (q9,■,R) (q9,b,R) _ c (r, _ , _ ) (q2,c,R) (q2,c,R) (q4,■, L) (q4,c,L) _ _ (r, _ ,_ ) (r, _ , _ ) (q10,■,R) (q10,c,R) ■ (q3,,L) _ (r, _ , _ ) _ (q3,,L) _ (q3,■,L) _ (q4,■,L ) _ (q5,■,L) _ (q6,■,L) _ (q7,■,R) (t, _ _ ) (q8,■,R) (r, _ , _ ) (q9,■,R) (r , _, _ ) (q10,■,R) (q3,,L) •Configuração inicial (S,├ x■,o) •■ representa um número infinito de ■’s •0 significa que a máquina está varrendo o delimitador ├ •Uma MT aceita uma cadeia de entrada x* se (S,├ x■,0) * (t,y,n) para algum y e n e •rejeita se (S,├ x■,0)*(r,y,n) para algum y e n. •M pára para uma entrada x se ela aceita x ou rejeita x. M pode ficar rodando infinitamente com a entrada x. •O conjunto L(M) representa o conjunto de todas as cadeias aceitas por M. • Um conjunto de cadeias é Recursivamente Enumerável (RE) se é L(M) para alguma máquina de Turing M, e • Recursivo se é L(M) para alguma máquina de Turing M que pára em todas as entradas. Máquinas de Turing com múltiplas fitas •Fitas extras não adicionam poder computacional ├ a a b b b a ■ ■ ■ ... ├ b b a b b a a ■ ■ ... ├ a b b a b a a ■ ■ ... Q •Uma MT com 3 fitas é similar a MT com uma fita exceto que a de 3 fitas tem as 3 fitas e 3 cabeçotes de leitura. •Em cada passo a máquina lê os três símbolos sobre seus cabeçotes, e baseada nesta informação e no estado corrente, ela imprime um símbolo em cada fita, move os cabeçotes (eles não precisam se mover na mesma direção) e entra num novo estado. • A função de transição é do tipo : Q x 3 Q x 3 x {L,R}3 • Chamemos a MT com 3 fitas de M. Podemos construir uma máquina de Turing com uma fita N que simula M (EXERCÏCIO). •Máquinas de Turing infinita dos dois lados. •Infinitude para ambos os lados não adiciona poder computacional. ... a b a a b a a b b a a ... ├ a b b a a ... a b a a b ... quebre aqui • Podemos quebrar a fita original em qualquer lugar e simular a MT em uma outra MT infinita só a direita com duas fitas. • A fita de cima é usada para simular a MT original quando seu cabeçote está a direita da quebra, e a trilha de cima é usada para simular a MT original quando seu cabeçote está a esquerda da quebra, movendo-se na direção oposta. EXERCÍCIOS 1. Construir uma gramática livre de contexto para a linguagem formada pelo conjunto de cadeias sobre {a,b} que não são Palindromes. Mostre que sua gramática está correta. 2. Construa uma gramática na forma Normal de Chomsky para o conjunto não vazio de cadeias com o número balanceado de parênteses ( ) e colchetes [ ]. 3. Descreva a MT N com uma fita que simula M com três fitas (veja notas de aula). Gramáticas Tipo 0 ( Sem Restrição) G = (V,T,P ,S) onde as produções de P tem a forma com e sendo cadeias arbitrárias de símbolos da gramática e . quando P. L(G) = {W| W T* e S * W} EXEMPLO: A gramática geradora de {ai |i é uma potência positiva de 2} 1)SACaB 2)CaaaC 3)CBDB 4)CBE 5)aDDa 6)ADAC 7)aEEa 8)AE • A e B são delimitadores a direita e a esquerda das formas sentenciais. •C é um marcador que se move entre A e B duplicando o número de a’s pela produção 2. •Quando C alcança o delimitador a direita B ele se transforma em D ou E pelas produções 3 ou 4. •Se D é escolhido ele migra pela produção S até chegar ao delimitador A. • Neste ponto D se transforma em C pela produção 6 e o processo começa novamente. Se E é escolhido, o delimitador a direita é consumido. E migra para a esquerda pela produção 7 e consome o delimitador a esquerda, resultando em uma cadeia de 2i a’s para i > 0. Equivalência entre Gramáticas Tipo 0 e Máquinas de Turing TEOREMA: Se L é L(G) para uma gramática tipo 0 G=(V,T,P ,S), então L é uma linguagem recursivamente enumerável. PROVA: •Construiremos uma máquina de Turing não-determinística com duas fitas M para reconhecer L. •A primeira fita é uma fita de entrada, onde a cadeia W será colocada. •A segunda fita é usada para armazenar a forma sentencial de G. M inicializa com S. Então M repetidamente faz: 1)seleciona, não deterministicamente, uma posição i em , 1 i | |. Isto é, começa na esquerda e repetidamente se move para direita ou seleciona a posição atual. 2)seleciona aleatoriamente uma produção de G. 3)se aparece começando na posição i de , troque por nesta posição (shifting over). 4)compare a forma sentencial resultante com W na fita 1. Se a forma sentencial for igual a W, aceita w como uma sentença de G. Senão volta para o passo 1. Obs: Todas e somente as formas sentenciais de G aparecem na fita 2 quando o passo 2 é executado depois de algumas escolhas. • L(M) = L(G) = L então L é recursivamente enumerável. q.e.d. TEOREMA: Se L é uma linguagem recursivamente enumerável, então L = L(G) para alguma gramática tipo 0 G. • a prova é mais elaborada e é omitida Linguagens Sensíveis ao Contexto G = (V,T,P,S) onde as produções em P tem a forma com e sendo cadeias arbitrárias de símbolos da gramática, e tem que ser pelo menos tão grande (longo) quanto . •O nome sensível ao contexto vem da forma normal para estas gramáticas onde cada produção tem a forma 1A2 12 com . Isto é, a variável A pode ser substituída pela cadeia somente no contexto 1 _ 2. Obs: Quase todas as linguagens que trabalhamos são sensíveis ao contexto. As únicas provas que certas linguagens não são sensíveis ao contexto são baseadas em diagonalização. Autômatos Linearmente Limitados (ALL) Um ALL é uma máquina de Turing não determinística satisfazendo as seguintes condições: 1)o alfabeto de entrada inclui dois símbolos especiais ¢ e s, delimitadores a esquerda e a direita. 2)o ALL não pode se mover a esquerda de ¢ e a direita de s, nem pode trocar os símbolos ¢ e s na fita. Obs: Um ALL é uma MT que,ao invés de ter uma fita potencialmente infinita para computar, tem somente uma porção da fita contendo o símbolo x mais duas células contendo os delimitadores. Existe uma equivalência entre ALL e gramáticas sensíveis ao contexto. HIERARQUIA DE CHOMSKY TEOREMA: (a) os conjuntos regulares estão contidos propriamente nas linguagens livres de contexto. (b) LLC não contendo a palavra vazia estão contidas propriamente nas LSC. (c) LSC estão propriamente contidas nos conjuntos recursivamente enumeráveis.