Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouRui Beltrão Jardim Alterado mais de 9 anos atrás
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.