A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 Computabilidade e Linguagens Formais  Máquinas de Turing Gabriel David / Cristina Ribeiro.

Apresentações semelhantes


Apresentação em tema: "1 Computabilidade e Linguagens Formais  Máquinas de Turing Gabriel David / Cristina Ribeiro."— Transcrição da apresentação:

1 1 Computabilidade e Linguagens Formais  Máquinas de Turing Gabriel David / Cristina Ribeiro

2 Máquinas de Turing -2 Hello, world main() { printf(″hello, world\n″); }  Qual a saída deste programa?

3 Máquinas de Turing -3 Hello, world de novo main() { int n, total, x, y, z; scanf(″%d″, &n); total = 3; while(1){ for (x=1; x<=total-2; x++) for (y=1; y<=total-x-1; y++){ z = total-x-y; if (exp(x,n) + exp(y,n) == exp(z,n)) printf(″hello, world\n″); } total++; }  Qual a saída deste programa?  Para entrada 2? E 3? int exp(int i, n) /* calcula i^n */ { int ans, j; ans = 1; for (j=1; j<=n; j++) ans *= i; return(ans); } x n + y n = z n – Último teorema de Fermat  Levou 300 anos a provar que é impossível para n  3

4 Máquinas de Turing -4 Devem existir problemas indecidíveis  Problema é decidir se uma cadeia pertence a uma linguagem  O número de linguagens diferentes sobre um alfabeto com mais do que um símbolo não é numerável – Não é possível estabelecer uma correspondência biunívoca com   Os programas são numeráveis – Cadeias finitas sobre alfabetos finitos – Ordenar por comprimento e por ordem lexicográfica – Podem ser contados, embora em número infinito  Há infinitamente menos programas do que problemas – Linguagem ao acaso dá provavelmente um problema indecidível – A maioria dos problemas parecem decidíveis porque são escolhidos

5 Máquinas de Turing -5 Teste do “Hello, world”  Hipótese – Existe um programa H que recebe como entrada um programa P e uma entrada I e imprime yes se P com entrada I imprimir hello, world e no no caso contrário; e faz sempre uma coisa ou outra  Um problema que tenha um algoritmo como H é decidível – Senão é indecidível  Vamos provar que H não existe – Seria estranho que um programa resolvesse o último teorema de Fermat H P I yes no

6 Máquinas de Turing -6 Prova por contradição  Simplificação na classe de programas P – Só programas em C com saída em caracteres e que só usam printf()  Modificar H – As modificações não põem em causa a existência de H – Modificar printf() de forma a que quando devesse imprimir no, passe a imprimir hello, world – Obtém-se H 1 H1H1 P I yes hello, world

7 Máquinas de Turing -7 Prova por contradição  Interesse em programas que processam programas  Restringir H 1 – Só tem entrada P – Pergunta o que faz P quando recebe P como entrada  H 2 é modificação de H 1 – H 2 começa por ler P para um array com malloc() – H 2 simula H 1 substituindo leituras de P e de I por leituras do array  O que faz H 2 quando é dado como entrada a ele próprio? H2H2 P yes hello, world H2H2 H2H2 yes hello, world

8 Máquinas de Turing -8 H 2 não pode existir  H 2, dado P – Imprime yes se P imprimir hello, world com entrada P – Imprime hello, world se P, com entrada P, não imprimir hello, world  Dando H2 a H2 – Se imprimir yes diz que H 2 com entrada H 2 imprime hello, world  Mas acaba-se de assumir que H 2 com entrada H 2 imprime yes – Se imprimir hello, world (tem que ser uma ou outra das possibilidades) então a saída da caixa tem que ser yes  Contradição também  Portanto H 2 não pode existir nem H 1 nem H – O problema do hello, world é indecidível

9 Máquinas de Turing -9 Redução de problemas  Outros problemas – Para testar a indecidibilidade pode-se construir um programa paradoxal, semelhante a H 2 – Alternativa: reduzir o problema indecidível ao novo problema; se conseguisse decidir o novo, também decidia o antigo; como o antigo é indecidível, o novo também é  Questão: saber se se consegue reduzir o antigo ao novo  Nota: reduzir o novo ao antigo não resolve porque daria Decidível(antigo)  Decidível(novo), mas o antecedente é falso  Decide yes ou no conforme a sua entrada instância do problema P 2 está ou não na linguagem do problema Constrói Decide P1P1 P2P2 yes no

10 Máquinas de Turing -10 Fase de construção  A construção tem que reduzir cada instância de P 1 (cadeia w) a uma instância de P 2 (cadeia x) com a mesma resposta – Qualquer cadeia no alfabeto de P 1 que não pertence à linguagem de P 1 tem que ser convertida para uma cadeia que não está na linguagem de P 2 – Assim, se w está em P 1, x está em P 2 e Decide diz yes; se w não está em P 1, x não está em P 2 e Decide diz no; fala verdade sobre w

11 Máquinas de Turing -11 Exemplo de redução  Problema – Programa Q, com entrada y, chama a função foo? – Se Q não tiver a função foo é fácil – P1 é o problema hello, world e P2 é o problema chama-foo – Dado um programa Q com entrada y construir um programa R com entrada z que chame foo se e só se Q com entrada y imprimir hello, world  Construção – Se Q tiver foo, renomeá-la e a todas as suas chamadas – Adicionar uma função foo vazia e que não é chamada – Memorizar no array A os primeiros 12 caracteres da saída – Sempre que o programa escrever para a saída, verifica em A se está lá hello, world e, nesse caso, chama foo – O programa modificado é R; a entrada z é igual a y  Se fosse possível decidir R também seria possível decidir Q

12 Máquinas de Turing -12 Motivação  Problemas indecidíveis – Não existe algoritmo  Problemas intratáveis – Os algoritmos conhecidos são demasiado dispendiosos – Simplificação; heurísticas  Necessidade de um modelo simples de computador para estudar a computabilidade – Máquinas de Turing – Modelo de computador, mais do que de linguagem

13 Máquinas de Turing -13 Contexto  David Hilbert (início do séc. XX) – Há alguma maneira de determinar se qualquer fórmula da lógica de predicados de primeira ordem, aplicada aos inteiros, é verdadeira?  Kurt Gödel (1931) – Teorema da incompletude: construiu uma fórmula que não pode ser provada nem refutada – Técnica semelhante ao programa contraditório H 2  Alan Turing (1936) – Máquina de Turing: modelo de qualquer computação possível – Veio a estar envolvido, durante a 2ª Guerra, no esforço de construção de máquinas de que emergiram os computadores  Hipótese de Church (tese de Church-Turing, não demonstrável) – Todos os modelos gerais de computação são equivalentes às funções parciais recursivas e às máquinas de Turing (mesmo os computadores actuais)

14 Máquinas de Turing -14 Máquina de Turing  Controlo finito – Número finito de estados  Fita de comprimento infinito dividida em células – Cada célula pode conter um símbolo (alfabeto finito)  Entrada – Cadeia finita constituída por símbolos do alfabeto de entrada – Colocada na fita no início; resto da fita preenchido com brancos (B)  Símbolos da fita – Alfabeto de entrada + branco + possivelmente outros símbolos BBX1X1 X2X2 XiXi BBXnXn …… Controlo

15 Máquinas de Turing -15 Máquina de Turing  Cabeça da fita – Sempre posicionada numa célula – No início, está na célula mais à esquerda da entrada  Movimento ou passo da máquina – função do estado do controlo e do símbolo a ser varrido pela cabeça – 1. Mudança de estado  Pode ser o mesmo – 2. Escrita de um símbolo na célula onde está a cabeça  Pode ser o mesmo – 3. Deslocação da cabeça de uma célula à esquerda ou à direita  Não restringe: sequência de passos com a cabeça parada seguida de um com movimento pode ser resumida neste

16 Máquinas de Turing -16 Formalização  Semelhante a autómatos de pilha  Máquina de Turing (TM) M= (Q, , , , q 0, B, F) – Q: conjunto finito de estados do controlo –  : conjunto finito de símbolos de entrada –  : conjunto finito de símbolos da fita –  : função de transição  (q, X) = (p,Y,D)  q é um estado, X um símbolo da fita  p é o novo estado, em Q;  Y é o símbolo em  que substitui X;  D é L ou R, esquerda ou direita, direcção em que a cabeça se move depois da substituição – q 0 : estado inicial – B: branco, símbolo que preenche a fita, excepto as células com a entrada – F: conjunto de estados de aceitação ou finais

17 Máquinas de Turing -17 Computação  Descrição instantânea – X 1 X 2 …X i-1 qX i X i+1 …X n – Células desde a primeira à última não brancas (nº finito)  Mais um prefixo ou sufixo finito com brancas até à cabeça – O estado (q) e a célula (i) onde a cabeça está  Passo da máquina de Turing M (├ M ;├* M – 0 ou mais passos) – Supondo  (q,X i ) = (p,Y,L) – X 1 X 2 …X i-1 qX i X i+1 …X n ├ M X 1 X 2 …X i-2 pX i-1 YX i+1 …X n  Estado q passa a p; célula X i passa a Y; cabeça anda para a esquerda  Se i=1: qX 1 X 2 …X n ├ pBYX 2 …X n  Se i=n e Y=B: X 1 X 2 …X n-1 qX n ├ X 1 X 2 …X n-2 pX n-1  Simétrico para  (q,X i ) = (p,Y,R)

18 Máquinas de Turing -18 Exemplo 0 n 1 n  TM para aceitar a linguagem {0 n 1 n | n  1}  Ideia – Fita no início contém 0’s e 1’s – Mudar o primeiro 0 para X; deslocar para a direita até ao primeiro 1 e mudá-lo para Y; deslocar para a esquerda até ao primeiro X; deslocar um para a direita; recomeçar – Se num estado aparecer algum símbolo não previsto, a TM morre  Se a entrada não for 0*1* – Se na iteração em que marca o último 0 também marca o último 1 então aceita

19 Máquinas de Turing -19 Exemplo 0 n 1 n – M = ({q 0,q 1,q 2,q 3,q 4 ), {0,1}, {0,1,X,Y,B}, , q 0, B, {q 4 })  q 0 : muda 0 para X  q 1 : desloca-se para a direita até ao primeiro 1 que muda para Y  q 2 : desloca-se para a esquerda até encontrar um X e volta a q 0  Se tiver um 0 reinicia o ciclo; se tiver um Y vai para a direita; se encontrar um branco vai para q 4 e aceita; senão morre sem aceitar Estado 01XYB q0q0 (q 1,X,R)(q 3,Y,R) q1q1 (q 1,0,R)(q 2,Y,L)(q 1,Y,R) q2q2 (q 2,0,L)(q 0,X,R)(q 2,Y,L) q3q3 (q 3,Y,R)(q 4,B,R) q4q4

20 Máquinas de Turing -20 Computações no exemplo  Entrada 0011 – Descrição instantânea inicial q 0 0011  q 0 0011 ├ Xq 1 011 ├ X0q 1 11 ├ Xq 2 0Y1 ├ q 2 X0Y1 ├  Xq 0 0Y1 ├ XXq 1 Y1 ├ XXYq 1 1 ├ XXq 2 YY ├ Xq 2 XYY ├  XXq 0 YY ├ XXYq 3 Y ├ XXYYq 3 B ├ XXYYBq 4 B – aceita  Entrada 0010  q 0 0010 ├ Xq 1 010 ├ X0q 1 10 ├ Xq 2 0Y0 ├ q 2 X0Y0 ├  Xq 0 0Y0 ├ XXq 1 Y0 ├ XXYq 1 0 ├ XXY0q 1 B – morre

21 Máquinas de Turing -21 Diagramas de transição  Semelhante a autómato de pilha – Nós são estados da TM – Arco do estado q para o estado p com etiquetas X/YD   (q,X) = (p,Y,D), X e Y são símbolos da fita e D é L ou R – Start é estado inicial; circunferência dupla, estados finais; B, branco Start q0q0 q1q1 0/X  q2q2 Y/Y  0/0  q3q3 q4q4 1/Y  Y/Y  0/0  X/X  Y/Y  B/B  Y/Y 

22 Máquinas de Turing -22 Exemplo  Diagrama de transição para uma TM que aceite a linguagem das cadeias com número igual de 0 e 1. Start q0q0 q1q1 1/X  q2q2 1/1  Y/Y  q3q3 q4q4 1/Y  Y/Y  0/0  B/B  X/X  0/X  Y/Y  0/Y  0/0  1/1  Y/Y  q 0 0110 ├ Xq 2 110 ├ q 3 XY10 ├ Xq 0 Y10 ├ XYq 0 10 ├ XYXq 1 0 ├ XYq 3 XY ├ XYXq 0 Y ├ XYXYq 0 B ├ XYXYBq 4 B q 0 110 ├ Xq 1 10 ├ X1q 1 0 ├ Xq 3 1Y ├ q 3 X1Y ├ Xq 0 1Y ├ XXq 1 Y ├ XXYq 1 B

23 Máquinas de Turing -23 Linguagem de uma TM  Cadeia de entrada colocada na fita – Cabeça no símbolo mais à esquerda  Se a máquina entrar num estado de aceitação, a cadeia é aceite  Linguagem da TM M= (Q, , , , q 0, B, F) – Conjunto das cadeias w em  * tais que q 0 w ├*  p  e p  F – Linguagens recursivamente enumeráveis Linguagens recursivamente enumeráveis Linguagens sem contexto (CFL) Linguagens regulares (RL) DFA (NFA,  -NFA), RE PDA, CFG TM Linguagens

24 Máquinas de Turing -24 Paragem  Uma TM pára se entrar num estado q a ler um símbolo X e  (q,X) não estiver definida – Permite encarar a máquina de Turing como executando uma computação, com princípio e fim  exemplo: calcular a diferença de dois inteiros q 0 0 m 10 n ├* 0 m-n q f – TM que param sempre, aceitem ou não a entrada, constituem modelos de algoritmos (linguagens recursivas)  Pode-se assumir que uma TM pára sempre que aceita  Infelizmente não é sempre possível exigir que uma TM pare quando não aceita – Indecidibilidade (linguagens recursivamente enumeráveis) – Possibilidade de uma TM se referir a si própria (poder para ser indecidível)

25 Máquinas de Turing -25 Técnicas de programação de TM  Uma TM tem o mesmo poder computacional que os computadores actuais  Memória no estado – Estado = controlo + memória de dados – Ver o estado como um tuplo  Pistas múltiplas – Fita composta por várias pistas; um símbolo em cada pista – Alfabeto da fita constituída por tuplos  Poder das TM permanece inalterado

26 Máquinas de Turing -26 Subrotinas  Uma TM é um conjunto de estados que executa um processo – Tem uma entrada e estados finais  Encarada como subrotina de uma TM principal – Chamada vai para estado principal – Não existe noção de endereço de retorno – Se uma subrotina for chamada de vários estados diferentes, faz-se cópias (macro) para retornar ao estado que chamou

27 Máquinas de Turing -27 Extensões  TM com várias fitas – Cada qual tem a sua cabeça – Entrada só na primeira fita – Movimento: esquerda, direita e estacionário – Equivalente a uma fita  Complexidade temporal quadrática  TM não deterministas – Função de transição dá conjunto de tuplos (q,Y,D) – Equivalente a determinista  Codificar na fita uma fila com as descrições instantâneas a processar  Simular o não determinista percorrendo-as em largura

28 Máquinas de Turing -28 Restrições  TM com fitas semi-infinitas  Máquinas com várias pilhas  Máquinas com contadores  Comparação com computadores


Carregar ppt "1 Computabilidade e Linguagens Formais  Máquinas de Turing Gabriel David / Cristina Ribeiro."

Apresentações semelhantes


Anúncios Google