Teoria da Computação. Unidade 3 Máquinas Universais. Referência Teoria da Computação (Divério, 2000)

Documentos relacionados
Teoria da Computação. Máquinas Universais Máquina com Pilhas

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Máquinas Universais. Máquina de Turing. Celso Olivete Júnior.

Máquina de Turing. Controle finito

Máquina de Turing. Controle finito

Máquinas de Turing 3

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

Máquina de Turing Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente

Linguagens Formais e Autômatos 02/2015. LFA Aula 02. introdução 28/09/2015. Celso Olivete Júnior.

Linguagens Regulares. Prof. Daniel Oliveira

Teoria da Computação

Teoria da Computação. Máquinas Universais Máquina de Turing

Curso de Engenharia de Computação - UTFPR Teoria da Computação - Prof. Celso Kaestner Lista de exercícios

Projeto de máquina de Turing com múltiplas fitas reconhecedora de número primo

Linguaguens recursivamente enumeráveis e recursivas

LFA Aula 05. AFND: com e sem movimentos 05/12/2016. Linguagens Formais e Autômatos. Celso Olivete Júnior.

Linguagens Formais e Autômatos P. Blauth Menezes

Linguaguens recursivamente enumeráveis

Teoria da Computação. Capítulo 1. Máquina de Turing. Prof. Wanderley de Souza Alencar, MSc.

Linguagens Livres de Contexto

Gramáticas Livres de Contexto Parte 1

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

Linguagens Formais e Autômatos 02/2016. LFA Aula 04 16/11/2016. Celso Olivete Júnior.

Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação

Melhores momentos AULA PASSADA. Complexidade Computacional p. 136

Universidade Federal de Alfenas

Modelos Universais de Computação

PCC104 - Projeto e Análise de Algoritmos

Resolução Exe 2.12 Monolítico Recursivo

Linguagens Formais e Autômatos. Autômatos Finitos Determinísticos (AFD)

MT como calculadoras de funções parciais

SCC 205 Teoria da Computação e Linguagens Formais

Modelos de Computação Folha de trabalho n. 10

Linguagens Formais e Autômatos (LFA)

Linguagens recursivamente enumeráveis

Computação efectiva. Que linguagens podem ser reconhecidas por algum tipo de autómato?

a n Sistemas de Estados Finitos AF Determinísticos

Teoria da Computação. Máquinas de Turing: variações

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

Linguagens Livres de Contexto

Máquina de Turing. Controle finito

Apostila 06. Objetivos: Estudar a Computabilidade Estudar a Decidibilidade Estudar a Redutibilidade

Universidade Federal de Alfenas

Universidade Federal de Alfenas

Draft-v0.1. Máquinas de Turing Máquinas de Turing

Máquinas de Turing (MT)

LINGUAGENS FORMAIS E AUTÔMATOS

Teoria da Computação. Computabilidade e complexidade computacional

Aula 7: Autômatos com Pilha

GBC015: INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Teoria de Algoritmos: Computabilidade e Máquina de Turing

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.

Teoria da Computação Aula 02 Introdução

LINGUAGENS FORMAIS Modelos Determinísticos e Não Determinísticos. Usam-se modelos matemáticos para representar eventos (fenômenos) do mundo real.

Máquinas de Turing: uma introdução

Linguagens Formais e Autômatos P. Blauth Menezes

Teoria da Computação. Unidade 1 Conceitos Básicos. Referência Teoria da Computação (Divério, 2000)

Máquinas de Turing - Computabilidade

Capítulo A máquina de Turing (TM) padrão Combinações de máquinas de Turing A Tese de Turing. ADC/TC/Cap.9/ /LEI/DEIFCTUC 375

Autômatos Finitos Determinís3cos (AFD)

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

Exercícios Associados à Aula 28 (27/11/2013) Feitos em sala e em equipes

Capítulo 8: O problema da parada. Decidibilidade e computabilidade. José Lucas Rangel Introdução.

Variantes de Máquinas de Turing

Turing to Norma, uma ferramenta para auxiliar o estudo da equivalência entre Máquina de Turing e Máquina Norma

INE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos

Universidade Federal de Alfenas

Variedades Adicionais das Máquinas de Turing

Procedimentos e Algorítmos Programas e Linguagens de Programação Tese de Church-Turing Formas de Representação de Linguagens

S. C. Coutinho. Máquina de Turing Universal p. 1/22

SCC Capítulo 3 Linguagens Sensíveis ao Contexto e Autômatos Limitados Linearmente

Máquinas de Turing 3

Computabilidade e Complexidade (ENG10014)

SCC-5832 Teoria da Computação

Linguagens Livres do Contexto. Adaptado de H. Brandão

Autómatos determísticos de k-pilhas

Aula 9: Máquinas de Turing

1. Uma linguagem de uma máquina de Turing

Máquina de Turing e máquina de Turing universal

Máquinas Universais. Departamento de Ciência de Computadores da FCUP MC Aula 23 1

Teoria da Computação. Computabilidade e complexidade computacional

LINGUAGENS FORMAIS E AUTÔMATOS. Prova 2-10/06/ Prof. Marcus Ramos

Noções de algoritmos - Aula 1

SCC Teoria da Computação e Linguagens Formais

Autómatos de Pilha. Cada transição é caracterizada pelo estado, símbolo que está ser lido e o elemento no topo da pilha. dados de entrada.

SIMULAÇÃO DE MÁQUINA DE REGISTRADORES COM MÁQUINA DE TURING MULTIFITA

Linguagens Formais e Autômatos 02/2016. LFA Aula 01 24/10/2016. Celso Olivete Júnior.

Teoria da Computação Aula 01 Revisão de Conjuntos

ACH2043 INTRODUÇÃO À TEORIA DA COMPUTAÇÃO

LFA Aula 07. Equivalência entre AFD e AFND. Equivalência entre ER s e AF s Equivalência entre GR s e AF s. Linguagens Formais e Autômatos

Autômatos com Pilha: Reconhecedores de LLCs

Linguagens Formais e Problemas de Decisão

Folha 2 Autómatos e respectivas linguagens

Aula 3: Autômatos Finitos

Primeira Lista de Exercícios 2005/1... Exercício 1 Desenhe Diagrama de Estados para Máquinas que Decidem as Linguagens:

LINGUAGENS FORMAIS Definições. Desenvolveram-se na História em função da necessidade dos grupos humanos que as empregavam

Apostila 05 Assunto: Linguagens dos tipos 0 e 1

Teoria da Computação Exame 1 30 de Junho de 2003

Transcrição:

Teoria da Computação Referência Teoria da Computação (Divério, 2000) 1

L={(0,1)*00} de forma que você pode usar uma Máquina de Turing que não altera os símbolos da fita e sempre move a direita. MT_(0,1)*00=({0,1},{q Máquinas Universais 0,q 1,q 2,q 3 },Π,q 0,{q3}, {0,1},, ) 2

A linguagem de uma máquina de Turing Máquina de Turing Máquina de Turing com fita limitada Autômato à pilha Gramáticas livre de contexto Autômatos finitos Expressões regulares Gramáticas regulares 3

A linguagem de uma máquina de Turing Máquina de Turing Máquina de Turing com fita limitada Autômato à pilha Gramáticas livre de contexto Autômatos finitos Expressões regulares Gramáticas regulares 4

Usos da máquina de Turing 1. como reconhecedor de linguagens - Esta cadeia pertence à linguagem L(M)? ou esta é uma solução do problema? Visto na aula passada 2. para calcular funções (resolver problemas) - Resolução do problema. 3. para processar problemas de decisão - sim/não Bibliografia HOPCROFT, J. E.; ULLMAN, J. D.; MOTWANI, R. Introdução à Teoria de Autômatos, Linguagens e Computação. Rio de Janeiro: Elsevier, 2002. 5

L={(0,1)*00} de forma que você pode usar uma Máquina de Turing que não altera os símbolos da fita e sempre move a direita. MT_(0,1)*00=({0,1},{q Máquinas Universais 0,q 1,q 2,q 3 },Π,q 0,{q3}, {0,1},, ) MT como reconhecedor de linguagens 6

L = {waw w {0,1}*} MT_(0,1)*00=({0,1,a},{q 0,q 1,q 2,q 3,q 4,q 5 },Π,q 0,{q 5 },{X},, ) Usos da máquina de Turing MT como reconhecedor de linguagens 7

L = {waw w {0,1}*} MT_(0,1)*00=({0,1,a},{q 0,q 1,q 2,q 3,q 4,q 5 },Π,q 0,{q 5 },{X},, ) Usos da máquina de Turing MT como reconhecedor de linguagens 8

L = {ww r w é palavra de {a,b}*} MT_ww r =({a,b},{q 0,q 1,q 2,q 3,q 4,q 5,q 6 },Π,q 0,{q 6 },{k},, ) Usos da máquina de Turing MT como reconhecedor de linguagens 9

L = {ww r w é palavra de {a,b}*} MT_ww r =({a,b},{q 0,q 1,q 2,q 3,q 4,q 5,q 6 },Π,q 0,{q 6 },{k},, ) Usos da máquina de Turing MT como reconhecedor de linguagens 10

Uso da máquina de Turing para calcular funções (resolver problemas) Números inteiros são representados em vocabulário unário. O inteiro i >= 0 é representado pela cadeia0 i Se a função tem k argumentos (i 1, i 2,..., i k ) então esses inteiros são colocados na fita separados por 1 s como: 0 i1 1 0 i2 1... 10 ik O inverso também é possível. Se a máquina para (não importa em que estado) com a fita consistindo de 0 m para algum m, então dizemos que f(i 1,i 2,...i k ) = m, onde f é uma função de k argumentos computados por essa MT 11

Uso da máquina de Turing para calcular funções (resolver problemas) MT que realiza a soma de dois números naturais não negativos a+b Conteúdo inicial da fita: 0 a 10 b MT parada: 0 a+b 12

Uso da máquina de Turing para calcular funções (resolver problemas) MT que realiza a soma de dois números naturais não negativos a+b Conteúdo inicial da fita: 0 a 10 b MT parada: 0 a+b 1+2 = 3 Entrada MT = 0100 MT Parada = 000 13

Uso da máquina de Turing para calcular funções (resolver problemas) MT que realiza a operação a*2 Conteúdo inicial da fita: 0 a MT parada: 0 a+a Sugestão: Grave 1 depois do último 0. Grave o mesmo número de 0 s da entrada, à direita do 1. Haverá necessidade de substituir os 0 s originais por X Substitua o 1 por 0 (nesse momento a cadeia da fita éx a 0 a+1 ). Continue movendo à direita sem mudar a fita, até que um B seja encontrado. Mantenha o B e mova a esquerda para encontrar o último 0 mais a direita. Substitua esse 0 por B, para obterx a 0 a. Substitua todos os X por 0. 14

Uso da máquina de Turing para calcular funções (resolver problemas) MT que realiza a operação a*2 Conteúdo inicial da fita: 0 a MT parada: 0 a+a 15

Uso da máquina de Turing para calcular funções (resolver problemas) MT que realiza a operação soma 1 em números representados em binário, começados por # Exemplos: Conteúdo inicial da fita: #0010 MT parada: #0011 Conteúdo inicial da fita: #100 MT parada: #101 Conteúdo inicial da fita: #111 MT parada: #1000 16

Uso da máquina de Turing para calcular funções (resolver problemas) MT que realiza a operação soma 1 em números representados em binário, começados por# Exemplos: Conteúdo inicial da fita: #0010 MT parada: #0011 Conteúdo inicial da fita: #100 MT parada: #101 17

Uso da máquina de Turing para calcular funções (resolver problemas) MT que aceita números representados em binário, e produza a saída de acordo com as seguintes condições: Se o número for impar, subtrai 1 Se o número for par, soma 1 Exemplos: Conteúdo inicial da fita: #101 MT parada: #100 Conteúdo inicial da fita: #1001 MT parada: #1000 18

Uso da máquina de Turing para calcular funções (resolver problemas) MT que aceita números representados em binário, e produza a saída de acordo com as seguintes condições: Se o número for impar, subtrai 1 Se o número for par, soma 1 Exemplos: Conteúdo inicial da fita: #101 MT parada: #100 Conteúdo inicial da fita: #1001 MT parada: #1000 19

Uso da máquina de Turing para processar problemas de decisão Quando a MT é utilizada para decidir problemas (S/N) 20

Uso da máquina de Turing para processar problemas de decisão 1. MT que decide se um número representado na base binária é par ou impar Fica em q0 enquanto par Fica em q1 enquanto impar Se Par para e escreve 0 Se Impar para e escreve 1 21

Uso da máquina de Turing para processar problemas de decisão 1. MT que decide se um número representado na base binária é par ou impar Fica em q0 enquanto par Fica em q1 enquanto impar Se Par para e escreve 0 Se Impar para e escreve 1 22

Máquina de Turing Exercícios 1. Construir uma MT que decida se uma sequência de parênteses é bem formada. - Escreve 0 se mal formada - Escreve 1 se bem formada Dica: considere que a cadeia de parênteses é iniciada por # para facilitar a checagem. Ideia: Procurem por um ) e substitua por X e em seguida voltar a esquerda procurando o ( mais próximo para substituir por X também. 23

Máquina de Turing Exercícios 1. Construa uma máquina de Turing que receba uma cadeia de 1 s e 0 s: M = (Q, {0,1}, Γ, δ, q0, F) que resolva o comando: Se 1 então soma_elementos senão zera_número Ou seja, (1) se a MT recebe uma cadeia do tipo 1011111011 então deve calcular a soma de 11111 por 11, que dá 1111111 e ficar com a fita: 101111101101111111 (2) se receber a cadeia 0011111011, então deve zerar o número e ficar com a fita: 001111101100. 24

Máquina de Turing - Exercícios 2. Construa uma máquina de Turing que receba como entrada uma cadeia da linguagem da expressão regular #0 (0 + 1) (0 + 1)*# representando um número n na base 2 delimitado pelo símbolo # por exemplo, #010# - e produza, como saída, a cadeia correspondente ao número n + 2 na base 2, também delimitado por # resultando neste caso em #100# 3. Projete uma MT que receba como entrada uma sequência binária e produza como resultado o valor binário multiplicado por 4; 25

Outros Modelos de Máquinas Universais Máquina de Post A principal característica da Máquina de Post é de utilizar uma estrutura de dados do tipo fila para entrada, saída e memória de trabalho. Estruturalmente, o primeiro valor gravado é também o primeiro a ser lido (uma leitura exclui o dado lido). leitura de dados gravação de dados dados armazenados início da fila (cont.) 26 fim da fila

Outros Modelos de Máquinas Universais Máquina de Post e Máquina Norma são equivalentes à Máquina de Turing Infinitos registradores (Norma), fita infinita (Turing) e fila (Post) são estruturas que podem simular uma às outras. (cont.) 27

Máquina de Post Uma MP consiste de duas partes: a) Variável X Trata-se de uma variável do tipo fila e é utilizada como entrada, saída e memória de trabalho. A variável X não possui tamanho nem limite fixos. Seu comprimento é igual ao comprimento da palavra corrente armazenada. Os símbolos podem pertencer ao alfabeto de entrada ou a { # }, único símbolo auxiliar. Inicialmente, o valor de X é a palavra de entrada. Caso X não contenha símbolos, a entrada é vazia, representada por ε. (cont.) 28

Máquina de Post Uma MP consiste de duas partes: b) Programa É uma sequência finita de instruções, representado como um diagrama de fluxos, no qual cada vértice é uma instrução. As instruções podem ser de quatro tipos: partida, parada, desvio(leitura com teste) e atribuição. (cont.) 29

Máquina de Post Definição M = (, D, #) alfabeto de símbolos de entrada; D programa ou diagrama de fluxos construído a partir de componentes elementares - partida, parada, desvio e atribuição; # símbolo auxiliar. (cont.) 30

Máquina de Post Diagrama de Fluxos (Componentes) a) Partida: Existe somente uma instrução de início em um programa b) Parada: Existem duas alternativas de instruções de parada em um programa, uma de aceitação e outra de rejeição: partida aceita rejeita (cont.) 31

Máquina de Post Diagrama de Fluxos (Componentes) c) Desvio ou(leitura com Teste): X ler (X) lê o símbolo mais à esquerda da palavra armazenada em X, retirando o primeiro símbolo e desviando o fluxo do programa de acordo com o símbolo lido; fluxo do programa é determinado de acordo com o símbolo mais à esquerda da palavra. deve ser prevista a possibilidade de X conter a palavra vazia. (cont.) 32

Máquina de Post c) Desvio ou(leitura com Teste): X ler (X) Se o (entrada) é n, então existem n+2 arestas de desvios condicionais, pois se deve incluir as possibilidades# e ε X Ler (X) a 1 a 2 a n # ε... (cont.) 33

Máquina de Post d) Atribuição. X Xs É uma instrução de concatenação, gravando o símbolo indicado (pertencente a { # }) à direita da palavra armazenada na variável X (fim da fila). A operação de atribuição é representada a seguir, supondo que s { # }. X Xs (cont.) 34

Máquina de Post Diagrama de Fluxos Existe somente uma partida, mas podem existir diversas (zero ou mais) instruções de parada (aceitação / rejeição) ou ficar em loop infinito Em um desvio, se X contém ε, então segue o fluxo correspondente. Caso contrário, lê o símbolo mais à esquerda da palavra em X e remove-o após a decisão da próxima instrução (cont.) 35

Máquina de Post Exemplo Duplo Balanceamento Duplo_Bal = { a n b n n 0 } A Máquina de Post: Post_Duplo_Bal = ({ a, b }, D, #) onde D é, (fluxograma), tal que: ACEITA(Post_Duplo_Bal) = Duplo_Bal REJEITA(Post_Duplo_Bal) = * - Duplo_Bal LOOP(Post_Duplo_Bal) =. (cont.) 36

Máquina de Post X ler (X) partida X X# X ler (X) a b, ε # rejeita a b #, ε X Xa X ler (X) rejeita b # a, ε X Xb X X# rejeita aceita O algoritmo lê e remove o primeiro símbolo a; Realiza uma varredura circular em busca do correspondente b. Essa varredura é realizada através de sucessivas leituras (e remoções), armazenando o símbolo lido à direita dex. Ao encontrar o b, este é removido, e uma nova varredura circular é realizada até o fim da palavra de entrada (identificado pelo símbolo auxiliar #, atribuído a X no início do processamento). Este ciclo é repetido até restar a palavra vazia ou ocorrer alguma condição de rejeição. (cont.) 37

Máquina de Post - Simulador http://www.univasf.edu.br/~marcus.ramos/tc-2010-1/simulador_post.zip 38

Máquina de Post - Exercícios 1. Desenvolver uma máquina de Post, sobre o alfabeto {(, )}, que verifique se uma sequência de parênteses é bem formada. Exemplos: 39

Máquina de Post - Exercícios 2. Exercícios 3.6 3. Projete uma Máquina de Post para reconhecer o conjunto de todas as cadeias de O s e 1 s terminando por 00 L={(0,1)*00}. 4. Projete uma Máquina de Post para reconhecer o conjunto de todas as cadeias de entrada representada pela linguagem L= {(00,1)*01}. 5. Projete uma Máquina de Post para reconhecer se quantidade de 1 s é par. Exemplo: Entrada 11 é aceita; Entrada 111 é rejeitada (cont.) 40

Máquina de Post - Exercícios 6. 7. Adição entre 2 números (em notação unária). 8. Multiplicação entre 2 números (em notação unária). (cont.) 41