Máquinas de Turing 1



Documentos relacionados
Máquinas de Turing 1

Faculdade de Computação

Introdução às Máquinas de Turing (TM)

Variantes de Máquinas de Turing

Introdução à Engenharia de Computação

Máquinas de Turing 1

Usando um Simulador da Máquina de Turing Claudio Kirner 2010

Máquinas de Turing. Juliana Kaizer Vizzotto. Disciplina de Teoria da Computação. Universidade Federal de Santa Maria

Faculdade de Computação

9 Comandos condicionais

Conceitos básicos da linguagem C

Transformação sobrenome + nome em nome completo utilizando Máquina de Turing

PROGRAMAÇÃO BÁSICA DE CLP

Desenvolvimento de Estratégia para Programação do Futebol de Robôs da Mauá

5. Uma lousa denominada EPI (registrador de endereço de próxima instrução).

Unidade 5: Sistemas de Representação

Figure 2 - Nós folhas de uma árvore binária representando caracteres ASCII

Implementando uma Classe e Criando Objetos a partir dela

Especificação Operacional.

Morfologia Matemática Binária

Matemática Discreta para Computação e Informática

Fundamentos de Teste de Software

Organização de Computadores Software

Montagem e Manutenção. Luís Guilherme A. Pontes

Fração como porcentagem. Sexto Ano do Ensino Fundamental. Autor: Prof. Francisco Bruno Holanda Revisor: Prof. Antonio Caminha M.

Sistemas de Apoio à Decisão

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 1

LÓGICA DE PROGRAMAÇÃO. Professor Celso Masotti

Aula 2 - Cálculo Numérico

Notas de Cálculo Numérico

Capítulo 4 Gerenciamento de Memória

BCC242. Alfabeto, Strings, Linguagens. Registro aqui o agradecimento à Profa. Lucília por ceder slides que fazem parte deste material.

Casamento de Cadeias. Introdução. Introdução. Estrutura de Dados. Cadeia de caracteres: sequência de elementos denominados caracteres.

Análise de Arredondamento em Ponto Flutuante

INTRODUÇÃO À LINGUAGEM C++

Resolução de sistemas lineares

TÉCNICAS DE PROGRAMAÇÃO

Estruturas de Repetição

1. Explicando Roteamento um exemplo prático. Através da análise de uns exemplos simples será possível compreender como o roteamento funciona.

Computadores XII: Aprendendo a Somar A4 Texto 3

armazenamento (escrita ou gravação (write)) recuperação (leitura (read))

Roteiro. MC-102 Aula 01. Hardware e dispositivos. O que é um computador? Primeiro Semestre de A linguagem C

Algoritmos DCC 119. Introdução e Conceitos Básicos

Desmistificando o Programa de Computador

Unidade 3: Personalizando o Excel *

MD Sequências e Indução Matemática 1

AV1 - MA (b) Se o comprador preferir efetuar o pagamento à vista, qual deverá ser o valor desse pagamento único? 1 1, , , 980

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

O processador é um dos elementos componentes do computador moderno, sendo responsável pelo gerenciamento de todo o computador.

-Problemas de pesquisa: comprovação de uma hipótese. Ex: Hipótese do CFC

Programação em papel quadriculado

OBI2010 Caderno de Tarefas

natureza do projeto e da aplicação métodos e ferramentas a serem usados controles e produtos que precisam ser entregues

OBI2012 Caderno de Tarefas

Guia de utilização da notação BPMN

6 Circuitos pneumáticos e hidráulicos

DDoS: como funciona um ataque distribuído por negação de serviço

Computabilidade 2012/2013. Sabine Broda Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto

Capítulo 2. VARIÁVEIS DO TIPO INTEIRO

Computador HIPO. Inicialmente vamos apresentar as unidades fundamentais de um computador:

COMO COMEÇAR 2016 se organizando?

MATERIAL DE APRESENTAÇÃO DO SCRATCH

Usando o do-file editor Automatizando o Stata

Representação de Algoritmos - Linguagens de Programação

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word Sumário

Comandos de repetição while

Estruturas de Dados Aula 15: Árvores 17/05/2011

Estatística II Antonio Roque Aula 9. Testes de Hipóteses

Laboratório de Programação I

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

Computador Digital Circuitos de um computador (Hardware)

OS COMPUTADORES E A RESOLUÇÃO DE PROBLEMAS

Programa Olímpico de Treinamento. Aula 9. Curso de Combinatória - Nível 2. Tabuleiros. Prof. Bruno Holanda

O que queremos. Processamento Estatístico da Linguagem Natural. Parsing Morfológico. Regras Simples. Adicionando palavras. Regras Derivacionais

RELATÓRIOS GERENCIAIS

ILP - Introdução à Linguagem de Programação. Plano de estudo: - Constantes e variáveis. - Atribuindo valores às variáveis.

5 Apresentando a linguagem C

Solução de problemas por meio de busca (com Python) Luis Martí DEE/PUC-Rio

Do Word 2007 para o Office 365 para empresas

Introdução. A Informação e sua Representação (Parte II) Universidade Federal de Campina Grande. Unidade Acadêmica de Sistemas e Computação

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

6.3 Equivalência entre Autômatos com Pilha Não-Determinísticos e Gramáticas Livre do Contexto

Informática I. Aula 1. Aula 1-17/04/2006 1

QUITETURA AVANÇADA DE SISTEMAS

Lógica Computacional

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO. Seção 5.1 Problemas indecidíveis. Slides originais gentilmente cedidos pela Profa. Ariane Machado Lima

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

Nível da Arquitetura do Conjunto das Instruções

Aula 14: Instruções e Seus Tipos

ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE

Aula de JavaScript 05/03/10

DICAS PARA CÁLCULOS MAIS RÁPIDOS ARTIGO 06

ALGORITMOS E FLUXOGRAMAS

O Princípio da Complementaridade e o papel do observador na Mecânica Quântica

ÍNDICE. Tela de Configuração Dados de Etiqueta Configuração da Impressora Configuração do Papel Itens para Inserção...

por séries de potências

Módulo 1: Contextualização

Transcrição:

Máquinas de Turing 1

Agenda Máquinas de Turing (TM) Alan Turing Motivação Tese de Church-Turing Definições Computação Configuração de TM Reconhecedores vs. Decisores 2

Alan Turing Alan Turing é um dos pais da Computação. Seu modelo computacional a Máquina de Turing inspirou/anteviu o computador eletrônico, que veio algumas décadas depois. Foi usado na quebra do sistema criptográfico Nazi Enigma na WWII Inventou o Turing Test usado em IA Prêmio Turing: Mais reconhecido prêmio em Teoria da Computação 3

Uma Máquina Pensante Objetivo inicial da Máquina de Turing: Um modelo capaz de computar qualquer coisa que um humano possa computar. Antes da invenção do computador eletrônico, o termo computador de fato referia-se a uma pessoa cujo trabalho seria efetuar cálculos numéricos! Como esse é um objetivo filosófico, ele de fato não pode ser provado. Tese de Turing : Qualquer algoritmo pode ser executado por uma dessas máquinas. 4

Uma Máquina Pensante Segundo Objetivo da Máquina de Turing: Um modelo que seja tão simples que possa ser de fato usado para provar interessantes resultados epistemológicos. Por exemplo, visava uma solução para o 10 0. problema de Hilbert. Deixando o aspecto filosófico, o programa de Turing para quebrar o sistema de criptografia Enigma mostrou que ele era um verdadeiro hacker! A máquina de Turing é de fato fácil de programar, mas não muito útil na prática 5

10 o. Problema de Hilbert Obter um algoritmo que, dada uma equação Diofantina, determina, em um número finito de operações, se existem ou não números inteiros que satisfaçam essa equação. Listado por Hilbert como um dos 10 problemas mais importantes da matemática em 1900, só foi resolvido em 1970, por Matijasevic, Robinson, Davis e Putnam, que mostraram que tal algoritmo não existe. A prova original usa Máquinas de Turing. Uma prova mais simples foi dada posteriormente (Jones and Matijasevic, Journal of Symbollic Logic, 49(1984)) usando máquinas de registradores (Minsky e Lambek). 6

Uma Máquina Pensante Imagine um computador humano super-organizado e obsessivo-compulsivo. O computador quer evitar erros e, por isso, escreve tudo o que faz, uma letra/número de cada vez. O computador segue um conjunto finito de regras, que ele examina cada vez que escreve um novo símbolo. Em cada instante apenas uma regra pode ser usada, evitando assim ambiguidade. Cada regra ativa uma nova regra, dependendo da letra/número que é lido no momento. P. ex.: 8

Uma Máquina Pensante EX: Programa Successor Exemplos de regras: If read 1, write 0, move right, repeat. If read 0, write 1, HALT! If read, write 1, HALT! Vejamos como isso seria executado sobre um pedaço de papel que contenha o reverso da representação binária de 47: 9

Uma Máquina Pensante EX: Programa Successor If read 1, write 0, go right, repeat. If read 0, write 1, HALT! If read, write 1, HALT! 1 1 1 1 0 1 10

Uma Máquina Pensante EX: Programa Successor If read 1, write 0, go right, repeat. If read 0, write 1, HALT! If read, write 1, HALT! 0 1 1 1 0 1 11

Uma Máquina Pensante EX: Programa Successor If read 1, write 0, go right, repeat. If read 0, write 1, HALT! If read, write 1, HALT! 0 0 1 1 0 1 12

Uma Máquina Pensante EX: Programa Successor If read 1, write 0, go right, repeat. If read 0, write 1, HALT! If read, write 1, HALT! 0 0 0 1 0 1 13

Uma Máquina Pensante EX: Programa Successor If read 1, write 0, go right, repeat. If read 0, write 1, HALT! If read, write 1, HALT! 0 0 0 0 0 1 14

Uma Máquina Pensante EX: Programa Successor If read 1, write 0, go right, repeat. If read 0, write 1, HALT! If read, write 1, HALT! 0 0 0 0 1 1 15

Uma Máquina Pensante EX: Programa Successor A saída do programa successor para a entrada 111101 é 000011 que é a representação binária de 48. Analogamente, o resultado de successor com entrada 127 será 128: 16

Uma Máquina Pensante EX: Programa Successor If read 1, write 0, go right, repeat. If read 0, write 1, HALT! If read, write 1, HALT! 1 1 1 1 1 1 1 17

Uma Máquina Pensante EX: Programa Successor If read 1, write 0, go right, repeat. If read 0, write 1, HALT! If read, write 1, HALT! 0 1 1 1 1 1 1 18

Uma Máquina Pensante EX: Programa Successor If read 1, write 0, go right, repeat. If read 0, write 1, HALT! If read, write 1, HALT! 0 0 1 1 1 1 1 19

Uma Máquina Pensante EX: Programa Successor If read 1, write 0, go right, repeat. If read 0, write 1, HALT! If read, write 1, HALT! 0 0 0 1 1 1 1 20

Uma Máquina Pensante EX: Programa Successor If read 1, write 0, go right, repeat. If read 0, write 1, HALT! If read, write 1, HALT! 0 0 0 0 1 1 1 21

Uma Máquina Pensante EX: Programa Successor If read 1, write 0, go right, repeat. If read 0, write 1, HALT! If read, write 1, HALT! 0 0 0 0 0 1 1 22

Uma Máquina Pensante EX: Programa Successor If read 1, write 0, go right, repeat. If read 0, write 1, HALT! If read, write 1, HALT! 0 0 0 0 0 0 1 23

Uma Máquina Pensante EX: Programa Successor If read 1, write 0, go right, repeat. If read 0, write 1, HALT! If read, write 1, HALT! 0 0 0 0 0 0 0 24

Uma Máquina Pensante EX: Programa Successor If read 1, write 0, go right, repeat. If read 0, write 1, HALT! If read, write 1, HALT! 0 0 0 0 0 0 0 1 25

Uma Máquina Pensante Era difícil para os matemáticos da época acreditarem que qualquer algoritmo poderia ser executado em uma máquina tão simples. Para quem já programou em assembly, isso é muito mais fácil! Entretanto, diversas evidências à aceitação da Tese de Turing: entre elas, a prova da equivalência entre Máquinas de Turing e o lambda-calculus de Church (no qual são baseadas as linguagens funcionais, como Haskell, ML e Lisp)! 26

Máquina Turing Uma Máquina de Turing (TM) é um dispositivo com uma quantidade finita de memória hard read-only (estados), e quantidade ilimitada 1 de memória-fita read/write. Não possui dispositivo de entrada separado. Supõe-se que os dados de entrada estão na fita, no momento em que a TM começa a executar. Assim como um autômato, uma TM pode ser uma máquina input/output (como Transdutores de Estado Finito), ou uma máquina de decisão yes/no. Vamos começar c/ máquinas yes/no 27

Máquina de Turing Exemplo de Máquina de Decisão O primeiro exemplo (adicionar 1 bit ao reverso de um string binário) é basicamente algo que pode ser feito por um Transdutor Finito (exceto quando ocorre overflow). Vejamos agora um exemplo de um nível acima na hierarquia de linguagens. {bit-strings com mesmo número de 0 s e 1 s} uma linguagem livre de contexto 32

Máquina de Turing Exemplo de Máquina de Decisão Essa é uma verdadeira TM já que: A fita é semi-infinita: A entrada está na fita no início da execução Não há teste intrínsico de limite da fita à esq. semelhante à detecção de pilha vazia em PDA s truque similar introduzir $ como flag Toda regra inclui direção de movimento (R/L) Situações que não podem ocorrer não são tratadas (tecnicamente indeterminadas) 33

Máquina de Turing Exemplo de Máquina de Decisão {bit-strings com mesmo número de 0 s e 1 s}: Pseudocodigo: while (existe um 0 e um 1 na fita) marque esses dois símbolos if (todo símbolo estiver marcado) aceita else rejeita 34

Exemplo de TM Conjunto de Instruções 0. if read, go right (dummy move), ACEITA if read 0, write $, go right, goto 1 // $ indica início da fita if read 1, write $, go right, goto 2 1. if read, go right, REJEITA if read 0 or X, go right, repeat (= goto 1) // pesquisa por 1 if read 1, write X, go left, goto 3 2. if read, go right, REJECT if read 1 or X, go right, repeat // pesquisa por 0 if read 0, write X, go left, goto 3 3. if read $, go right, goto 4 // pesquisa inicio da fita else, go left, repeat 4. if read 0, write X, go right, goto 1 // similar ao passo 0 if read 1, write X, go right, goto 2 if read X, go right, repeat if read, go right, ACEITA 35

Exemplo de TM Diagrama de Estados R Essas instruções são usualmente expressas na forma de um diagrama de fluxo: acc 0 0 $,R 1 $,R 1 X R R 1 2 0 X R R 1 X,L rej 0 X,L 3 0 X,R 1 X,R $ R 0 1 X L 4 X R 36

TM - Notação Um arco do estado p para o estado q rotulado como a b,d significa que se estiver em p e o símbolo corrente na fita é a, substitua-o por b e mova para a direção D, e para o estado q a D significa que se estiver em p e o símbolo corrente na fita é a, não o altere e mova na direção D, e para o estado q a b z significa que se o símbolo corrente na fita for qualquer das alternativas, a ação a ser realizada é a mesma. 37

TM Notação de Configuração A próxima ação de uma TM é completamente determinada pelo estado corrente e pelo símbolo lido; portanto podemos prever ações futuras se sabemos: 1. o estado corrente 2. o conteúdo corrente da fita 3. a posição corrente da cabeça de leitura Uma notação útil é representar essa informação na forma de um único string. O símbolo que representa o estado corrente é intercalado no conteúdo da fita, entre a porção que está à esq. da cabeça de leitura e a que está à sua dir. (incluindo o símbolo corrente). 38

TM Notação de Configuração Por exemplo Lendo a regra 3 E denotada por: $xxx1q 3 010 39

TM - Definição Formal Estática DEF: Uma máquina de Turing (TM) é uma 7- tupla M = (Q, S, G, d, q 0, q acc, q rej ). Q, S, e q 0, são como em um FA. G é o alfabeto da fita, que necessariamente inclui o símbolo branco, assim como S. d é uma função: δ :( Q -{ q acc, q rej }) G Q G {L, R} Portanto, dado um estado p, que não seja de parada, e um símbolo de fita x, d(p,x) = (q,y,d) significa que a TM vai para o estado q, substitui x por y, e a cabeça da fita move na direção D. 41

TM - Dinâmica Um string w é aceito por M se, quando dado como entrada na fita de M, estando a cabeça de leitura posicionada no início da fita, e sendo iniciada a execução, M eventualmente pára em um estado de aceitação. Nesse caso, w é um elemento de L(M) a linguagem aceita por M. Isso pode ser formalizado como a seguir: 42

TM - Definição Formal Dinâmica Suponha que a configuração da TM em um dado instante t é dada por uapxv onde p é o estado corrente, ua é o que está à esquerda da cabeça da fita, x é o símbolo que está sendo lido, e v a porção da fita à direita de x. Se d(p,x) = (q,y,r), então escrevemos: uapxv uayqv Sendo uayqv a configuração resultante no instante t+1. Se d(p,x) = (q,y,l), escrevemos: uapxv uqayv Existem dois casos especiais: cabeça da fita está sobre uma posição em branco 1 cabeça da fita bate na extremidade esquerda > fica parada 2 43

TM - Definição Formal Dinâmica Como no caso de gramáticas livres de contexto, podemos considerar o fecho reflexivo e transitivo * de. I.e. a relação entre strings definida recursivamente por: se u = v então u * v se u v então u * v se u *v e v * w, então u *w * lê-se computa para Um string x é aceito por M se a configuração inicial q 0 x computa para alguma configuração de aceitação y i.e., uma configuração contendo q acc. A linguagem aceita por M é o conjunto de todos os strings aceitos. I.e: L(M) = { x S* config. aceitação y, q 0 x * y } 44

Reconhecedores vs. Decisores Há 3 possíveis resultados para uma entrada w : 1. A TM M eventualmente entra em q acc e, portanto, pára e aceita. (w L(M) ) 2. A TM M eventualmente entra em q rej ou falha em algum ponto. M rejeita w (w L(M) ) 3. Nenhum dos dois ocorre! I.e., a computação de M nunca pára, entrando em um loop infinito e nunca atingindo q acc ou q rej. Nesse caso, w não é aceito, nem rejeitado. Entretanto, um string que não seja aceito explicitamente não pertence à linguagem. (w L(M) ) 45

Reconhecedores vs. Decisores Uma Máquina de Turing é um reconhecedor e reconhece L(M). Se, além disso, M nunca entra em loop infinito, então M é dito um decisor e diz-se que decide L(M). 0 0 R 1 R 1 R rej 2 R acc 0 R Q: A máquina M acima é um reconhecedor? É um decisor? O que é L(M)? 1 0 R 1 L 46

Reconhecedores vs. Decisores R: M é um reconhecedor mas não um decisor, porque a entrada 101 causa um loop infinito. L(M) = 1 + 0 + 0 R rej acc 0 1 R 1 R 2 R 0 R 1 0 R 1 L Q: A linguagem L(M ) é decidível? 47

Reconhecedores vs. Decisores R: Sim. Toda regular é decidível porque sempre se pode converter um DFA para uma TM sem nenhum loop infinito. Q: Como isso pode ser feito? 48

Exercício Forneça TMs para: {w {a, b} w é par e w = w R } {w #w w {0,1}* } {a i b j c k i x j = k e i,j,k 1 } { n 0 } 2 0 n 49