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

Documentos relacionados
UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

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

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

Linguagens Formais e Autômatos P. Blauth Menezes

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

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

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

Máquinas de Turing para construção: Foram encontrados dois modelos que se destacaram em nossas pesquisas.

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

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

1 INTRODUÇÃO E CONCEITOS BÁSICOS

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

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

CONJUNTO DE INSTRUÇÕES

Turma A - Segundas e Quartas das 8h30min - 10h10min Turma B - Segundas e Quartas das 10h30min - 12h10min

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

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

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

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

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

CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP)

Linguagens Regulares. Prof. Daniel Oliveira

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

I.2 Introdução a Teoria da Computação

SSC0112 Organização de Computadores Digitais I

DESENVOLVIMENTO DE UM SIMULADOR PARA CONTROLE DE VAGAS DE ESTACIONAMENTO UTILIZANDO AUTÔMATOS FINITOS E ARDUINO

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

Turing e Complexidade

SSC510 Arquitetura de Computadores 1ª AULA

Universidade Federal de Alfenas

Aula 9: Máquinas de Turing

Melhorias de um framework para o estudo de elementos de Teoria da Computação

ALGORITMOS 3ª Aula. 3. Introdução Tipos de dados, variáveis e operadores Tipos de dados

PCS3616. Programação de Sistemas (Sistemas de Programação) Visão Geral

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

9. Comando de repetição com variável de controle (para.. de.. até.. faça)

Arquitetura de Computadores. Professor: Vilson Heck Junior (Material: Douglas Juliani)

18/10/2010. Unidade de Controle Controle. UC Microprogramada

Teoria da Computação. Aula 01

Introdução à Computação MAC0110

Organização e Arquitetura de Computadores I

Aula 7: Autômatos com Pilha

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

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 Universais. Departamento de Ciência de Computadores da FCUP MC Aula 23 1

CCI - 22 Matemática Computacional

UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA

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

MUST: Mais Um Simulador da Máquina de Turing

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

Máquina de Turing. Teoria da Computação. Teoria da Computação. Histórico da Computação:

INE5317 Linguagens Formais e Compiladores AULA 6: Autômatos Finitos Com S aída

Organização de Sistemas Computacionais Processadores: Organização da CPU

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

Arquitetura de Computadores. Ciclo de Busca e Execução

Introdução Maquinas de Turing universais O problema da parada. Indecidibilidade. Rodrigo Gabriel Ferreira Soares DEINFO - UFRPE.

sumário 1 bases numéricas 1 2 sistemas de numeração em computação introdução representação de números... 3

Linguagens Formais e Autômatos (LFA)

Simulador de Processador de Computador com propósito didático

Aula 10: Decidibilidade

INE5317 Linguagens Formais e Compiladores AULA 3: Introdução a Teoria da Computação

Arquitetura e Organização de Computadores

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

PROGRAMAÇÃO I. Introdução

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

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 6. Programas, Máquinas e Computações

MAC2166 Introdução à Computação Aula 1 Como Funciona um Computador

AGT0001 Algoritmos Aula 01 O Computador

Conceitos Básicos de Programação

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2006/2007

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

Linguagens Livres de Contexto

Organização e Arquitetura de Computadores INTRODUÇÃO

Binário Decimal

Faculdade de Computação

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

a n Sistemas de Estados Finitos AF Determinísticos

Linguagens Livres de Contexto

Organização e Arquitetura de Computadores I

Máquina de Turing. Controle finito

ATIVIDADES PRÁTICAS SUPERVISIONADASS

a n Sistemas de Estados Finitos AF Determinísticos

MT como calculadoras de funções parciais

Computação na Biologia Molecular e Bionanotecnologia: Computação Biológica

Prof. Leandro Tonietto Introdução a computação e suas aplicações Curso de Segurança da Informação UNISINOS jun-09

PLANO DE ENSINO. CURSO: Bacharelado em Sistemas de Informação MODALIDADE: PRESENCIAL ( X ) OBRIGATÓRIA ( ) OPTATIVA DEPARTAMENTO: DEINFO

IBM1088 Linguagens Formais e Teoria da Computação

Máquinas de Turing: uma introdução

Variações de Máquinas de Turing

Linguagens Formais e Autômatos. Apresentação do Plano de Ensino

Gramáticas Sensíveis ao Contexto (GSC) Linguagens Sensíveis ao Contexto (LSC) Autômatos Linearmente Limitados (ALL)

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 4. Autômatos Finitos

Aula 10: Decidibilidade

Aula 3: Autômatos Finitos

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

Disciplina: Arquitetura de Computadores

Introdução à Computação

Prof. Leonardo Augusto Casillo

Transcrição:

4ª Jornada Científica e Tecnológica e 1º Simpósio de Pós-Graduação do IFSULDEMINAS 16, 17 e 18 de outubro de 2012, Muzambinho MG Turing to Norma, uma ferramenta para auxiliar o estudo da equivalência entre Máquina de Turing e Máquina Norma Adriano dos Reis Carvalho 1, Aline Marques Del Valle 2, Emerson Dias do Prado 3 e João Cláudio Dias Araújo 4 1 Instituto Federal do Sul de Minas Campus Muzambinho, Muzambinho, MG, arcarvalhov@gmail.com 2 Instituto Federal do Sul de Minas Campus Muzambinho, Muzambinho, MG, aline.valle@eafmuz.gov.br 3 Instituto Federal do Sul de Minas Campus Muzambinho, Muzambinho, MG, edprado6@hotmail.com 4 Instituto Federal do Sul de Minas Campus Muzambinho, Muzambinho, MG, jklaus.sd@gmail.com Introdução Hoje em dia é possível encontrar diversas ferramentas desenvolvidas para auxiliar o aprendizado dos conceitos da Teoria da computação e dos diversos modelos de dispositivos de computação. Grande parte dessas ferramentas se enquadra na categoria de simuladores de máquinas universais. Também é possível encontrar, com certa dificuldade, algumas ferramentas capazes de fazer a conversão de programas escritos para uma determinada máquina universal em programas para outro tipo de máquina universal. Um exemplo de ferramenta capaz de realizar tal conversão é a ferramenta SIMCO, que aborda conversões apenas entre algumas máquinas universais (ALVES, 2007). Devido à escassez de ferramentas conversoras de máquinas universais, e visando abordar casos não tratados pela ferramenta encontrada, foi desenvolvida uma ferramenta capaz de converter uma Máquina de Turing em um conjunto de instruções rotuladas de uma Máquina Norma, e a partir de uma sequencia de instruções rotuladas de uma Máquina Norma, gerar uma Máquina de Turing, para auxiliar professores e estudantes no estudo dos fundamentos da Teoria da Computação e na prova da equivalência entre máquinas universais. Material e métodos Proposta por Alan Mathison Turing (1912-1954) em 1936 a Máquina de Turing foi o primeiro modelo de uma máquina universal proposto e é o modelo computacional mais conhecido e comumente utilizado para formalização de algoritmos (ALVES, 2007). Segundo Sipser (2011) uma Máquina de Turing é semelhante a um autômato finito, possuindo uma memória ilimitada e irrestrita e pode realizar tudo que um computador real pode fazer. Sua estrutura compreende:

Fita: dispositivo tanto de entrada quanto de saída, além de servir como memória de trabalho; Unidade de leitura e gravação, ou unidade de controle: componente responsável pela leitura e gravação na fita; Função de transição ou programa: Define as ações da unidade de controle de acordo com o estado onde ela se encontra e o símbolo lido. O seu modelo formal é uma 8-tupla, M = {, Q,, q0, F, V, β, }, onde: = alfabeto de símbolos de entrada; Q = Conjunto finito de estados possíveis da máquina; = Programa; q0 = Estado inicial da máquina, q0 є Q; F = Conjunto de estados finais da máquina, F є Q; V = Alfabeto auxiliar; β = Símbolo branco; = Símbolo inicial; Podemos encontrar variações de Máquinas de Turing, mas nenhuma variação aumenta seu poder computacional. A Máquina Norma foi proposta em 1976 por Richard Bird e trata-se de uma máquina de registradores. Seu nome é um acrônimo de Number Theoretic Register Machine (Máquina Teórica de Números de Registradores). A arquitetura dos computadores da atualidade lembra a sua forma de definição. Nela pode-se utilizar um número infinito de registradores, quantos houver necessidade, como memória e sobre cada um dos registradores temos três instruções: adição do valor 1 (A:= A + 1); subtração do valor 1 (A:= A 1); testa se o valor armazenado é zero (A = 0). Estas instruções, aparentemente simples, são capazes de solucionar todos os problemas resolvidos pela Máquina de Turing, apresentando, portanto, o mesmo poder computacional. Segundo Diverio e Menezes (2011), a prova de que a Máquina de Turing é equivalente a Máquina Norma consiste em duas etapas: a) Turing Máquina Norma: a estrutura da máquina de Turing é simulada na Norma usando um arranjo unidimensional (DIVERIO; MENEZES, 2011, p.159)

b) Norma Turing: consiste na demonstração de que a Máquina de Turing é capaz de simular o uso dos registradores X e Y da Norma. Essa simulação ocorre da seguinte maneira: b1) O conteúdo de cada registrador (valor natural) é implementado de forma unária em Turing (ou seja, a repetição de um mesmo símbolo ao longo da fita, tantas vezes quanto for o valor do número natural); b.2) O registrador X ocupa as células pares da fita, e Y, as ímpares maiores que 1 (DIVERIO; MENEZES, 2011, p. 159). Suponha uma máquina de Turing M = (, Q,, q0, F, V, β, ). A simulação de M por um programa P em uma máquina Norma depende das seguintes definições: a) Fita. A fita é simulada como um arranjo unidimensional no registrador X. Cada célula da fita corresponde a uma posição no arranjo. Os símbolos de cada célula da fita são codificados como um número natural. Onde para um alfabeto = {a1, a2, a3,..., an}, o símbolo a i é codificado como o número natural i, o símbolo β é codificado como 0 e como n + 1. b) Estados. Para o conjunto de estados Q = {q0, q1, q2,, qn} em M, o programa P em Norma possui um conjunto de instruções rotuladas equivalente, onde o valor do rotulo referente a um estado qualquer é calculado pela equação 2 (u + 1), onde u representa o estado. Assim, para o conjunto de estados Q = {q0, q1, q2} em M, temos os rótulos {2, 4, 8} em P. c) Estado corrente. Para simular o estado corrente de M em uma máquina Norma é utilizado o registrador Q, que durante a simulação assume valores de n números naturais, onde n é o numero de estados de M. d) Cabeça da fita. A posição corrente da cabeça de leitura da fita é simulada em Norma com a utilização de um registador C. Ele armazena a posição corrente do arranjo armazenado no registrador X. e) Função programa. Compreende a simulação de uma transição de M representada pela expressão: = (q u, a r ) = (q v, a s, m). Onde: q u = estado corrente; a r = símbolo lido; q v = próximo estado a ser visitado; a s = símbolo a ser gravado na fita; m = sentido do movimento (E = esquerda; D = direita); Para simular o sentido do movimento, m, a máquina Norma mantém o registrador C. Para simular o movimento para direita C é incrementado, movimento para a esquerda C é decrementado.

Como a transição depende do estado corrente, q u, e do símbolo lido, a r, numa instrução rotulada (2 u+1 ) especifica um desvio incondicional para uma instrução rotulada pelo par (2 u+1, r). Algumas instruções em Norma conterão as macros End_A ou End_Q, que simulam o endereçamento indireto. O valor do registrador A é expresso por a. O valor do registrador Q é expresso por 2 v+1, que representa o estado q v. A expressão 3 Q.5 x(c) corresponde ao valor de A. Assim é possível distinguir as transições possíveis em um função do estado corrente e símbolo lido. f) Codificação. Codificação do conteúdo inicial da fita em um arranjo unidimensional no registrador X. g) Decodificação. Decodificação do conteúdo final da fita armazenado no registrador Y. Considerando a equivalência entre programas recursivos e monolíticos, onde para todo programa monolítico existe um recursivo equivalente, a prova de máquina Norma máquina de Turing se satisfaz considerando apenas programas monolíticos. Para isso suponha um programa monolítico P em uma máquina Norma de dois registradores (X, Y). A simulação de P por uma Máquina de Turing M = (, Q,, q0, F, V, β, ), onde o alfabeto é um conjunto unário {1}, pode ser definida como: a) Registrador X. Armazena em unário nas células pares da fita de M. Logo, um determinado número natural n armazenado em X, n células pares da fita armazenam o símbolo 1. b) Registrador Y. O registrador Y é armazenado na fita em unário, mas nas células ímpares, excetuando-se a primeira célula que armazena o símbolo, marco do início da fita. c) Rótulos de instruções. Os rótulos inicial e final correspondem ao estado inicial e final, respectivamente. Quanto aos demais rótulos, um rótulo r corresponde a um estado qr de M. d) Programa. A simulação do programa P por M se dá através da simulação das rotinas básicas de um programa em Norma: Adição: essa operação em uma Máquina Norma compreende o incremento do valor de um registrador, e na simulação consiste em adicionar o símbolo 1 na primeira célula par vazia para incrementar o valor do registrador X e para incrementar o valor de Y adiciona-se o símbolo 1 na primeira célula ímpar vazia, excetuando-se a primeira célula da fita. Subtração: Consistem em gravar o símbolo β sobrescrevendo o último símbolo 1 armazenado em células pares para decrementar o valor de X ou

sobrescrever o último símbolo 1 armazenado em células ímpares para decrementar o valor de Y. Teste: Verifica se a primeira célula par armazena o símbolo β para verificar se o registrador X é igual a zero ou se a segunda célula ímpar armazena o símbolo β, para verificar se Y é igual a zero. e) Codificação. Consiste em codificar o conteúdo inicial do registrador X em unário armazenando o valor nas células pares da fita. f) Decodificação. Compreende a decodificação dos valores armazenados nas células ímpares da fita repassando-o para o registrador Y. Resultados e Discussão Turing to Norma enquadra-se na categoria de conversores de máquinas universais, pois suas funcionalidades são: Conversão de um conjunto de estados de uma Máquina de Turing para um programa em Máquina Norma. Conversão de um programa em Máquina Norma em um conjunto de estados de uma Máquina de Turing. Exportar o programa em Máquina Norma. Figura 1. Tela principal do programa Turing to Norma.

A Figura 1 apresenta a tela principal do conversor Turing to Norma. Seu funcionamento é simples. Para encontrar a máquina Norma equivalente a uma Máquina de Turing genérica, o usuário deve fornecer o alfabeto, o conjunto de estados e preencher a tabela de transições da Máquina de Turing. Em seguida, clicar no botão gerar conexões, para o programa carregar as transições, e por fim, clicar no botão gerar M. Norma. Uma vez seguidos esses passos será mostrado no painel a direita do painel de visualização da Máquina de Turing, as instruções da Máquina Norma equivalente. Caso deseje, o usuário poderá salvar um arquivo de texto simples (.txt) com os rótulos e instruções do programa equivalente em Máquina Norma. Para converter um conjunto de instruções de um programa em Máquina Norma para uma Máquina de Turing genérica é preciso incluir as instruções através do botão adicionar rótulo. Ao clicar nesse botão irá aparecer um quadro onde o usuário irá fornecer o rótulo, a instrução a ser executada e o próximo rotulo. No caso de instruções de teste deve ser informado o rotulo, qual o teste, o rotulo se verdadeiro e o rotulo se falso. Em seguida, clicar no botão Gerar M. Turing. Será gerada a tabela de transição da Máquina de Turing equivalente. Conclusões Neste trabalho foi apresentado um software capaz de, a partir de uma Máquina de Turing, desenvolver um programa em Máquina Norma, e um programa em Máquina Norma gerar a tabela de transição de uma Máquina de Turing equivalente. Como trabalho futuro há o aperfeiçoamento da representação gráfica da Máquina de Turing de modo que também seja possível visualiza-la quando ela for produto da conversão de um programa em Máquina Norma. Ou ainda incluir um simulador desses dispositivos de computação. Referências Bibliográficas ALVES, D. P. Equivalência de Máquinas Universais: Demonstração, Análise e Simulação. São Leopoldo, 2007. Disponível em :<http://debora.wait4.org/tc.pdf> acesso em 20 de maio de 2012. DIVERIO, T. A.; MENEZES, P. B. Teoria da computação: Máquinas universais e computabilidade. 3. ed. Porto Alegre: Bookman, 2011. p 157-179. SIPSER, M. Introdução à Teoria da Computação. 2 ed. São Paulo: Cengage Learning, 2011. 143p.