Computabilidade e Linguagens Formais q Mquinas de Turing
Computabilidade e Linguagens Formais q Máquinas de Turing Gabriel David / Cristina Ribeiro 1
Hello, world main() { printf(″hello, worldn″); } q Qual a saída deste programa? 2
Hello, world de novo int exp(int i, n) /* calcula i^n */ { int ans, j; ans = 1; for (j=1; j<=n; j++) ans *= i; return(ans); } 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, worldn″); } total++; } n n n } x +y =z q q Qual a saída deste programa? Para entrada 2? E 3? – Último teorema de Fermat q Levou 300 anos a provar que é impossível para n 3 3
Devem existir problemas indecidíveis q q 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 – q Os programas são numeráveis – – – q Não é possível estabelecer uma correspondência biunívoca com 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 4
Teste do “Hello, world” q Hipótese – q P I H yes no Um problema que tenha um algoritmo como H é decidível – q 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 Senão é indecidível Vamos provar que H não existe – Seria estranho que um programa resolvesse o último teorema de Fermat 5
Prova por contradição q Simplificação na classe de programas P – q 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 P I H 1 yes hello, world 6
Prova por contradição q q Interesse em programas que processam programas Restringir H 1 – – q Só tem entrada P Pergunta o que faz P quando recebe P como entrada H 2 yes hello, world H 2 é modificação de H 1 – – q P yes hello, world 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 H 2 O que faz H 2 quando é dado como entrada a ele próprio? 7
H 2 não pode existir q H 2, dado P – – q Imprime yes se P imprimir hello, world com entrada P Imprime hello, world se P, com entrada P, não imprimir hello, world Dando H 2 a H 2 – Se imprimir yes diz que H 2 com entrada H 2 imprime hello, world q – Se imprimir hello, world (tem que ser uma ou outra das possibilidades) então a saída da caixa tem que ser yes q q Mas acaba-se de assumir que H 2 com entrada H 2 imprime yes Contradição também Portanto H 2 não pode existir nem H 1 nem H – O problema do hello, world é indecidível 8
Redução de problemas q 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 é q q q 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 P 1 Constrói P 2 Decide yes no 9
Fase de construção q 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 10
Exemplo de redução q Problema – – q Construção – – – q Programa Q, com entrada y, chama a função foo? Se Q não tiver a função foo é fácil P 1 é o problema hello, world e P 2 é 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 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 11
Motivação q Problemas indecidíveis – q Problemas intratáveis – – q Não existe algoritmo 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 12
Contexto q David Hilbert (início do séc. XX) – q Kurt Gödel (1931) – – q 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) – – q Há alguma maneira de determinar se qualquer fórmula da lógica de predicados de primeira ordem, aplicada aos inteiros, é verdadeira? 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) 13
Máquina de Turing Controlo … B q Xn B B … Número finito de estados Cada célula pode conter um símbolo (alfabeto finito) Entrada – – q Xi Fita de comprimento infinito dividida em células – q X 1 X 2 Controlo finito – q B 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 14
Máquina de Turing q Cabeça da fita – – q 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 q – 2. Escrita de um símbolo na célula onde está a cabeça q – Pode ser o mesmo 3. Deslocação da cabeça de uma célula à esquerda ou à direita q Não restringe: sequência de passos com a cabeça parada seguida de um com movimento pode ser resumida neste 15
Formalização q q 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 q – – – 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 16
Computação q Descrição instantânea – – X 1 X 2…Xi-1 q. Xi+1…Xn Células desde a primeira à última não brancas (nº finito) q – q 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, Xi) = (p, Y, L) X 1 X 2…Xi-1 q. Xi+1…Xn ├M X 1 X 2…Xi-2 p. Xi-1 YXi+1…Xn q q Estado q passa a p; célula Xi passa a Y; cabeça anda para a esquerda Se i=1: q. X 1 X 2…Xn ├ p. BYX 2…Xn Se i=n e Y=B: X 1 X 2…Xn-1 q. Xn ├ X 1 X 2…Xn-2 p. Xn-1 Simétrico para (q, Xi) = (p, Y, R) 17
Exemplo 0 n 1 n q q 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 q – 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 18
Exemplo 0 n 1 n Estado 0 q 0 (q 1, X, R) (q 3, Y, R) q 1 (q 1, 0, R) (q 2, Y, L) (q 1, Y, R) q 2 (q 2, 0, L) q 3 1 X Y B (q 0, X, R) (q 2, Y, L) (q 3, Y, R) (q 4, B, R) q 4 – M = ({q 0, q 1, q 2, q 3, q 4), {0, 1}, {0, 1, X, Y, B}, , q 0, B, {q 4}) q q 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 19
Computações no exemplo q Entrada 0011 – q q 00011 ├ Xq 1011 ├ X 0 q 111 ├ Xq 20 Y 1 ├ q 2 X 0 Y 1 ├ Xq 00 Y 1 ├ XXq 1 Y 1 ├ XXYq 11 ├ XXq 2 YY ├ Xq 2 XYY ├ XXq 0 YY ├ XXYq 3 Y ├ XXYYq 3 B ├ XXYYBq 4 B – q q q Descrição instantânea inicial q 00011 aceita Entrada 0010 q 00010 ├ Xq 1010 ├ X 0 q 110 ├ Xq 20 Y 0 ├ q 2 X 0 Y 0 ├ Xq 00 Y 0 ├ XXq 1 Y 0 ├ XXYq 10 ├ XXY 0 q 1 B – morre 20
Diagramas de transição q 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 – (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 Y/Y 0/0 Start q 0 0/X q 2 X/X Y/Y q 3 1/Y q 1 Y/Y 0/0 B/B Y/Y q 4 21
Exemplo q Diagrama de transição para uma TM que aceite a linguagem das cadeias com número igual de 0 e 1. Y/Y Start q 0 0/X 1/X B/B q 1 1/1 Y/Y 0/Y q 2 Y/Y 0/0 1/Y X/X q 4 q 3 0/0 1/1 Y/Y • q 00110 ├ Xq 2110 ├ q 3 XY 10 ├ Xq 0 Y 10 ├ XYq 010 ├ XYXq 10 ├ XYq 3 XY ├ XYXq 0 Y ├ XYXYq 0 B ├ XYXYBq 4 B • q 0110 ├ Xq 110 ├ X 1 q 10 ├ Xq 31 Y ├ q 3 X 1 Y ├ Xq 01 Y ├ XXq 1 Y ├ XXYq 1 B 22
Linguagem de uma TM q Cadeia de entrada colocada na fita – q q 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 TM PDA, CFG DFA (NFA, -NFA), RE Linguagens recursivamente enumeráveis Linguagens sem contexto (CFL) Linguagens regulares (RL) 23
Paragem q 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 q – q q exemplo: calcular a diferença de dois inteiros q 00 m 10 n ├* 0 m-nqf 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) 24
Técnicas de programação de TM q q Uma TM tem o mesmo poder computacional que os computadores actuais Memória no estado – – q Pistas múltiplas – – q Estado = controlo + memória de dados Ver o estado como um tuplo Fita composta por várias pistas; um símbolo em cada pista Alfabeto da fita constituída por tuplos Poder das TM permanece inalterado 25
Subrotinas q Uma TM é um conjunto de estados que executa um processo – q 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 26
Extensões q 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 q q Complexidade temporal quadrática TM não deterministas – – Função de transição dá conjunto de tuplos (q, Y, D) Equivalente a determinista q q Codificar na fita uma fila com as descrições instantâneas a processar Simular o não determinista percorrendo-as em largura 27
Restrições q q TM com fitas semi-infinitas Máquinas com várias pilhas Máquinas com contadores Comparação computadores 28
- Slides: 28