Equivalência de Máquinas Universais: Demonstração, Análise e ...

119
Equivalência de Máquinas Universais: Demonstração, Análise e Simulação por Débora Pandolfi Alves

Transcript of Equivalência de Máquinas Universais: Demonstração, Análise e ...

Page 1: Equivalência de Máquinas Universais: Demonstração, Análise e ...

Equivalência de Máquinas

Universais: Demonstração,

Análise e Simulação

por

Débora Pandolfi Alves

Page 2: Equivalência de Máquinas Universais: Demonstração, Análise e ...

UNIVERSIDADE DO VALE DO RIO DOS SINOS

DÉBORA PANDOLFI ALVES

Equivalência de Máquinas Universais:Demonstração, Análise e Simulação

Monografia apresentada como requisitoparcial para a obtenção do grau deBacharel em Ciência da Computação

Profa. Dra. Ana Paula Lüdtke FerreiraOrientadora

São Leopoldo, julho de 2007

Page 3: Equivalência de Máquinas Universais: Demonstração, Análise e ...

"Undecidability is in some sense the most lethal form of complexity..."— Christos H. Papadimitriou

Page 4: Equivalência de Máquinas Universais: Demonstração, Análise e ...

AGRADECIMENTOS

Muitas pessoas contribuiram para a realização deste trabalho. Algumas pessoascontribuiram diretamente, como a minha orientadora, Ana Paula, que corrigiu tudomilhões de vezes e ainda me acalmou quando eu achei que não ia dar tempo determinar; como a Simone André da Costa que teve a idéia de tudo, e fez a gentepassar tanto trabalho :) Além das professoras, várias pessoas contribuiram, comoos meus colegas de trabalho que compreenderam e possibilitaram alguns dias de"folga", especialmente o Anderson, o Fábio e o Andrei que leram minha proposta detrabalho, meu relatório de andamento, e a introdução do trabalho, e deram váriassugestões. Claro que depois de ler a introdução, como todo bom amigo, eles pararamcom isso e começaram a dizer que eu devia estudar menos e tomar mais cerveja. Eprincipalmente, não posso esquecer, de quem ficou até o último momento antes daentrega (que vai acontecer assim que eu terminar de escrever isso) do meu lado, oRicardo que releu meu texto, me ajudou a desenhar figuras, me ajudou a achar umaferramenta descente pra desenhar figuras, corrigiu erros nos fontes texto que nãocompilavam . . . A estas pessoas que colocaram a mão na massa, ou neste trabalho,eu gostaria de agradecer, pois por causa delas este trabalho, tão importante paramim, foi realizado.

Mas existem várias pessoas que nem viram este trabalho e colaboraram muitomesmo assim. É claro que começo pela minha família, minha mãe e meu pai quealém de me darem sombra e água fresca durante a faculdade, não reclamaram dafilha desnatura que não passa mais tempo com eles por causa do TC; a minha irmãque reclamou horrores, mas é pra isso que irmã serve; minha sogra Lili que ficou tãoestressada quanto eu com a entrega do TC e sempre ajudou como pode; o Ricardo,de novo, que teve que me agüentar neurótica nos últimos meses e mesmo assimsempre estava do meu lado; e todo o resto da minha enorme família que quandoeu for visitar pra matar a saudades vai estar esperando por mim. Meus amigostambém foram muito importantes durante essa fase, mesmo eu vendo eles muitopouco, Vi, Bob e Φ, obrigada pelo apoio. A estas pessoas que me apoiaram, eugostaria de agradecer, pois por causa delas este trabalho, tão importante para mimfoi realizado, e no fim das contas ainda me sobrou alguma sanidade.

Page 5: Equivalência de Máquinas Universais: Demonstração, Análise e ...

SUMÁRIO

LISTA DE FIGURAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

LISTA DE TABELAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

LISTA DE ACRÔNIMOS . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

LISTA DE DEFINIÇÕES . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

LISTA DE EXEMPLOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

LISTA DE TEOREMAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

RESUMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

ABSTRACT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.1 Ensino de Teoria da Computação . . . . . . . . . . . . . . . . . . . . . . 151.2 Modelos Computacionais Universais . . . . . . . . . . . . . . . . . . . . . 161.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181.4 Organização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2 MÁQUINAS UNIVERSAIS . . . . . . . . . . . . . . . . . . . . . . . . 202.1 Máquina de Turing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.1.1 Definição Formal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.1.2 Modelo de Execução . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.1.3 Exemplo de Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.2 Máquina de Post . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.2.1 Definição Formal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.2.2 Modelo de Execução . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.2.3 Exemplo de Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.3 Máquina NORMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.3.1 Definição Formal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.3.2 Modelo de Execução . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.3.3 Exemplo de Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . 322.4 Autômato de Duas Pilhas . . . . . . . . . . . . . . . . . . . . . . . . . . 342.4.1 Definição Formal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342.4.2 Modelo de Execução . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.4.3 Exemplo de Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Page 6: Equivalência de Máquinas Universais: Demonstração, Análise e ...

3 EQUIVALÊNCIA DE MODELOS . . . . . . . . . . . . . . . . . . . . . 383.1 Equivalência Turing/Post . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.1.1 Tradução Turing/Post . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.1.2 Exemplo de Tradução . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.1.3 Equivalência Semântica . . . . . . . . . . . . . . . . . . . . . . . . . . 503.2 Equivalência Post/Norma . . . . . . . . . . . . . . . . . . . . . . . . . . 533.2.1 Tradução Post/Norma . . . . . . . . . . . . . . . . . . . . . . . . . . . 533.2.2 Exemplo de Tradução . . . . . . . . . . . . . . . . . . . . . . . . . . . 583.2.3 Prova de Equivalência . . . . . . . . . . . . . . . . . . . . . . . . . . . 583.3 Equivalência Norma/Autômato de Duas Pilhas . . . . . . . . . . . . . . . 623.3.1 Tradução Norma/Autômato de Duas Pilhas . . . . . . . . . . . . . . . . 623.3.2 Exemplo de Tradução . . . . . . . . . . . . . . . . . . . . . . . . . . . 673.3.3 Prova de Equivalência . . . . . . . . . . . . . . . . . . . . . . . . . . . 673.4 Equivalência Autômato de Duas Pilhas/Máquina de Turing . . . . . . . . . 723.4.1 Tradução Autômato de Duas PilhasMáquina de Turing . . . . . . . . . . 723.4.2 Exemplo de Tradução . . . . . . . . . . . . . . . . . . . . . . . . . . . 793.4.3 Prova de Equivalência . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

4 SIMCO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994.1 Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994.2 Representação de Programas . . . . . . . . . . . . . . . . . . . . . . . . . 1004.2.1 Programas de Máquina de Turing . . . . . . . . . . . . . . . . . . . . . 1004.2.2 Programas de Máquina de Post . . . . . . . . . . . . . . . . . . . . . . 1014.2.3 Linguagem para Máquina de Post . . . . . . . . . . . . . . . . . . . . . 1024.2.4 Programas de Máquina NORMA . . . . . . . . . . . . . . . . . . . . . . 1034.2.5 Linguagem para Máquina NORMA . . . . . . . . . . . . . . . . . . . . . 1034.2.6 Programas de Autômato de Duas Pilhas . . . . . . . . . . . . . . . . . . 1034.2.7 Linguagem para Autômato de Duas Pilhas . . . . . . . . . . . . . . . . 1044.3 Acompanhamento da Execução de Programas . . . . . . . . . . . . . . . . 1054.4 Conversão de Programas de Máquinas . . . . . . . . . . . . . . . . . . . . 106

5 TRABALHOS RELACIONADOS . . . . . . . . . . . . . . . . . . . . . 1085.1 Simuladores Simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1085.2 Simuladores de Modelos Diversos . . . . . . . . . . . . . . . . . . . . . . 1105.2.1 Turing’s World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1105.2.2 Java Computational Toolkit . . . . . . . . . . . . . . . . . . . . . . . . 1105.2.3 SAGEMoLic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1105.2.4 Visual Automata Simulator . . . . . . . . . . . . . . . . . . . . . . . . 1115.2.5 JFLAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115.3 Simuladores de Modelos Universais . . . . . . . . . . . . . . . . . . . . . . 1125.3.1 Deus ex machina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

6 CONSIDERAÇÕES FINAIS . . . . . . . . . . . . . . . . . . . . . . . . 1136.1 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1146.1.1 Manual e Internacionalização da Ferramenta . . . . . . . . . . . . . . . 1146.1.2 Visualização Gráfica da Estrutura de Memória . . . . . . . . . . . . . . . 1146.1.3 Editor Visual de Máquinas . . . . . . . . . . . . . . . . . . . . . . . . . 1146.1.4 Subprogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

Page 7: Equivalência de Máquinas Universais: Demonstração, Análise e ...

REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

Page 8: Equivalência de Máquinas Universais: Demonstração, Análise e ...

LISTA DE FIGURAS

Figura 2.1: Fita da Máquina de Turing . . . . . . . . . . . . . . . . . . . . . . 21Figura 2.2: Exemplo de Máquina de Turing . . . . . . . . . . . . . . . . . . . . 24Figura 2.3: Fila da Máquina de Post . . . . . . . . . . . . . . . . . . . . . . . . 25Figura 2.4: Máquina de Post . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Figura 2.5: Autômato de Duas Pilhas . . . . . . . . . . . . . . . . . . . . . . . 37

Figura 3.1: Fita da Máquina de Turing na Fila da Máquina de Post . . . . . . . 39Figura 3.2: Leitura na Máquina de Turing e na Máquina de Post . . . . . . . . . 40Figura 3.3: Subprograma para escrever na frente da fila . . . . . . . . . . . . . 40Figura 3.4: Deslocamento à direita cíclico . . . . . . . . . . . . . . . . . . . . . 41Figura 3.5: Estados iniciais das Máquinas de Turing e Post . . . . . . . . . . . . 45Figura 3.6: Subconjunto de estados de uma Máquina de Turing MT . . . . . . . 46Figura 3.7: Tradução de estados da Máquina de Turing para Máquina de Post . 47Figura 3.8: Escrever à Frente para a Tradução de estados da Máquina de Turing

para Máquina de Post . . . . . . . . . . . . . . . . . . . . . . . . . 48Figura 3.9: Mover à Direita para a Tradução de estados da Máquina de Turing

para Máquina de Post . . . . . . . . . . . . . . . . . . . . . . . . . 49Figura 3.10: Máquina de Post para reconhecer números binários . . . . . . . . . . 58Figura 3.11: Representação dos registradores nas pilhas . . . . . . . . . . . . . . 63Figura 3.12: Simulação de {sk} no Autômato de Duas Pilhas . . . . . . . . . . . 64Figura 3.13: Simulação de {adk} no Autômato de Duas Pilhas . . . . . . . . . . 65Figura 3.14: Simulação de {subk} no Autômato de Duas Pilhas . . . . . . . . . . 65Figura 3.15: Simulação de {zk} no Autômato de Duas Pilhas . . . . . . . . . . . 65Figura 3.16: Atribuição em Norma simulada no Autômato de Duas Pilhas . . . . 68Figura 3.17: Representação da fita de entrada e das pilhas Autômato de Duas

Pilhas em uma fita da Máquina de Turing . . . . . . . . . . . . . . 73Figura 3.18: Autômato de Duas Pilhas que reconhece números binários de qual-

quer tamanho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79Figura 3.19: Tradução do Autômato de Duas Pilhas que reconhece números biná-

rios de qualquer tamanho para Máquina de Turing . . . . . . . . . . 80

Figura 4.1: SIMCO executando um programa de Máquina de Turing . . . . . . . 100Figura 4.2: SIMCO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

Page 9: Equivalência de Máquinas Universais: Demonstração, Análise e ...

LISTA DE TABELAS

Tabela 3.1: A tradução das transições da Máquina de Turing para Máquina dePost. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

Tabela 3.2: Conjunto de estados gerados na tradução de Máquina de Turing paraMáquina de Post . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

Tabela 3.3: Tradução de Transições Post/Norma . . . . . . . . . . . . . . . . . 57Tabela 3.4: Tradução da Máquina de Post que reconhece números binários para

Máquina NORMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59Tabela 3.5: Tradução das instruções da Máquina NORMA para Autômato de Duas

Pilhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66Tabela 3.6: Conjunto de estados gerados na tradução de um programa para Má-

quina NORMA para Autômato de Duas Pilhas . . . . . . . . . . . . . 66Tabela 3.7: Tradução das transições do Autômato de Duas Pilhas para Máquina

de Turing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Tabela 3.8: Conjunto de estados gerados na tradução de Autômato de Duas Pi-

lhas para Máquina de Turing . . . . . . . . . . . . . . . . . . . . . 77

Tabela 4.1: Conjunto de Regras de Produção da Gramática da Máquina de Turing101Tabela 4.2: Conjunto das Regras de Produção da Gramática da Máquina de Post 102Tabela 4.3: Conjunto das Regras de Produção da Gramática da Máquina NORMA 104Tabela 4.4: Conjunto das Regras de Produção da Gramática da Autômato de

Duas Pilhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

Page 10: Equivalência de Máquinas Universais: Demonstração, Análise e ...

LISTA DE ACRÔNIMOS

ASCII American Standard Code for Information Interchange

BSD Berkeley Software Distribution

EPS Encapsulated PostScript

GNU GNU is Not UNIX

GPL General Public License

IDE Integrated Development Environment

JCT Java Computational Toolkit

JFLAP Java Formal Languages and Automata Package

NORMA Number theOretic Register MAchine

RAM Register Machines

SAGEMoLic Sistema de Animação Gráfica de Teoremas de Equivalência entreModelos e Linguagens Computacionais

SBC Sociedade Brasileira de Computação

Page 11: Equivalência de Máquinas Universais: Demonstração, Análise e ...

LISTA DE DEFINIÇÕES

Definição 2.1: Máquina de Turing . . . . . . . . . . . . . . . . . . . . . . . . . . 22Definição 2.2: Computação em uma Máquina de Turing . . . . . . . . . . . . . . 23Definição 2.3: Máquina de Post . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Definição 2.4: Computação em uma Máquina de Post . . . . . . . . . . . . . . . 27Definição 2.5: Máquina Norma . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Definição 2.6: Programa para Máquina NORMA . . . . . . . . . . . . . . . . . . 29Definição 2.7: Computação de um programa para Máquina NORMA . . . . . . . . 31Definição 2.8: Autômato de Duas Pilhas . . . . . . . . . . . . . . . . . . . . . . 34Definição 2.9: Computação em um Autômato de Duas Pilhas . . . . . . . . . . . 36Definição 3.1: Tradução Máquina de Turing/Máquina de Post . . . . . . . . . . . 46Definição 3.2: Tradução Máquina de Post/Máquina NORMA . . . . . . . . . . . . 57Definição 3.3: Tradução Máquina NORMA/Autômato de Duas Pilhas . . . . . . . 65Definição 3.4: Tradução Autômato de Duas Pilhas/Máquina de Turing . . . . . . 78Definição 4.1: Gramática da Máquina de Turing . . . . . . . . . . . . . . . . . . 101Definição 4.2: Gramática da Máquina de Post . . . . . . . . . . . . . . . . . . . 102Definição 4.3: Gramática da Máquina NORMA . . . . . . . . . . . . . . . . . . . 103Definição 4.4: Gramática da Autômato de Duas Pilhas . . . . . . . . . . . . . . . 104

Page 12: Equivalência de Máquinas Universais: Demonstração, Análise e ...

LISTA DE EXEMPLOS

Exemplo 2.2: Retira Uns Repetidos em Máquina de Turing . . . . . . . . . . . . 24Exemplo 2.4: Retira Uns Repetidos em Máquina de Post . . . . . . . . . . . . . 27Exemplo 2.6: Função identidade . . . . . . . . . . . . . . . . . . . . . . . . . . 30Exemplo 2.7: Identifica Números Primos . . . . . . . . . . . . . . . . . . . . . . 32Exemplo 2.9: Retira uns Repetidos em Autômato de Duas Pilhas . . . . . . . . . 36Exemplo 3.1: Tradução Turing/Post . . . . . . . . . . . . . . . . . . . . . . . . 46Exemplo 3.2: Tradução Post/Norma . . . . . . . . . . . . . . . . . . . . . . . . 58Exemplo 3.3: Tradução Norma/Autômato de Duas Pilhas . . . . . . . . . . . . . 67Exemplo 3.4: Tradução Autômato de Duas Pilhas/Turing . . . . . . . . . . . . . 79Exemplo 4.0: Simco: Retira Uns Repetidos em Máquina de Turing . . . . . . . . 101Exemplo 4.1: Simco: Retira Uns Repetidos em Máquina de Post . . . . . . . . . 102Exemplo 4.2: Simco: Retira Uns Repetidos em Máquina NORMA . . . . . . . . . 103Exemplo 4.3: Simco: Retira Uns Repetidos em Autômato de Duas Pilhas . . . . . 104

Page 13: Equivalência de Máquinas Universais: Demonstração, Análise e ...

LISTA DE TEOREMAS

Teorema 3.1: Equivalência Turing/Post . . . . . . . . . . . . . . . . . . . . . . . 50Teorema 3.2: Norma/Post . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58Teorema 3.3: Norma/Autômato de Duas Pilhas . . . . . . . . . . . . . . . . . . 67Teorema 3.4: Equivalência Autômato de Duas Pilhas/Turing . . . . . . . . . . . 79

Page 14: Equivalência de Máquinas Universais: Demonstração, Análise e ...

RESUMO

Este trabalho propõe-se a trabalhar sobre modelos universais de computaçãocom vistas a contribuir para o estudo de Teoria da Computação.

O foco deste trabalho recai sobre modelos universais mais conhecidos como Má-quina de Turing, Máquina de Post, Autômato de Duas Pilhas e Máquina de Regis-tradores NORMA. Para todos estes modelos são definidos formalmente sua estruturae seu modelo de execução.

O trabalho apresenta ainda, formalmente, conversões entre programas dos mo-delos já citados. Nomeadamente, são apresentadas conversões entre Máquinas deTuring e Máquinas de Post; entre Máquinas de Post e programas para MáquinasNorma; entre programas para Máquinas Normas e Autômatos de Duas Pilhas; entreAutômatos de Duas Pilhas e Máquinas de Turing. O fechamento do ciclo provaque todos os modelos são equivalentes entre si. Adicionalmente, todas as traduçõessão provadas corretas, ou seja, a tradução preserva a linguagem reconhecida pelasmáquinas.

As conversões demonstradas são ainda implementadas na forma de uma ferra-menta computacional, denominada SIMCO. Essa ferramenta simula a execução detodos os modelos e transforma programas de um modelo em programas de outromodelo, de acordo com as traduções apresentadas no parágrafo anterior. Espera-sedessa forma auxiliar o ensino de Teoria da Computação e a compreensão da Tese deChurch-Turing que, de outra forma, não é de compreensão trivial para os estudantesda área.

Palavras-chave: Máquinas Universais, Equivalência e Conversão de Máquinas,Turing, Post, Norma, Autômato de Duas Pilhas.

Page 15: Equivalência de Máquinas Universais: Demonstração, Análise e ...

ABSTRACT

Universal Machines Equivalence: Proofs, Analysis and Simulation

This work aims to develop a better understanding of universal models of com-putation, in order to contribute to Computation Theory teaching.

The focus of this thesis in centred on the most known and studied models ofcomputation: Turing machines, Post machines, Two-stack automata and NORMA

register machines. All this models have their structure and model of executionformally defined.

This work also formally presents translations between the already cited models.Namely, conversions between Turing machines and Post machines; between Post ma-chines and NORMA programs; between NORMA programs and Two-stack automata;between Two-stack automata and Turing machines are defined. The cycle closureassures that all models are equivalent amongst themselves. Moreover, all transla-tions are proven correct, in the sense that the translation preserves the languagerecognized by each machine.

All translations proven here are implemented in a computacional tool, namedSIMCO. This tool is capable of simulating the execution or programs for all thosemodels and also translates programs for one model to another, according to thetranslations presented within the previous paragraph. It is expected that teachingTheory of Computation becomes easily through the use of this tool and so thecomprehension of the Church-Turing thesis, which is usually not trivial to computerscience students.

Keywords: Universal Machines, Equivalence of Machine Translation, Turing, Post,Norma, Two Stack Automata.

Page 16: Equivalência de Máquinas Universais: Demonstração, Análise e ...

15

1 INTRODUÇÃO

1.1 Ensino de Teoria da Computação

O início do desenvolvimento da Teoria da Computação deu-se por volta de 1900quando o matemático alemão David Hilbert enumerou uma série de 100 (cem) pro-blemas matemáticos ainda não resolvidos. Entre esses problemas encontrava-se oProblema da Decidibilidade ou Entscheidungsproblem. Esse problema desafiava acriação de um procedimento efetivo (algoritmo) capaz de demonstrar a validadede um argumento do cálculo de predicados [1; 2; 3]. Em 1936, Alan Turing eAlonzo Church demonstraram, separadamente, a impossibilidade de solucionar esseproblema. Seus trabalhos introduziram os conceitos de computabilidade em [4] eefetivamente computável em [5], provados equivalentes em [5].

Até então, a idéia de computabilidade estava ligada somente à área da Matemá-tica, ao contrário do que acontece atualmente devido à difusão da tecnologia [6; 7].A Tese de Church-Turing [3] — que enuncia que

“Toda função que pode ser naturalmente considerada como com-

putável pode ser computada por uma Máquina de Turing.”

relaciona a noção de computabilidade, ligada essencialmente à arquitetura de VonNeumann para os estudantes e profissionais da Ciência da Computação, àquela deMáquina de Turing — é conhecida de todos, mas seu significado efetivo e veracidademuitas vezes escapam àqueles estudantes e profissionais.

Conforme Taylor afirma em [6; 7], os estudantes de Teoria da Computação apre-sentam dificuldades em compreender a Tese de Church-Turing e abstrair conceitosteóricos sobre computabilidade, uma vez que não possuem nenhum conceito robustosobre computabilidade pré-tecnológica. Por conseguinte, os alunos tendem a encararcomputabilidade como teoria de projeto de computadores, e não como filosofia daMatemática. Além disso, atualmente o ensino de computação é comumente voltadoà arquitetura de Von Neumann. O próprio currículo de referência da SBC [8], Socie-dade Brasileira de Computação, enfoca o ensino de arquitetura de computadores soba ótica do modelo de Von Neumann. As disciplinas de arquitetura de computadoresapresentam diversas versões da mesma arquitetura, enquanto arquiteturas mais res-tritas (e conseqüentemente outros modelos) são ignorados ou abordados com poucaprofundidade.

Além de compreender a Tese de Church-Turing, é preciso compreender a impor-tância do estudo da computabilidade. Entretanto, a tendência é de que os alunospassem a desconsiderar a tese, uma vez que na prática não encontram situaçõesonde estes conceitos sejam aplicáveis. A ausência da análise de computabilidade se

Page 17: Equivalência de Máquinas Universais: Demonstração, Análise e ...

16

deve principalmente à natureza dos problemas comumente resolvidos por meio dedispositivos computacionais até o século XX, essencialmente de consulta de dados ecálculos matemáticos.

Contudo, com a aplicação da Ciência da Computação em outras áreas de conhe-cimento, como por exemplo a Biologia, a arquitetura disponível pode apresentar-serestritiva. Sendo assim, torna-se necessário um estudo mais apurado da computa-bilidade a fim de definir a classe de problemas que pode ser computada por umadeterminada arquitetura. Conforme [3], o estudo da indecidibilidade possui basi-camente duas motivações relevantes: (i) evidenciar, ao provar que um problema éindecidível, que este deve ser simplificado ou modificado antes da tentativa de de-senvolver uma solução; e (ii) desenvolver uma perspectiva mais abrangente sobrecomputação para melhor compreender o tratamento de problemas.

A compreensão da Tese de Church-Turing é prejudicada caso não sejam estuda-das a fundo diferentes alternativas computacionais ao modelo de Turing. A faltade compreensão dessa tese e a sua ligação com arquiteturas comumente utilizadaspode fazer com que o aprendizado da Teoria da Computação seja superficial. Esseproblema pode ser amenizado por meio da interação dos estudantes com diferentesmodelos computacionais [6]. Atualmente, o ensino de Teoria da Computação é fo-cado no modelo da Máquina de Turing na maior parte dos cursos de graduação naárea da Computação e Informática. Entretanto, para os alunos não há uma relaçãoóbvia entre uma Máquina de Turing e uma arquitetura que siga o modelo de VonNeumann. É comum que apenas problemas clássicos como o problema da paradasejam vistos em aula, deixando pouco espaço para uma reflexão mais profunda porparte dos alunos sobre outras classes de problemas.

Outra questão que contribui para a dificuldade em classificar problemas é anoção parcial de algoritmo. A noção de algoritmo como “uma seqüência finitade passos executados em um tempo finito” omite qualquer relação à arquiteturaonde o algoritmo é executado. Para que o aluno se questione onde estes passosserão executados, fazendo a conexão entre algoritmo e máquina, é necessário que elepossua um conhecimento mínimo de diferentes tipos de arquiteturas. Isto não ocorrecom a freqüência desejada, pois como já foi mencionado, os currículos dos cursos degraduação tendem a apresentar o estudo de arquiteturas de computadores focadono modelo de Von Neumann ou em variações sutis do mesmo. Assim, limita-se avisão do que pode ser uma arquitetura de computadores e de como esta influenciana computação dos problemas em termos de complexidade e computabilidade.

A soma dos fatores supracitados torna mais difícil para o aluno perceber a relaçãoentre computabilidade e arquitetura, bem como desenvolver uma noção crítica apro-priada de computabilidade. Assim, quando o aluno se depara com outros problemasnão computáveis, tem dificuldade em identificá-los como tais. Por estes motivos oestudo e exploração de diferentes modelos de máquinas se faz tão importante.

1.2 Modelos Computacionais Universais

Embora o termo computação tenha surgido antes da criação do primeiro com-putador eletrônico, atualmente esta expressão é diretamente associada a máquinasfísicas, nomeadamente computadores. Antes de 1930, a palavra computador erautilizada para denominar as pessoas que trabalhavam realizando computações deforma manual ou com auxílio de dispositivos mecânicos [7].

Page 18: Equivalência de Máquinas Universais: Demonstração, Análise e ...

17

Computação, entretanto, é um termo genérico para qualquer tipo de processa-mento de informações que possa ser representado matematicamente, ou sob formade um algoritmo. Conseqüentemente, o conceito de computação está diretamenterelacionado ao conceito de algoritmo. A noção intuitiva de algoritmo é a de ummétodo genérico para solucionar uma família de questões relacionadas [7]. Maisespecificamente, um algoritmo é uma seqüência não ambígua de instruções que éexecutada em algum modelo computacional até que uma determinada condição sejaalcançada. Conforme [7], um algoritmo deve ser bem definido, de modo que a partirde qualquer ponto do algoritmo seja possível determinar qual será o próximo passoa ser realizado. A aplicação de um algoritmo para solucionar um problema é umaseqüência finita de passos conclusiva que leva a um resultado não ambíguo. A defi-nição de algoritmo não pode ser descrita formalmente de uma maneira rígida paranão restringir a classe de problemas tratados [7], mas deve ser específica o suficientede modo que as idéias envolvidas sejam compreensíveis e possam ser identificadasno tratamento dos problemas.

Os modelos computacionais apresentados aos estudantes caracterizam-se por umaspecto que os diferencia dos computadores modernos [9; 10]. Enquanto um com-putador apropriadamente programado é capaz de solucionar uma variedade de pro-blemas, as máquinas apresentadas nos modelos universais parecem ser específicaspara a solução de um único problema — o que representa mais um obstáculo paraa percepção do poder computacional de um modelo como a Máquina de Turing porparte do aluno. Essa idéia pode ser refutada a partir da definição de uma máquinauniversal U , que ao receber uma entrada interpreta-a como a descrição de uma outramáquina M , seguida da entrada a ser computada. A função da máquina U é, então,simular o comportamento de M para a entrada fornecida. Em [9] há uma definiçãoformal de uma Máquina de Turing Universal que computa uma Máquina de Turingqualquer. Esta definição, por sua vez, ajuda a evidenciar a conclusão de que exis-tem problemas não decidíveis, uma vez que não é possível definir uma Máquina deTuring para qualquer problema.

Uma Máquina de Turing pode ser considerada a noção matemática mais conclu-siva e genérica de um processo computacional (um algoritmo) [11]. Entretanto, nemtoda Máquina de Turing pode ser classificada como um algoritmo se consideradas asmáquinas semi-decidíveis, que rejeitam por nunca atingirem um estado de aceitação.Portanto, um programa definido para um modelo universal é um algoritmo somentese esta máquina termina sua execução para qualquer entrada possível.

Considerando a noção de algoritmo recém apresentada, é possível definir outroconceito relevante a este trabalho — o de programa. Um programa, assim comoum algoritmo, é um conjunto finito de instruções não ambíguas para realizar umadeterminada tarefa. Contudo, ao contrário de um algoritmo, um programa deve serrepresentado em uma linguagem precisamente definida [12]. Além disso, embora umalgoritmo seja definido pra ser uma seqüência finita de passos (para ser completadoem um número finito de passos), um programa não precisa atender a esta restrição[12].

A fim de compreender o conceito de programa é necessário definir o que é umalinguagem. Uma linguagem é um conjunto de palavras constituídas a partir de umalfabeto (conjunto finito de símbolos) específico Σ. Toda linguagem é então umsubconjunto de Σ∗, conjunto obtido a partir do fecho transitivo e reflexivo de Σcom respeito à operação de concatenação de símbolos [1]. Como Σ é um conjunto

Page 19: Equivalência de Máquinas Universais: Demonstração, Análise e ...

18

finito, Σ∗ é um conjunto infinitamente contável. O conjunto das partes de umconjunto infinitamente contável, contudo, é incontável. Ou seja, existe um númeroincontável de linguagens possíveis sobre um mesmo alfabeto, contudo somente umnúmero contável delas pode ser expressa de maneira finita. Uma linguagem deprogramação deve ter uma representação finita, que pode ser dada por qualquergramática geradora de linguagens. Esse argumento da cardinalidade do conjuntode linguagens e suas representações finitas é suficiente para garantir a existência deproblemas não computáveis, uma vez que todo problema pode ser reduzido a umproblema de reconhecimento de linguagens [9; 10]. O tipo de gramática usada definea classe da linguagem gerada. Uma linguagem de programação capaz de expressarqualquer tipo de algoritmo possível é dita Turing-completa [13].

1.3 Objetivos

Este trabalho objetiva facilitar o estudo de modelos computacionais universais.Para tanto, o trabalho é dividido em duas partes distintas e complementares: (i) de-monstrar a equivalência de modelos computacionais universais conhecidos (nome-adamente, NORMA, Turing, Post e Autômato de Duas Pilhas); e (ii) desenvolveruma ferramenta capaz de simular esses quatro modelos e de transformar programasescritos para um modelo em programas escritos para outro modelo.

Embora a literatura de Teoria da Computação apresentem esquemas para reali-zação de provas de equivalência entre modelos universais, predominantemente estesincluem apenas uma comparação entre Turing e algum outro modelo. Isto implicana limitação da percepção do aluno sobre as provas de equivalência, uma vez quea maioria delas é construída para o mesmo modelo. Provas completas de equiva-lência também raramente aparecem em livros didáticos. Normalmente a traduçãosintática de um modelo para outro é indicada, eventualmente acompanhada de mai-ores detalhes. Contudo, a prova formal de que a tradução preserva a semânticade execução raramente é apresentada. Em geral essas provas, em função de seudesenvolvimento mais trabalhoso, são deixadas como exercício para o leitor, sendoraramente cobrado. A prova formal da equivalência entre vários modelos diferentes,como será apresentada neste trabalho, contribui culturalmente para o estudante deTeoria da Computação, na medida em que o familiariza com o próprio conceito deprova.

A ferramenta realizará a conversão de programas escritos para um modelo emprogramas para outro modelo. A proposta é possibilitar a criação das seguintes con-versões de modelos: Turing→ Post, Post→ NORMA, NORMA→ Autômato de DuasPilhas, Autômato de Duas Pilhas → Turing, de maneira que seja possível realizarconversões entre todos os modelos ainda que indiretamente. O objetivo principal daferramenta é tornar evidente as equivalências entre modelos, e possibilitar a execuçãode programas maiores e mais complexos cuja simulação manual é muito trabalhosae, portanto, raramente realizada. Desta forma estimula-se e possibilita-se o estudode Teoria da Computação de forma mais completa e aprofundada [6; 14].

1.4 Organização

Este trabalho está organizado segundo a apresentação abaixo:

• O Capítulo 2 apresenta as máquinas universais que serão trabalhadas no âm-

Page 20: Equivalência de Máquinas Universais: Demonstração, Análise e ...

19

bito desse trabalho. Para cada modelo universal serão apresentados sua defini-ção formal, seu modelo de execução e um exemplo para facilitar o entendimentodos conceitos por trás do modelo. As definições de configuração e computação,chaves para as provas de equivalência, também são apresentadas formalmente.

• O Capítulo 3 demonstra como pode ser tratada a questão da tradução de pro-gramas entre os modelos. Esse Capítulo apresenta traduções para os modelosde modo que seja possível traduzir um programa escrito para um modelo emum programa para qualquer um dos outros apresentados nesse trabalho, pormeio de uma ou mais traduções. A partir de cada tradução apresentada, érealizada a demonstração de que a tradução preserva a semântica da execuçãodo modelo traduzido. A prova de equivalência entre os modelos é garantidapelo fecho transitivo da relação de tradução entre os modelos.

• O Capítulo 4 apresenta uma proposta para uma ferramenta de simulação econversão de modelos universais, focando na arquitetura e funcionamento daferramenta.

• Uma série de ferramentas relacionadas ao ensino de Teoria da Computação éapresentada no Capítulo 5. São destacadas as vantagens de cada uma, bemcomo suas características mais importantes, como forma de definir quais sãoas qualidades mais importantes em uma ferramenta deste tipo.

• Por fim, no Capítulo 6 são apresentadas as conclusões gerais obtidas durantea realização deste trabalho, e também um detalhamento dos objetivos futuros.

Page 21: Equivalência de Máquinas Universais: Demonstração, Análise e ...

20

2 MÁQUINAS UNIVERSAIS

A Tese de Church-Turing estabeleceu uma correspondência entre a noção intui-tiva de algoritmo e a definição precisa de Máquina de Turing ao enunciar:

“Toda função que pode ser naturalmente considerada como com-

putável pode ser computada por uma Máquina de Turing.”

Desta forma, as Máquinas de Turing passaram a servir como recurso de formaliza-ção de algoritmos. Máquinas com poder computacional equivalente (denominadasmáquinas universais) também passaram a ter o mesmo propósito. A adoção deuma definição matemática precisa de algoritmo possibilitou o estudo da computa-bilidade [7], e um problema que pode ser resolvido em alguma máquina universalpassou a ser considerado um problema computável.

Quando é necessário desenvolver um algoritmo para solucionar um problema,o primeiro passo deve ser decidir o tipo de máquina que interpretará o programa.Determinados modelos computacionais são mais adequados para tratar certos tiposde problemas, pois permitem a criação de algoritmos mais simples. Este é o caso, porexemplo, da utilização de uma Máquina de Turing como reconhecedor de linguagens.A implementação de um reconhecedor de linguagens para uma Máquina NORMA

pode se mostrar muito mais complexa do que realizar a mesma tarefa em umaMáquina de Turing. Segundo [15], deve-se considerar a possibilidade de utilizaruma máquina poderosa com recursos de máquinas reais. Entretanto, ainda assim énecessário que a máquina apresente um modo de operação simples o suficiente parapossibilitar a observação de suas propriedades, assim como a obtenção de conclusõessobre a classe de programas que o modelo pode computar. No caso das máquinasuniversais, como todas resolvem exatamente a mesma classe de problemas, a escolhado modelo deve ser guiada pelo tipo de problema em mãos.

Dentre os vários modelos computacionais universais, a seguir estão listados osque serão abordados nesse trabalho, bem como os motivos pelos quais esses modelosforam escolhidos.

Máquina de Turing Foi o primeiro modelo a ser apresentado [3], e também o mo-delo computacional mais conhecido e comumente utilizado para formalizaçãode algoritmos.

Máquina de Post Foi criado paralelamente ao modelo de Turing, sendo apresen-tado pouco tempo depois [16]. Apesar de ter sido criado de forma independentedo primeiro, apresenta uma solução bastante semelhante para o problema dadecidibilidade.

Page 22: Equivalência de Máquinas Universais: Demonstração, Análise e ...

21

Autômato de Duas Pilhas É um modelo baseado na generalização de autômatosde pilha [1], e por esse motivo pode ser mais facilmente compreendido pelosalunos que já conhecem o funcionamento de autômatos, visto que esse assuntoé tratado em grande parte dos cursos de Ciência da Computação.

RAM (Register Machines) Esse modelo consiste em uma máquina cuja memóriaé estruturada em registradores. Foi criado com a finalidade de representarcomputadores modernos [2], fato que ajuda o aluno a identificar a validadeda Tese de Church-Turing. Este modelo se aproxima das máquinas reais poisdiferencia a noção de programa e máquina. Ainda, as operações e testes sãorealizados considerando o conteúdo dos registradores especificados e não damemória como um todo. Um exemplo de máquina de registradores é a NORMA

[15], que será abordada nesse trabalho.

O restante deste Capítulo apresenta a definição formal de cada modelo abordadoneste trabalho, iniciando pelo modelo de Turing na Seção 2.1. As Seções 2.2 e 2.3apresentam, respectivamente, definições formais para os modelos de Post e NORMA.Finalmente, a Seção 2.4 encerra o Capítulo com a definição formal do modelo deAutômato de Duas Pilhas.

2.1 Máquina de Turing

Alan Turing propôs um modelo desenvolvido com o intuito de demonstrar aimpossibilidade de solucionar o problema da decidibilidade de Hilbert, conhecidocomo Entscheidungsproblem [3], em 1936. De acordo com [2], este modelo é umaanalogia a um mecanismo utilizado por um cientista para efetuar cálculos: o cientistapossui um estoque ilimitado de papel, lápis e borracha; no processo de solução doproblema o cientista pensa, faz anotações e lê anotações anteriores podendo alterá-las ou não; os raciocínios e alterações são executadas pelo cientista baseados emparte das anotações já feitas, uma vez que o cientista não consegue lembrar detodas ao mesmo tempo.

O propósito de uma Máquina de Turing é operar de maneira análoga. UmaMáquina de Turing é composta por: (i) uma fita de tamanho infinito dividida emblocos que representam os papéis do cientista; (ii) uma cabeça de leitura e escrita querepresenta o lápis e a borracha, possibilitando a leitura ou a escrita de um símbolopor vez, reposicionando-se na fita a partir de um movimento para o bloco antecessorou sucessor, mas nunca ultrapassando o limite à esquerda da fita; (iii) um conjuntode estados finitos que representam os raciocínios desenvolvidos pelo cientista, quesão alterados a partir das observações desse, causadas pelo estado atual, a posiçãoda cabeça de leitura e escrita e o símbolo que está correntemente sendo observado.A Figura 2.1 ilustra a organização da fita, onde cada bloco pode conter um símboloque corresponde às anotações do cientista

φ x1 x2 x3 x4 x5 x6 β β β β . . .

Figura 2.1: Fita da Máquina de Turing

Page 23: Equivalência de Máquinas Universais: Demonstração, Análise e ...

22

2.1.1 Definição Formal

Uma Máquina de Turing pode ser definida formalmente conforme a Definição 2.1.

Definição 2.1 (Máquina de Turing) Uma Máquina de Turing é uma sétupla,MT = (Q,Σ,Γ, δ, q0, qa, qr) onde:

1. Q é um conjunto finito de estados, representando os possíveis estados da má-quina.

2. Σ é o alfabeto de entrada.

3. Γ é o alfabeto da fita tal que Γ = Γ′∪Σ∪{β, φ}, onde β é o símbolo branco, φo símbolo de início de fita, e Γ′ pode ou não conter símbolos auxiliares. Semperda de generalidade, assume-se que Γ′ ∩ Σ ∩ {β, φ} = ∅.

4. δ : Q×Γ −→ Q×Γ×{←,→} é a função de transição entre os estados, sendoque ← e → indicam o sentido do movimento, esquerda e direita, da cabeça deleitura e escrita na fita.

5. q0 ∈ Q representa o estado inicial da máquina.

6. qa ∈ Q representa o estado de aceitação, que é atingido ao término da compu-tação da entrada caso essa seja aceita pela definição da máquina.

7. qr ∈ Q representa o estado de rejeição, de modo que qa 6= qr.

2.1.2 Modelo de Execução

Uma Máquina de Turing definida como MT = (Q,Σ,Γ, δ, q0, qa, qr) executa daseguinte maneira:

• MT recebe a cadeia de símbolos w ∈ Σ∗ a ser computada a partir do blocoseguinte ao símbolo de início da fita, φ. Então, se inicialmente a palavra a serprocessada é w = σ1σ2 . . . σn, onde n ≥ 0 e σi ∈ Σ para todo i = 1, . . . , n,o estado da fita da máquina MT corresponde ao símbolo de início de fitaφ concatenado com w e, além desses, todos os outros espaços da fita sãopreenchidos com símbolos brancos, β. A configuração da fita, inicialmente é,portanto, φσ1σ2 . . . σnβββ . . ..

• A cabeça de leitura e escrita inicialmente aponta para o primeiro símbolo daentrada. Como Σ não contém o símbolo branco, a primeira ocorrência dosímbolo branco na fita marca o fim da entrada. Neste trabalho, a indicaçãodo posicionamento da cabeça de leitura e escrita é feita por um sublinhadono símbolo para o qual a cabeça de leitura e escrita aponta. Assim, a fitade entrada e a posição inicial da cabeça de leitura e escrita são indicados porφσ1σ2 . . . σnβββ . . ..

• A computação da entrada inicia pelo símbolo seguinte ao caractere de iníciode fita conforme as regras da função de transição δ. A função de transição δdetermina, de acordo com o estado atual e símbolo lido, qual será o próximoestado, o símbolo gravado na fita, e a direção do movimento da cabeça deleitura e escrita. A cabeça de leitura e escrita movimenta-se em uma posiçãoà direita ou à esquerda de acordo com o sentido indicado pela transição.

Page 24: Equivalência de Máquinas Universais: Demonstração, Análise e ...

23

• Quando a cabeça de leitura e escrita aponta para a posição mais à esquerda dafita, onde está posicionado o símbolo de início de fita φ, na próxima transiçãoa cabeça deve obrigatoriamente mover-se para direita.

• O símbolo da posição seguinte é lido e tratado de acordo com a função detransição até que uma transição leve à um estado de parada qa ou qr.

• Se não houver uma transição para um dado símbolo, a computação é paradapor indefinição, o que significa que a palavra de entrada não é reconhecida poraquele programa.

Ao final da execução de uma Máquina de Turing, isto é, quando um dos estadosfinais foi atingido, a computação da entrada em uma Máquina de Turing será aseqüência das configurações obtidas pelas transições.

Formalmente, uma configuração de uma Máquina de Turing MT =(Q,Σ,Γ, δ, q0, qa, qr) é qualquer elemento do conjunto: Q × {φ}(Γ − {φ})∗ × (Γ −{φ}) × ((Γ − {φ})∗(Γ − {β, φ})) ∪ {ε}). Logo, uma configuração válida de umaMáquina de Turing MT pode ser, por exemplo, (q, φw, σ, w′) que significa que:

• o estado atual de MT é q;

• os símbolos à esquerda da cabeça de leitura e escrita formam a palavra w;

• a cabeça de leitura e escrita da fita esta apontado para o símbolo σ;

• os símbolos à direita da cabeça de leitura e escrita formam a palavra w′.

A palavra w′ é definida como w′ ∈ ((Γ−{φ})∗(Γ−{β, φ}))∪{ε}), isto é, ou w′ é umapalavra vazia ou w′ não termina com o símbolo branco. Esta definição considera quea fita da Máquina de Turing é infinita e as posições não utilizadas na computação sãopreenchidas com o símbolo branco, sem que, no entanto, haja infinitas configuraçõespossíveis para uma mesmo estado da fita. A fim de simplificar a legibilidade de umaconfiguração no formato (q, φw, σ, w′), esta será apresentada como (q, φwσw′).

A computação gerada pelo conjunto de configurações pode ser obtida pela defi-nição da relação entre as configurações de um Máquina de Turing MT . Esta relaçãoé dada pela Definição 2.2.

Definição 2.2 (Computação em uma Máquina de Turing) Seja MT =(Q,Σ,Γ, δ, q0, qa, qr) uma Máquina de Turing. A relação ⊢MT

(Q× {φ}(Γ− {φ})∗ × (Γ− {φ})× ((Γ− {φ})∗(Γ− {β, φ})) ∪ {ε}))×(Q× {φ}(Γ− {φ})∗ × (Γ− {φ})× ((Γ− {φ})∗(Γ− {β, φ})) ∪ {ε}))

entre duas configurações (q, φwau) e (q′, φw′xu′) de MT existe se e somente se existeuma transição

((q, a), (q′, a′, d)) ∈ δ tal que oud =→, w′ = wa′, u = xu′ oud =←, w = w′x, u′ = a′u

Nesse caso, escreve-se que (q, φwau) ⊢MT(q′, φw′a′u′). O fecho transitivo e

reflexivo da relação ⊢MTé denotado por ⊢∗MT

.

Page 25: Equivalência de Máquinas Universais: Demonstração, Análise e ...

24

Uma computação de uma Máquina de Turing MT é qualquer seqüência de con-figurações C1, C2, . . . , Cn, com n ≥ 1, tal que

C1 ⊢MTC2 ⊢MT

. . . ⊢MTCn

diz-se que tal computação tem comprimento n, e escreve-se C1 ⊢nMT

Cn.

Uma palavra w ∈ Σ∗ é aceita por uma Máquina de Turing MT se e somente sew = w1w2 . . . wn, com n ≥ 0, e existe uma computação em MT da forma

(q0, φw1w2 . . . wn) ⊢∗MT(qa, φγ)

para algum γ ∈ ((Γ− {φ})∗(Γ− {φ, β} ∪ {ε})).

2.1.3 Exemplo de Programa

A partir da Definição 2.1, uma Máquina de Turing pode ser definida como noExemplo 2.1. A máquina do exemplo reconhece números binários e remove algunssímbolos 1 repetidos, ou seja, o símbolo 1 sucedido por outro símbolo 1 é substituídopor 0.

Exemplo 2.1 (Retira Uns Repetidos em Máquina de Turing) Seja umaMáquina de Turing MT = (Q,Σ,Γ, δ, q0, qa, qr) onde:

Q = {q0, q1, q2, q3, qa, qr}Σ = {0, 1}Γ = {0, 1, φ, β}δ é descrita pelo diagrama de estados da Figura 2.2q0 é o estado inicialqa é o estado final de aceitaçãoqr não está ilustrado na figura, mas é representado pelastransições que não possuem um próximo estado descrito em δ

q0(1, 1,→) q1

(1, 1,←) q2(1, 0,→) q3

(1, 1,→) q4

(0, 0,→) (β , β , →)

qa(β , β , →)(β , β , →)

(1, 1,←)

(0, 0,→)

(0, 0,→)

Figura 2.2: Máquina de Turing que reconhece números binários e substitui por 0 símbolos1 sucedidos de 1.

A Figura 2.2 apresenta o modelo que será utilizado para definir uma Máquinade Turing neste trabalho. As transições do diagrama de estados apresentam rótulosque indicam a condição para alcançar o próximo estado do diagrama em forma detriplas. O primeiro caractere da tripla indica o símbolo com o qual será comparadoo símbolo lido da fita; o segundo caractere representa o símbolo que será gravado nafita caso a comparação resulte em igualdade; e finalmente o terceiro caractere indicao sentido do movimento da cabeça de leitura e escrita, direita ou esquerda.

Page 26: Equivalência de Máquinas Universais: Demonstração, Análise e ...

25

2.2 Máquina de Post

No mesmo ano que Turing introduziu o seu modelo, Emil Post apresentou umoutro modelo de máquina universal que envolvia dois conceitos: um espaço de sím-bolos onde a solução do problema é desenvolvida, e um conjunto fixo de instruçõesque determina a ordem das operações e onde elas são aplicadas no espaço simbólico[17].

O espaço simbólico definido por Post consiste em uma fila infinita por onde semove uma unidade de controle, capaz de operar em uma posição da fila por vez. Asposições da fila podem estar preenchidas ou não conforme ilustra a Figura 2.3. Nessafigura, o símbolo | representa posição preenchida e a ausência do símbolo representaposição vazia.

# | | | | . . .

Figura 2.3: Fila da Máquina de Post

Ainda conforme ilustrado na Figura 2.3, uma das posições da fila é marcadacomo ponto de partida, e essa posição é indicada pelo símbolo #. A configuraçãode posições marcadas na fila inicialmente são uma representação do problema, en-quanto que ao final da execução essa configuração passa a representar a soluçãoou resposta do problema. Entretanto, Post não se preocupou em definir como se-ria essa representação, que deve ser feita por um agente externo antes e depois dacomputação do problema. Uma possível solução para realizar esta representaçãoseria utilizar uma representação binária para o alfabeto utilizado na descrição doproblema, de modo que uma posição vazia significa zero, uma posição preenchidasignifica um, e cada oito posições correspondem a um símbolo. Por praticidade, oalfabeto utilizado será mais vasto uma vez que podemos considerar o conjunto deoito posições da fila preenchidas por zeros e uns como se fosse uma única posiçãorepresentando um símbolo.

A unidade de controle ou trabalho, como definida por Post [17], deve ser capazde (i) marcar uma posição da fila (assumindo que esteja previamente vazia); (ii)desmarcar uma posição da fila (assumindo que esteja preenchida); (iii) mover-separa uma posição à direita ou à esquerda; e (iv) determinar se a posição da filaindicada pela posição da unidade de controle está marcada ou não.

2.2.1 Definição Formal

Formalmente uma Máquina de Post pode ser descrita conforme a Definição 2.3.

Definição 2.3 (Máquina de Post) Uma Máquina de Post é uma sétupla MP =(L,E,Σ,Γ, δ, qi, {qa, qr}) onde:

1. L é um conjunto finito de estados de leitura denotados por L1, L2, L3, . . . , Ln

que removem o símbolo à frente da fila, e ramificam de acordo com o símbololido. Podem ser criados ramos para todos símbolos em Σ ou Γ.

2. E é um conjunto finito de estados de escrita denotados por E1, E2, E3, . . . , En

que concatenam um símbolo ao final da fila.

Page 27: Equivalência de Máquinas Universais: Demonstração, Análise e ...

26

3. Σ é o alfabeto de entrada da fila.

4. Γ é o alfabeto auxiliar da fila tal que Γ = Γ′ ∪ Σ ∪ {#}, onde # é o símbolode início da fila e Γ′ pode ou não conter símbolos auxiliares. Sem perda degeneralidade, assume-se que Γ′ ∩ Σ ∩ {#} = ∅.

5. δ : Q× Γ −→ Q× Γ é a função de transição entre os estados, tal que Q podepertencer a L ou E.

6. qi representa o estado inicial da máquina.

7. {qa, qr} representa o conjunto de estados finais que são atingidos ao término dacomputação da entrada, conforme esta seja aceita ou rejeitada pela definiçãoda máquina, de modo que qa 6= qr.

2.2.2 Modelo de Execução

A execução de uma Máquina de Post MP = (L,E,Σ,Γ, δ, qi, {qa, qr}) segue osseguintes passos:

• MP recebe a cadeia de símbolos w ∈ Σ∗ a ser computada, tal que w =σ1σ2 . . . σn, sendo que σ1 será armazenado na primeira posição da fila, σ2 nasegunda posição, e assim por diante.

• O símbolo auxiliar # é inserido no fim fila para marcar o fim da entrada a sercomputada.

• Os estados de escrita denotados por E1, E2, E3, . . . , En realizam a inclusão deum símbolo no fim da fila.

• Os estados de leitura L1, L2, L3, . . . , Ln realizam a retirada de um símbolo noinício da fila e definem um desvio de acordo com o símbolo lido. Caso nãohaja um desvio explícito indicando o próximo estado para o símbolo lido, aexecução termina e a entrada é rejeitada.

• A computação da entrada inicia conforme as regras da função de transição δ,que determina o próximo estado de acordo com o estado atual e o símbolo lidoou escrito, até que um estado de parada qa ou qr seja atingido.

A configuração de uma Máquina de Post definida como MP =(L,E,Σ,Γ, δ, qi, {qa, qr}) é qualquer elemento do conjunto (L∪E∪{q0}∪{qa, qr})×Γ∗×Γ∗. Se (q, w, w′) é uma configuração de uma Máquina de Post MP , então sabe-seque:

• o estado atual de MP é q, tal que q é um estado ou de leitura, ou de escrita,ou inicial, ou final;

• w é a palavra formada pelos símbolos gravados na fila à esquerda de #;

• w′ é a palavra formada pelos símbolos gravados na fila à direita de #.

A computação gerada pelo conjunto de configurações pode ser obtida pela defi-nição da relação entre as configurações de uma Máquina de Post MP . Esta relaçãoé dada pela Definição 2.4.

Page 28: Equivalência de Máquinas Universais: Demonstração, Análise e ...

27

Definição 2.4 (Computação em uma Máquina de Post) Seja MP =(L,E,Σ,Γ, δ, qi, {qa, qr}) uma Máquina de Post. A relação ⊢MP

(L ∪ E ∪{q0} ∪ {qa, qr}) × (Γ∗ ∪ {ε}) × (Γ∗ ∪ {ε}) entre duas configurações (q, w, u) e(q′, w′, u′) de MP existe se e somente se existe uma transição ((q, ?), (q′, ?)) tal que:

(q, w, u) ⊢MP(q′, w, u) se e somente se:

q = q0(q, w, u) ⊢MP

(q′, w′, u) se e somente se:q ∈ Lw = aw′

u = u′

(q, w, u) ⊢MP(q′, w, u′) se e somente se:

q ∈ Ew′ = wu′ = ua

e existe uma transição: ((q, w, u), (q′, w′, u′)) ∈ δMP

Nesse caso, escreve-se que (q, w, u) ⊢MP(q′, w′, u′). O fecho transitivo e reflexivo

da relação ⊢MPé denotado por ⊢∗MP

.Uma computação de uma Máquina de Post MP é qualquer seqüência de configu-

rações C1, C2, . . . , Cn, com n ≥ 1, tal que

C1 ⊢MPC2 ⊢MP

. . . ⊢MPCn

diz-se que tal computação tem comprimento n, e escreve-se C1 ⊢nMP

Cn.

Uma palavra w ∈ Σ∗ é aceita por uma Máquina de Post MP se e somente sew = w1w2 . . . wn, com n ≥ 0, e existe uma computação em MP da forma

(qi, w, ε) ⊢∗MP

(qa, w, γ)

para algum γ ∈ (Γ− {#})∗.

2.2.3 Exemplo de Programa

O Exemplo 2.2 ilustra o funcionamento de uma Máquina de Post para umamáquina que reconhece números binários e remove alguns símbolos 1 repetidos, 1sucedido por outro símbolo 1 é substituído por 0.

Exemplo 2.2 (Retira Uns Repetidos em Máquina de Post) Seja uma Má-quina de Post MP = (L,E,Σ,Γ, δ, qi, {qa, qr}) onde:

L = {L1, L2, L3, L4}L = {E1, E2, E3, E4, E5, E6, E7, E8, }Σ = {0, 1}Γ = {0, 1,#, $}δ é definida pelo diagrama de estados.qi é o estado inicial.qa é o estado final de aceitação.qr não está desenhado na diagrama de estados mas poderia serincluído como o próximo estado de qualquer outra transiçãoque possa ocorrer que não foi descrita no diagrama.

Page 29: Equivalência de Máquinas Universais: Demonstração, Análise e ...

28

qi E1 # L11

E3 $ L2

E2 0 L3 E4 1

E5 ¬$

qa

E6 0L4E8 1

E7 ¬$

#

#

$

0 1

¬$

0

$

¬$

Figura 2.4: Máquina de Post que reconhece números binários e substitui por 0 símbolos1 sucedidos de 1.

Conforme a Figura 2.4, a máquina apresenta catorze estados, onde além dosestados inicial e finais, são apresentados os estado de escrita de um símbolo na filae o os estados de leitura. A partir dos estados de leitura, as transições indicam opróximo estado de acordo com os símbolos lidos que rotulam as arestas. Para reduziro número de transições necessárias nos estados L3 e L4, utilizou-se a notação ¬$para indicar qualquer símbolo lido diferente de $. Sem essa notação, seria necessárioincluir uma transição para cada símbolo de Γ excluindo $.

2.3 Máquina NORMA

O modelo de máquinas de registradores, do qual faz parte a Máquina NORMA,apresenta diferenças importantes em relação aos outros modelos apresentados nestetrabalho. Esse modelo surgiu mais recentemente em comparação aos demais mo-delos, visto ter sido desenvolvido para ser uma representação aproximada dos com-putadores modernos. A estrutura de memória de uma máquina de registradores écomposta por um número infinito de registradores que, diferentemente dos demaismodelos, podem ser modificados independentemente. Esse modelo segue o padrãoda memória de acesso direto dos computadores eletrônicos modernos [2; 15].

Ainda, nas máquinas de registradores a noção de programa e máquina apresenta-se de forma dissociada. Mais precisamente, a função programa definida para realizaruma computação forma um conjunto de instruções rotuladas, que operam sobre aestrutura de registradores. A estrutura de controle executa instruções nos regis-tradores que podem armazenar um número inteiro arbitrariamente grande. Alémdos registradores, o modelo é composto por quatro operações básicas: incremento,decremento, salto condicional e parada. Essas operações podem ser utilizadas de

Page 30: Equivalência de Máquinas Universais: Demonstração, Análise e ...

29

modo a compor as demais operações necessárias para computações mais complexas.A máquina de registradores abordada neste trabalho é a NORMA, cujo nome

significa Number theOretic Register MAchine.

2.3.1 Definição Formal

A definição de uma Máquina NORMA, conforme já mencionado, diferencia-se dasoutras máquinas universais aqui apresentadas, uma vez que a noção de programae máquina são isoladas. Formalmente, uma Máquina NORMA pode ser definidaconforme a Definição 2.5, a partir da qual define-se um programa para uma MáquinaNORMA na Definição 2.6.

Definição 2.5 (Máquina Norma) Uma Máquina Norma é uma tupla MN =({Rk}

∞k=0, {{ek}, {sk}, {zk}, {{adk}, {subk}}

∞k=0), onde:

1. {Rk}∞k=0 ∈ N

∞ é um conjunto infinitamente contável de registradores indexadospor k.

2. {{ek}, {sk}, {zk}, {{adk}, {subk}}∞k=0 é o conjunto de famílias de funções inde-

xadas de uma máquina de Norma onde:

(a) ek : N∪{ε} → N∞k=0 representa uma família de funções de entrada tal que,

o resultado da aplicação da função ek(X), no conjunto de registradores{Ri}

∞i=0, é o armazenamento do valor X no registrador Rk e zero nos

demais registradores. Ou seja, após a aplicação de ek(X), Rk = X eRi = 0 para todo i 6= k, se X ∈ N. Se X = ε então ek não modifica oconteúdo dos registradores e o programa termina.

(b) sk : N→ N∞k=0 é a família de funções de saída tal que, o resultado da apli-

cação da função sY , no conjunto de registradores {Ri}∞i=1, é a recuperação

do valor contido no registrador RY .

(c) {zk} : N∞ → {v, f} é a família de funções de testes onde o resultado da

aplicação de zk, no conjunto de registradores {Ri}∞i=1, é um valor verdade.

Ou seja, se {Rk} = 0, o resultado será v, verdadeiro, caso contrário seráf , falso.

(d) {adk} : N∞ → N

∞ é a família de funções de testes onde o resultado daaplicação de adk no conjunto de registradores {Ri}

∞i=1 é incrementar o

valor do registrador Rk. Dessa forma, se Rk = 4 e adk então Rk = 5.

(e) {subk} : N∞ → N

∞ é a família de funções de testes onde o resultado daaplicação de {subk} no conjunto de registradores {Ri}

∞i=1 é decrementar

o valor do registrador Rk. Assim, se Rk = 4 e subk então Rk = 3.

Definição 2.6 (Programa para Máquina NORMA) Dada uma MáquinaNORMA MN = ({Rk}

∞k=0, {{ek}, {sk}, {zk}, {{adk}, {subk}}

∞k=0), um programa para

a máquina MN é uma tupla P = (X,Y, I, C, i0), onde

1. X ∈ {Rk}∞k=0 é o registrador onde será armazenada a entrada.

2. Y ∈ {Rk}∞k=0 é o registrador onde será armazenada a saída.

3. I é um conjunto finito de rótulos que identificam as instruções do programa.

Page 31: Equivalência de Máquinas Universais: Demonstração, Análise e ...

30

4. C ⊆ I × (Q × (I ∪ (I × I)) ∪ {ε}) é o conjunto de instruções que for-mam o programa, tal que o primeiro elemento da tupla é o rótulo da ins-trução, o segundo elemento é uma função pertencente ao conjunto Q ⊆{{ek}, {sk}, {zk}, {{adk}, {subk}}

∞k=0 e o último elemento da tupla é o rótulo

da instrução seguinte, se a instrução seguinte for vazia, então a instrução atualé uma instrução final. Para uma instrução (r, i, p) ∈ C tem-se que se i ∈ {zk}então p ∈ I × I e p ∈ I caso contrário.

5. i0 ∈ I é o rótulo da instrução inicial do programa.

Deste modo, pode-se definir um programa para Máquina NORMA como no Exem-plo 2.3.

Exemplo 2.3 (Função identidade) Seja o programa para uma Máquina NORMA

PN = (R1, R2, {0, 1, 2, 3, 4,FIM}, C) onde C = {(0, e1(X), 1), (1, z1, (4, 2)),(2, sub1, 3), (3, add2, 1), (4, s2,FIM), (FIM, ε, ε)} e a função instr é indicada pela ro-tulação das instruções de programa. O programa PN computa a função identidade, ouseja, a função id : N→ N tal que id(x) = x para todo x ∈ N. A leitura deste programapode ser facilitada se o programa for reescrito utilizando uma notação mais intuitiva,semelhante à utilizada em linguagens de programação de alto nível. Assim, PN pode serescrito como:

0: faça e1(X) vá para 11: se z1 vá para 4 senão vá para 22: faça sub1 vá para 33: faça add2 vá para 14: faça s2 vá para FIM

FIM:

O programa de exemplo ilustra a notação de instrução. Nesta notação foramutilizadas algumas palavras-chave, tais como faça, se, senão, vá para, que não pos-suem significado semântico em termos da máquina ou do programa. Estas palavrasestão presentes no programa apenas para facilitar a legibilidade do código, podendoser removidas sem causar nenhuma perda. Deste modo tem-se que uma instruçãodo programa para a Máquina NORMA é escrita em um formato:

• (r, opk, i) ∈ C é escrita r : faça opk vá para i, onde r é um rótulo seguido de :,opk é uma operação indexada por k, e i é o rótulo da próxima instrução a serexecutada.

• (r, tk, i, j) ∈ C é escrita r : se tk vá para i senão vá para j, onde r é um rótuloseguido de :, tk é um teste indexado por k, i é o rótulo da próxima instruçãoa ser executada se o teste resultar em verdadeiro, e j é o rótulo da próximainstrução a ser executada se o teste resultar em falso.

• FIM é escrita FIM :, onde FIM é um rótulo seguido de :, sendo que esta é ainstrução vazia que possui o rótulo final, uma vez que já foi realizada a cópiada saída para o registrador de saída.

Page 32: Equivalência de Máquinas Universais: Demonstração, Análise e ...

31

2.3.2 Modelo de Execução

Um programa para uma Máquina NORMA definido como PN = (X,Y, I, C, i0)executa da seguinte maneira:

• PN inicia sua execução na instrução rotuladas com i0 recebendo uma entradapela instrução eX . O valor passado como parâmetro para eX é então carregadono registrador X, sendo que os demais registradores recebem o valor zero.Inicialmente, se a entrada (representada por um número natural) for n, entãoRX = n e todo Ri = 0 tal que i 6= X.

• As instruções podem ser compostas de operações ou testes. Tanto as operaçõescomo os testes são indexados pelo índice do registrador que será utilizado. Nocaso de uma operação, o conteúdo do registrador é modificado, enquanto queno caso de um teste o conteúdo é acessado sem ser modificado.

• Cada instrução indica uma operação ou teste e o rótulo da próxima instruçãoa ser executada. Se a instrução indicar um teste, são indicados dois rótulos: oprimeiro será seguido caso o teste retorne verdadeiro e o segundo rótulo seráseguido caso o teste retorne falso.

• Se uma instrução rotulada indicar que a próxima instrução a ser realizada éum rótulo que não esté presente no programa, a execução pára sem gerar umresultado de saída.

• A instrução final é qualquer instrução que não indique uma próxima instrução.

Ao final da execução de uma Máquina NORMA, quando uma das instruções finaisfoi atingida, a computação da entrada em uma Máquina NORMA será a seqüênciadas configurações obtidas pelas transições.

Define-se mem : {Rk}∞k=0 → N a coleção de todas as funções totais existentes

entre os conjuntos {Rk}∞k=0 e N. Os elementos do conjunto mem são denominados

funções memória do programa, e retornam, para cada registrador deste, o seu cor-respondente valor. Formalmente, uma configuração de um programa para MáquinaNORMA PN em execução é qualquer elemento do conjunto: I × mem. Se (r,m) éuma configuração de PN , então sabe-se que:

• O rótulo da próxima instrução a ser executada em PN é r.

• m = {(R0, v0), (R1, v1), (R2, v2) . . .} e o valor do conteúdo de cada registradorRi é vi = m(R1) para todo i ≥ 0.

A computação gerada pelo conjunto de configurações pode ser obtida pela defi-nição da relação entre as configurações de um programa para Máquina NORMA PN

em execução. Esta relação é dada pela Definição 2.7.

Definição 2.7 (Computação de um programa para Máquina NORMA)Seja MN = ({Rk}

∞k=0, {{ek}, {sk}, {zk}, {{adk}, {subk}}

∞k=0) uma Máquina NORMA

e PN = (X,Y, I, C, i0) um programa para MN .A relação ⊢MN

⊆ (I×mem)× (I×mem) existe entre duas configurações (r,m) e(r′,m′) de PN , se e somente se existe uma instrução (r, c, n) ∈ C onde exatamenteuma das seguintes alternativas é verdadeira:

Page 33: Equivalência de Máquinas Universais: Demonstração, Análise e ...

32

• c = eX(x), n = r′, m(Ri) = m′(Ri) para todo i 6= X e m′(RX) = x.

• c = sY , n = r′, m = m′ e o valor de sY é retornado como saída do programa.

• c = adk, n = r′, m(Ri) = m′(Ri) para todo i 6= k e m′(Rk) = m(Rk) + 1.

• c = subk, n = r′, m(Ri) = m′(Ri) para todo i 6= k e m′(Rk) = m(Rk)− 1.

• c = zk, n = (rv, rf), m = m′ e r′ = rv se zk = v (verdadeiro) e r′ = rf casozk = f (falso).

Nesse caso, escreve-se que (r,m) ⊢MN(r′,m′). O fecho transitivo e reflexivo da

relação ⊢MNé denotado por ⊢∗MN

.

Uma computação de uma Máquina NORMA MN é qualquer seqüência de confi-gurações C1, C2, . . . , Cn, com n ≥ 1, tal que

C1 ⊢MNC2 ⊢MN

. . . ⊢MNCn

diz-se que tal computação tem comprimento n, e escreve-se C1 ⊢nMN

Cn.

Uma entrada w é aceita por um programa PN da Máquina NORMA MN se esomente se existe uma computação em PN da forma

(i0, ek(w)) ⊢∗MN(FIM, ε)

2.3.3 Exemplo de Programa

A partir da Definição 2.5, uma Máquina NORMA pode ser definida como noExemplo 2.4.

Exemplo 2.4 (Identifica Números Primos) Dada a Máquina NORMA MN =({Rk}

∞k=0, 1, 2, {{ek}, {sk}, {zk}, {{adk}, {subk}}

∞k=0) o programa é definido por:

Identifica Primos0: faça e1 vá para 11: R2 := R1 vá para 22: sub2 vá para 33: se div(R1, R2) vá para 6 senão vá para 44: sub2 vá para 55: se z2 vá para 7 senão vá para 36: se R2 < 2 vai para 8 senão vá para 37: s2 vá para FIM8: s0 vá para FIM

Este exemplo apresenta uma Máquina NORMA mais elaborada que identifica númerosprimos, e para isto são utilizadas várias macros que podem ser definidas como subpro-gramas, como apresentado a seguir.

A macro A := C realiza a atribuição do valor de um registrador denotado por C aoutro registrador denotado por A.

Page 34: Equivalência de Máquinas Universais: Demonstração, Análise e ...

33

A := C1: faça D := 0 vá para 22: se zC vá para 6 senão vá para 33: faça adA vá para 44: faça adD vá para 55: faça subC vá para 26: se zD vá para R senão vá para 77: faça adC vá para 88: faça subD vá para 6

A macro A := C utiliza a macro C := 0 para realizar a atribuição do valor zero a umregistrador denotado por C. Nas macros apresentadas a seguir, os valores dos rótulos Re R’ indicam o rótulo de retorno da macro para o programa principal tal que R indica orótulo de retorno caso o teste seja verdadeiro, ou a operação tenha sido realizada comsucesso, e R’ indica o rótulo de retorno caso o teste seja falso, ou a operação não tenhasido realizada.

C := 01: se zC vá para R senão vá para 22: faça subC vá para 1

A macro div(A,B) verifica se o valor do registrador denotado por A é divisível pelovalor do registrador denotado por B.

div(A,B)1: faça C := A vá para 22: se B <= C vá para 3 senão vá para R’3: faça C −B vá para 44: se zC vá para R senão vá para 2

A macro A < B verifica se o valor do registrador denotado por A é menor que ovalor do registrador denotado por B.

A < B1: se zA vá para R’ senão vá para 22: faça subA vá para 33: faça subB vá para 44: se zA vá para 5 senão vá para 65: se zB vá para R’ senão vá para R6: se zB vá para R’ senão vá para 2

A macro A < B verifica se o valor do registrador denotado por A é menor ou igualao valor do registrador denotado por B.

A <= B1: se zA vá para 2 senão vá para 32: se zB vá para R senão vá para 43: se zB vá para R’ senão vá para 44: faça subA vá para 55: faça subB vá para 1

Page 35: Equivalência de Máquinas Universais: Demonstração, Análise e ...

34

2.4 Autômato de Duas Pilhas

O Autômato de Duas Pilhas é uma máquina universal que foi desenvolvida apartir de uma generalização de autômatos com pilha. O modelo é composto por:(i) uma estrutura de dados composta de duas pilhas que geralmente são utilizadascomo uma pilha de trabalho e outra de retorno, mas podem ser usadas livremente;(ii) uma fita de entrada que contém o conjunto de símbolos a ser processado pelamáquina que é lida uma única vez e não pode ser alterada depois do início da com-putação; (iii) um conjunto finitos de estados cujas transições indicam os símboloslidos da fita de entrada e das pilhas, e os símbolos escritos nas pilhas; (iv) uma uni-dade de controle formada por um conjunto de apontadores que indicam a posiçãode leitura da fita de entrada e o topo das pilhas.

As pilhas presentes nesse modelo são utilizadas livremente como memória paraleitura e gravação de símbolos que são armazenados separadamente, um em cadauma das células que compõem a pilha. Inicialmente as pilhas apresentam-se vazias enão possuem um tamanho máximo de células pré-determinado. O controle do estadoatual da máquina é realizado pela unidade de controle, que possui um ponteiro paraa fita de entrada e um ponteiro para o topo de cada pilha. No caso do ponteiro dafita, esse só pode movimentar-se para a direita lendo a entrada uma única vez; já osponteiros das pilhas podem mover-se em uma posição para cima ou para baixo, ouainda permanecer conforme a operação realizada empilhe, desempilhe ou substituaum símbolo permanecendo na mesma posição, mas sempre apontando para o topoda pilha.

2.4.1 Definição Formal

Formalmente um Autômato de Duas Pilhas pode ser definido conforme a Defi-nição 2.8.

Definição 2.8 (Autômato de Duas Pilhas) Um Autômato de Duas Pilhas éuma sêxtupla MA = (Q,Σ,Γ, δ, q0, F ) tal que:

1. Q é um conjunto finito de estados.

2. Σ ⊆ Γ é o alfabeto de símbolos de entrada.

3. Γ é o alfabeto de símbolos que podem ser escritos na pilha.

4. δ : Q× (Σ ∪ {ε})× (Γ ∪ {ε})× (Γ ∪ {ε}) −→ (Q× Γ ∪ {ε})× (Γ ∪ {ε}) é umconjunto finito de transições que determinam a partir do estado atual e dossímbolos lidos na fita de entrada, na pilha1 e na pilha2, qual será o próximoestado e os símbolos a serem gravados na pilha1 e na pilha2. ε representaum movimento vazio, ou seja, leitura ou escrita tem retorno vazio e não hámovimentação da cabeça de leitura e escrita da pilha.

5. q0 ∈ Q é o estado inicial.

6. F ⊆ Q representa o conjunto de estados finais que possui pelo menos umestado final de aceitação, uma vez que a rejeição pode ser representada pelaausência de uma transição possível para determinada configuração.

Page 36: Equivalência de Máquinas Universais: Demonstração, Análise e ...

35

2.4.2 Modelo de Execução

Um Autômato de Duas Pilhas definido como MA = (Q,Σ,Γ, δ, q0, F ) executa daseguinte maneira:

• MA recebe uma palavra w ∈ Σ∗, armazenada em uma fita de entrada concate-nada com o símbolo β, que identifica o fim da entrada. Então, se inicialmentea palavra a ser processada é w = σ1σ2 . . . σn, onde n ≥ 0 e σi ∈ Σ paratodo i = 1, . . . , n, o estado da fita de entrada da máquina MA corresponde aosímbolo β concatenado ao final de w para marcar o fim da entrada, de modoque a configuração da fita de entrada é σ1σ2 . . . σnβ. A fita é lida símbolo porsímbolo uma única vez, não podendo ser alterada após o início da computação.

• A cabeça de leitura da fita de entrada inicialmente aponta para o primeirosímbolo. Como Σ não contém o símbolo branco, a primeira ocorrência destena fita marca o fim da entrada. As pilhas apresentam-se inicialmente vazias.

• A computação da entrada inicia conforme as regras da função de transiçãoδ que determina de acordo com o estado atual, o símbolo lido da pilha1 e osímbolo lido da pilha2, qual será o próximo estado, e os símbolos gravados napilha1 e na pilha2.

• Os símbolos lidos ou gravados podem ser vazios, sendo que neste caso a ope-ração de leitura ou escrita não modifica o conteúdo das pilhas ou da entrada.

• O símbolo da posição seguinte é lido e tratado de acordo com a função detransição, até que alguma transição leve à um estado de parada.

• Se não houver uma transição para um dado símbolo, a computação é paradapor indefinição, o que significa que a palavra de entrada não é reconhecida poraquele programa.

Ao final da execução de um Autômato de Duas Pilhas, isto é, quando um dosestados finais foi atingido, a computação da entrada em uma Autômato de DuasPilhas será a seqüência das configurações obtidas pelas transições.

Formalmente, uma configuração de um Autômato de Duas Pilhas definido comoMA = (Q,Σ,Γ, δ, q0, F ) é qualquer elemento do conjunto: Q × Σ∗ × Γ∗ × Γ∗. Logouma configuração válida de um Autômato de Duas Pilhas MA pode ser, por exemplo,(q, w, σ, ρ), que significa que:

• o estado atual de MA é q;

• w representa o conteúdo ainda não lido da palavra de entrada de entrada;

• σ representa o conteúdo da pilha1;

• γ representa o conteúdo da pilha2;

A computação gerada pelo conjunto de configurações pode ser obtida pela defi-nição da relação entre as configurações de um Autômato de Duas Pilhas MA. Estarelação é dada pela Definição 2.9.

Page 37: Equivalência de Máquinas Universais: Demonstração, Análise e ...

36

Definição 2.9 (Computação em um Autômato de Duas Pilhas)Seja MA = (Q,Σ,Γ, δ, q0, F ) um Autômato de Duas Pilhas. A relação⊢MA⊆ (Q × Σ∗ × Γ∗ × Γ∗) × (Q × Σ∗ × Γ∗ × Γ∗) entre duas configurações é

tal que:

(q, w, σ, ρ) ⊢MA(q′, w′, σ′, ρ′) se e somente se:

w = uw′

α = γφα′ = γ′φρ = δψρ = δ′ψ

e existe uma transição: ((q, u, γ, δ), (q′, w′, γ′, δ′)) ∈ δMA

Além disso, o fecho transitivo e reflexivo da relação ⊢MAé denotado por ⊢∗MA

, ediz-se que tal computação tem comprimento n, e escreve-se C1 ⊢

nMA

Cn.

Uma palavra w ∈ Σ∗ é aceita por um Autômato de Duas Pilhas MA se e somentese w = w1w2 . . . wn, com n ≥ 0, e existe uma computação em MA da forma

(q0, w, σ, ρ) ⊢∗MA

(qa, ε, ε, γ)

para algum γ ∈ (Γ− {β} ∪ {ε})∗.

2.4.3 Exemplo de Programa

O Exemplo 2.5 descreve um Autômato de Duas Pilhas que reconhece númerosbinários e remove símbolos 1, ou seja, 1 sucedido por outro 1 substitui-se por 0. Nesteexemplo o símbolo β é utilizado para indicar o final de uma cadeia de caracteres. Porexemplo, a palavra de entrada é concatenada com β e gravada na fita de entrada,sendo que quando o símbolo β for lido da fita, significa que a entrada foi totalmentelida. Semelhantemente, β pode ser utilizado para verificar se uma das pilha estávazia, como no Exemplo 2.5, bastando gravar β no topo da pilha antes de qualqueroutro símbolo.

Exemplo 2.5 (Retira uns Repetidos em Autômato de Duas Pilhas) Sejaum Autômato de Duas Pilhas M = (Q,Σ,Γ, δ, q0, F ) onde:

Q = {q0, q1, q2, q3, qa}Σ = {0, 1, β}Γ = {0, 1, β}δ é definida pelo diagrama de estados da Figuraq0 é o estado inicialF = {qa} é o conjunto de estados finais, cujoúnico estado é o estado de aceitação.

Page 38: Equivalência de Máquinas Universais: Demonstração, Análise e ...

37

q0 q1 q2

q3q4qa

(ε ,ε ,ε ,β ,ε )

(β ,β ,ε ,ε ,ε )

(0,ε ,ε ,ε ,0)(1,ε ,ε ,1,1)

(β ,β ,ε ,ε ,ε )

(0,1,ε ,ε ,0)

(1,1,1,1,0)

(β ,1,ε ,ε ,ε )

(ε ,1,ε ,ε ,1)(β ,β ,ε ,ε ,ε )

(0,ε ,ε ,ε ,0)(1,ε ,ε ,ε ,1)

Figura 2.5: Autômato de Duas Pilhas que reconhece números binários e substitui por 0símbolos 1 sucedidos de 1.

Page 39: Equivalência de Máquinas Universais: Demonstração, Análise e ...

38

3 EQUIVALÊNCIA DE MODELOS

Conforme Taylor apresenta em [6], a diversidade de máquinas universais repre-senta um Argumento da Convergência de Idéias Dissimilares, onde várias soluçõesdiferentes e independentes convergem para o tratamento da mesma classe de fun-ções. Mesmo setenta anos após a apresentação da Máquina de Turing nenhum outromodelo proposto como modelo de computação universal foi capaz de computar umaclasse maior de problemas. A compreensão da equivalência dos diversos modelosuniversais apresenta-se então, como a sustentação para validade da Tese de Church-Turing.

Este Capítulo apresenta provas formais de equivalência entre os modelos univer-sais tratados no Capítulo 2. Afirma-se que duas máquinas são equivalentes, se umapode simular a outra e vice-versa, ou seja, se A simula B e B simula A, A e B sãoequivalentes. A prova de equivalência entre o modelos será apresentada de formacíclica, pois será provado que uma Máquina de Turing pode ser simulada por umaMáquina de Post por sua vez uma Máquina de Post pode ser simulada por umaMáquina NORMA uma Máquina NORMA pode ser simulada por um Autômato deDuas Pilhas por fim um Autômato de Duas Pilhas ser simulado por uma Máquinade Turing. Ou seja, a prova fará uso da transitividade da equivalência, se A simulaB e B simula C então A simula C.

Na Seção 3.1 é apresentada uma tradução entre Máquina de Turing e Máquinade Post seguida de um exemplo desta tradução e da prova de equivalência semânticada tradução. Da mesma forma, a Seção 3.2 trata dos modelos de Máquina de Poste Máquina NORMA a Seção 3.2 trata dos modelos Máquina de Post e MáquinaNORMA, e por fim a Seção 3.4 apresenta a tradução e equivalência de Autômato deDuas Pilhas e Máquina de Turing. Conseqüentemente, é possível converter, seguindoas definições de tradução apresentadas a seguir, um programa desenhado para umdestes modelos para qualquer um dos outros modelos aqui apresentados, mesmo queindiretamente.

3.1 Equivalência Turing/Post

A simulação de uma Máquina de Turing em uma Máquina de Post pode ser feitautilizando algumas convenções e considerando como cada elemento que compõe asétupla da Máquina de Turing pode ser simulado em uma Máquina de Post. A provade equivalência entre os modelos será construída a partir de uma possível traduçãode cada passo de execução de uma Máquina de Turing em uma Máquina de Post.

Page 40: Equivalência de Máquinas Universais: Demonstração, Análise e ...

39

3.1.1 Tradução Turing/Post

Seja uma Máquina de Turing MT = (QT ,ΣT ,ΓT , δT , q0, qa, qr) e uma Máquinade Post MP = (QP ,ΣP ,ΓP , δP , qi, {qa, qr}). A tradução de MT para a Máquina dePost MP é formalmente apresentada na Definição 3.1 que é introduzida a seguir daexplanação da noção intuitiva presente neste processo.

O processo de tradução assume que para qualquer Máquina de Turing será pos-sível obter uma Máquina de Post que aceita a mesma linguagem que a Máquina deTuring original. Desta forma definem-se as traduções das Subseções a seguir.

A fita da Máquina de Turing será substituída pela fila da Máquina de Post e,para que seja possível computar a entrada como na Máquina de Turing, o símbolo# simulará a cabeça de leitura e escrita. Neste caso, à esquerda de # ficam oscaracteres que estão abaixo e a partir da posição indicada pela cabeça de leitura eescrita; à direita de # ficam os caracteres que estão à direita da cabeça de leitura eescrita da fita. A Figura 3.1 ilustra a representação da fita de Turing em uma filade Post.

φ x1 x2 x3 x4 x5 x6 β β . . .

Fita da Máquina de Turing MT

x4 x5 x6 # φ x1 x2 x3. . .

Fila da Máquina de Post MP

Estrutura de dados da Máquina de Turing

Representação na Máquina de Post

Figura 3.1: Fita da Máquina de Turing na Fila da Máquina de Post

Utilizando a representação da fita na fila apresentada anteriormente, é possíveldefinir a simulação de leituras e escritas da Máquina de Turing na Máquina de Post.Sempre que ocorre uma leitura e escrita na Máquina de Turing, ocorre tambéma movimentação da cabeça de leitura e escrita na fila, a representação utilizadana Máquina de Post realiza automaticamente uma movimentação à direita, comopode-se observar na Figura 3.2.

A movimentação da cabeça de leitura e escrita à direita é simples, porém, ao lero último símbolo da cadeia de caracteres, o conteúdo da fila da Máquina de Postexibe o símbolo # na primeira posição da fila. Deste modo, o conteúdo da filafica inconsistente, uma vez que o símbolo atual da fita da Máquina de Turing é osímbolo branco. Para contornar essa situação emprega-se os operações de leituradevem verificar se o símbolo lido é #. Se o símbolo for encontrado no início da filaele será tratado como um símbolo branco, conforme definido a seguir na traduçãoda função de transição.

A movimentação da cabeça de leitura e escrita para a esquerda da fita pode serfeita utilizando subprogramas auxiliares como escrever à frente seguido de deslocar

Page 41: Equivalência de Máquinas Universais: Demonstração, Análise e ...

40

q0(0, 1,→) q1

L10 E11

Figura 3.2: A leitura seguida da movimentação da cabeça de leitura e escrita para àdireita é realizada como uma leitura em Post seguida de uma escrita.

à direita. Estes subprogramas se encarregam de adicionar um símbolo na frenteda fila e de reposicionar os elementos de acordo com o movimento desejado para acabeça de leitura e escrita. Assim é possível simular uma movimentação da cabeçade leitura e escrita à esquerda.

O subprograma escrever à frente pode ser definido como demonstrado na Fi-gura 3.3, onde $ é um símbolo auxiliar utilizado para marcar o fim da cadeia decaracteres. Neste exemplo, 0 representa o símbolo que é escrito na frente da filaonde Γ = 0, 1. É possível utilizar o subprograma escrever à frente em qualquer pro-grama de Máquina de Post se realizadas algumas alterações nos estados e2, e3, e4.Se o programa demandar a escrita de outro símbolo a frente, o estado e2 deve seralterado para escrever o novo símbolo. Além disso, caso Γ represente um alfabeto di-ferente, os estados e3, e4 passarão a escrever os símbolos do alfabeto correspondentee se necessário podem ser adicionados mais estados de escrita conforme a quantidadede símbolos de Γ.

E1 $ E2 0 L1

E3 0

E4 1

0

1

continua...

$

Figura 3.3: Subprograma para escrever na frente da fila

A simulação de um estado com para realizar leitura do fim da fita da Máquina dePost pode ser realizada com o subprograma deslocar à direita. Assim como o casoanterior, o subprograma deslocar à direita também pode ser utilizado em qualquerprograma de Máquina de Post considerando as seguintes alterações: (i) adicionarum estado de leitura Lx em seguida de L1 para cada símbolo de Γ; (ii) para cadaestado de leitura Lx criado após L1 adicionar um estado de escrita para cada símbolode Γ; (iii) para cada estado de leitura Lx adicionar um estado de escrita à frente queirá escrever o símbolo lido por L1; (iv) incluir as transições a partir das escritas demodo que sempre que um símbolo y for lido o símbolo correspondente será escrito,e o próximo estado será Ly.

Page 42: Equivalência de Máquinas Universais: Demonstração, Análise e ...

41

E1 $

L1$ fila vazia

L2

0

E2 0

0

E3 1

0

Escreve àfrente 0

$

continua

L3

1

E4 0

1

E5 1

1

Escreve àfrente 1

$

continua

Figura 3.4: Deslocamento à direita cíclico

3.1.1.1 Σ - Alfabeto de Entrada

A entrada computada pela Máquina de Turing será a mesma entrada da Máquinade Post, de modo que ΣP = ΣT .

3.1.1.2 Γ - Alfabeto Auxiliar

ΓP deve incluir todos símbolos de ΓT e pelo menos o símbolo de fim de fila # eum símbolo auxiliar $.

3.1.1.3 δ - Transições

As transições de uma Máquina de Turing incluem sempre uma leitura e umaescrita na fita, além da movimentação da cabeça de leitura e escrita. Conseqüen-temente, toda transição de Turing implica em duas transições em Post, ou seja, atransição para um estado de leitura seguida da transição para um estado de escrita.A direção do movimento da cabeça de leitura e escrita em Post será sempre realizadaà direita, portanto a movimentação à esquerda, deve ser simulada. O subprogramaapresentado na Figura 3.4 reposiciona as células da fila até que o símbolo escritofique à direita da cabeça da fita.

A função de transição da Máquina de Turing traduzida para Máquina de Postapresenta além da condição do sentido do movimento da cabeça de leitura e escrita,uma condição especial para a leitura do símbolo #. Conforme dito anteriormente, apresença de # na primeira posição da fila da Máquina de Post significa que a partirdaquele ponto será simulada a leitura de símbolos brancos como seria na Máquinade Turing se a cabeça de leitura e escrita continuasse a se mover para a direita.Como é possível observar, na 3.1 de 2 à 6 e de 10 à 15, a leitura de # é tratada como

Page 43: Equivalência de Máquinas Universais: Demonstração, Análise e ...

42

Tabela 3.1: A tradução das transições da Máquina de Turing para Máquina de Post.

Se →:Se α = β

1 ((Lt1 #), (Et2 α′))2 ((Et2 α′), (Et3 $))3 ((Et3 $), (Et4 #))4 ((Et4 #), (Lt2))5 ((Lt2 ¬$), (Et5γ ¬$))6 ((Et5γ ¬$), (Lt2))7 ((Lt2 $), (q′t))

Senão:8 ((Lt1 α), (Et1 α′))9 ((Et1 α′), (q′t))

Se ←:Se α = β

10 ((Lt3 #), (Et6 $))11 ((Et6 $), (Et7 #))12 ((Et7 #), (Lt4))13 ((Lt4 ¬$), (Et8γ ¬$))14 ((Et8γ ¬$), (Lt4))15 ((Lt4 $), (escreve à frente α′))

Senão:16 ((Lt3 α), escrever à frente α))17 ((escrever à frente α′), (deslocar à direita))18 ((deslocar à direita), (q′t))

Escrever à frente:19 ((Etf1 $), (Etf2 α′))20 ((Etf2 α′), (Ltf1))21 ((Ltf1 φ), (qr))22 ((Ltf1 ¬$), (Etf3γ ¬$))23 ((Etf3γ ¬$), (Ltf1))24 (Ltf1 $)

Deslocar à direita:25 ((Etd1 $), (Ltd1))26 ((Ltd1 $), (q′t))27 ((Ltd1 γ), (Ltd2γ))28 ((Ltd2γ δ), (Etd2γ δ))29 ((Etd2γ δ), (Ltd2γ))30 ((Ltd2γ $), (escrever à frente α))

Page 44: Equivalência de Máquinas Universais: Demonstração, Análise e ...

43

a leitura de β e o símbolo # é novamente adicionado à frente da fila para simular aleitura de símbolos brancos na fita da Máquina de Turing.

As transições listadas têm a seguinte função:

• 1 faz a leitura de um símbolo da fila se este símbolo for # a leitura é tratadacomo a leitura de β em 2.

• 2 a 7 tratam o caso da leitura de # reposicionando o símbolo no início da filapara a próxima leitura.

• 5 representa uma simplificação das transições de leituras e escritas que devemser realizadas. Lt2 ¬α significa que a partir do estado de leitura há umatransição para cada símbolo do alfabeto, com exceção de α, onde Et5γ ¬α éo estado alvo que escreve o respectivo símbolo lido. O γ concatenado ao nomede cada estado Et5γ identifica o símbolo lido dado que há um estado Et5 paracada símbolo do alfabeto com exceção de α.

• 8 faz a leitura de um símbolo da fila se este símbolo for diferente de # a escritaé realizada em 9.

• 10 faz a leitura de um símbolo da fila se este símbolo for # a leitura é tratadacomo a leitura de β em 11.

• 11 à 15 tratam o caso da leitura de # reposicionando o símbolo no início dafila para a próxima leitura.

• 16 faz a leitura de um símbolo da fila se este símbolo for diferente de # aescrita é realizada em 17.

• 18 finaliza o movimento da cabeça de leitura e escrita à esquerda.

• 19 a 24 realizam a escrita do símbolo a frente da fila.

• 21 realiza a escrita do o símbolo determinado pela transição original da Má-quina de Turing.

• 25 a 30 realizam a simulação do deslocamento da cabeça de leitura e escrita àesquerda utilizando o subprograma de deslocamento à direita.

• 28 representa uma simplificação das transições de leituras que devem ser in-cluídas. Ltd2γ δ representa um conjunto de estados onde há um Ltd2 paracada símbolo de Γ.

A tradução da função de transição gera um conjunto de estados auxiliares ne-cessários para que as transições da Máquina de Post produzam o mesmo resultadoque as transições da Máquina de Turing. Cada um destes estados será descrito aseguir, na definição da tradução do conjunto de estados.

Page 45: Equivalência de Máquinas Universais: Demonstração, Análise e ...

44

Tabela 3.2: Conjunto de estados gerados na tradução de Máquina de Turing para Má-quina de Post, os estados são gerados de acordo com a movimentação da cabeça deleitura e escrita.

Conteúdo da Transição Estados a AcrescentarMovimento à direita {Lt1, Lt2, Lt3, Et1, Et2,

Et3, Et4, Et5γ1 . . . Et5γi}Movimento à esquerda {Lt3, Lt4, escrever à frente α′,

Et6, Et7, Et8γ1 . . . Et8γi

deslocar à direita}Escrever à frente {Ltf1, Ltf2γ , Etf1,

Etf2, Etf3γ}Deslocar à direita {Ltd1, Ltd2γ1, Ltd2γi,

Etd1, Etd2γ1, Etd2γi, qr}

3.1.1.4 Q - Conjunto de Estados

Os estados de uma Máquina de Turing podem ser simulados por um conjunto deestados em uma Máquina de Post. Os novos estado são gerados a partir da traduçãodas transições. Então, para cada estado qT ∈ QT é gerado um conjunto de estadosque pode variar de acordo com a movimentação da cabeça de leitura e escrita queesta sendo simulada e com o número de símbolos de Γ. A Tabela 3.2 lista cadapossibilidade de leitura e escrita na estrutura de dados da Máquina de Post e oconjunto específico de estados que deve ser acrescentado para cada casos:

Cada um dos novos estados gerados possuem uma função e nomenclatura espe-cíficas:

Movimento à direita

• Lt1 é o estado de partida para realizar a leitura da fila.

• Lt2 é um estado de leitura auxiliar, utilizados para reposicionar o símbolo #quando este for lido.

• Et1 é o estado onde ocorre a escrita na fila do símbolo determinado na transiçãoda Máquina de Turing.

• Et2 é o estado onde ocorre a escrita na fila do símbolo determinado na transi-ção da Máquina de Turing caso este símbolo seja adicionado no lugar de umsímbolo branco.

• Et3, Et4, Et5γ1 . . . Et5γi são estados de escrita auxiliares utilizados para reposici-onar o símbolo # quando este for lido. Et5γ1 . . . Et5γi estão assim representadospois dependem do número de símbolos do alfabeto Γ, ou seja, deve ser criadoum estado de escrita Et5γi para cada α ∈ Γ com exceção do símbolo já escritona fila por Et3.

Movimento à esquerda

• Lt3 é o estado de partida que realiza a leitura do símbolo.

Page 46: Equivalência de Máquinas Universais: Demonstração, Análise e ...

45

• Lt4 é um estado de leitura auxiliar, utilizados para reposicionar o símbolo #quando este for lido.

• Et6, Et7, Et8γ1 . . . Et8γi são estados de escrita auxiliares utilizados para reposici-onar o símbolo # quando este for lido. Et5γ1 . . . Et5γi estão assim representadospois dependem do número de símbolos do alfabeto Γ, ou seja, deve ser criadoum estado de escrita Et5γi para cada α ∈ Γ com exceção do símbolo já escritona fila por Et3.

• Ltf1 é o estado de leitura auxiliar, utilizado para reposicionar os símbolos,além disso verifica se não há tentativa de escrever à frente da posição mais aesquerda da Máquina de Turing.

• Etf2 é o estado onde ocorre a escrita na fila do símbolo determinado na tran-sição da Máquina de Turing.

• Etf1, Etf3γ1 . . . Etf3γi são estados de escrita auxiliares utilizados para reescre-ver os símbolo lidos na fila. Etf3γ1 . . . Etf3γi estão assim representados poisdependem do número de símbolos do alfabeto Γ, ou seja, deve ser criado umestado de escrita Etf3γ para cada α ∈ Γ.

• Ltd1, Ltd2γ são estados de leitura utilizados no subprograma deslocar à direta.

• Etd1, Etd2γ1, . . . , Etd2γi são os estado de escrita utilizados no subprograma des-locar à direta.

O conjunto de estados gerados para uma transição deve ter seus estados nomea-dos de acordo com o índice do estado original, ou seja, um estado q9 irá gerar estadosL9t1, L9t2, L9tf1 e assim por diante a fim de evitar estados com nomes duplicados.

3.1.1.5 q0 - Estado Inicial

O estado inicial da Máquina de Turing é representado pelo estado inicial daMáquina de Post seguido da escrita do símbolo # como mostrado na Figura 3.5.

q0

qi E #

Figura 3.5: Estados iniciais das Máquinas de Turing e Post

Entretanto, a representação da fita da Máquina de Turing já posiciona o símbolo# na fila da Máquina de Post, por isto é possível excluir o estado da escrita de # semproblemas para o funcionamento da máquina. Então, o estado inicial da Máquina dePost pode ser incluído com uma transição incondicional para a tradução do estadoq0.

Page 47: Equivalência de Máquinas Universais: Demonstração, Análise e ...

46

3.1.1.6 qa, qr - Estados de Aceitação e Rejeição

Como os dois modelos apresentam os mesmos estados finais, estes estados podemser simplesmente copiados de uma máquina para outra.

Em resumo, um programa para Máquina de Turing pode ser traduzido paraMáquina de Post conforme descrito na Definição 3.1.

Definição 3.1 (Tradução Máquina de Turing/Máquina de Post) Uma Má-quina de Turing MT = (Q,Σ,Γ, δ, q0, qa, qr) é traduzido para uma Máquina de PostMP = (L,E,Σ,Γ, δ, qi, {qa, qr}) tal que:

1. L∪E = QT ×{Lt1, Lt2, Lt3, Lt4, Et1, Et2, Et3, Et4, Et5γ , Et6, Et7, Et8γ , escrever àfrente, deslocar à direita} Onde para cada estado da MT é definido um conjuntode estados para a MP de acordo com a da Tabela 3.2.

2. ΣP = ΣT

3. ΓP = ΓT ∪ {$} ∪ {#}

4. δP =⋃

t∈δTTt conforme definido na Tabela 3.1.

5. qi passa a ter uma transição incondicional para a tradução de q0, excluindo-sea escrita de # na fila.

6. qa = qa

7. qr = qr

3.1.2 Exemplo de Tradução

Exemplo 3.1 (Tradução Turing/Post) Seja uma Máquina de Turing MT definidode acordo com a Figura 3.6.

q0(1, 1,→) q1

(1, 1,←) q2. . .

(0, 0,→) (β , β , →)

qa(β , β , →)

(0, 0,→)

Figura 3.6: Subconjunto de estados de uma Máquina de Turing MT

A tradução de MT para uma Máquina de Post deve ser feita utilizando a Defini-ção 3.1, a Figura 3.7 detalha os estados adicionados para esta tradução.

De modo que os estados para escrever à frente e mover à direita são definidosconforme a Figura 3.8 e a Figura 3.9 respectivamente.

Page 48: Equivalência de Máquinas Universais: Demonstração, Análise e ...

47

E 0

0

L

E 1

L

Escreverà Frente

Deslocarà Direita

. . .

qi#

E β E $ E # L

E 0

0

E 1

1

qa

$

E φ

φ

E 00 #

E β E $ E # L

E 0

0

E 1

1

qa

$

E φ

φ

Figura 3.7: Tradução de estados da Máquina de Turing para Máquina de Post

Page 49: Equivalência de Máquinas Universais: Demonstração, Análise e ...

48

1

E $

E 1

L

E 0 E # E 1

L

E φ

φqr

0#

1

0#

1

φ

continua

$

Figura 3.8: Escrever à Frente para a Tradução de estados da Máquina de Turing paraMáquina de Post

Page 50: Equivalência de Máquinas Universais: Demonstração, Análise e ...

49

E $

L

. . .

L

L

L

L

0

φ

1

#

E φ#

E φ

1

E $ E φ Lφ

E #$

E 0 E 1

E φ q2

0 1

φ $

E φ0

E φ

φ

E 0 E 0

E 0 E $

E 0

0 φ

1 $#

E 0L

#E #

E 0 E 1

E φ q2

0 1

φ $

E 1 E 1

E 1 E $

E 1

φ0

1 $# E 1 L

#E #

E 0 E 1

E φ q2

0 1

φ $

E # E #

E # E $

E #

01

φ $# E 1 L

#E #

E 0 E 1

E φ q2

0 1

φ $

Figura 3.9: Mover à Direita para a Tradução de estados da Máquina de Turing paraMáquina de Post

Page 51: Equivalência de Máquinas Universais: Demonstração, Análise e ...

50

3.1.3 Equivalência Semântica

A partir da tradução proposta em 3.1, enuncia-se e prova-se o Teorema:

Teorema 3.1 (Equivalência Turing/Post) Qualquer linguagem aceita por umMáquina de Turing pode ser aceita por uma Máquina de Post.

Prova: Uma Máquina de Turing MT = (Q,Σ, Γ, δ, q0, qa, qr) e uma Máquina de PostMP = (L, E,Σ, Γ, δ, qi, {qa, qr}) construída de acordo com a tradução dada na Defini-ção 3.1.

Se w ∈ L(MT ), então existe uma computação da forma (q0, φaw′$#)) ⊢∗MT

(qa, φγw′$#γ′)) onde w = aw′ e γ ∈ Γ∗ (Definição 2.1).Utilizando a tradução definida 3.1, é possível mostrar que existe uma computação da

forma (q0, w#) ⊢∗MP(qa, γ#) tal que γ ∈ Γ∗. Ou seja, uma computação que aceita w.

Esta demonstração será realizada por indução no comprimento da computação da palavraw.

Base da Indução

Seja uma palavra w tal que w é aceita pelo autômato MT com uma computação de 0(zero) passos. Ou seja, existe uma computação

(q0, φwε) ⊢0MT

(qa, φwε)

Se a computação tem 0 passos e w = ε ∈ L(MT ), então q0 = qa e w = ε. Traduzindoa configuração incial da Máquina de Turing MT , (q0, φwε) para Máquina de Post MP

obtem-se a seguinte configuração (qi, w#φ). A esta configuração é aplicável a transição 8da Tabela 3.1 uma vez que w 6= β:

((Lt1α), (Et1))

((Et1α′), (q′t))

Como α = w e q′t refere-se ao próximo estado da transição original, qa, quando estatransição é aplicada à configuração inicial de MT obtém-se:

(qi, #φ) ⊢P (Lt1, #φ) ⊢P (Et1, φ) ⊢P (qa, φ#)

Ou seja, a palavra w = ε é aceita pela Máquina de Post MP e a quantidade de símbolosentre φ e # é igual a |w| = 0.

Hipótese

Se existe uma computação de comprimento n na Máquina de Turing MT tal que

(q, φw1w) ⊢nMT

(qa, φw′w′j)

onde w = w2w3 . . . wi, i ≥ 0, w ∈ Σ∗, w′ = w1w2 . . . wj − 1, j ≥ 0, w′ ∈ Γ∗, qa é o estadofinal de aceitação, então existe uma computação na Máquina de Post MP

(qi, w1w#φ) ⊢nMP

(qa, φw′w′j#)

Passo

Suponha que existe uma computação de comprimento n + 1 na Máquina de Turing MT

tal que(q, φaw) ⊢n+1

MT(qa, φw′w′

j)

onde w = w1w2w3 . . . wi, i ≥ 0, aw ∈ Σ∗ ∪ {ε}, w′ = w1w2 . . . wj − 1, j ≥ 0, w′ ∈ Γ∗,qa é o estado final de aceitação. Porém como a computação tem comprimento maior ou

Page 52: Equivalência de Máquinas Universais: Demonstração, Análise e ...

51

igual a 1, então existe uma transição ((q, α, d), (q′, α′, d)) ∈ δT onde d indica o sentido domovimento da cabeça de leitura e escrita e

(q, φaw) ⊢MT(q′, εφa′w) ⊢n

MT(qa, φw′w′

j)

se d =←, e se d =→

(q, φaw) ⊢MT(q′, φa′w) ⊢n

MT(qa, φw′w′

j)

onde α′ = a ou α′ = ε. Estabelece-se assim os seguintes casos para as transições geradaspara a Máquina de Post MP , a partir da transição ((q, α, d), (q′, α′, d)) ∈ δT :

d =→d =←

Se d =→, o seguinte conjunto de transições é gerado:

d =→(T7) ((Lt1, a), (Et1)),(T8) ((Et1a′), q′))

E a seguinte computação ocorre na Máquina de Post MP :

(qi, #φ)⊢P (Lt1a, aw#φ) transição(T7)⊢P (Et1a

′, wφa′) transição(T8)⊢P (q′, wφ#a′)

Então, para este caso, conclui-se que existe uma computação

(q, aw#φ) ⊢∗MP(q′, w#φa′)

A configuração final dessa computação na Máquina de Post MP corresponde, na Má-quina de Turing MT à

(q′, φa′wε)

que corresponde exatamente à aplicação da transição ((q, a), (q′, a′,→)) à configuraçãoinicial da Máquina de Turing. Mas pela hipótese de indução, se existe uma computação decomprimento menor ou igual a n na Máquina de Turing MT , então existe um computaçãoequivalente na Máquina de Post MP . Na computação original da Máquina de Turing MT ,com a palavra aw ∈ L(MT ), tem-se que

(q, φawε) ⊢MT(q, φa′wε) ⊢n

MT(qa, φa′w′βε)

Então, como a computação na Máquina de Post resulta na configuração equivalente àobtida pela transição da Máquina de Turing, pela hipótese de indução tem-se que existeuma computação equivalente a

(q, φawε) ⊢nMT

(qa, φa′w′βε)

na Máquina de Post MP .Se d =←, o seguinte conjunto de transições é gerado:

d =→, α = a(T9) ((Lt10, a), (escrevefrentea)),(T10) ((escrevefrentea), deslocadireita)),

Page 53: Equivalência de Máquinas Universais: Demonstração, Análise e ...

52

E a seguinte computação ocorre na Máquina de Post MP :

(qi, #φ)⊢P (Lt0a, aw#φ) transição(T9)⊢P (escreve à frentea, w#φ) transição(T10)⊢P (Etf1$, w#φ) transição(T12)⊢P (Etf2a

′, w#φ$) transição(T13)⊢P (Ltf1 6= $, w#φ$a′) transição(T15)⊢P (Etf3γ 6= $, #φ$a′) transição(T16)⊢P (Ltf1 6= $, #φ$a′w) transição(T15)⊢P (Etf3γ 6= $, φ$a′w) transição(T16)⊢P (Ltf1 6= $, φ$a′w#) transição(T15)⊢P (Etf3γ 6= $, $a′w#) transição(T16)⊢P (Ltf1$, $a′w#φ) transição(T17)⊢P (deslocar à direita, a′w#φ) transição(T11)⊢P (Etd1$, a′w#φ) transição(T18)⊢P (Ltd1a

′, a′w#φ$) transição(T20)⊢P (Ltd2a′w, w#φ$) transição(T21)⊢P (Etd2a′a′, #φ$) transição(T22)⊢P (Ltd2w#, #φ$a′) transição(T21)⊢P (Etd2ww, φ$a′) transição(T22)⊢P (Ltd2#φ, φ$a′w) transição(T21)⊢P (Etd2##, $a′w) transição(T22)⊢P (Ltd2φ$, $a′w#) transição(T21)⊢P (escreve à frenteφ, a′w#) transição(T24)⊢P (Etf1$, a′w#) transição(T12)⊢P (Etf2φ, a′w#$) transição(T13)⊢P (Ltf1 6= $, a′w#$φ) transição(T15)⊢P (Etf3γ 6= $, w#$φ) transição(T16)⊢P (Ltf1 6= $, w#$φa′) transição(T15)⊢P (Etf3γ 6= $, #$φa′) transição(T16)⊢P (Ltf1 6= $, #$φa′w) transição(T15)⊢P (Etf3γ 6= $, $φa′w) transição(T16)⊢P (Ltf1$, $φa′w#) transição(T17)⊢P (q′t, φa′w#) transição(T11)

Então, para este caso, conclui-se que existe uma computação

(q, aw#φ) ⊢∗MP(q′, #φa′w′)

A configuração final dessa computação na Máquina de Post MP corresponde, na Má-quina de Turing MT à

(q′, φa′wε)

que corresponde exatamente à aplicação da transição ((q, a), (q′, a′,→)) à configuraçãoinicial da Máquina de Turing. Mas pela hipótese de indução, se existe uma computação decomprimento menor ou igual a n na Máquina de Turing MT , então existe um computaçãoequivalente na Máquina de Post MP . Na computação original da Máquina de Turing MT ,com a palavra aw ∈ L(MT ), tem-se que

(q, φawε) ⊢MT(q, φa′wε) ⊢n

MT(qa, φa′w′βε)

Então, como a computação na Máquina de Post resulta na configuração equivalente àobtida pela transição da Máquina de Turing, pela hipótese de indução tem-se que existe

Page 54: Equivalência de Máquinas Universais: Demonstração, Análise e ...

53

uma computação equivalente a

(q, φawε) ⊢nMT

(qa, φa′w′βε)

na Máquina de Post MP .

⊓⊔

3.2 Equivalência Post/Norma

A demonstração de equivalência entre uma Máquina de Post e uma MáquinaNORMA será apresentada a seguir a partir de uma tradução dos elementos da sétuplaque compõe a Máquina de Post em elementos da Máquina NORMAequivalente.

A fim de definir formalmente como pode ser realizada a tradução de um programade Máquina de Post para um programa de Máquina NORMA é necessário definirpreviamente como a estrutura de dados e a estrutura de controle serão simuladasna Máquina NORMA. Isto é, a partir da simulação da fila da Máquina de Postna Máquina NORMA determina-se quais transições e estados serão necessários parasimular o comportamento de uma Máquina de Post.

3.2.1 Tradução Post/Norma

Seja uma Máquina de Post MP = (L,E,ΣP ,ΓP , δP , qi, {qa, qr}) e uma MáquinaNORMA MN = ({Rk}

∞k=0, X, Y, {{ek}, {sk}, {zk}, {{adk}, {subk}}

∞k=0). A tradução

de MP para um programa de PN que execute na Máquina NORMA MN é formalmenteapresentada na Definição 3.2. Porém, antes disso será apresentada semi-formalmentea idéia intuitiva por trás dessa tradução visando facilitar a compreensão dessa defi-nição.

O processo de tradução deve assegurar que para toda Máquina de Post MP

será possível obter um programa MP para uma Máquina NORMA MN que aceitaexatamente a mesma linguagem que a Máquina de Post original. Assim, define-sea construção de cada um dos elementos que forma o programa da Máquina NORMA

nas Subseções deste Capítulo. Antes, porém, será apresentado informalmente comoas estruturas de dados da Máquina de Post serão simuladas pela Máquina NORMA.

A fila da Máquina de Post pode ser simulada na Máquina NORMA como umarranjo unidimensional em um dado registrador, neste caso RA. Cada posição dafila da Máquina de Post corresponde a uma posição do arranjo.

Um arranjo unidimensional da forma A(1), A(2) . . . A(n) pode ser definido em umúnico registrador RX utilizando codificação de n-ulpas naturais [18]. A codificação éfeita a partir da definição de uma função injetora para o conjunto de dados, ou seja,para C : X → N se C(X) = C(Y ) então X = Y . Um exemplo de função que podeser utilizada para esta codificação é a decomposição em fatores primos (p1, p2, . . . pn),onde um termo C(X1, X2, . . . , Xn) é codificado para pX1

1 × pX22 , . . . × pXN

N de modoque C : N

n → N é unívoca.Assim como a fila da Máquina de Post pode crescer infinitamente, um arranjo

unidimensional em um registrador pode ser tão grande quanto necessário, por issoé conveniente marcar a posição inicial e final do arranjo para facilitar o acesso aessas posições. Os registradores indicados por RI e RF podem armazenar o valorcorrespondente a essas posições. Dessa forma pode ser realizada a indexação dasposições do arranjo de forma direta e indireta.

Page 55: Equivalência de Máquinas Universais: Demonstração, Análise e ...

54

As operação da Máquina NORMA utilizando indexação direta e indireta são de-finidas de formas distintas. Seja um arranjo é implementado no registrador RA, pn

o n-ésimo número primo, e as seguintes macros:

div(A,B)1: faça C := A vá para 22: se B <= C vá para 3 senão vá para R’3: faça C −B vá para 44: se zC vá para R senão vá para 2

A operação div(A,B) é um teste que retorna verdade se a divisão dos valores contidosnos registradores indexados por A e B for inteira, caso contrário o retorna falso. Porser um teste div não altera o valor dos registradores passados como parâmetro, paraque os valores sejam mantidos é usado o registrador indexado por C para recuperaro valor. Esta operação utiliza as macros C := A, A < B e A−B definidas a seguir.

A := C1: faça D := 0 vá para 22: se zC vá para 6 senão vá para 33: faça adA vá para 44: faça adD vá para 55: faça subC vá para 26: se zD vá para R senão vá para 77: faça adC vá para 88: faça subD vá para 6

C := 01: se zC vá para R senão vá para 22: faça subC vá para 1

A < B1: se zA vá para R senão vá para 22: faça subA vá para 33: faça subB vá para 44: se zA vá para 5 senão vá para 65: se zB vá para R’ senão vá para R6: se zB vá para R’ senão vá para 2

A <= B1: se zA vá para 2 senão vá para 32: se zB vá para R senão vá para 43: se zB vá para R’ senão vá para 44: faça subA vá para 55: faça subB vá para 1

Page 56: Equivalência de Máquinas Universais: Demonstração, Análise e ...

55

A−B1: faça C := 02: se zB vá para 6 senão vá para 33: faça subA vá para 44: faça adC vá para 55: faça subB vá para 36: se zC vá para R senão vá para 77: faça adB vá para 88: faça subC vá para 6

As macros A×B, A+B e A/B também serão utilizadas para resolver o problemade indexação e pode ser definidas como:

A×B1: faça C := A vá para 22: se zB vá para 3 senão vá para 43: faça C := B vá para R4: se zC vá para R senão vá para 55: faça A := A+B vá para 66: faça subC vá para 4

A+B1: façaC := B vá para 22: se zB vá para 3 senão vá para R3: faça adA vá para 44: faça adC vá para 55: faça subB vá para 26: faça B := C vá para R

A/B1: faça C := A vá para 22: se B < C vá para 3 senão vá para 53: faça adD vá para 44: faça A−B vá para 25: faça C := 0 vá para R

A macro A/B armazena o resultado da operação no registrador indexado por D.Então, utilizando as macros anteriores pode-se definir as operações adk, subk e

zk utilizando indexação direta e indireta.

Indexação DiretaadAn

1: faça C := pn vá para 22: faça A := A× CsubAn

1: faça C := pn vá para 22: se div(A,C) vá para 3 senão vá para 43: faça A := A/C4:zAn

1: faça C := pn vá para 22: se div(A,C) vá para R’ senão vá para R

Page 57: Equivalência de Máquinas Universais: Demonstração, Análise e ...

56

Onde An indica a n-ésima posição do arranjo.

Indexação IndiretaadAB

1: faça C := primo(B) vá para 22: faça A := A× CsubAB

1: faça C := primo(B) vá para 22: faça se div(A,C) vá para 3 senão vá para 43: faça A := A/CzAn

1: faça C := primo(B) vá para 22: faça se div(A,C) vá para R’ senão vá para R

3.2.1.1 Σ - Alfabeto de Entrada

O alfabeto de entrada de uma Máquina de Post definido como ΣP é codificadopara ser utilizado na Máquina NORMA. Para mapear o alfabeto de entrada da MP

pode ser utilizada uma representação numérica para cada símbolo de ΣP , como porexemplo o padrão ASCII1.

3.2.1.2 Γ - Alfabeto Auxiliar

Da mesma forma, é possível utilizar o padrão ASCII para representar os símbolosauxiliares presentes em ΓP na Máquina NORMA, tal que ASCII(ΓP ).

3.2.1.3 Q - Conjunto de Estados

O conjunto de estados presente na Máquina de Post é representado na MáquinaNORMA por um conjunto de instruções rotuladas por 0, 1, 2, ..., n tal que para todoestado de MP há uma instrução rotulada na Máquina NORMA. Os rótulos dasinstruções podem ser definidos de acordo com o tipo de estado da Máquina de Postque está sendo convertido.

3.2.1.4 δN - Transições

A função de transição da Máquina de Post δP : Q× Γ −→ Q′× Γ pode ser dadapela Tabela 3.2.1.4, onde cada instrução rotulada u é uma macro. As macros porsua vez irão realizar a modificação do conteúdo da memória.

End_RA é uma macro que retorna o endereço do registrador indexado por Acujo conteúdo é denotado por a.

3.2.1.5 qi - Estado Inicial

O estado inicial da Máquina de Post não realiza nenhuma mudança na estruturade dados, por este motivo não é necessário adicionar uma instrução rotulada pararealizar apenas a passagem para o próximo rótulo. Porém, a entrada da Máquinade Post deve ser carregada nps registradores da Máquina NORMA e por tanto énecessário definir instruções que realizem a inicialização da máquina como:

1American Standard Code for Information Interchange

Page 58: Equivalência de Máquinas Universais: Demonstração, Análise e ...

57

Tabela 3.3: Tradução de Transições Post/Norma

Para toda transição de MP = ((Qi, α), (Qj))Se Qi for um estado de leitura:i : faça A := 2RE × 3RX(RI ) vá para End_RA

. . .a : faça RX(RI) := 0 vá para a1

a1 : faça ad(RI)a2 : faça RE = Qj vá para End_RE

Se Qi for um estado de escrita:i : faça A := 2RE × 3RX(RF ) vá para End_RA

a : faça RX(RF +1) := α vá para a1

a1 : faça ad(RF )a2 : faça RE = Qj vá para End_RE

i0 : faça ek(X) vá para i1i1 : faça RI := Rk(1) vá para i2i2 : faça RF := Rk(2) vá para i3i3 : faça RE := Rk(1) vá para i4i4 : faça RA := Rk(3) vá para End_RE

3.2.1.6 qa, qr - Estados de Aceitação e Rejeição

Os estados de aceitação e rejeição da Máquina de Post podem ser simulados naMáquina NORMA por um instruções rotuladas que contenha a operação de saída sY

e que indiquem como próxima instrução, uma instrução final.

3.2.1.7 Estado Atual

O estado atual de uma Máquina de Post pode ser armazenado em um registradordesignado para essa função, como RE. Como os estados da Máquina de Post podemser de leitura ou escrita indexados, pode ser feita uma representação onde os estadosde leitura são prefixados com 1 e os estados de escrita com 2. Assim, um estadoatual E2 é representado pela atribuição do valor 12 ao registrador RE, e um estadoatual L2 é representado pela atribuição do valor 22 ao registrador RE.

Em resumo, um programa para Máquina de Post pode ser traduzido para Má-quina NORMA conforme descrito na Definição 3.4.

Definição 3.2 (Tradução Máquina de Post/Máquina NORMA) Uma Má-quina de Post MP = (QP ,ΣP ,ΓP , δP , {qi}, {qa, qr}) e uma Máquina NORMA

MN = ({Rk}∞k=0, X, Y, {{ek}, {sk}, {zk}, {{adk}, {subk}}

∞k=0) tal que:

1. QP é traduzido para um conjunto de instruções rotuladas tal que para todoq ∈ QP implica em uma instrução rotulada,

2. ΣN = ASCII(ΣP ),

3. ΓN = ASCII(ΓP ),

Page 59: Equivalência de Máquinas Universais: Demonstração, Análise e ...

58

4. δN = i : faça A := 2RE × 3RX(RI ) vá para End_RA, para qualquer leitura ei : faça A := 2RE × 3RX(RF ) vá para End_RA, para qualquer escrita, tal queas macros são definidas de acordo com a Tabela 3.2.1.4,

5. qi = {i0, i1, i2, i3, i4},

6. qa = a,

7. qr = r.

3.2.2 Exemplo de Tradução

Exemplo 3.2 (Tradução Post/Norma) Seja uma Máquina de Post MP definida deacordo com a Figura 3.10.

qi E1# L1 E4# qa

E20

E31

0

1

#

Figura 3.10: Máquina de Post para reconhecer números binários

A tradução de MP para um programa para Máquina NORMA deve ser feita utilizandoa Definição 3.2. A MP 3.10 pode ser traduzida então para o programa da MáquinaNORMA PN da Tabela 3.2

3.2.3 Prova de Equivalência

A partir da tradução proposta, enuncia-se e prova-se o Teorema:

Teorema 3.2 (Norma/Post) Qualquer linguagem aceita por um Máquina de Postpode ser aceita por um programa para uma Máquina NORMA.

Prova: Seja uma MP = (QP , ΣP , ΓP , δP , qi, {qa, qr}) e uma Máquina NORMA MN =({Rk}

∞k=0, X, Y, {{ek}, {sk}, {zk}, {{adk}, {subk}}

∞k=0) para a qual é definido um programa

PN = (X, Y, I, C, i0) construído de acordo com a tradução dada na Definição 3.2 e sejaw ∈ L(MP ).

Se w ∈ L(MP ), então existe uma computação da forma (qi, w) ⊢∗MP(qa) (Defi-

nição 2.3). Pretende-se então mostrar que existe uma computação em PN da forma(0, ek(w))) ⊢∗MN

(fim, ε), ou seja, uma computação que aceita w. Esta demonstraçãoserá realizada por indução no comprimento da computação da palavra w.

Page 60: Equivalência de Máquinas Universais: Demonstração, Análise e ...

59

Tabela 3.4: Tradução da Máquina de Post que reconhece números binários para MáquinaNORMA

21: faça A := 2RE × 3RX(RF ) vá para End_RA

12: faça A := 2RE × 3RX(RI ) vá para End_RA

23: faça A := 2RE × 3RX(RF ) vá para End_RA

24: faça A := 2RE × 3RX(RF ) vá para End_RA

25: faça A := 2RE × 3RX(RF ) vá para End_RA

qa: faça RY := RX vá para fimfim:

Macro definida para o rótulo 21a: faça RX(RF +1) := 35 vá para a1

a1: faça adRF

a2: faça RE = 12 vá para End_RE

Macro definida para o rótulo 12a: faça RL = RX(RI);RX(RI) := 0 vá para a1

a1: faça adRI

a2: faça RE = 23 vá para End_RE

Macro definida para o rótulo 23a: faça RX(RF +1) := 48 vá para a1

a1: faça adRF

a2: faça RE = 12 vá para End_RE

Macro definida para o rótulo 24a: faça RX(RF +1) := 35 vá para a1

a1: faça adRF

a2: faça RE = 12 vá para End_RE

Macro definida para o rótulo 25a: faça RX(RF +1) := 49 vá para a1

a1: faça adRF

a2: faça RE = 12 vá para End_RE

Page 61: Equivalência de Máquinas Universais: Demonstração, Análise e ...

60

Base de indução Seja uma palavra w tal que w é aceita pela Máquina de Post MP comuma computação de 0 (zero) passos. Ou seja, existe uma computação

(qi, w, u) ⊢0MP

(qa, w′, u′)

Mas, se a computação tem 0 passos, então w = w′ = ε, u = u′ = ε, qa = qi. Comow = ε ∈ L(MP ), então qi = qa. Traduzindo então a configuração inicial da Máquina dePost MP , (qi, ε, ε), para o programa PN da Máquina NORMA MN obtém-se a configuração(i0, ek(ε)), com k ≥ 0. De acordo com a Definição 2.5 da Máquina NORMA, se o parâmetroutlizado na operação ek for X = ε, então ek não modifica o conteúdo dos registradores eo programa termina de modo que a esta configuração se aplica a seguinte transição:

(i0, w) ⊢0MN

(fim, ε)

onde fim é um rótulo final. Ou seja, a palavra w = ε é aceita pelo programa da MáquinaNORMA MN .

Hipótese de indução

Se existe uma computação de comprimento n na Máquina de Post MP tal que

(q, w, u) ⊢nMP

(qa, w′, u′)

onde w = w1w2 . . . wm, m ≥ 0, w ∈ Σ∗, u = u1u2 . . . un, n ≥ 0, u ∈ Σ∗, então existe umacomputação no programa da Máquina NORMA MN

(i, [R1 = x1, . . . , Ri = xi]) ⊢∗MN

(fim, [R1 = y1, . . . , Ri = yi])

onde Ri é o i-ésimo registrador utilizado no programa PN .

Passo de indução

Suponha que existe uma computação de comprimento n + 1 na Máquina de Post MP talque

(qi, aw, u) ⊢n+1MP

(qa, v, r)

onde w = w1w2 . . . wk, k ≥ 0, aw1w2...wk ∈ Σ ∪ {ε}, u = u1u2 . . . un, n ≥ 0, u ∈ Σ∗.Porém, como a computação tem comprimento maior ou igual a 1, então existe uma

transição ((qi, a), (q′)) ∈ delta e

(qi, aw, u) ⊢MP(q′, w′, u′) ⊢n

MP(qa, v, r)

onde q′ pode ser um estado de leitura ou um estado de escrita.Se q′ for um estado de escrita, o seguinte conjunto de instruções é gerado:

i : faça A := 2RE × 3RX(RF ) vá para End_RA

. . .a : faça RX(RF ) := a′ vá para a1

a1 : faça adRFvá para a2

a2 : faça adRE= q′′ vá para End_RE

E a seguinte computação ocorre na Máquina NORMA MN :

(i, [R1 = x1, . . . , RE = i, . . . , RX(k) = xxk, . . . , RF = k, . . . , Ri = xi])⊢MN

(a, [R1 = y1, . . . , RE = i, . . . , RX(k) = xxk, . . . , RF = k, . . . , Ri = yi])

⊢MN(a1, [R1 = y1, . . . , RE = i, . . . , RX(k) = a′, . . . , RF = k, . . . , Ri = yi])

⊢MN(a2, [R1 = y1, . . . , RE = i, . . . , RX(k) = a′, . . . , RF = (k + 1), . . . , Ri = yi])

⊢MN(Qj , [R1 = y1, . . . , RE = Qj , . . . , RX(k) = a′, . . . , RF = (k + 1), . . . , Ri = yi])

Page 62: Equivalência de Máquinas Universais: Demonstração, Análise e ...

61

Então, para este caso, conclui-se que existe uma computação

(i, [R1 = x1, . . . , RE = n, . . . RF = k, . . . , Ri = xi])

⊢∗MN(q′, [R1 = y1, . . . , RE = Qj , . . . RX(k) = a′, . . . , RF = (k + 1), . . . , Ri = yi])

A configuração final dessa computação na Máquina NORMA MN corresponde à confi-guração:

(q′, aw, u′)

que corresponde exatamente à aplicação da transição ((q, u), (q′, u′)) à configuraçãoinicial da Máquina de Post se esta transição for de escrita. Mas, pela hipótese de indução,se existe uma computação de comprimento menor ou igual a n na Máquina de Post MP

então existe uma computação equivalente na Máquina NORMA MN .Na computação original da Máquina de Post MP , como a palavra aw ∈ L(MP ), tem-se

que

(q, aw, u) ⊢MP(q′, aw, u′) ⊢n

MP(qa, aw, v)

Então, como a computação na Máquina NORMA resulta na configuração equivalenteà obtida pela transição da Máquina de Post, pela hipótese de indução tem-se que existeuma computação equivalente a

(q′, aw, u) ⊢nMP

(qa, aw, v)

no programa PN de MN .Se q′ for um estado de leitura, o seguinte conjunto de instruções é gerado:

i : faça A := 2RE × 3RX(RI ) vá para End_RA

. . .a : faça RX(RI) := 0 vá para a1

a1 : faça ad(RI) vá para a2

a2 : faça RE = q′′ vá para End_RE

E a seguinte computação ocorre na Máquina NORMA MN :

(i, [R1 = x1, . . . , RE = i, . . . , RX(k) = xxk, . . . , RI = k, . . . , Ri = xi])⊢MN

(a, [R1 = y1, . . . , RE = i, . . . , RX(k) = xxk, . . . , RI = k, . . . , Ri = yi])

⊢MN(a1, [R1 = y1, . . . , RE = i, . . . , RX(k) = 0, . . . , RI = k, . . . , Ri = yi])

⊢MN(a2, [R1 = y1, . . . , RE = i, . . . , RX(k) = 0, . . . , RI = (k + 1), . . . , Ri = yi])

⊢MN(Qj , [R1 = y1, . . . , RE = Qj , . . . , RX(k) = 0, . . . , RI = (k + 1), . . . , Ri = yi])

Então, para este caso, conclui-se que existe uma computação

(i, [R1 = x1, . . . , RE = n, . . . , RI = k, . . . , Ri = xi])

⊢∗MN(q′, [R1 = y1, . . . , RE = Qj , . . . RX(k) = 0, . . . , RI = (k + 1), . . . , Ri = yi])

A configuração final dessa computação na Máquina NORMA MN corresponde à confi-guração:

(q′, w′, u)

que corresponde exatamente à aplicação da transição ((q, aw), (q, w′)) à configuraçãoinicial da Máquina de Post se a transição for de leitura. Mas, pela hipótese de indução,se existe uma computação de comprimento menor ou igual a n na Máquina de Post MP

então existe uma computação equivalente na Máquina NORMA MN .

Page 63: Equivalência de Máquinas Universais: Demonstração, Análise e ...

62

Na computação original da Máquina de Post MP , como a palavra aw ∈ L(MP ), tem-seque

(q, aw, u) ⊢MP(q′, w′, u) ⊢n

MP(qa, v, u)

Então, como a computação na Máquina NORMA resulta na configuração equivalenteà obtida pela transição da Máquina de Post, pela hipótese de indução tem-se que existeuma computação equivalente a

(q′, w, u) ⊢nMP

(qa, v, u)

no programa PN de MN .

⊓⊔

3.3 Equivalência Norma/Autômato de Duas Pilhas

A demonstração de equivalência entre uma Máquina NORMA e um Autômatode Duas Pilhas será apresentada a seguir a partir da tradução dos elementos quecompõem de um programa para Máquina NORMA em elementos de um Autômatode Duas Pilhas.

A fim de definir formalmente a tradução de um programa de Máquina NORMA

para Autômato de Duas Pilhas é necessário definir previamente como a estruturade dados e a estrutura de controle serão simuladas no Autômato de Duas Pilhas.Isto é, a partir da simulação dos registradores da Máquina NORMA nas pilhas doAutômato de Duas Pilhas determina-se quais transições e estados serão necessáriospara simular o comportamento de uma Máquina NORMA.

3.3.1 Tradução Norma/Autômato de Duas Pilhas

Seja MN = ({Rk}∞k=0, {{ek}, {sk}, {zk}, {{adk}, {subk}}

∞k=0) uma Máquina

NORMA, PN = (X,Y, I, C, i0) um programa para MN e um Autômato de Duas PilhasMA = (QA,ΣA,ΓA, δA, qA, F ). A tradução do programa para Máquina NORMA PN

para o Autômato de Duas Pilhas MA é formalmente apresentada na Definição 3.3.Contudo, a seguir, a idéia por trás dessa tradução é apresentada de maneira semi-formal, com a intuição existente nesse processo. Desta maneira, espera-se que aDefinição 3.3 seja melhor compreendida. Note-se que aquilo que será traduzido serefere ao programa e não à estrutura da máquina. Essa diferenciação ocorre porqueem Norma as noções de programas e máquina são distintas, enquanto nos demaismodelos elas se confundem. Como a máquina em si não possui modelo de execução,sendo esse associado ao programa, é o programa que deverá ser traduzido.

O processo de tradução deve assegurar que para todo programa para MáquinaNORMA será possível obter um Autômato de Duas Pilhas que aceita exatamente amesma linguagem que o programa para a Máquina NORMA original. Desta formadefine-se a construção de cada um dos elementos que forma o Autômato de Duas Pi-lhas resultante nas subseções deste Capítulo. Antes, porém, será apresentado infor-malmente como as estruturas de dados do autômato serão simuladas pela Autômatode Duas Pilhas.

Conforme visto no Capítulo 2, uma Máquina NORMA possui um número infinitode registradores que podem armazenar números arbitrariamente grandes. Os re-gistradores da Máquina NORMA podem ser representados por posições na pilha1 do

Page 64: Equivalência de Máquinas Universais: Demonstração, Análise e ...

63

Autômato de Duas Pilhas de modo que o acesso ao conteúdo de um registrador podeser feito desempilhando os registradores, e empilhando-os na pilha2, até atingir oregistrador desejado. Depois de realizida a operação no registrador procurado o con-teúdo dos registradores temporariamente armazenados na pilha2 pode ser copiadode volta para a pilha1.

O conteúdo de cada registrador pode ser representado univocamente, como ilus-tra a Figura 3.11 e cada registrador pode ter seu conteúdo isolado do conteúdo dosdemais registradores utilizando símbolos auxiliares.

3

R0

1

R1

0

R2

2

1

#

0

#

#

#

pilha 1 pilha 2

Registradores da Máquina de Norma

Representação em Autômato de Duas Pilhas

Figura 3.11: Representação dos registradores nas pilhas, o conteúdo de cada registradoré gravado na pilha após um símbolo auxiliar que indica o índice do registrador.

3.3.1.1 ΣA - Alfabeto de Entrada

A linguagem reconhecida pelo Autômato de Duas Pilhas MA deverá ser a mesmaque a Máquina NORMA MN reconhece. Porém os símbolos de Σ serão representadospor uma codificação unívoca de modo que um número natural será representadopela repetição de um símbolo # tantas vezes quanto este número indicar. Comoa entrada de uma Máquina NORMA é um número natural, recebido via a funçãode entrada eX no seu registrador de entrada X, então assume-se que esse valor deentrada também é passado como entrada do Autômato de Duas Pilhas. O alfabetode entrada será um conjunto unitário ΣA = {#} onde a representação na entradado autômato será realizada pelo símbolo # repetido tantas vezes quanto o valorpassado como entrada do programa para a Máquina NORMA.

3.3.1.2 ΓA - Alfabeto Auxiliar

Os registradores e seus respectivos valores serão representados na primeira pilha,conforme mostrado na Figura 3.11. Como é utilizada uma representação unívocaé necessário isolar de alguma forma o conteúdo de cada um dos registradores. Issopode ser obtido pela gravação na pilha do índice dos registradores antes do conteúdodaquele registrador. Quando um índice de registrador for seguido imediatamentepor outro índice significa que esse registrador contém o valor zero. Por tanto ΣA =N ∪ {#} onde N ⊆ N é um subconjunto finito dos números naturais formado pelosíndices dos registradores utilizados no programa da Máquina NORMA MN .

Essa definição é necessária e faz sentido. Necessária porque, por definição, um

Page 65: Equivalência de Máquinas Universais: Demonstração, Análise e ...

64

alfabeto é um conjunto finito de símbolos. O número de registradores da MáquinaNORMA é infinito mas, como todos os programas para Máquina NORMA são finitose cada instrução faz uso de exatamente um registrador, então o número de registra-dores efetivamente usados por um programa de Máquina NORMA também é finito.Sem perda de generalidade, assume-se que, se o programa faz uso de n registradores,então os registradores usados são os de índice compreendidos entre 0 e n− 1.

Para auxiliar na busca dos registradores, é utilizado o símbolo $ que pode sergravado na pilha2 para marcar o início dos dados que são desempilhados de pilha1 embusca do índice do registrador a ser modificado e posteriormente os dados podemser copiados da pilha2 para a pilha1 até a posição marcada por $. Desse modoΓ = ΣA ∪N ∪ {$}.

3.3.1.3 δA - Transições

As transições do Autômato de Duas Pilhas são dadas pelas instruções rotuladasda Máquina NORMA, ou seja, cada instrução rotulada representa um conjunto detransições que varia de acordo com a operação que está sendo executada.

• {ek} é simulada por um conjunto de transições que copia os símbolos da en-trada e copia seu conteúdo para a pilha1, no registrador definido como o re-gistrador de entrada k do programa;

• {sk} essa operação da Máquina NORMA recupera o valor contido no registradorindexado por k o que no Autômato de Duas Pilhas é feito pela gravação doconteúdo de saída na pilha2 como na Figura 3.12

• {adk} é simulada como na Figura 3.13, essa operação empilha mais um símbolo# na seção da pilha que simula o registrador indexado por k;

• {subk} é simulada como na Figura 3.14, essa operação desempilha um símbolo# na seção da pilha que simula o registrador indexado por k, se não houvermais símbolos # na representação de Rk a pilha não será modificada uma vezque a Máquina NORMA define se Rk = 0 então se subk, Rk = 0;

• {zk} é simulada como na Figura 3.15, essa operação procura o registrador ke ao encontrar k na pilha1 se k + 1 estiver no topo da pilha2 então o teste éverdadeiro, se houver um # no topo da pilha2 então esse símbolo pertence aovalor de Rk e por tanto Rk não possui valor zero.

q1(ε ,k,ε ,k,ε )

q2(ε ,¬#,ε ,ε ,ε )

F

(ε ,¬k,ε ,ε ,ε ) (ε ,#,ε ,#,ε )

Figura 3.12: Simulação de {sk} no Autômato de Duas Pilhas

Esta conversão de instruções de um programa para Máquina NORMA em transi-ções do Autômato de Duas Pilhas pode ser resumida pela Tabela 3.5. Para facilitara identificação da origem de cada estado, os estados foram nomeados pelo rótulo dainstrução original seguido do nome da operação da qual fazem parte. Como cada

Page 66: Equivalência de Máquinas Universais: Demonstração, Análise e ...

65

q1(ε ,ε ,ε ,ε ,$)

q2(ε ,k,ε ,k,ε )

q3(ε ,ε ,ε ,#,ε )

q4(ε ,ε ,$,ε ,ε )

(ε ,¬k,ε ,ε ,¬k) (ε ,ε ,¬$,¬$,ε )

Figura 3.13: Simulação de {adk} no Autômato de Duas Pilhas

q1(ε ,ε ,ε ,ε ,$)

q2(ε ,k,ε ,k,ε )

q3

(ε ,ε ,#,ε ,ε )(ε ,ε ,¬#,¬#,ε )

q4(ε ,ε ,$,ε ,ε )

(ε ,¬k,ε ,ε ,¬k) (ε ,ε ,¬$,¬$,ε )

Figura 3.14: Simulação de {subk} no Autômato de Duas Pilhas

operação possui quatro estados há um índice no nome da operação para indicar qualdesses estados está sendo representado.

3.3.1.4 QA - Conjunto de Estados

Cada rótulo do programa para Máquina NORMA PN corresponde a um estadono Autômato de Duas Pilhas. Como é possível observar na tradução da função detransição será criado um conjuto de até quatro estados auxiliares para realizar asoperações da Máquina NORMA.

3.3.1.5 q0 - Estado Inicial

O estado inicial do Autômato de Duas Pilhas, q0, é criado a partir do rótuloinicial i0 do programa para Máquina NORMA.

3.3.1.6 F - Estados de Finais

O conjunto de estados finais do Autômato de Duas Pilhas é gerado pelo conjuntode instruções finais do programa da Máquina NORMA, de modo que cada instruçãofinal corresponde a um estado de aceitação no Autômato de Duas Pilhas.

Em resumo, um programa para Máquina NORMA pode ser traduzido para Autô-mato de Duas Pilhas conforme descrito na Definição 3.3.

Definição 3.3 (Tradução Máquina NORMA/Autômato de Duas Pilhas)Um programa PN = (X,Y, I, C, i0) para uma Máquina NORMA MN =

q1(ε ,ε ,ε ,ε ,$)

q2(ε ,k,ε ,k,ε )

q3(ε ,ε ,¬#,ε ,¬#)

q4(ε ,ε ,$,ε ,ε )

verdadeiro

(ε ,ε ,#,ε ,#)

falso

(ε ,¬k,ε ,ε ,¬k) (ε ,ε ,¬$,¬$,ε )

Figura 3.15: Simulação de {zk} no Autômato de Duas Pilhas

Page 67: Equivalência de Máquinas Universais: Demonstração, Análise e ...

66

Tabela 3.5: A tradução das instruções da Máquina NORMA para Autômato de Duas Pi-lhas leva em consideração o tipo de operação ou teste que é realizado em cada instrução.Nas transições k representa o índice dos registradores.

ek

1 ((re,¬β, ε, ε), (re,¬β, ε))2 ((re, β, ε, ε), (q′, ε, ε))sk

3 ((rs1, ε,¬k, ε), (rs1, ε,¬k))4 ((rs1, ε, k, ε), (rs2, k, ε))5 ((rs2, ε,#, ε), (rs2,#, ε))6 ((rs2, ε,¬#, ε), (qa, ε, ε))adk

7 ((rad1, ε, ε, ε), (rad2, ε, $))8 ((rad2, ε, ε, $), (rad2,¬k,¬k))9 ((rad2, ε, k, ε), (rad3, k, ε))10 ((rad3, ε, ε, ε), (rad4,#, ε))11 ((rad4, ε, ε,¬$), (rad4,¬$, ε))12 ((rad4, ε, ε, $), (q′, ε, ε))subk13 ((rsub1, ε, ε, ε), (rsub2, ε, ε, $))14 ((rsub2, ε, ε, $), (rsub2,¬k,¬k))15 ((rsub2, ε, k, ε), (rad3, k, ε))16 ((rsub3, ε,#, ε), (rsub4, ε, ε))17 ((rsub3, ε, ε,¬#), (rsub4, ε,¬#))18 ((rsub4, ε, ε,¬$), (rsub4,¬$, ε))19 ((rsub4, ε, ε, $), (q′, ε, ε))zk

20 ((rz1, ε, ε, ε), (rz2, ε, ε, $))21 ((rz2, ε, ε, $), (rz2,¬k,¬k))22 ((rz2, ε, k, ε), (rz3, k, ε))23 ((rz3, ε,#, ε), (qf

′, ε,#))24 ((rz3, ε,¬#, ε), (rz4, ε,¬#))25 ((rz3, ε, ε,¬#), (rz4, ε,¬#))26 ((rz4, ε, ε,¬$), (rz4,¬$, ε))27 ((rz4, ε, ε, $), (qv′, ε, ε))

Tabela 3.6: Conjunto de estados gerados na tradução de Máquina NORMA para Autô-mato de Duas Pilhas. Os estados são gerados de acordo com a operação.

Instruções da Máquina NORMA Estados do Autômato de Duas Pilhasr : ek(A); {re1}r : sk(A); {rs1, rs2, F}r : adA; {rad1, rad2, rad3, rad4}r : subA; {rsub1, rsub2, rsub3, rsub4}r : zA; {rz1, rz2, rz3, rz4}

Page 68: Equivalência de Máquinas Universais: Demonstração, Análise e ...

67

({Rk}∞k=0, {{ek}, {sk}, {zk}, {{adk}, {subk}}

∞k=0), é traduzido para um Autômato de

Duas Pilhas MA = (QA,ΣA,ΓA, δA, q0, F ) da seguinte maneira:

1. QA = T (I) o conjunto de estados é formado pela tradução do conjunto deinstruções da Máquina NORMA de acordo com a Tabela 3.6,

2. ΣA = N ∪ # onde N é o conjunto de índices dos registradores utilizados naMáquina NORMA MN ,

3. ΓA = ΣA ∪ {$},

4. δA =⋃

t∈δATt definida pela Tabela 3.5,

5. q0 = r0,

6. F é a tradução das intruções finais do programa da Máquina NORMA.

3.3.2 Exemplo de Tradução

Exemplo 3.3 (Tradução Norma/Autômato de Duas Pilhas) Seja uma MáquinaNORMA MN criada de acordo com a Definição 2.5 para a qual se define o seguintetrecho de programa:

A := C1: se zC vá para s senão vá para 22: faça adA vá para 33: faça subC vá para 1

A tradução de MN para um Autômato de Duas Pilhas MA feita utilizando a Definição 3.3resulta na MA da Figura 3.16.

3.3.3 Prova de Equivalência

A partir da tradução proposta, enuncia-se e prova-se o Teorema:

Teorema 3.3 (Norma/Autômato de Duas Pilhas) Qualquer linguagem aceitapor um Máquina NORMA pode ser aceita por um Autômato de Duas Pilhas.

Prova: Seja uma Máquina NORMA MN = ({Rk}∞k=0, X, Y, {{ek}, {sk}, {zk}, {{adk},

{subk}}∞k=0) para a qual é definido um programa PN = (X, Y, I, C, i0) e um Autômato de

Duas Pilhas MA = (QA, Σ, ΓA, δA, q0, FA) construída de acordo com a tradução dada naDefinição 3.3 e seja w ∈ L(PN ).

Se w ∈ L(PN ), então existe uma computação da forma (r, ek(w)) ⊢∗MN(f, ε) tal que

f é um rótulo final. Pretende-se então mostrar que existe uma computação em MA daforma (q0, w, ε, ε)) ⊢∗MA

(qa, ε, ε, γ)), ou seja, uma computação que aceita w.Para tornar a demonstração mais genérica e simples, contudo, será demonstrado que

se existe uma computação da forma (r, ek(w)) ⊢∗MN(f, ε) tal que f é um rótulo final, então

existe uma computação em MA da forma (q0, w, ε, ε)) ⊢∗MA(qa, ε, ε, γ)). Esta demonstração

será realizada por indução no comprimento da computação da palavra de entrada w.

Base de indução Seja uma palavra w tal que w é aceita pelo programa da MáquinaNORMA MN com uma computação de 0 (zero) passos. Ou seja, existe uma computação

(r, Oi) ⊢0MN

(f, ε)

Page 69: Equivalência de Máquinas Universais: Demonstração, Análise e ...

68

1z1(ε ,ε ,ε ,ε ,$)

1z2(ε ,X,ε ,X,ε )

1z3(ε ,ε ,¬#,ε ,ε )

1z4(ε ,ε ,#,ε ,ε )

s

(ε ,ε ,#,ε ,ε )

2ad1

(ε ,ε ,ε ,ε ,$)

2ad2

(ε ,X,ε ,X,ε )

2ad3

(ε ,ε ,ε ,#,ε )

2ad4

(ε ,ε ,$,ε ,ε )

3ad1

(ε ,ε ,ε ,ε ,$)

3ad2(ε ,X,ε ,X,ε )

3ad3

(ε ,ε ,ε ,#,ε )

3ad4

(ε ,ε ,$,ε ,ε )

1sub1

(ε ,ε ,ε ,ε ,$)

2sub2

(ε ,X,ε ,X,ε )

3sub3

(ε ,ε ,¬#,¬#,ε )(ε ,ε ,#,ε ,ε )

3sub4

(ε ,ε ,#,ε ,ε )

(ε ,¬1,ε ,ε ,¬1)

(ε ,ε ,¬$,¬$,ε )

(ε ,¬1,ε ,ε ,¬1)

(ε ,ε ,¬$,¬$,ε )

(ε ,¬1,ε ,ε ,¬1) (ε ,ε ,¬$,¬$,ε )

(ε ,¬1,ε ,ε ,¬1)

(ε ,ε ,¬$,¬$,ε )

Figura 3.16: Atribuição em Norma simulada no Autômato de Duas Pilhas

onde f é um rótulo final.

Mas, se a computação tem 0 passos, então Oi = ek e para ek(w), w = ε. Como w = ε ∈L(MN ), então f é um rótulo final e xi = yi para todo i ≥ 0. Traduzindo então, a configura-ção inicial da Máquina NORMA MN , (0, [R1 = x1, . . . , Ri = xi]), para o Autômato de DuasPilhas MA obtém-se a configuração (q0, 1#1#2 . . .#k2#1#2 . . .#k . . . m#1#2 . . .#k),com k ≥ 0 e cada k representa um registrador usado em MN para todo m ≥ 0.

A esta configuração, as únicas transições aplicáveis são aquelas definidas no ítem (1)da Tabela 3.5:

(re,¬β, ε, ε)

e

(re,¬β, ε, ε)

A fita de entrada de MA é composta pela configuração inicial de cada um dos regis-tradores seguido do índice do registrador, tal que esse registrador tenha sido utilizado na

Page 70: Equivalência de Máquinas Universais: Demonstração, Análise e ...

69

computação do programa da MN . Além disso, de acordo com a Definição 2.8, é concate-nado o símbolo β à entrada para indetificar o final desta. Porém como o programa originalMN não altera o valor de nenhum registrador a entrada para o Autômato de Duas PilhasMA será vazia de modo que

(re, β, ε, ε)

será a única transição aplicável a esta configuração. Quando esta transição é aplicada àconfiguração inicial de MA obtém-se (Definição 2.9)

(r1, β, ε, ε) ⊢MA

(r2, ε, ε, ε) ⊢MA

(f, ε, ε, ε)

tal que f ∈ FA, ou seja, a palavra w = ε é aceita pelo Autômato de Duas Pilhas MA e asaída é vazia.

Hipótese de indução

Se existe uma computação de comprimento n na Máquina NORMA MN tal que

(r, Oi) ⊢nMN

(f, ε)

onde i representa o índice do registrador onde será realizada uma operação ou acesso e fé um rótulo final.onde para ek(w), |w| ≥ 0, i ≥ 0, f é um rótulo final, então existe uma computação naAutômato de Duas Pilhas MA.

(r1, #1#2 . . .#n1#1#2 . . .#n2 . . .#1#2 . . .#nkβ, ε, ε) ⊢nMA

(f, ε, ε,#1#2 . . .#nY )

onde o número de # representa o valor do registrador tal que n ≥ 0, k ≥ 0 é o índice doregistrador e f é um rótulo final.

Passo de indução

Suponha que existe uma computação de comprimento n + 1 na Máquina NORMA MN

tal que

(r, Oj) ⊢n+1MN

(f, ε)

onde o número de i representa o índice do registrador e f é um rótulo final.Mas, como a computação tem comprimento maior ou igual a 1, então existe uma

instrução ((r, Oj), (r′, r′′)) tal que r′′ pode ser vazio no pograma da Máquina NORMA e

(0, Oj) ⊢MN(1, Oj) ⊢

nMN

(f, ε)

De acordo com a hipótese de indução, temos que a partir da existência da computação

(r, Oi) ⊢nMN

(f, ε)

em MN pode-se inferir que existe uma computação em MA da forma

(q′, #1#2 . . .#n1#1#2 . . .#n2 . . .#1#2 . . .#nkβε, ε) ⊢∗MA(qa, ε, ε, #1#2 . . .#ny)

onde k ≥ 0 e cada k representa um registrador usado em PN para todo m ≥ 0.

Page 71: Equivalência de Máquinas Universais: Demonstração, Análise e ...

70

Dessa forma, para demonstrar a proposição em questão basta demonstrar que a exis-tência da computação

(q, aw, α, γ) ⊢MA(q′, χ, α′, γ′)

implica a existência de uma computação

(q, #1#2 . . .#n1#1#2 . . .#n2 . . .#1#2 . . .#nkβ)

⊢∗MA(q′, #1#2 . . .#n1#1#2 . . .#n2 . . .#1#2 . . .#nkβ)

em MA.

Estabelece-se então os seguintes casos para as transições geradas para o Autômato deDuas Pilhas ADP :

Oi é uma instrução do tipo adk

Oi é uma instrução do tipo subk

Oi é uma instrução do tipo zk

Oi é uma instrução do tipo ek

Oi é uma instrução do tipo sk

Se Oi é uma instrução do tipo adk o seguinte conjunto de transições é gerado:

7 ((rad1, ε, ε, ε), (rad2, ε, $))8 ((rad2, ε, ε, $), (rad2,¬k,¬k))9 ((rad2, ε, k, ε), (rad3, k, ε))10 ((rad3, ε, ε, ε), (rad4, #, ε))11 ((rad4, ε, ε,¬$), (rad4,¬$, ε))12 ((rad4, ε, ε, $), (q′, ε, ε))

E a seguinte computação ocorre no Autômato de Duas Pilhas MA:

(rad1, aw, γ)(rad2, aw, γ$)(rad2, a, γ$w)(rad3, a, γ$w)(rad4, a

′, γ$w)(rad4, a

′w, γ$)(rad4, a

′w, γ)(q′, a′w, γ)

Se Oi é uma instrução do tipo subk o seguinte conjunto de transições é gerado:

13 ((rsub1, ε, ε, ε), (rsub2, ε, ε, $))14 ((rsub2, ε, ε, $), (rsub2,¬k,¬k))15 ((rsub2, ε, k, ε), (rad3, k, ε))16 ((rsub3, ε, #, ε), (rsub4, ε, ε))17 ((rsub3, ε, ε,¬#), (rsub4, ε,¬#))18 ((rsub4, ε, ε,¬$), (rsub4,¬$, ε))19 ((rsub4, ε, ε, $), (q′, ε, ε))

Page 72: Equivalência de Máquinas Universais: Demonstração, Análise e ...

71

E a seguinte computação ocorre no Autômato de Duas Pilhas MA:

(rsub1, aw, γ)(rsub2, aw, γ$)(rsub2, a, γ$w)(rsub3, a, γ$w)(rsub4, a

′, γ$w)(rsub4, a

′w, γ$)(rsub4, a

′w, γ)(q′, a′w, γ)

Se Oi é uma instrução do tipo zk o seguinte conjunto de transições é gerado:

20 ((rz1, ε, ε, ε), (rz2, ε, ε, $))21 ((rz2, ε, ε, $), (rz2,¬k,¬k))22 ((rz2, ε, k, ε), (rz3, k, ε))23 ((rz3, ε, #, ε), (qf ′, ε, #))24 ((rz3, ε,¬#, ε), (rz4, ε,¬#))25 ((rz3, ε, ε,¬#), (rz4, ε,¬#))26 ((rz4, ε, ε,¬$), (rz4,¬$, ε))27 ((rz4, ε, ε, $), (qv′, ε, ε))

E a seguinte computação ocorre no Autômato de Duas Pilhas MA:

(rz1, aw, γ)(rz2, aw, γ$)(rz2, a, γ$w)(rz3, a, γ$w)(rz4, a, γ$w)(rz4, aw, γ$)(rz4, aw, γ)(q′, a′w, γ)

Se Oi é uma instrução do tipo ek o seguinte conjunto de transições é gerado:

{

1 ((re,¬β, ε, ε), (re,¬β, ε))2 ((re, β, ε, ε), (q′, ε, ε))

}

Se Oi é uma instrução do tipo sk o seguinte conjunto de transições é gerado:

3 ((rs1, ε,¬k, ε), (rs1, ε,¬k))4 ((rs1, ε, k, ε), (rs2, k, ε))5 ((rs2, ε, #, ε), (rs2, #, ε))6 ((rs2, ε,¬#, ε), (qa, ε, ε))

A configuração final dessa computação no Autômato de Duas Pilhas MA correspondeà configuração

(r, [R1 = y1, . . . , Rk = yk . . . , Ri = yi])

que corresponde exatamente à aplicação da transição ((r, Oi), (r′, r′′)) à configuração

inicial da Máquina NORMA. Mas, pela hipótese de indução, se existe uma computação decomprimento menor ou igual a n no programa da Máquina NORMA MN então existe umacomputação equivalente no Autômato de Duas Pilhas MA.

Page 73: Equivalência de Máquinas Universais: Demonstração, Análise e ...

72

Na computação original do programa da Máquina NORMA MN , como a palavra aw ∈L(MN ), tem-se que

(r, Oj) ⊢MN(r′, Oj) ⊢

nMN

(f, ε)

Então, como a computação no Autômato de Duas Pilhas resulta na configuração equiva-lente à obtida pelas inatruções do programa da Máquina NORMA, pela hipótese de induçãotem-se que existe uma computação equivalente a

(r, Oj) ⊢nMN

(f, ε)

em MA.

⊓⊔

3.4 Equivalência Autômato de Duas Pilhas/Máquina de Turing

A demonstração de equivalência entre um Autômato de Duas Pilhas e uma Má-quina de Turing será apresentada a seguir a partir de uma tradução dos elementosda sêxtupla que compõe um Autômato de Duas Pilhas na sétupla de elementos quecompõem uma Máquina de Turing.

A fim de definir formalmente a tradução de um programa de Autômato de DuasPilhas para Máquina de Turing é necessário definir previamente como a estruturade dados e a estrutura de controle serão simuladas na Máquina de Turing. Isto é, apartir da simulação da fita de entrada e das pilhas do Autômato de Duas Pilhas naMáquina de Turing determina-se quais transições e estados serão necessários parasimular o comportamento de um Autômato de Duas Pilhas.

3.4.1 Tradução Autômato de Duas PilhasMáquina de Turing

Seja um Autômato de Duas Pilhas MA = (QA,ΣA,ΓA, δA, qA0, F ) e uma Máquinade Turing MT = (QT ,ΣT ,ΓT , δT , qT0, qa, qr). A tradução formal do Autômato deDuas Pilhas MA para a Máquina de Turing MT é formalmente apresentada naDefinição 3.4. Contudo, a seguir, a idéia por trás dessa tradução é apresentadade maneira semi-formal, com a intuição existente nesse processo. Desta maneira,espera-se que a Definição 3.4 seja melhor compreendida.

O processo de tradução deve assegurar que para todo Autômato de Duas Pilhasserá possível obter uma Máquina de Turing que aceita exatamente a mesma lingua-gem que o Autômato de Duas Pilhas original. Desta forma define-se a construçãode cada um dos elementos que forma a Máquina de Turing resultante nas subseçõesdeste capítulo. Antes, porém, será apresentado informalmente como as estruturasde dados do autômato serão simuladas pela Máquina de Turing.

Um Autômato de Duas Pilhas é constituído por três estruturas capazes de ma-nipular dados: (i) a fita de entrada, (ii) a primeira pilha, referenciada no restantedo texto por pilha1 e (iii) a segunda pilha, referenciada no restante do texto porpilha2. Como a única estrutura de dados existente em uma Máquina de Turing éa fita de entrada, as pilhas deverão ser simuladas nessa estrutura. A solução en-contrada é, portanto, representar tanto a palavra que deve ser reconhecida como oconteúdo das pilhas do autômato MA na fita de entrada de MT . Pode-se representarestas estruturas na fita de uma Máquina de Turing por meio de símbolos auxiliaresque servem para identificar o início de cada uma das pilhas. No caso específico da

Page 74: Equivalência de Máquinas Universais: Demonstração, Análise e ...

73

tradução aqui apresentada, o símbolo $ identificará o início da pilha1 e o símbolo #identificará o início da pilha2.

Devido ao fato de não haver limitações no comprimento das pilhas, es-tas serão representadas intercaladamente na fita da Máquina de TuringAssim ose o conteúdo da pilha1 for π1π2 . . . πk e o conteúdo da pilha2 for ψ1ψ2 . . . ψj

considerando (sem perda de generalidade) k < j a representação será$#π1ψ1π2ψ2 . . . πkψkβψk+1β . . . βψj−iβψj.

A fita apresenta nas suas primeiras posições a entrada, que é lida uma única veze não é alterada durante a computação. Como parte do processo de computação,os símbolos já lidos são substituídos por símbolos brancos β para indicar o próximosímbolo a ser lido. O símbolo β que marca o fim da entrada na fita do Autômato deDuas Pilhas foi excluído uma vez que o símbolo auxiliar $ pode servir de referência.Ou seja, quando a leitura da entrada for realizada, se o próximo símbolo a ser lido forum $ significa que a entrada é vazia ou já foi inteiramente computada. Em seguida,são armazenadas as pilhas com seus símbolos intercalados na fita, de modo que, apartir da posição seguinte ao fim da palavra de entrada, a pilha1 ocupa as posiçõesímpares e a pilha2 ocupa as posições pares da fita, conforme explicado no parágrafoanterior.

A Figura 3.17 ilustra o relacionamento existente entre as estruturas do Autômatode Duas Pilhas MA e da Máquina de Turing MT . Neste exemplo o símbolo $ marca oinício da pilha1 que contém os símbolos já lidos da entrada, em seguida o símbolo #marca o início da pilha2 que contém os dados gerados durante a execução. Como épossível observar, a entrada foi parcialmente lida pois há símbolos β entre o símbolode início de fita φ e símbolos do alfabeto ΣT , que representam a parte da entradaque ainda não foi lida.

φ β β β x4 x5 x6 $ # x1 y1 x2 y2 x3 β β . . .

Fita da Máquina de Turing MT

x1 x2 x3 x4 x5 x6 β

Fita de Entrada do Autômato de Duas Pilhas MA

x3

x2

x1

pilha 1

y2

y1

pilha 2

Estrutura de dados do Autômato de Duas Pilhas

Representação na Máquina de Turing

Figura 3.17: Representação da fita de entrada e das pilhas Autômato de Duas Pilhasem uma fita da Máquina de Turing

3.4.1.1 ΣT - Alfabeto de Entrada

A linguagem reconhecida pela Máquina de Turing resultante MT deverá ser amesma que o Autômato de Duas Pilhas MA reconhece. Linguagens iguais necessa-riamente implicam alfabetos iguais, logo se tem que ΣT = ΣA.

Page 75: Equivalência de Máquinas Universais: Demonstração, Análise e ...

74

3.4.1.2 ΓT - Alfabeto Auxiliar

Toda a computação da Máquina de Turing MT será realizada como uma simu-lação da computação, para a mesma entrada, no Autômato de Duas Pilhas MA.Assim, o alfabeto auxiliar ΓT deve incluir todos símbolos de ΓA, o símbolo brancoβ, o símbolo de início da fita φ e os dois símbolos auxiliares $ e #, que servirão parademarcar o início das pilhas na fita da Máquina de Turing, conforme já explicado.Conseqüentemente, ΓT = ΓA ∪ {β, φ, $,#}. Assume-se sem perda de generalidadeque ΓA ∩ {β, φ, $,#} = ∅.

3.4.1.3 δT - Transições

A transição de um Autômato de Duas Pilhas é uma função δA : Q× (ΣA∪{ε})×(ΓA∪{ε})×(ΓA∪{ε}) −→ Q×(ΓA∪{ε})×(ΓA∪{ε}). Ou seja, para um dado estadoatual q e símbolos σ lido na fita de entrada, α na pilha1 e γ na pilha2, é determinadoo próximo estado q′ e os símbolos α′ e γ′ a serem gravados (respectivamente) no topodas pilha1 e pilha2. Uma transição ta então é da forma ta = ((q, σ, α, γ), (q′, α′, γ′)),onde q ∈ Q, q′ ∈ Q, δ ∈ ΣA ∪ {ε} e α, γ, α′, γ′ ∈ (ΓA ∪ {ε}).

Uma transição da Máquina de Turing, contudo, considera que há a realizaçãode exatamente uma leitura e uma escrita. Assim, para simular uma única transiçãodo Autômato de Duas Pilhas, que envolve leituras na entrada e nas pilhas e escritasnestas últimas, é necessário realizar um mínimo de três transições na Máquina deTuring resultante, que efetuem as operações. Além das transições para a realizaçãode operações de leitura e escrita na entrada e nas pilhas, são também necessáriastransições adicionais para posicionar a cabeça de leitura e escrita no topo das pilhaspara que nelas possam ser lidos e escritos os símbolos da transição do autômato MA.

Como a Definição 2.8 de Autômato de Duas Pilhas inclui ainda o movimentovazio, precisa-se construir um conjunto de transições de deslocamento diferenciadopara este caso. Uma transição do Autômato de Duas Pilhas MA que representa ummovimento vazio é da forma ((q, ε, α, γ), (q′, α′, γ′)) e, na tradução desta transiçãopara a Máquina de Turing MT , não deve haver a escrita do símbolo β na entrada.Caso a leitura de uma das pilhas seja vazia (isto é, se α = ε ou γ = ε) então o símbololido deverá ser o símbolo branco β após o topo da pilha em questão; caso a escritaseja vazia (isto é, se α′ = ε ou γ′ = ε), o símbolo gravado será um símbolo brancoβ no topo da pilha referenciada. Para que seja possível utilizar esta abordagem atradução deve ser realizada de acordo com a Tabela 3.7.

As transições da Tabela 3.7 destacadas em negrito, representam as transiçõesque de fato modificam a memória, enquanto as demais são apenas transições dedeslocamento na fita. As transições listadas tem a seguinte função:

• (3.1) e (3.2) realizam a leitura da palavra vazia da entrada, note-se que apenasuma das transições poderá estar presente na função de transição;

• (3.3) faz a leitura de um símbolo da palavra de entrada e consome o símbologravando o símbolo branco β na posição;

• (3.4) a (3.7) procuram o topo da pilha1,

• se um símbolo tiver que ser desempilhado da pilha1 (3.8) e (3.9) posicionama cabeça de leitura e escrita sobre o último símbolo da pilha e (3.10) realiza odesempilhamento,

Page 76: Equivalência de Máquinas Universais: Demonstração, Análise e ...

75

Tabela 3.7: A tradução das transições do Autômato de Duas Pilhas para Máquina deTuring leva em consideração as estruturas de dados alteradas no Autômato de DuasPilhas para gerar o menor número possível de transições.

δT :⋃

t∈δATt onde, para toda transição t = ((q, σ, α, γ), (q′, α′, γ′)),

gera-se o seguinte conjunto de transições:

Tt = {Se (α ∈ Γ) ∨ (α′ ∈ Γ) ∨ (γ ∈ Γ) ∨ (γ′ ∈ Γ):((q, $), (qa, $,→)), se q ∈ FA (3.1)((q, $), (qr, $,→)), se q /∈ FA (3.2)((q, σ), (qt1, β,→)), σ 6= $ (3.3)

se (α ∈ Γ) ∨ (α′ ∈ Γ):((qt1,¬$), (qt1,¬$,→)), (3.4)((qt1, $), (qt2, $,→)), (3.5)((qt2, ?), (qt3, ?,→)), (3.6)((qt3,¬β), (qt2,¬β,→)), (3.7)se α ∈ Γ:

((qt3, β), (qt4, β,←)), (3.8)((qt4, ?), (qt5, ?,←)), (3.9)((qt5, α), (qt6, α′,←)), (3.10)

se (α = ε) ∧ (α′ ∈ Γ):((qt3, β), (qt6, α′,←)), (3.11)

senão (γ ∈ Γ) ∨ (γ′ ∈ Γ):((qt1,¬#), (qt6,¬#,→)), (3.12)

se (γ ∈ Γ) ∨ (γ′ ∈ Γ):((qt6,¬#), (qt6,¬#,←)), (3.13)((qt6,#), (qt7,#,→)), (3.14)((qt7, ?), (qt8, ?,→)), (3.15)((qt8,¬β), (qt7,¬β,→)), (3.16)se γ ∈ Γ:

((qt8, β), (qt9, β,←)), (3.17)((qt9, ?), (qt10, ?,←)), (3.18)((qt10, γ), (qt11, γ′,←)), (3.19)

se (γ = ε) ∧ (γ′ ∈ Γ):((qt8, β), (qt11, γ′,←)), (3.20)

senão:((qt6,¬#), (qt11,¬#,←)), (3.21)

((qt11,¬φ), (qt11,¬φ,←)), (3.22)((qt11, φ), (qt12, φ,→)), (3.23)((qt12, β), (qt12, β,→)) (3.24)

((qt12,¬β), (qt13,¬β,←)) (3.25)((qt13, ?), (qt′ , ?,→))} (3.26)

Page 77: Equivalência de Máquinas Universais: Demonstração, Análise e ...

76

• se a leitura for vazia haverá um empilhamento determinado por (3.11);

• se a pilha1 não sofrer nenhuma modificação, mas a pilha2 tiver que ser modifi-cada, (3.12) realiza a conexão entre o estado de leitura da entrada e os estadosde tratamento da pilha2;

• (3.13) a (3.16) procuram o topo da pilha2,

• se um símbolo tiver que ser desempilhado da pilha2 (3.17) e (3.18) posicionama cabeça de leitura e escrita sobre o último símbolo da pilha e (3.19) realiza odesempilhamento,

• se a leitura for vazia haverá um empilhamento determinado por (3.20);

• se a pilha2 não sofrer nenhuma modificação, mas a pilha1 tiver sido modificada,(3.21) realiza a conexão entre o estado de leitura e escrita na pilha1 os estadosde retorno ao início da fita;

• (3.22) a (3.24) procuram o início da fita e posicionam a cabeça de leitura eescrita no próxima símbolo da entrada a ser lido;

• (3.25) e (3.26) fazem a ligação com o próximo conjunto de estados que serágerado.

Algumas transições da Máquina de Turing representadas na Tabela 3.7 con-tém a leitura e escrita do símbolo ?. Essa notação é utilizada para indicar quea transição em questão é válida para qualquer símbolo do alfabeto. Por exemplo,((qA3, ?), (qA4, ?,→)) significa que no estado qA3 qualquer símbolo lido é escrito igual-mente na fita e segue-se para o estado qA4; ou seja, a transição ((qA3, ?), (qA4, ?,→))representa o conjunto de transições {((qA3, σ), (qA4, σ,→)) | σ ∈ ΣT}. O caracter ¬antes de um símbolo σ ∈ ΣT em uma transição representa que a transição pode seraplicável a todos os símbolos que não sejam σ. Por exemplo, os símbolos ¬$,¬#,representam que a transição deve ser realizada para qualquer outro símbolo quenão $ ou #; ou seja a transição ((qt7,¬#), (qt7,¬#,←)) representa o conjunto detransições {((qt7, σ), (qt7, σ,←)) | σ ∈ ΣT \ {σ}}.

3.4.1.4 QT - Conjunto de Estados

O conjunto de estados QA pode ser simulado incluindo um conjunto de estadosna Máquina de Turing MT para cada estado do Autômato de Duas Pilhas MA.Como explicado anteriormente, uma transição do Autômato de Duas Pilhas envolvea leitura da fita de entrada e leitura e escrita nas duas pilhas, criando a necessidadede incluir mais estados na Máquina de Turing resultante para que as operações sejamrealizadas. Além disso, como as estruturas de dados do Autômato de Duas Pilhasestão representadas na fita, é necessário deslocar a cabeça de leitura e escrita na fitada Máquina de Turing para o ponto de leitura e escrita de cada um dos elementosdesta estrutura, o que requer também a inserção de novos estados.

Então, para cada estado q ∈ QA, considerando as transições que partem desteestado é gerado um novo conjunto de até 12 (doze) novos estados. Porém, esteconjunto pode variar de acordo com as leituras e escritas nas pilhas devido à possi-bilidade de leitura e escrita vazias. A Tabela 3.8 lista cada possibilidade de leitura

Page 78: Equivalência de Máquinas Universais: Demonstração, Análise e ...

77

Tabela 3.8: O conjunto de estados gerados na tradução de Autômato de Duas Pilhaspara Máquina de Turing é gerado de acordo com o conteúdo das transições do estadooriginal.

Conteúdo da Transição Estados a AcrescentarLeitura da entrada {qt12, qt13}Leitura e escrita na pilha1 {qt1, qt2, qt3, qt4, qt5, qt6}Leitura sem escrita na pilha1 {qt1, qt2, qt3, qt5, qt6}Leitura vazia com escrita na pilha1 {qt1, qt2, qt3, qt5, qt6}Leitura e escrita na pilha2 {qt6, qt7, qt8, qt9, qt10, qt11}Leitura e sem escrita na pilha2 {qt6, qt7, qt8, qt10, qt11}Leitura vazia com escrita na pilha2 {qt6, qt7, qt38, qt10, qt11}

e escrita na estrutura de dados do Autômato de Duas Pilhas e o conjunto específicode estados que deve ser acrescentado para um estados q em cada um dos casos.

Cada um dos novos 12 novos estados estados gerados possuem uma função espe-cífica:

• q é o estado para realizar a leitura da fita de entrada substituindo o símbololido por β.

• qt3 é o estado onde ocorre a leitura e escrita na pilha1 se esta for uma leituravazia.

• qt5 é o estado onde ocorre a leitura e escrita na pilha1 se esta for uma leituracomum.

• qt8 é o estado onde ocorre a leitura e escrita na pilha2 se esta for uma leituravazia.

• qt10 é o estado onde ocorre a leitura e escrita na pilha2 se esta for uma leituracomum.

• qt1, qt2, qt3, qt4 são utilizados auxiliarmente no deslocamento da cabeça de lei-tura e escrita da fita de entrada para o topo da pilha1. O estado qt1 é o estadode busca por $ que marca o início da pilha1, enquanto qt2, qt3, qt4 são os estadosde percorrimento pelas pilhas para chegar ao topo de pilha1;

• qt6, qt7, qt8, qt9 são utilizados auxiliarmente no deslocamento da cabeça de lei-tura e escrita do topo da pilha1 para o topo da pilha2. qt6 é utilizado parachegar até # que marca o início da pilha2 enquanto qt7, qt8, qt9 indicam o per-corrimento pelas pilhas para chegar ao topo de pilha2;

• qt11, qt12 são estados auxiliares para o deslocamento da cabeça de leitura eescrita do topo da pilha2 para o próximo caractere a ser lido da entrada. qt11é o estado de procura do φ que marca o início da fita enquanto q12 é o estadode busca pelo próximo caractere da entrada ainda não substituído por β, istoé, que não foi computado;

Page 79: Equivalência de Máquinas Universais: Demonstração, Análise e ...

78

• qt13 é um estado auxiliar que não altera o conteúdo da fita é utilizado apenaspara conectar o conjunto de estados gerado com o próximo conjunto a sergerado.

A primeira vista esse esquema de tradução de estados pode parecer trabalhoso,uma vez que é necessário verificar uma série de regras para cada estado traduzido.Uma alternativa possível seria utilizar um conjunto fixo de estados que seria utilizadona tradução de qualquer transição, realizando sempre uma modificação das estrutu-ras de dados. Entretanto, a abordagem utilizada possibilita gerar um conjunto deestados mais compacto excluindo estados destinados a modificação do conteúdo daspilhas quando as pilhas não precisarem ser modificadas. Assim descarta-se estadosque seriam percorridos durante a computação do programa, sem no entanto contri-buir para o resultado da computação. Conseqüentemente os programas traduzidostornam-se mais eficientes.

3.4.1.5 q0 - Estado Inicial

O estado inicial que está presente nos dois modelos são iguais, então, o estadoinicial do Autômato de Duas Pilhas MA, q0, pode ser simplesmente substituído peloestado inicial da Máquina de Turing uma vez que q0T = q0A.

3.4.1.6 qa e qr - Estados de aceitação e rejeição

As transições para os estados de aceitação qa e rejeição qr da Máquina de TuringMT podem ser obtidas a partir do conjunto de estados finais FA do Autômato deDuas Pilhas MA. Quando o Autômato de Duas Pilhas MA termina de ler suaentrada (identificada pela leitura do símbolo $, que marca o início das pilhas na fitade entrada de MT ) são criadas transições a partir dos estados correspondentes naMáquina de Turing dos estados do Autômato de Duas Pilhas. A transição é efetuadapara o estado qa se o estado correspondente no autômato for de aceitação e paraqr caso contrário, pois nesse caso o Autômato de Duas Pilhas rejeitaria a entrada.Formalmente, tem-se que:

∀q ∈ QA

{

((q, $), (qa, $,→)) se q ∈ F((q, $), (qr, $,→)) se q /∈ F

Em resumo, um programa para Autômato de Duas Pilhas pode ser traduzidopara Máquina de Turing conforme descrito na Definição 3.4.

Definição 3.4 (Tradução Autômato de Duas Pilhas/Máquina de Turing)Um Autômato de Duas Pilhas MA = (QA,ΣA,ΓA, δA, q0, F ) é traduzido para umaMáquina de Turing MT = (QT ,ΣT ,ΓT , δT , q0, qa, qr) tal que:

1. QT = QA ∪ {qt1, qt2, . . . , qt13} ∪ {qa, qr} Conforme o conjunto de estados daTabela 3.7,

2. ΣT = ΣA,

3. ΓT = ΓA ∪ {$,#, φ},

4. δT =⋃

t∈δATt conforme definido na Tabela 3.7,

5. q0T = q0A.

Page 80: Equivalência de Máquinas Universais: Demonstração, Análise e ...

79

6. qa será o estado destino das transições que serão incluídas a partir dos estadosde aceitação do Autômato de Duas Pilhas ((qA, $), (qa, $,←))se qA ∈ F

7. qr será o estado destino das transições que serão incluídas a partir dos estadosde rejeição do Autômato de Duas Pilhas ((qA, $), (qr, $,←))se qA /∈ F

3.4.2 Exemplo de Tradução

Exemplo 3.4 (Tradução Autômato de Duas Pilhas/Turing) Seja um Autômatode Duas Pilhas MA definido de acordo com a Figura 3.18. A tradução de MA para

q0(β ,ε ,ε ,ε ,ε )

A

(0,ε ,ε ,ε ,0)(1,ε ,ε ,ε ,1)

Figura 3.18: Autômato de Duas Pilhas que reconhece números binários de qualquertamanho

uma Máquina de Turing deve ser feita utilizando a Definição 3.4. A MA 3.18 pode sertraduzida então para a Máquina de Turing MT da Figura 3.19

3.4.3 Prova de Equivalência

A partir da tradução proposta, enuncia-se e prova-se o Teorema:

Teorema 3.4 (Equivalência Autômato de Duas Pilhas/Turing) Qualquerlinguagem aceita por um Autômato de Duas Pilhas pode ser aceita por uma Máquinade Turing.

Prova: Seja um Autômato de Duas Pilhas MA = (QA, Σ, ΓA, δA, q0, FA) e uma Má-quina de Turing MT = (QT , Σ, ΓT , δT , q0, qa, qr) construída de acordo com a tradução dadana Definição 3.4 e seja w ∈ L(MA).

Se w ∈ L(MA), então existe uma computação da forma (q0, w, ε, ε) ⊢∗MA(f, ε, ε, γ)

tal que f ∈ FA e γ ∈ Γ∗ (Definição 2.8). Pretende-se então mostrar que existe umacomputação em MT da forma (q0, φw$#)) ⊢∗MT

(qa, φβ . . . β$#γ′)) onde o número debrancos entre φ e $ é igual ao comprimento de w, |w|. Ou seja, uma computação queaceita w.

Para tornar a demonstração mais genérica e simples, contudo, será demonstradoque se existe uma computação da forma (q0, w, ε, ε) ⊢∗MA

(f, ε, ε, γ) tal que w =w1 . . . wm, f ∈ FA e γ ∈ Γ∗ então existe uma computação em MT da forma(q0, φβ1β2 . . . βkw1 . . . wm$#)) ⊢∗MT

(qa, φβ1β2 . . . βkβ1 . . . βm$#γ′)), para qualquer k ≥ 0.Esta demonstração será realizada por indução no comprimento da computação da palavraw.

Base de indução

Seja uma palavra w tal que w é aceita pelo autômato MA com uma computação de 0(zero) passos. Ou seja, existe uma computação

(q0, w, ε, ε) ⊢0MA

(f, ε, ε, ν)

Page 81: Equivalência de Máquinas Universais: Demonstração, Análise e ...

80

q0

11

12

13

14

15

A

05

04

03

02

01

(1,β ,→)

(#,#,→)

(?,?,→) (β ,1,←)

(γ ,γ ,→)

($,$,→)

(0,β ,→)

(#,#,→)

(?,?,→) (β ,0,←)

(γ ,γ ,→)

($,$,→)

($,$,→)

(1,β ,→)

(1,β ,→)

(0,β ,→)

(0,β ,→)

(¬β ,¬β ,→)

(¬β ,¬β ,→)

(¬#,¬#,→)

(¬γ ,¬γ ,←)

(β ,β ,→)

(β ,β ,→)

(¬γ ,¬γ ,→)

(¬#,¬#,→)

(?,?,→)qa

Figura 3.19: Tradução do Autômato de Duas Pilhas que reconhece números binários dequalquer tamanho para Máquina de Turing

onde f ∈ FA.

Mas, se a computação tem 0 passos, então f = q0, w = ε e ν = ε. Como w =ε ∈ L(MA), então q0 = f ∈ FA. Traduzindo então a configuração inicial do Autômatode Duas Pilhas MA, (q0, ε, ε, ε), para a Máquina de Turing MT obtém-se a configuração(q0, φβ1β2 . . . βk$#), com k ≥ 0. A esta configuração, as únicas transições aplicáveis sãoaquelas definidas no ítem (3.1) da Tabela 3.7:

((q0, $), (qa, $,→)) se q0 ∈ FA

e

((q0, $), (qa, $,→)) se q0 /∈ FA

como q0 ∈ FA, então somente a primeira transição existe e é aplicável. Quando estatransição é aplicada à configuração inicial de MT obtém-se (Definição 2.2)

(q0, φβ1β2 . . . βk$#) ⊢MT(qa, φ$#)

ou seja, a palavra w = ε é aceita pela Máquina de Turing MT e a quantidade desímbolos brancos β entre φ e $ é igual a k + |w| = k + 0 = k.

Page 82: Equivalência de Máquinas Universais: Demonstração, Análise e ...

81

Hipótese de indução

Se existe uma computação de comprimento n no Autômato de Duas Pilhas MA tal que

(q, w, α, γ) ⊢nMA

(f, ε, ε, ν)

onde w = w1w2 . . . wm, m ≥ 0, w ∈ Σ∗, α = αiαi−1 . . . α2α1, i ≥ 0, γ = γjγj−1 . . . γ2γ1,j ≥ 0, f ∈ FA, então existe uma computação na Máquina de Turing MT

(q, φβ1β2 . . . βkw1w2 . . . wk$#α1γ1α2γ2 . . . αkγkβγk+1β . . . βγj−iβγj) ⊢∗MT

(qa, φβ1β2 . . . βkβ1 . . . β|w|$#η)

com m ≥ 0 e onde se supõe, sem perda de generalidade, que i ≤ j.

Passo de indução

Suponha que existe uma computação de comprimento n + 1 no Autômato de DuasPilhas MA tal que

(q, aw, α, γ) ⊢n+1MA

(f, ε, ε, ν)

onde w = w1w2 . . . wm, m ≥ 0, a, w1, w2, . . . , wm ∈ Σ ∪ {ε}, α = αiαi−1 . . . α2α1, i ≥ 0,γ = γjγj−1 . . . γ2γ1, j ≥ 0, f ∈ FA.

Mas, como a computação tem comprimento maior ou igual a 1, então existe umatransição ((q, σ, π, µ), (q′, π′, µ′)) ∈ δA e

(q, aw, α, γ) ⊢MA(q′, χ, α′, γ′) ⊢n

MA(f, ε, ε, ν)

onde σ = ε ou σ = a, π = ε ou π = αi e µ = ε ou µ = γj . Se σ = ε então χ = aw e seσ = a então χ = w.

De acordo com a hipótese de indução, temos que a partir da existência da computação

(q′, χ, α′, γ′) ⊢nMA

(f, ε, ε, ν)

em MA pode-se inferir que existe uma computação em MT da forma

(q′, φβ1 . . . βkχ1 . . . χ|χ|$#η′) ⊢∗MT(qa, φβ1 . . . βkβ1 . . . β|χ|$#ν)

onde η′ corresponde à intercalação dos símbolos de α′ e γ′ conforme a Definição 3.4 eν ∈ Γ∗.

Dessa forma, pra demonstrar a proposição em questão basta demonstrar que a exis-tência da computação

(q, aw, α, γ) ⊢MA(q′, χ, α′, γ′)

implica a existência de uma computação

(q, φβ1 . . . βkaw$#η) ⊢∗MT(q′, φβ1 . . . βkχ1 . . . χ|χ|$#η′)

em MT , onde η corresponde à intercalação dos símbolos de α e γ conforme a Definição 3.4e χ = aw se σ = ε e χ = w se σ = a.

Estabelece-se então os seguintes casos para as transições geradas para a Máquina deTuring MT , a partir da configuração (q, φβ1 . . . βkaw$#η) pela aplicação da transição((q, σ, π, µ), (q′, π′, µ′)) ∈ δA:

Se σ 6= ε, ou seja, se o primeiro símbolo a da palavra aw é consumido pela transição,então tem-se os seguintes casos:

Page 83: Equivalência de Máquinas Universais: Demonstração, Análise e ...

82

Caso 1: π = ε, µ = ε, π′ = ε, µ′ = ε

Neste caso, o seguinte conjunto de transições é gerado:

(T1) ((q, a), (qt11, β,→)),(T2) ((qt11,¬φ), (qt11,¬φ,←)),(T3) ((qt11, φ), (qt12, φ,→)),(T4) ((qt12, β), (qt12, β,→)),(T5) ((qt12,¬β), (qt13,¬β,←)),(T6) ((qt13, ?), (q

′, ?,→))

E a seguinte computação ocorre na Máquina de Turing MT :

(q, φβ1β2 . . . βkaw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj)⊢MT

(qt11, φβ1β2 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T1

⊢MT(qt11, φβ1β2 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT(qt11, φβ1β2 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT. . . transição T2

⊢MT(qt11, φβ1β2 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT(qt11, φβ1β2 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT(qt12, φβ1β2 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T3

⊢MT. . . transição T4

⊢MT(qt12, φβ1β2 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T4

⊢MT(qt12, φβ1β2 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T4

⊢MT(qt13, φβ1β2 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT(q′, φβ1β2 . . . βkβw1 . . .wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T6

Então, para este caso, conclui-se que existe uma computação

(q, φβ1β2 . . . βkaw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) ⊢∗MT

(q′, φβ1β2 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj)

A configuração final dessa computação na Máquina de Turing MT corresponde àconfiguração

(q′, w, α, γ)

que corresponde exatamente à aplicação da transição ((q, a, ε, ε), (ε, ε)) à configura-ção inicial do autômato. Mas, pela hipótese de indução, se existe uma computaçãode comprimento menor ou igual a n no Autômato de Duas Pilhas MA então existeuma computação equivalente na Máquina de Turing MT .

Na computação original do Autômato de Duas Pilhas MA, como a palavra aw ∈L(MA), tem-se que

(q, aw, α, γ) ⊢MA(q′, w, α, γ) ⊢n

MA(f, ε, ε, ν)

Então, como a computação na Máquina de Turing resulta na configuração equi-valente à obtida pela transição do autômato, pela hipótese de indução tem-se queexiste uma computação equivalente a

(q′, aw, α, γ) ⊢n+1MA

(f, ε, ε, ν)

em MT .

Page 84: Equivalência de Máquinas Universais: Demonstração, Análise e ...

83

Caso 2: π = ε, µ = ε, π′ = ε, µ′ 6= ε Neste caso, o seguinte conjunto de transições é ge-rado:

(T1) ((q, a), (qt1, β,→)),(T2) ((qt1,¬#), (qt6,¬#,→)),µ′ 6= ε)(T3) ((qt6,¬#), (qt6,¬#,←)),(T4) ((qt6,#), (qt7,#,→)),(T5) ((qt7, ?), (qt8, ?,→)),(T6) ((qt8,¬β), (qt7,¬β,→)),(T7) ((qt8, β), (qt11, µ

′,←)),eµ′ 6= ε(T8) ((qt11,¬φ), (qt11,¬φ,←)),(T9) ((qt11, φ), (qt12, φ,→)),(T10) ((qt12, β), (qt12, β,→)),(T11) ((qt12,¬β), (qt13,¬β,←)),(T12) ((qt13, ?), (q

′, ?,→))

E a seguinte computação ocorre na Máquina de Turing MT :

(q, φβ1 . . . βkaw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj)⊢MT

(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T1

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT. . . transição T2

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1α2γ2 . . . αkγkβγk+1β . . . βγj−iβγj) transição T6

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1α2γ2 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT. . . transições T6, T5

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1α2γ2 . . . αkγkβγk+1β . . . βγj−iβγjββ) transição T5

⊢MT(qt11, φβ1 . . . βkβw1w2 . . . wk$#α1γ1α2γ2 . . . αkγkβγk+1β . . . βγj−iβγjβµ′) transição T7

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1α2γ2 . . . αkγkβγk+1β . . . βγj−iβγjβµ′) transição T8

⊢MT. . . transição T8

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1α2γ2 . . . αkγkβγk+1β . . . βγj−iβγjβµ′) transição T8

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1α2γ2 . . . αkγkβγk+1β . . . βγj−iβγjβµ′) transição T8

⊢MT(qt12, φβ1 . . . βkβw1 . . . wk$#α1γ1α2γ2 . . . αkγkβγk+1β . . . βγj−iβγjβµ′) transição T9

⊢MT. . . transição T9

⊢MT(qt12, φβ1 . . . βkβw1 . . . wk$#α1γ1α2γ2 . . . αkγkβγk+1β . . . βγj−iβγjβµ′) transição T10

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1α2γ2 . . . αkγkβγk+1β . . . βγj−iβγjβµ′) transição T11

⊢MT(q′, φβ1 . . . βkβw1 . . .wk$#α1γ1α2γ2 . . . αkγkβγk+1β . . . βγj−iβγjβµ′) transição T12

Caso 3: pi = ε, µ = ε, π′ 6= ε, µ′ = ε Neste caso, o seguinte conjunto de transições é ge-rado:

(T1) ((q, a), (qt1, β,→)),(T2) ((qt1,¬$), (qt1,¬$,→)),(T3) ((qt1, $), (qt2, $,→)),(T4) ((qt2, ?), (qt3, ?,→)),(T5) ((qt3,¬β), (qt2,¬β,→)),(T6) ((qt5, β), (qt6, α

′,←)),(T7) ((qt6,¬#), (qt11,¬#,←)),(T8) ((qt11,¬φ), (qt11,¬φ,←)),(T9) ((qt11, φ), (qt12, φ,→)),(T10) ((qt12, β), (qt12, β,→)),(T11) ((qt12,¬β), (qt13,¬β,←)),(T12) ((qt13, ?), (q

′, ?,→))

Page 85: Equivalência de Máquinas Universais: Demonstração, Análise e ...

84

E a seguinte computação ocorre na Máquina de Turing MT :

(q, φβ1 . . . βkaw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj)⊢MT

(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T1

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT. . . transição T2

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T3

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T4

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT. . . transiçõesT4, T5

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T6

⊢MT(qt11, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T7

⊢MT. . . transição T8

⊢MT(qt11, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T8

⊢MT(qt12, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T9

⊢MT. . . transição T10

⊢MT(qt12, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T10

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T11

⊢MT(q′, φβ1 . . . βkβw1 . . .wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T12

Caso 4: π = ε, µ = ε, π′ 6= ε, µ′ 6= ε Neste caso, o seguinte conjunto de transições é ge-rado:

(T1) ((q, a), (qt1, β,→)),(T2) ((qt1,¬$), (qt1,¬$,→)),(T3) ((qt1, $), (qt2, $,→)),(T4) ((qt2, ?), (qt3, ?,→)),(T5) ((qt3,¬β), (qt2,¬β,→)),(T6) ((qt5, β), (qt6, α

′,←)),(T7) ((qt6,¬#), (qt6,¬#,←)),(T8) ((qt6,#), (qt7,#,→)),(T9) ((qt7, ?), (qt8, ?,→)),(T10) ((qt8,¬β), (qt7,¬β,→)),(T11) ((qt8, β), (qt11, γ

′,←)),(T12) ((qt11,¬φ), (qt11,¬φ,←)),(T13) ((qt11, φ), (qt12, φ,→)),(T14) ((qt12, β), (qt12, β,→)),(T15) ((qt12,¬β), (qt13,¬β,←)),(T16) ((qt13, ?), (q

′, ?,→))

E a seguinte computação ocorre na Máquina de Turing MT :

Page 86: Equivalência de Máquinas Universais: Demonstração, Análise e ...

85

(q, φβ1 . . . βkaw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj)⊢MT

(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T1

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT. . . transição T2

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T3

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T4

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT. . . transiçõesT4, T5

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T6

⊢MT. . . transição T7

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T7

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T8

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T9

⊢MT. . . transições T9, T10

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγjβ) transição T10

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγjββ) transição T9

⊢MT(qt11, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγjβµ′) transição T11

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγjβµ′) transição T12

⊢MT. . . transição T12

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγjβµ′) transição T12

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγjβµ′) transição T13

⊢MT. . . transição T14

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγjβµ′) transição T14

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγjβµ′) transição T15

⊢MT(q′, φβ1 . . . βkβw1 . . .wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγjβµ′) transição T16

Caso 5: π = ε, µ 6= ε, π′ = ε, µ′ = ε Neste caso, o seguinte conjunto de transições é ge-rado:

(T1) ((q, a), (qt1, β,→)),(T2) ((qt1,¬#), (qt6,¬#,→)),(T3) ((qt6,¬#), (qt6,¬#,→)),(T4) ((qt6,#), (qt7,#,→)),(T5) ((qt7, ?), (qt8, ?,→)),(T6) ((qt8,¬β), (qt7,¬β,→)),(T7) ((qt8, β), (qt9, β,←)),(T8) ((qt9, ?), (qt10, ?,←)),(T9) ((qt10, γ), (qt11, β,←)),(T10) ((qt11,¬φ), (qt11,¬φ,←)),(T11) ((qt11, φ), (qt12, φ,→)),(T12) ((qt12, β), (qt12, β,→)),(T13) ((qt12,¬β), (qt13,¬β,←)),(T14) ((qt13, ?), (q

′, ?,→))

E a seguinte computação ocorre na Máquina de Turing MT :

Page 87: Equivalência de Máquinas Universais: Demonstração, Análise e ...

86

(q, φβ1 . . . βkaw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj)⊢MT

(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T1

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT. . . transição T3

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T3

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1α2 . . . αkγkβγk+1β . . . βγj−iβγj) transição T6

⊢MT. . . transiçõesT5, T6

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγjββ) transição T5

⊢MT(qt9, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγjβ) transição T7

⊢MT(qt10, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγjβ) transição T8

⊢MT(qt11, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iββ) transição T9

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−i) transição T10

⊢MT. . . transição T10

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−i) transição T10

⊢MT(qt12, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−i) transição T12

⊢MT. . . transição T12

⊢MT(qt12, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−i) transição T12

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−i) transição T13

⊢MT(q′, φβ1 . . . βkβw1 . . .wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−i) transição T14

Caso 6: π = ε, µ 6= ε, π′ = ε, µ′ 6= ε Neste caso, o seguinte conjunto de transições é ge-rado:

(T1) ((q, a), (qt1, β,→)),(T2) ((qt1,¬#), (qt6,¬#,→)),(T3) ((qt6,¬#), (qt6,¬#,→)),(T4) ((qt6,#), (qt7,#,→)),(T5) ((qt7, ?), (qt8, ?,→)),(T6) ((qt8,¬β), (qt7,¬β,→)),(T7) ((qt8, β), (qt9, β,←)),(T8) ((qt9, ?), (qt10, ?,←)),(T9) ((qt10, γ), (qt11, γ

′,←)),(T10) ((qt11,¬φ), (qt11,¬φ,←)),(T11) ((qt11, φ), (qt12, φ,→)),(T12) ((qt12, β), (qt12, β,→)),(T13) ((qt12,¬β), (qt13,¬β,←)),(T14) ((qt13, ?), (q

′, ?,→))

E a seguinte computação ocorre na Máquina de Turing MT :

Page 88: Equivalência de Máquinas Universais: Demonstração, Análise e ...

87

(q, φβ1 . . . βkaw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj)⊢MT

(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T1

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT. . . transição T3

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T3

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1α2 . . . αkγkβγk+1β . . . βγj−iβγj) transição T6

⊢MT. . . transiçõesT5, T6

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγjββ) transição T5

⊢MT(qt9, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγjβ) transição T7

⊢MT(qt10, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγjβ) transição T8

⊢MT(qt11, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβµ′) transição T9

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβµ′) transição T10

⊢MT. . . transição T10

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβµ′) transição T10

⊢MT(qt12, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβµ′) transição T12

⊢MT. . . transição T12

⊢MT(qt12, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβµ′) transição T12

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβµ′) transição T13

⊢MT(q′, φβ1 . . . βkβw1 . . .wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβµ′) transição T14

Caso 7: π = ε, µ 6= ε, π′ 6= ε, µ′ = ε Neste caso, o seguinte conjunto de transições é ge-rado:

(T1) ((q, a), (qt1, β,→)),(T2) ((qt1,¬$), (qt1,¬$,→)),(T3) ((qt1, $), (qt2, $,→)),(T4) ((qt2, ?), (qt3, ?,→)),(T5) ((qt3,¬β), (qt2,¬β,→)),(T6) ((qt5, β), (qt6, α

′,←)),(T7) ((qt6,¬#), (qt6,¬#,←)),(T8) ((qt6,#), (qt7,#,→)),(T9) ((qt7, ?), (qt8, ?,→)),(T10) ((qt8,¬β), (qt7,¬β,→)),(T11) ((qt8, β), (qt9, β,←)),(T12) ((qt9, ?), (qt10, ?,←)),(T13) ((qt10, γ), (qt11, β,←)),(T14) ((qt11,¬φ), (qt11,¬φ,←)),(T15) ((qt11, φ), (qt12, φ,→)),(T16) ((qt12, β), (qt12, β,→)),(T17) ((qt12,¬β), (qt13,¬β,←)),(T18) ((qt13, ?), (q

′, ?,→))

E a seguinte computação ocorre na Máquina de Turing MT :

Page 89: Equivalência de Máquinas Universais: Demonstração, Análise e ...

88

(q, φβ1 . . . βkaw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj)⊢MT

(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T1

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT. . . transição T2

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T3

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T4

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT. . . transiçõesT4, T5

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T6

⊢MT. . . transição T7

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T7

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T8

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T9

⊢MT. . . transições T9, T10

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγjβ) transição T10

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγjββ) transição T9

⊢MT(qt9, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγjβ) transição T11

⊢MT(qt10, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T12

⊢MT(qt11, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβ) transição T13

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−i) transição T14

⊢MT. . . transição T14

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−i) transição T14

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−i) transição T15

⊢MT. . . transição T16

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−i) transição T16

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−i) transição T17

⊢MT(q′, φβ1 . . . βkβw1 . . .wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−i) transição T18

Caso 8: π = ε, µ 6= ε, π′ 6= ε, µ′ 6= ε Neste caso, o seguinte conjunto de transições é ge-rado:

(T1) ((q, a), (qt1, β,→)),(T2) ((qt1,¬$), (qt1,¬$,→)),(T3) ((qt1, $), (qt2, $,→)),(T4) ((qt2, ?), (qt3, ?,→)),(T5) ((qt3,¬β), (qt2,¬β,→)),(T6) ((qt5, β), (qt6, π

′,←)),(T7) ((qt6,¬#), (qt6,¬#,←)),(T8) ((qt6,#), (qt7,#,→)),(T9) ((qt7, ?), (qt8, ?,→)),(T10) ((qt8,¬β), (qt7,¬β,→)),(T11) ((qt8, β), (qt9, β,←)),(T12) ((qt9, ?), (qt10, ?,←)),(T13) ((qt10, µ), (qt11, µ

′,←)),(T14) ((qt11,¬φ), (qt11,¬φ,←)),(T15) ((qt11, φ), (qt12, φ,→)),(T16) ((qt12, β), (qt12, β,→)),(T17) ((qt12,¬β), (qt13,¬β,←)),(T18) ((qt13, ?), (q

′, ?,→))

E a seguinte computação ocorre na Máquina de Turing MT :

Page 90: Equivalência de Máquinas Universais: Demonstração, Análise e ...

89

(q, φβ1 . . . βkaw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj)⊢MT

(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T1

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT. . . transição T2

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T3

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T4

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT. . . transiçõesT4, T5

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T6

⊢MT. . . transição T7

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T7

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T8

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T9

⊢MT. . . transições T9, T10

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγjβ) transição T10

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγjββ) transição T9

⊢MT(qt9, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγjβ) transição T11

⊢MT(qt10, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβγj) transição T12

⊢MT(qt11, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβµ′) transição T13

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβµ′) transição T14

⊢MT. . . transição T14

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβµ′) transição T14

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβµ′) transição T15

⊢MT. . . transição T16

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβµ′) transição T16

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβµ′) transição T17

⊢MT(q′, φβ1 . . . βkβw1 . . .wk$#α1γ1 . . . αkγkπ′γk+1β . . . βγj−iβµ′) transição T18

Caso 9: π 6= ε, µ = ε, π′ = ε, µ′ = ε Neste caso, o seguinte conjunto de transições é ge-rado:

(T1) ((q, a), (qt1, β,→)),(T2) ((qt1,¬$), (qt1,¬$,→)),(T3) ((qt1, $), (qt2, $,→)),(T4) ((qt2, ?), (qt3, ?,→)),(T5) ((qt3,¬β), (qt2,¬β,→)),(T6) ((qt3, β), (qt4, β,←)),(T7) ((qt4, ?), (qt5, ?,←)),(T8) ((qt5, π), (qt11, β,←)),(T9) ((qt11,¬φ), (qt11,¬φ,←)),(T10) ((qt11, φ), (qt12, φ,→)),(T11) ((qt12, β), (qt12, β,→)),(T12) ((qt12,¬β), (qt13,¬β,←)),(T13) ((qt13, ?), (q

′, ?,→))

E a seguinte computação ocorre na Máquina de Turing MT :

Page 91: Equivalência de Máquinas Universais: Demonstração, Análise e ...

90

(q, φβ1 . . . βkaw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj)⊢MT

(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T1

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT. . . transição T2

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T3

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T4

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT. . . transiçõesT4, T5

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT(qt4, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T6

⊢MT(qt5, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T7

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . γk−1βγkβγk+1β . . . βγj−iβγj) transição T8

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−i) transição T9

⊢MT. . . transição T9

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−i) transição T9

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−i) transição T10

⊢MT. . . transição T11

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−i) transição T11

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−i) transição T12

⊢MT(q′, φβ1 . . . βkβw1 . . .wk$#α1γ1 . . . βγkβγk+1β . . . βγj−i) transição T13

Caso 10: π 6= ε, µ = ε, π′ = ε, µ′ 6= ε Neste caso, o seguinte conjunto de transições é ge-rado:

(T1) ((q, a), (qt1, β,→)),(T2) ((qt1,¬$), (qt1,¬$,→)),(T3) ((qt1, $), (qt2, $,→)),(T4) ((qt2, ?), (qt3, ?,→)),(T5) ((qt3,¬β), (qt2,¬β,→)),(T6) ((qt3, β), (qt4, β,←)),(T7) ((qt4, ?), (qt5, ?,←)),(T8) ((qt5, π), (qt6, β,←)),(T9) ((qt6,¬#), (qt6,¬#,←)),(T10) ((qt6,#), (qt7,#,→)),(T11) ((qt7, ?), (qt8, ?,→)),(T12) ((qt8,¬β), (qt7,¬β,→)),(T13) ((qt8, β), (qt11, γ

′,←)),(T14) ((qt11,¬φ), (qt11,¬φ,←)),(T15) ((qt11, φ), (qt12, φ,→)),(T16) ((qt12, β), (qt12, β,→)),(T17) ((qt12,¬β), (qt13,¬β,←)),(T18) ((qt13, ?), (q

′, ?,→))

E a seguinte computação ocorre na Máquina de Turing MT :

Page 92: Equivalência de Máquinas Universais: Demonstração, Análise e ...

91

(q, φβ1 . . . βkaw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj)⊢MT

(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T1

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT. . . transição T2

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T3

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T4

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT. . . transiçõesT4, T5

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT(qt4, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T6

⊢MT(qt5, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T7

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . γk−1βγkβγk+1β . . . βγj−iβγj) transição T8

⊢MT. . . transição T9

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T9

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T10

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T11

⊢MT. . . transições T12, T11

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγjβ) transição T12

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγjββ) transição T11

⊢MT(qt11, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγjβµ′) transição T13

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβγjβµ′) transição T14

⊢MT. . . transição T14

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβγjβµ′) transição T14

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβγjβµ′) transição T15

⊢MT. . . transição T16

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβγjβµ′) transição T16

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβγjβµ′) transição T17

⊢MT(q′, φβ1 . . . βkβw1 . . .wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβγjβµ′) transição T18

Caso 11: π 6= ε, µ = ε, π′ 6= ε, µ′ = ε Neste caso, o seguinte conjunto de transições é ge-rado:

(T1) ((q, a), (qt1, β,→)),(T2) ((qt1,¬$), (qt1,¬$,→)),(T3) ((qt1, $), (qt2, $,→)),(T4) ((qt2, ?), (qt3, ?,→)),(T5) ((qt3,¬β), (qt2,¬β,→)),(T6) ((qt3, β), (qt4, β,←)),(T7) ((qt4, ?), (qt6, ?,←)),(T8) ((qt6, π), (qt11, β,←)),(T9) ((qt11,¬φ), (qt11,¬φ,←)),(T10) ((qt11, φ), (qt12, φ,→)),(T11) ((qt12, β), (qt12, β,→)),(T12) ((qt12,¬β), (qt13,¬β,←)),(T13) ((qt13, ?), (q

′, ?,→))

E a seguinte computação ocorre na Máquina de Turing MT :

Page 93: Equivalência de Máquinas Universais: Demonstração, Análise e ...

92

(q, φβ1 . . . βkaw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj)⊢MT

(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T1

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT. . . transição T2

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T3

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T4

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT. . . transiçõesT4, T5

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT(qt4, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T6

⊢MT(qt5, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T7

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . γk−1βγkβγk+1β . . . βγj−iβγj) transição T8

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγk−1βγkβγk+1β . . . βγj−iβγjβµ′) transição T9

⊢MT. . . transição T9

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβγjβµ′) transição T9

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβγjβµ′) transição T10

⊢MT. . . transição T11

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβγjβµ′) transição T11

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβγjβµ′) transição T12

⊢MT(q′, φβ1 . . . βkβw1 . . .wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβγjβµ′) transição T13

Caso 12: π 6= ε, µ = ε, π′ 6= ε, µ′ 6= ε Neste caso, o seguinte conjunto de transições é ge-rado:

(T1) ((q, a), (qt1, β,→)),(T2) ((qt1,¬$), (qt1,¬$,→)),(T3) ((qt1, $), (qt2, $,→)),(T4) ((qt2, ?), (qt3, ?,→)),(T5) ((qt3,¬β), (qt2,¬β,→)),(T6) ((qt3, β), (qt4, β,←)),(T7) ((qt4, ?), (qt5, ?,←)),(T8) ((qt5, π), (qt6, π

′,←)),(T9) ((qt6,¬#), (qt6,¬#,←)),(T10) ((qt6,#), (qt7,#,→)),(T11) ((qt7, ?), (qt8, ?,→)),(T12) ((qt8,¬β), (qt7,¬β,→)),(T13) ((qt8, β), (qt11, γ

′,←)),(T14) ((qt11,¬φ), (qt11,¬φ,←)),(T15) ((qt11, φ), (qt12, φ,→)),(T16) ((qt12, β), (qt12, β,→)),(T17) ((qt12,¬β), (qt13,¬β,←)),(T18) ((qt13, ?), (q

′, ?,→))

E a seguinte computação ocorre na Máquina de Turing MT :

Page 94: Equivalência de Máquinas Universais: Demonstração, Análise e ...

93

(q, φβ1 . . . βkaw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj)⊢MT

(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T1

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT. . . transição T2

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T3

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T4

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT. . . transiçõesT4, T5

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT(qt4, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T6

⊢MT(qt5, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T7

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . γk−1π

′γkβγk+1β . . . βγj−iβγj) transição T8

⊢MT. . . transição T9

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγj) transição T9

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγj) transição T10

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγj) transição T11

⊢MT. . . transições T12, T11

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγjβ) transição T12

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγjββ) transição T11

⊢MT(qt11, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγjβµ′) transição T13

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγjβµ′) transição T14

⊢MT. . . transição T14

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγjβµ′) transição T14

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγjβµ′) transição T15

⊢MT. . . transição T16

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγjβµ′) transição T16

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγjβµ′) transição T17

⊢MT(q′, φβ1 . . . βkβw1 . . .wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγjβµ′) transição T18

Caso 13: π 6= ε, µ 6= ε, π′ = ε, µ′ = ε Neste caso, o seguinte conjunto de transições é ge-rado:

(T1) ((q, a), (qt1, β,→)),(T2) ((qt1,¬$), (qt1,¬$,→)),(T3) ((qt1, $), (qt2, $,→)),(T4) ((qt2, ?), (qt3, ?,→)),(T5) ((qt3,¬β), (qt2,¬β,→)),(T6) ((qt3, β), (qt4, β,←)),(T7) ((qt4, ?), (qt5, ?,←)),(T8) ((qt5, π), (qt6, β,←)),(T9) ((qt6,¬#), (qt6,¬#,←)),(T10) ((qt6,#), (qt7,#,→)),(T11) ((qt7, ?), (qt8, ?,→)),(T12) ((qt8,¬β), (qt7,¬β,→)),(T13) ((qt8, β), (qt9, β,←)),(T14) ((qt9, ?), (qt10, ?,←)),(T15) ((qt10, γ), (qt11, β,←)),(T16) ((qt11,¬φ), (qt11,¬φ,←)),(T17) ((qt11, φ), (qt12, φ,→)),(T18) ((qt12, β), (qt12, β,→)),(T19) ((qt12,¬β), (qt13,¬β,←)),(T20) ((qt13, ?), (q

′, ?,→))

E a seguinte computação ocorre na Máquina de Turing MT :

Page 95: Equivalência de Máquinas Universais: Demonstração, Análise e ...

94

(q, φβ1 . . . βkaw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj)⊢MT

(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T1

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT. . . transição T2

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T3

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T4

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT. . . transiçõesT4, T5

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT(qt4, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T6

⊢MT(qt5, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T7

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . γk−1βγkβγk+1β . . . βγj−iβγj) transição T8

⊢MT. . . transição T9

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T9

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T10

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T11

⊢MT. . . transições T12, T11

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγjβ) transição T12

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγjββ) transição T13

⊢MT(qt9, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγjβ) transição T14

⊢MT(qt10, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T15

⊢MT(qt11, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβ) transição T15

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−i) transição T16

⊢MT. . . transição T16

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−i) transição T16

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−i) transição T17

⊢MT. . . transição T18

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−i) transição T18

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−i) transição T19

⊢MT(q′, φβ1 . . . βkβw1 . . .wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−i) transição T20

Caso 14: π 6= ε, µ 6= ε, π′ = ε, µ′ 6= ε Neste caso, o seguinte conjunto de transições é ge-rado:

(T1) ((q, a), (qt1, β,→)),(T2) ((qt1,¬$), (qt1,¬$,→)),(T3) ((qt1, $), (qt2, $,→)),(T4) ((qt2, ?), (qt3, ?,→)),(T5) ((qt3,¬β), (qt2,¬β,→)),(T6) ((qt3, β), (qt4, β,←)),(T7) ((qt4, ?), (qt5, ?,←)),(T8) ((qt5, π), (qt6, β,←)),(T9) ((qt6,¬#), (qt6,¬#,←)),(T10) ((qt6,#), (qt7,#,→)),(T11) ((qt7, ?), (qt8, ?,→)),(T12) ((qt8,¬β), (qt7,¬β,→)),(T13) ((qt8, β), (qt9, β,←)),(T14) ((qt9, ?), (qt10, ?,←)),(T15) ((qt10, γ), (qt11, γ

′,←)),(T16) ((qt11,¬φ), (qt11,¬φ,←)),(T17) ((qt11, φ), (qt12, φ,→)),(T18) ((qt12, β), (qt12, β,→)),(T19) ((qt12,¬β), (qt13,¬β,←)),(T20) ((qt13, ?), (q

′, ?,→))

Page 96: Equivalência de Máquinas Universais: Demonstração, Análise e ...

95

E a seguinte computação ocorre na Máquina de Turing MT :

(q, φβ1 . . . βkaw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj)⊢MT

(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T1

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT. . . transição T2

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T3

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T4

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT. . . transiçõesT4, T5

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT(qt4, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T6

⊢MT(qt5, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T7

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . γk−1βγkβγk+1β . . . βγj−iβγj) transição T8

⊢MT. . . transição T9

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβγj) transição T9

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβγj) transição T10

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβγj) transição T10

⊢MT. . . transições T11, T12

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβγjβ) transição T12

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβγjββ) transição T11

⊢MT(qt9, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβγjβ) transição T13

⊢MT(qt10, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβγj) transição T14

⊢MT(qt11, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβµ′) transição T15

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβµ′) transição T16

⊢MT. . . transição T16

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβµ′) transição T16

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβµ′) transição T17

⊢MT. . . transição T18

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβµ′) transição T18

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβµ′) transição T19

⊢MT(q′, φβ1 . . . βkβw1 . . .wk$#α1γ1 . . . βγkβγk+1β . . . βγj−iβµ′) transição T20

Caso 15: π 6= ε, µ 6= ε, π′ 6= ε, µ′ = ε Neste caso, o seguinte conjunto de transições é ge-rado:

(T1) ((q, a), (qt1, β,→)),(T2) ((qt1,¬$), (qt1,¬$,→)),(T3) ((qt1, $), (qt2, $,→)),(T4) ((qt2, ?), (qt3, ?,→)),(T5) ((qt3,¬β), (qt2,¬β,→)),(T6) ((qt3, β), (qt4, β,←)),(T7) ((qt4, ?), (qt5, ?,←)),(T8) ((qt5, π), (qt6, π

′,←)),(T9) ((qt6,¬#), (qt6,¬#,←)),(T10) ((qt6,#), (qt7,#,→)),(T11) ((qt7, ?), (qt8, ?,→)),(T12) ((qt8,¬β), (qt7,¬β,→)),(T13) ((qt8, β), (qt9, β,←)),(T14) ((qt9, ?), (qt10, ?,←)),(T15) ((qt10, γ), (qt11, γ

′,←)),(T16) ((qt11,¬φ), (qt11,¬φ,←)),(T17) ((qt11, φ), (qt12, φ,→)),(T18) ((qt12, β), (qt12, β,→)),(T19) ((qt12,¬β), (qt13,¬β,←)),(T20) ((qt13, ?), (q

′, ?,→))

Page 97: Equivalência de Máquinas Universais: Demonstração, Análise e ...

96

E a seguinte computação ocorre na Máquina de Turing MT :

(q, φβ1 . . . βkaw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj)⊢MT

(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T1

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT. . . transição T2

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T3

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T4

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT. . . transiçõesT4, T5

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT(qt4, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T6

⊢MT(qt5, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T7

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . γk−1π

′γkβγk+1β . . . βγj−iβγj) transição T8

⊢MT. . . transição T9

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγj) transição T9

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγj) transição T10

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγj) transição T11

⊢MT. . . transições T12, T11

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγjβ) transição T12

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγjββ) transição T13

⊢MT(qt9, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγjβ) transição T14

⊢MT(qt10, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγj) transição T15

⊢MT(qt11, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβ) transição T15

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−i) transição T16

⊢MT. . . transição T16

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−i) transição T16

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−i) transição T17

⊢MT. . . transição T18

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−i) transição T18

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−i) transição T19

⊢MT(q′, φβ1 . . . βkβw1 . . .wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−i) transição T20

Caso 16: π 6= ε, µ 6= ε, π′ 6= ε, µ′ 6= ε Neste caso, o seguinte conjunto de transições é ge-rado:

Page 98: Equivalência de Máquinas Universais: Demonstração, Análise e ...

97

(T1) ((q, a), (qt1, β,→)),(T2) ((qt1,¬$), (qt1,¬$,→)),(T3) ((qt1, $), (qt2, $,→)),(T4) ((qt2, ?), (qt3, ?,→)),(T5) ((qt3,¬β), (qt2,¬β,→)),(T6) ((qt3, β), (qt4, β,←)),(T7) ((qt4, ?), (qt5, ?,←)),(T8) ((qt5, π), (qt6, π

′,←)),(T9) ((qt6,¬#), (qt6,¬#,←)),(T10) ((qt6,#), (qt7,#,→)),(T11) ((qt7, ?), (qt8, ?,→)),(T12) ((qt8,¬β), (qt7,¬β,→)),(T13) ((qt8, β), (qt9, β,←)),(T14) ((qt9, ?), (qt10, ?,←)),(T15) ((qt10, γ), (qt11, γ

′,←)),(T16) ((qt11,¬φ), (qt11,¬φ,←)),(T17) ((qt11, φ), (qt12, φ,→)),(T18) ((qt12, β), (qt12, β,→)),(T19) ((qt12,¬β), (qt13,¬β,←)),(T20) ((qt13, ?), (q

′, ?,→))

E a seguinte computação ocorre na Máquina de Turing MT :

(q, φβ1 . . . βkaw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj)⊢MT

(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T1

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT. . . transição T2

⊢MT(qt1, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T2

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T3

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T4

⊢MT(qt2, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT. . . transiçõesT4, T5

⊢MT(qt3, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T5

⊢MT(qt4, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T6

⊢MT(qt5, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . αkγkβγk+1β . . . βγj−iβγj) transição T7

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . γk−1π

′γkβγk+1β . . . βγj−iβγj) transição T8

⊢MT. . . transição T9

⊢MT(qt6, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγj) transição T9

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγj) transição T10

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγj) transição T11

⊢MT. . . transições T12, T11

⊢MT(qt7, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγjβ) transição T12

⊢MT(qt8, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγjββ) transição T13

⊢MT(qt9, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγjβ) transição T14

⊢MT(qt10, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβγj) transição T15

⊢MT(qt11, φβ1 . . . βkβw1w2 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβµ′) transição T15

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβµ′) transição T16

⊢MT. . . transição T16

⊢MT(qt11, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβµ′) transição T16

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβµ′) transição T17

⊢MT. . . transição T18

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβµ′) transição T18

⊢MT(qt13, φβ1 . . . βkβw1 . . . wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβµ′) transição T19

⊢MT(q′, φβ1 . . . βkβw1 . . .wk$#α1γ1 . . . π′γkβγk+1β . . . βγj−iβµ′) transição T20

Page 99: Equivalência de Máquinas Universais: Demonstração, Análise e ...

98

Em todos os casos, o resultado da computação da Máquina de Turing possui o resultadoequivalente à aplicação da transição no Autômato de Duas Pilhas.

⊓⊔

Page 100: Equivalência de Máquinas Universais: Demonstração, Análise e ...

99

4 SIMCO

SIMCO é uma ferramenta de simulação e conversão de programas desenvolvidospara máquinas universais. Esta ferramenta que foi desenvolvida para simular econverter programas de quatro tipos de máquinas universais: Máquina de Turing,Máquina de Post, Máquina NORMA e Autômato de Duas Pilhas com a finalidade deauxiliar na familiarização com os modelos.

Na Seção 4.1 são apresentados os detalhes da implementação do software SIMCO,seguido de uma explanação sobre o funcionamento de cada um de seus módulos. ASeção 4.2 apresenta a maneira como são representados os programas para cadamodelo de máquina. A seguir, na Seção 4.3 é apresentado o acompanhamento daexecução de programas nos simuladores, enquanto a Seção 4.4 é focada no conversorde programas.

4.1 Implementação

A ferramenta SIMCO foi implementada na linguagem Java utilizando o ambientede desenvolvimento Eclipse [19] e o editor Visual Editor [20] para criação da inter-face gráfica. A utilização do Eclipse contribuiu para uma estruturação mais clarado SIMCO facilitando a compreensão das relações entre as classes e pacotes. Porsua vez, o Visual Editor contribuiu para a criação rápida e bem estruturada de umainterface gráfica, contribuindo para facilitar futuras implementações de novos recur-sos visuais para a ferramenta. Além disso, tanto a linguagem Java quanto o editorVisual Editor possuem ferramentas para internacionalização de interfaces que per-mitem realizar a tradução para outras línguas eficientemente. Isto representa umavantagem visto que a internacionalização da ferramenta está incluída nos trabalhosfuturos, 6.1.

A ferramenta SIMCO foi estruturada em quatro módulos, um para cada modelode máquina. Estes módulos possuem uma interface padronizada onde o usuárioedita o programa que deseja simular e insere uma entrada para o programa. Aferramenta SIMCO, então, se encarrega de validar, executar ou converter o programacriado pelo usuário. A execução pode ser acompanhada pelo usuário que visualizaa modificação da estrutura de dados e por mensagens de execução que indicam eexplicam as configurações da máquina que está executando. Ao final da execução épossível recuperar a computação completa do programa.

A forma como SIMCO foi desenvolvido, modularmente, permite que a ferramentaseja facilmente extensível. Ou seja, a implementação de simuladores ou conversorespara outros modelos de máquinas depende apenas de dois itens: (i) a definiçãode um módulo de estruturação e execução de programas para o novo modelo, e

Page 101: Equivalência de Máquinas Universais: Demonstração, Análise e ...

100

(ii) da integração com o módulo central do SIMCO. O módulo central do SIMCOintermedia a execução dos simuladores e conversores com as demais recursos deanálise sintática e de interface gráfica.

SIMCO está licenciada sob a GNU GPL (General Public License), e será dispo-nibilizada em http://debora.wait4.org/simco/. Essa licença foi escolhida como intuito de promover a participação dos usuários na implementação de extensõespara a ferramenta. Não apenas no sentido de colaborar para o aperfeiçoamentodo SIMCO, mas também com a idéia de aprofundar o estudo na área por meio daimplementação de outros modelos computacionais.

4.2 Representação de Programas

O software SIMCO disponibiliza a escolha entre as quatro opções de MáquinasUniversais apresentadas nesse trabalho para que o usuário crie programas. Cada tipode máquina utiliza uma notação específica para definir os programas criados pelousuário. A entrada textual dos programas de cada máquina é definida pelas tran-sições das máquinas tal que os primeiros elementos indicam uma possível situaçãoatual e os elementos finais determinam a ação a ser tomada. Na Figura 4.1 pode-sevisualizar a interface do SIMCO após a execução de um programa definido paraMáquina de Turing. Como é possível observar, a definição da máquina é realizadadiretamente no programa. Porém, o desenvolvimento de um formulário para definirisoladamente os componentes de uma máquina como alfabeto de entrada, símbolosauxiliares, conjunto de estados, entre outros é considerado nos trabalhos futuros,6.1, uma vez que isso contribui para o usuário desenvolver a noção de definição demáquina.

Figura 4.1: SIMCO executando um programa de Máquina de Turing que reconhecenúmeros binários e substitui por 0 símbolos 1 sucedidos de 1.

4.2.1 Programas de Máquina de Turing

A Máquina de Turing utiliza uma notação da forma X φ Y ψ <> onde X ∈ N

indica o estado atual da máquina, φ indica o símbolo do alfabeto com o qual oconteúdo da posição atual da fita será comparado, Y ∈ N indica o próximo estado,

Page 102: Equivalência de Máquinas Universais: Demonstração, Análise e ...

101

Tabela 4.1: Conjunto de Regras de Produção da Gramática da Máquina de Turing1. P → T2. P → TT3. T → E S E S M \n

4. E → 0 | 1 | 2 | . . . | 95. E → EE6. S → ASCII

7. M → >7. M → <

ψ indica o símbolo do alfabeto que será gravado na posição atual da fita e < ou >indicam o sentido do movimento da cabeça de leitura e escrita da fita. O Exemplo2.1 que foi definido pela criação de um diagrama de estados, pode ser codificadocomo no Exemplo 4.1.

Exemplo 4.1 (Simco: Retira Uns Repetidos em Máquina de Turing)0 0 0 0 >0 1 1 1 >0 _ 5 _ >1 0 0 0 >1 1 2 1 <1 _ 5 _ >2 1 3 0 >3 1 4 1 >4 0 0 0 >4 1 1 1 >4 _ 5 _ >

Como a representação define que o números inteiros devem ser utilizados para repre-sentar os estados, o estado qa foi renomeado para q5. Pode-se observar no Exemplo4.1 que o estado final a partir do qual não são realizadas transições. Além disso,para facilitar a escrita do programa o símbolo β foi substituído por _.

A linguagem utilizada para definir um programa para Máquina de Turing noSIMCO é dada pela gramática da Definição 4.1.

Definição 4.1 (Gramática da Máquina de Turing) Seja GM =({P, T,D, L,M, S}, ASCII,Q, P ) a gramática da Máquina de Turing onde:

{P, T, L, E, M, S} é o conjunto de variáveis.

Q é conjunto de regras de produção definido na Tabela 4.1.

P é o símbolo inicial da gramática.

4.2.2 Programas de Máquina de Post

A Máquina de Post, utiliza uma notação dependente da operação a ser realizada,leitura ou escrita. As transições são representados por triplas OX φ OY , onde OX

indica o estado atual que pode ser ou um estado inicial ou final (neste caso os

Page 103: Equivalência de Máquinas Universais: Demonstração, Análise e ...

102

Tabela 4.2: Conjunto das Regras de Produção da Gramática da Máquina de Post1. P → T2. P → TT3. T → C D S C D \n

4. D → 0 | 1 | 2 | . . . | 95. D → DD6. S → ASCII

7. C → l8. C → e

estados não precisam ser indexados), ou podem ser estados de escrita ou leiturarepresentados pelas letras ’e’ e ’l’ e indexados conforme a ordem de aparição. φindica, caso OX seja um estado de escrita, o símbolo do alfabeto que será escritona fila; caso OX seja um estado de leitura, o símbolo do alfabeto com o qual serácomparado o símbolo lido da fila. OY indica o próximo estado para o qual será feitaa transição. O Exemplo 2.2 pode ser codificado da seguinte forma como no Exemplo4.2, onde o estado de aceitação é representado por a e o símbolo branco β por um_.

Exemplo 4.2 (Simco: Retira Uns Repetidos em Máquina de Post)l1 1 e2l1 0 e3l1 # ae2 0 l1e3 1 l2l2 0 e2l2 1 e2l2 # a

As transições iniciais que seriam apresentadas por i e1 e e1# l1 não precisam serincluídas no programa, uma vez que o simulador se encarrega de realizá-las nomomento da execução do programa.

4.2.3 Linguagem para Máquina de Post

A linguagem utilizada para definir um programa para Máquina de Post noSIMCO é dada pela gramática da Definição 4.2.

Definição 4.2 (Gramática da Máquina de Post) Seja GM =({P, T,D, L,E,M, S,A}, ASCII,Q, P ) a gramática da Máquina de Turingonde:

{P, T, D, L, M, S, A} é o conjunto de variáveis.

Q é conjunto de regras de produção definido na Tabela 4.2.

P é o símbolo de início.

Page 104: Equivalência de Máquinas Universais: Demonstração, Análise e ...

103

4.2.4 Programas de Máquina NORMA

A Máquina NORMA apresenta programas um programa de estrutura variável. Anotação utilizada para representar uma instrução é da forma r : op(x) r′ r′′, onder é um rótulo para a instrução e pode ser representado por um número naturalou letras seguido de dois pontos (:), op(x) indica a operação ou teste que serárealizado no registrador indexado por x, r′ é o rótulo da próxima instrução casoa operação ou teste realizado seja executado com sucesso ou resulte em verdadeirorespectivamente, r′′ é o rótulo da próxima instrução a ser executada caso operação outeste realizado não seja executado com sucesso ou resulte em falso respectivamente.Os rótulos podem ser omitidos e neste caso a próxima instrução a ser executada seráa instrução que está imediatamente a seguir no programa, se apenas um rótulo ri

for indicado significa que após a execução da operação ou teste, independentementedo resultado, a próxima instrução a ser executada será ri. O Exemplo 2.3 pode sercodificado como no Exemplo 4.3.

Exemplo 4.3 (Simco: Retira Uns Repetidos em Máquina NORMA)1: z(i) 2 32: sub(i) 13: s(i)

4.2.5 Linguagem para Máquina NORMA

A linguagem utilizada para definir um programa para Máquina NORMA noSIMCO é dada pela gramática da Definição 4.3.

Definição 4.3 (Gramática da Máquina NORMA) Seja GN =({P, T,Op, Te, C, te, R,D, S, L}, ASCII,Q, P ) a gramática da Máquina de Turingonde:

{P, T, Op, Te, C, te, R, D, S, L} é o conjunto de variáveis.

Q é conjunto de regras de produção definido na Tabela 4.3.

P é o símbolo de início.

4.2.6 Programas de Autômato de Duas Pilhas

No Autômato de Duas Pilhas, um programa é composto por sétuplas semelhante-mente a notação da Máquina de Turing, porém com o aumento do número símbolosdevidos às duas pilhas e a fita de entrada. A notação utilizada para representar umatransição é da forma X φ ψ σ Y ω υ onde X ∈ N indica o estado atual, φ indica osímbolo do alfabeto com o qual o conteúdo da posição atual da fita de entrada serácomparado, ψ e σ indicam os símbolos com os quais o conteúdo das pilhas p1 e p2

serão comparados, Y ∈ N indica o próximo estado, e ω e υ indicam os símbolos queserão gravados nas pilhas p1 e p2 caso a comparação das leituras resulte em verdade.O Exemplo 2.5 pode ser codificado como no Exemplo 4.4. Como pode-se observaro estado de aceitação foi substituído por 5, o símbolo branco β por _ para facilitara escrita do programa, e o símbolo * representa uma leitura ou escrita vazia.

Page 105: Equivalência de Máquinas Universais: Demonstração, Análise e ...

104

Tabela 4.3: Conjunto das Regras de Produção da Gramática da Máquina NORMA

1. P → T2. P → TT3. T → Op4. T → Te5. Op → R C D \n

6. Te → R te D \n

7. C → ad (D)8. C → sub (D)9. te → z (D)10. R → L:11. R → D:12. D → 0 | 1 | 2 | . . . | 912. D → DD13. S → ASCII

14. L → a | b | . . . | z | A | B | . . . | Z

Exemplo 4.4 (Simco: Retira Uns Repetidos em Autômato de Duas Pilhas)0 _ _ * 5 * *0 * * * 1 _ *1 _ _ * 5 * *1 0 * * 1 * 01 1 * * 2 1 12 _ 1 * 0 * *2 0 1 * 1 * 02 1 1 1 3 1 03 * 1 * 4 * 14 _ _ * 5 * *4 0 * * 1 * 04 1 * * 2 * 1

4.2.7 Linguagem para Autômato de Duas Pilhas

A linguagem utilizada para definir um programa para Autômato de Duas Pilhasno SIMCO é dada pela gramática da Definição 4.4.

Definição 4.4 (Gramática da Autômato de Duas Pilhas) Seja GN =({P, T,D, S}, Z,Q, P ) a gramática da Máquina de Turing onde:

{P, T, D, S} é o conjunto de variáveis.

Z é conjunto de símbolos terminais que inclui qualquer caractere ASCII1.

Q é conjunto de regras de produção definido na Tabela 4.4.

P é o símbolo de início.

1American Standard Code for Information Interchange

Page 106: Equivalência de Máquinas Universais: Demonstração, Análise e ...

105

Tabela 4.4: Conjunto das Regras de Produção da Gramática da Autômato de DuasPilhas

1. P → T2. P → TT3. T → D S S S D S S \n

4. D → DD5. D → 0 | 1 | 2 | . . . | 96. S → ASCII

4.3 Acompanhamento da Execução de Programas

A execução de programas em uma ferramenta de ensino deve ser realizada demodo que o usuário possa observar a evolução de cada passo da execução e as con-seqüências de cada instrução realizada. O acompanhamento da execução de progra-mas na ferramenta SIMCO é realizado por dois registros como mostra a Figura 4.2,um registro de mensagens (intitulado "Messages") que fornece informações sobre asituação da execução e um registro de execução (intitulado "Execution") que forneceinformações sobre a estrutura de memória da máquina.

Figura 4.2: SIMCO após a execução de um programa para Máquina de Post que reco-nhece números binários e substitui por 0 símbolos 1 sucedidos de 1. Antes da execuçãodo programa algumas mensagens de erro foram exibidas no painel "Messages", houveum erro no programa que posteriormente foi corrigido, porém não havia entrada parainicializar a fita da Máquina de Post, e após o fornecimento da entrada o programa foinovamente verificado e executou com sucesso.

Inicialmente os registros apresentam-se vazios, quando um programa é submetidono painel intitulado "Program"(Figura 4.2) para verificação e execução, o registrode mensagens exibe mensagens relevantes ao programa que informam:

• se o programa é sintaticamente correto ou se apresenta algum erro,

Page 107: Equivalência de Máquinas Universais: Demonstração, Análise e ...

106

• qual linha do programa deve ser modificada para corrigir o erro,

• qual estado ou rótulo foi identificado como estado inicial,

• se a inicialização da estrutura de memória foi realizada ou se não foi fornecidauma entrada,

• se um estado ou rótulo final foi atingido ou se o programa parou por indefiniçãodo próximo estado ou rótulo.

Dessa forma o usuário é informado sobre a verificação e execução do programa econsegue identificar se a entrada foi aceita ou não.

Simultaneamente, nos registros de execução são exibidas informações sobre a es-trutura de memória da máquina que está executando o programa. A cada ocorrênciade uma operação que modifica a estrutura de memória são exibidos nos registros oestado ou rótulo atual de execução, a situação atual da memória e outras informa-ções relevantes como a posição da cabeça de leitura e escrita no caso da Máquinade Turing. Apesar de ainda não contar com uma ilustração gráfica da estruturade memória, utilizando os registros é possível acompanhar o efeito da execução decada transição na estrutura de memória da máquina e recuperar o estado da me-mória em cada passo da execução. A implementação de uma estrutura gráfica paravisualização da modificação da estrutura de memória das máquinas foi incluída nostrabalhos futuros 6.1.

4.4 Conversão de Programas de Máquinas

Como já foi dito anteriormente, o SIMCO propõe a conversão de programasde Máquina de Turing para Máquina de Post de Máquina de Post para MáquinaNORMA de Máquina NORMA para Autômato de Duas Pilhas e de Autômato deDuas Pilhas para Máquina de Turing de modo que um programa escrito para umdos quatro modelos pode ser convertido para qualquer outro programa por um oumais passos.

A partir das traduções definidas no Capítulo 3 podem ser realizadas as conversõespropostas pelo SIMCO. A conversão de um programa no SIMCO não é interativa,ou seja, a partir da entrada de um programa válido para um determinado modelo demáquina é gerado um programa válido para o próximo modelo que pode se executadodeve apresentar o mesmo resultado do programa original.

A tradução de um programa entre dois modelos exige um tradutor específico parainterpretar as transições do programa original e produzir transições compatíveis parao próximo modelo. A necessidade de tradutores independentes se deve ao fato deque o processo de tradução deve considerar características específicas do modelo decomputação original e destinatário para obter consistência. Essas características sãolistadas a seguir.

• Tradutor Turing/Post este tradutor trata as transições originais conside-rando o sentido do movimento da cabeça de leitura e escrita da fita. Conformevisto na Definição 3.1, esta é a condição que determina o conjunto de transiçõesa ser gerado para cada transição do programa original. Então, se a transiçãooriginal indicar um movimento à direita serão geradas nove transições para oprograma da Máquina de Post, se entretanto for indicado um movimento à

Page 108: Equivalência de Máquinas Universais: Demonstração, Análise e ...

107

esquerda outro conjunto de transições devem ser geradas. No caso do movi-mento a esquerda, é necessário ainda criar um subconjunto de transições queatenda a execução dos subprogramas escrever à frente e mover à direita, essesubconjunto vária em quantidade de acordo com o alfabeto utilizado em cadaprograma porém trata-se apenas de replicar transições para cada símbolo doalfabeto.

• Tradutor Post/Norma as transições de um programa de Máquina de Postrefletem na criação de uma instrução rotulada cuja operação é uma macro detrês instruções. Estas instruções são responsáveis por modificar o conteúdo damemória, organizar a representação da fila dado a cada transição a fila aumentaou diminui e atualizar o estado atual. Além disso, o tradutor deve consideraro estado inicial da Máquina de Post para inicializar os registradores utilizadosnas macros, estes registradores são representados por RE, o registrador quemarca o estado atual, RI que armazena o índice do arranjo onde inicia arepresentação da fila e RF que armazena o índice do arranjo onde termina arepresentação da fila.

• Tradutor Norma/Autômato de Duas Pilhas ao realizar a tradução entreum programa de Máquina NORMA e um programa de Autômato de Duas Pilhaso tradutor deve considerar a codificação unária sugerida na Seção 3.3. Con-forme visto na Definição de tradução 3.3 cada instrução da Máquina NORMA

gera sempre quatro estados que simulam as três operações da Máquina NORMA.Estes estados incluem a busca pela representação dos registradores na pilha1,modificação ou teste de seu conteúdo e reestruturação da representação dosregistradores na pilha1 com o auxílio da pilha2.

• Tradutor Autômato de Duas Pilhas/Turing este tradutor trata as tran-sições originais considerando as estruturas de dados modificadas no programaoriginal. Isto quer dizer que se uma transição do Autômato de Duas Pilhas lêdados da fita de entrada, modifica a pilha1 e a pilha2 um conjunto de trezetransições deve ser gerado, porém, se alguma estrutura, a entrada ou as pilhas,não for lida ou modificada um conjunto menor de transições deve ser gerado.Deste modo o programa final traduzido apresenta-se mais compacto. Alémdisso, devido à definição do próprio Autômato de Duas Pilhas o tradutor deveconsiderar que a tradução das transições pode mudar de acordo com a presençaou ausência de leituras e escritas vazias conforme indica a Definição 3.4.

Page 109: Equivalência de Máquinas Universais: Demonstração, Análise e ...

108

5 TRABALHOS RELACIONADOS

Existem atualmente várias ferramentas que auxiliam no ensino de Teoria daComputação como, por exemplo, simuladores para autômatos finitos e máquinas deTuring. Entretanto, são poucas as ferramentas que apresentam outros modelos demáquinas como Post, Norma e Autômatos de Duas Pilhas. Por esse motivo não seencontram propostas focadas na conversão de modelos universais como propõe essetrabalho.

Alguns trabalhos encontrados já não disponibilizam mais as ferramentas cons-truídas, mas são citados devido a sua relevância. Neste ponto, por se trataremde ferramentas de ensino, os simuladores de código aberto podem apresentar maisvantagens. Além do uso irrestrito da ferramenta, um simulador de código abertopermite ao aluno: (i) identificar como um modelo pode ser simulado, (ii) modi-ficar ou estender a ferramenta para simular máquinas equivalentes com recursosmais adequados aos problemas que o aluno deseja tratar, (iii) e, principalmente,viabiliza a contribuição e manutenção da ferramenta. A busca por simuladores demodelos revelou que algumas das ferramentas mais completas não estão mais dispo-níveis, inclusive a Deus ex machina e a JCT, apresentadas nas Seções 5.3.1 e 5.2.2respectivamente.

As ferramentas estudadas podem ser agrupadas em três classes: simuladoressimples (Seção 5.1) que apresentam apenas um modelo específico, simuladores demodelos diversos (Seção 5.2) que apresentam vários modelos de classes distintas,simuladores de modelos universais (Seção 5.3) que simulam diferentes modelos demáquinas universais.

5.1 Simuladores Simples

A maior diversidade de ferramentas encontradas está entre as ferramentas quedestinam-se à simulação de Máquinas de Turing. Esta diversidade facilita ao estu-dante encontrar uma ferramenta que se às suas necessidades, ou mesmo que sejamais fácil de compreender e utilizar. Entre os simuladores de Máquinas de Turing,pode-se citar:

• Turing Machine Applet é um simulador no qual é possível executar operaçõesde adição ou multiplicação e acompanhar uma animação desta execução. Estesimulador está disponível e pode ser utilizado em: http://www.warthman.

com/ex-turing.htm; o código fonte, porém, não está disponível. Além disso,apesar desta ferramenta ser prática e intuitiva não é possível utilizá-la pararesolver problemas mais complexos, pois limitada-se a operações de adição e

Page 110: Equivalência de Máquinas Universais: Demonstração, Análise e ...

109

multiplicação.

• Visual Turing é uma IDE1 gráfica para editar e executar Máquinas de Turing dequalquer tipo. Apresenta vários recursos para facilitar a edição de máquinas,além de um depurador que permite a execução passo-a-passo, inclusão debreakpoints e variáveis de controle. A ferramenta é distribuída sob uma licençafreeware e seu código fonte pode ser adquirido no site http://cheransoft.

com/vturing.

• Alan é implementação em Java de um simulador de Máquina de Turing. Estaferramenta é possui uma variedade de recursos maior em relação aos simu-ladores anteriores. Alan permite a criação de novos programas de Máquinade Turing e para isto possui uma interface de usuário flexível onde é possíveldefinir alfabetos e símbolos auxiliares. Além disso, são disponibilizados váriosprogramas de exemplo já implementados. Alan é distribuído sob licença GPL2,e pode ser encontrada em: http://sourceforge.net/projects/alan/.

• Visual Turing Machine é uma ferramenta para modelar visualmente Máqui-nas de Turing. Assim como Alan e Visual Turing, permite criar qualquertipo de programa para Máquina de Turing. Porém a Visual Turing Ma-chine apresenta algumas funcionalidade adicionais interessantes como empa-cotar subprogramas em um só elemento; executar os programas em diferentesvelocidades de acordo com a escolha do usuário; gerar estatísticas de execu-ção como quantidade de instruções executadas e quantidade de posições defita utilizada. Esta ferramenta é disponibilizada sob a licença GPL no site:http://sf.net/projects/visualturing.

• Applet Turing Machine Simulator é um ambiente para acompanhar a simula-ção e criação de máquinas assim como Visual Turing, Alan e Visual TuringMachine. Apesar de não apresentar um editor visual para modelagem dasmáquinas, utiliza uma notação bastante simples permitindo assim, a criaçãorápida de programas. A Applet Turing Machine Simulator permite execuçãode programas passo-a-passo ou em velocidades pré-definidas para acompanhara mudança de estados e modificação da fita. A ferramenta é de código abertoe pode ser utilizada em: http://ironphoenix.org/tril/tm/ onde tambémestão presentes programas de exemplo e um tutorial de uso da ferramenta.

Ferramentas similares que apresentem outros modelos universais são mais difíceisde encontrar, porém uma ferramenta relevante é a Post’s Virtual Machine. Esta éuma ferramenta sem interface gráfica onde o usuário cria programas para a Máquinade Post a partir de scripts. Apesar de não ser muito sofisticada, a ferramentavem acompanhado de exemplos e seu uso é bastante simples. A ferramenta não éapresentada sob nenhuma licença e pode ser obtida juntamente com seu código fonteem: http://sourceforge.net/projects/postmach/.

1Integrated Development Environment2General Public License

Page 111: Equivalência de Máquinas Universais: Demonstração, Análise e ...

110

5.2 Simuladores de Modelos Diversos

Algumas ferramentas não se restringem apenas à simulação de um mo-delo, incluem também modelagem de Autômatos Finitos Determinísticos e Não-Determinísticos e Autômatos de Pilha. Contudo o foco principal dessas fermentasrecai sobre o aprendizado de Linguagens Formais e Autômatos e não incluem osconceitos de Teoria da Computação, como equivalência de máquinas universais oua tese de Church-Turing. A seguir uma descrição dessas ferramentas.

5.2.1 Turing’s World

Turing’s World é uma ferramenta gráfica destinada a simulação de Máquinasde Turing e autômatos finitos. A ferramenta Turing’s World apresenta uma sériede funcionalidades para a criação de programas, subprogramas e depuração nasmáquinas que implementa. O site da ferramenta apresenta ainda muitos recursospara ensinar a utilizá-la. Contudo, esta ferramenta é um pacote comercial disponívelpara plataforma Mac OS [14].

5.2.2 Java Computational Toolkit

JCT, Java Computational Toolkit , apresentado em [14], é uma ferramenta gráficacomposta por dois ambientes, um para construção de Autômatos Finitos e outrodedicado à Máquina de Turing. Essa ferramenta foi desenvolvida em Java com ointuito de não apresentar restrições a plataformas e ser facilmente acessível via web,dispensando um processo de instalação.

Mais tarde o JCT3 foi atualizado com o desenvolvimento de um ambiente paradesenvolvimento de Autômatos de Pilha. Embora a ferramenta tenha se apresentadobastante útil como ferramenta de ensino e obtido bons resultados de aceitação, elanão se encontra mais disponível.

5.2.3 SAGEMoLic

O SAGEMoLic, Sistema de Animação Gráfica de Teoremas de Equivalência en-tre Modelos e Linguagens Computacionais , apresentado em [21] é uma ferramentadedicada à simulação e conversão de autômatos. Destaca como principal diferen-cial a visualização de equivalências entre modelos, além da simulação e execução demodelos já apresentados nas demais ferramentas.

A última versão do SAGEMoLic, de 2002, permite as seguintes conversões nocontexto de modelos de máquinas de estados finitas e linguagens regulares:

• Expressões Regulares em Autômatos Finitos Não-Determinísticos com transi-ções vazias.

• Autômatos Finitos Não-Determinísticos com transições vazias em ExpressõesRegulares, ou Autômatos Finitos Não-Determinísticos.

• Autômatos Finitos Não-Determinísticos em Autômatos Finitos Determinísti-cos, ou Gramáticas Regulares ou Expressões Regulares.

• Autômatos Finitos Determinísticos em Autômatos Finitos Determinísticos Mí-nimos, ou Expressões Regulares, ou Gramáticas Regulares.

3Java Computational Toolkit

Page 112: Equivalência de Máquinas Universais: Demonstração, Análise e ...

111

• Autômatos Finitos Determinísticos Mínimos em Gramáticas Regulares, ou Ex-pressões Regulares.

• Gramáticas Regulares em Autômatos Finitos Não-Determinísticos.

A ferramenta pode ser utilizada em http://www.mat.unb.br/~ayala/TCgroup/

SAGEMoLiC/, entretanto seu foco é voltado ao ensino e não à auto-aprendizagem, de-vendo ser utilizada por usuários com experiência em linguagens formais para ilustrare explicar noções aos estudantes [21].

Esta ferramenta se aproxima da idéia do SIMCO de utilizar conversões entremodelos para evidenciar as equivalências, contudo, o SAGEMoLic não abrange a equi-valência de máquinas universais.

5.2.4 Visual Automata Simulator

O Visual Automata Simulator [22] é uma ferramenta distribuída sob licença BSD4

criada para visualizar e simular Autômatos Finitos e Máquinas de Turing.Desenvolvida em Java, o Visual Automata Simulator pode ser utilizado em várias

plataformas. Além disso, essa ferramenta apresenta funcionalidades que facilitam ouso e auxiliam na compreensão do funcionamento dos modelos como:

• editor visual de máquinas,

• modo de depuração de máquinas com recursos visuais para acompanhar amudança de estados da máquina,

• testes automatizados de Máquinas de Turing para testar vários arquivos rapi-damente,

• conversor de autômatos não determinísticos e determinísticos

• gerador de arquivos do tipo EPS5 para gerar figuras das máquinas criadas pelousuário.

O Visual Automata Simulator pode ser copiado de http://www.cs.usfca.edu/

~jbovet/vas.html onde também são disponibilizados vídeos demonstrativos queilustram o funcionamento de Máquinas de Turing, como realizar testas em Máquinasde Turing, e, como construir Autômatos Finitos Determinísticos.

5.2.5 JFLAP

Uma ferramenta que está em constante atualização é o JFLAP6 [23] distribuídasob a licença Creative Commons Attribution-NonCommercial-ShareAlike 2.5.

O JFLAP inicialmente permitia construir visualmente diagramas de transiçãopara:

• Autômatos Finitos Determinísticos,

• Autômatos Não-Determinísticos,

• Autômatos com Pilha,

4Berkeley Software Distribution5Encapsulated PostScript6Java Formal Languages and Automata Package

Page 113: Equivalência de Máquinas Universais: Demonstração, Análise e ...

112

• Máquinas de Turing de uma ou mais fitas,

• Expressões Regulares.

Porém, a última versão da ferramenta, lançada em setembro de 2006, incluiu novosmodelos. Atualmente, também estão disponíveis simuladores de máquinas de Mealy[24], Moore [25], Lema do Bombeamento para Linguagens Regulares e LinguagensLivre de Contexto [26].

O site do JFLAP apresenta vários recursos de apoio a utilização da ferramenta,como tutorias, arquivos de exemplos, artigos e apresentações relacionadas. Emdesenvolvimento desde 1990, o JFLAP é uma ferramenta amplamente divulgada,madura, e que possui um número crescente de colaboradores.

5.3 Simuladores de Modelos Universais

Os simuladores de modelos universais que se preocupam em apresentar modelosdiversificados são raros. Existe apenas uma ferramenta de destaque, a Deus exmachina que infelizmente não se encontra mais disponível.

5.3.1 Deus ex machina

Desenvolvida por Nicolae Savoiu, a Deus ex machina visa promover a compreen-são da tese de Church-Turing e o motivo porque esta pode ser considerada plausívelfundamentada no conceito do Argumento da Convergência de Idéias Dissimilares jácitado na Seção 3. A proposta da ferramenta é familiarizar os usuários com diver-sos modelos universais de forma que os usuários consigam identificar a equivalênciaentre os modelos em si e entre os modelos e os computadores modernos. Isto éfeito de duas formas: disponibilizando implementações de máquinas e convertendoprogramas compiláveis que executam em máquinas reais.

Essa ferramenta foi desenvolvida para suportar a simulação de sete modelos:

• Máquinas de Turing

• Algoritmos de Markov

• Máquinas de Registradores

• Máquinas Vetoriais

• Autômatos Finitos

• Autômatos com Pilha

• Autômatos com Limitação Linear

Além disso, a ferramenta inclui uma funcionalidade interessante, uma Máquinade Turing de cinco fitas que compila e executa programas escritos em um pequenosubconjunto da linguagem C. Assim fica mais fácil para o aluno aceitar que umasimples Máquina de Turing é capaz de computar tudo o que um computador modernoé capaz de computar.

A ferramenta de Nicolae Savoiu possui as características que mais se aproximamda idéia proposta neste trabalho. Porém nem a ferramenta, nem o código fonte, seencontram disponíveis para um estudo mais detalhado.

Page 114: Equivalência de Máquinas Universais: Demonstração, Análise e ...

113

6 CONSIDERAÇÕES FINAIS

Este trabalho apresentou um estudo sobre Máquinas Universais incluindo defini-ções formais, traduções entre modelos e as respectivas provas de correção semânticadas traduções. A equivalência entre as máquinas apresentadas foi demonstrada pelofecho transitivo da relação de tradução entre as máquinas. Foi ainda realizada aapresentação de uma ferramenta para simular e converter programas entre quatromodelos de máquinas, a saber: Máquina de Turing, Máquina de Post, MáquinaNORMAe Autômato de Duas Pilhas.

Uma das principais contribuições deste trabalho é a demonstração formal daequivalência entre os modelos apresentados, através da prova da correção semânticaentre as traduções apresentadas. Embora relevantes à compreensão dos fundamentosda Teoria da Computação como a Tese de Church-Turing, tais provas são encon-tradas de forma dispersa na bibliografia e não raramente restringem-se apenas atradução sintática programas sem disponibilizar a prova completa de equivalênciaentre os modelos. A compreensão da equivalência de modelos e de como um mo-delo simula outra contribui para a formação de conceitos teóricos sobre computaçãolivre da visão restrita de computação à tecnologia atual [6]. Adicionalmente, a apre-sentação completa das provas visa familiarizar o estudante com esse tipo de prova,também utilizada para provar correção de outras traduções orientadas por sintaxe,como é o caso de compiladores e refinamento de programas.

Outra contribuição relevante deste trabalho é criar uma ferramenta de apoio parao ensino de Teoria da Computação que facilite a compreensão e fixação de conceitosteóricos além de estimular a interação dos alunos com as Máquinas Universais. Aferramenta apresentada SIMCO difere das ferramentas já existentes pois simulaquatro modelos universais diferentes e converte programas de uma máquina paraoutra. Enquanto as demais ferramentas são voltadas, em geral, exclusivamenteà modelagem de Máquinas de Turing sem tornarem disponível um conversor demodelos. Uma ferramenta desse tipo possibilita o estudo de diferentes modeloscomputacionais de forma mais otimizada [6] além de permitir ao aluno tanto arápida elaboração de modelos simples para problemas clássicos, como também odesenvolvimento de programas mais complexos.

Dessa forma, torna-se mais fácil compreender modelos computacionais alterna-tivos à proposta de Turing que apresentam propriedades relevantes a computaçãomais eficiente de determinados tipos de problemas. Conseqüentemente, torna-semais fácil também, o desenvolvimento do senso crítico para escolha do modelo com-putacional a ser utilizado, o que segundo [2], caracteriza a etapa mais importantedo processo de resolução de um problema.

Embora a ferramenta proposta não esteja totalmente completa, excluindo ainda

Page 115: Equivalência de Máquinas Universais: Demonstração, Análise e ...

114

recursos gráficos para edição de programas e visualização de estruturas de dados,a ferramenta possui um escopo não abordado pelas demais ferramentas de ensinode Teoria da Computação. Estes recursos entretanto, apresentaram-se de grandevalia para a eficiência de uma ferramenta de ensino e encorajaram a realização detrabalhos futuros.

6.1 Trabalhos Futuros

O estudo das ferramentas relacionadas evidenciou a existência de várias funcio-nalidades relevantes para ferramentas de ensino. Estas funcionalidades inspirarama proposta de diferentes trabalhos futuros citados no seguimento deste texto.

6.1.1 Manual e Internacionalização da Ferramenta

Apesar da ferramenta apresentar-se bastante intuitiva é essencial desenvolver ummanual de utilização. O manual pode incluir programas de exemplo e um tutorialpasso-a-passo de como escolher o modelo a ser utilizado, como criar e editar pro-gramas e como funciona o acompanhamento da execução. Além disso, a interfaceda ferramenta e o manual devem ser internacionalizados a fim de que a ferramentapossa ser utilizada pelo maior número de pessoas possível.

6.1.2 Visualização Gráfica da Estrutura de Memória

A atual visualização da estrutura de memória das máquinas é realizada textu-almente. Esta abordagem apresenta a vantagem de disponibilizar a seqüência deconfigurações gerada pela computação da entrada na máquina que pode ser exami-nada posteriormente. Entretanto a visualização gráfica da modificação da memóriaproporciona uma perspectiva intuitiva ao usuário e ajuda a compreender o funciona-mento da máquina. Sendo assim, a opção de um visualizador gráfico para a estruturade memória representa uma funcionalidade bastante relevante considerando o focodo SIMCO como ferramenta de ensino.

A implementação de um modo de visualização gráfico implica diretamente e fun-cionalidades adicionais como a configuração do intervalo de tempo entre os passos-de-execução para que o usuário da ferramenta possa acompanhar a evolução dacomputação.

6.1.3 Editor Visual de Máquinas

A maioria das ferramentas citadas incluem editores visuais de máquinas. O usode editores visuais de máquinas apresentam duas vantagens sobre o modo texto:a edição visual é mais simples para usuários com pouca experiência uma vez quetorna mais fácil verificar as condições de transição; e programas mais longos ou comnúmero elevado de transições podem ser visualizados e conferidos mais claramente.Contudo, o modo de edição visual também pode apresentar vantagens, uma vez quea notação utilizada é bastante simples é possível criar programas rapidamente, portanto as duas abordagens são complementares e podem ser disponibilizadas comoalternativas.

Além disso, a exemplo da ferramenta Alan, SIMCO pode ser estendida parapermitir a definição dos nomes dos estados ou rótulos e dos alfabetos utilizadosnos programas. Atualmente a ferramenta utiliza alguns símbolos auxiliares fixos e

Page 116: Equivalência de Máquinas Universais: Demonstração, Análise e ...

115

restringe os estados ou rótulos a serem nomeados de acordo com um padrão criadopara cada modelo.

6.1.4 Subprogramas

Uma vez que os estudantes comecem a interagir com a ferramenta e ganhemhabilidade no desenvolvimento de programas, surgirá a possibilidade de criar pro-gramas mais complexos e maiores. Para que os alunos atinjam mais rapidamenteeste nível pode-se utilizar uma estrutura que suporte a criação de subprogramas. Apossibilidade de recuperar programas para inseri-los outros programas permite queo usuário crie uma biblioteca de subprogramas que são utilizados com freqüência.Dessa forma, amplia-se a quantidade de problemas que podem ser resolvidos comprogramas escritos para os simuladores.

Page 117: Equivalência de Máquinas Universais: Demonstração, Análise e ...

116

REFERÊNCIAS

[1] HOPCROFT, J. E.; ULLMAN, J. D.; MOTWANI, R. Introdução à Teoria deAutômatos, Linguagens e Computação. Rio de Janeiro, Rio de Janeiro, Brasil:Campus, 2002. Tradução da segunda edição original de Vandenberg D. de Souza.

[2] MORET, B. M. The Theory of Computation. Boston, Massachusetts, EUA:Addison-Wesley, 1998.

[3] SIPSER, M. Introduction to the Theory of Computation. Boston, Massachusetts,United States of America: PWS Publishing Company, 1997.

[4] TURING, A. M. On computable numbers, with an application to the entschei-dungsproblem. In: Proceedings of the London Mathematical Society. [S.l.: s.n.],1936. v. 42, p. 230–265. Reimpresso em The Undecidable, editor: Martin Davis,2004.

[5] CHURCH, A. An unsolvable problem of elementary number theory. AmericanJournal of Mathematics, v. 58, p. 345–363, 1936. Reimpresso em The Undecidable,editor: Martin Davis, 2004.

[6] TAYLOR, R. G. Motivating the church-turing thesis in the twenty-first century.In: ITiCSE ’98: Proceedings of the 6th annual conference on the teaching ofcomputing and the 3rd annual conference on Integrating technology into computerscience education. New York, New York, USA: ACM Press, 1998. p. 228–231.ISBN 1-58113-000-7.

[7] TAYLOR, R. G. Models of Computation and Formal Language. New York, NewYork, United States of America: Oxford University Press, 1998.

[8] Sociedade Brasileira de Computação. Currículo de Referência da SBCpara Cursos de Graduação em Computação e Informática. 2003. CR99.01.Disponível em: <http://www.sbc.org.br/index.php?language=1&subject=

28&content=downloads&id=82>.

[9] PAPADIMITRIOU, C. H. Computational Complexity. Boston, Massachusetts,EUA: Addison-Wesley, 1994.

[10] MARTIN, J. C. Introduction to Languages and the Theory of Computation.Columbus, Ohaio, United States of America: McGraw-Hill, 1996.

Page 118: Equivalência de Máquinas Universais: Demonstração, Análise e ...

117

[11] LEWIS, H. R.; PAPADIMITRIOU, C. H. Elements of the Theory of Computa-tion. Upper Saddle River, New Jersey, United States of America: Prentice Hall,1998.

[12] KNUTH, D. E. The Art of Computer Programming. Boston, Massachusetts,EUA: Addison-Wesley, 1997.

[13] MACLENNAN, B. J. Principles of Programming Languages. New York, NewYork, United States of America: Oxford University Press, 1987.

[14] ROBINSON, M. B. et al. A java-based tool for reasoning about models of com-putation through simulating finite automata and turing machines. In: SIGCSE’99: The proceedings of the thirtieth SIGCSE technical symposium on Computerscience education. New York, New York, United States of America: ACM Press,1999. p. 105–109. ISBN 1-58113-085-6.

[15] BIRD, R. Programmas and Machines: An Introduction to the Theory of Com-putation. New York, New York, United States of America: John Wiley & Sons,1976.

[16] COHEN, D. I. A. Introduction to Computer Theory. New York, New York,United States of America: John Wiley & Sons, 1997.

[17] POST, E. L. Finite combinatory processes. formulation i. The Journal of Sym-bolyc Logic, v. 1, p. 103–105, 1936. Reimpresso em The Undecidable, editor: Mar-tin Davis, 2004.

[18] DIVERIO, T. A.; MENEZES, P. B. Teoria da Computação: Máquinas Univer-sais e Computabilidade. Porto Alegre, Rio Grande do Sul, Brasil: Sagra Luzzato,2003. (Livros Didáticos).

[19] ECLIPSE - an open development platform. Disponível em: <http://www.

eclipse.org/>. Acesso em: 30 de agosto de 2006.

[20] VISUAL Editor Project. Disponível em: <http://www.eclipse.org/vep/>.Acesso em: 30 de agosto de 2006.

[21] FONSECA, A. F. da et al. Animation of relations between computationalmodels and their language representations. Bulletin of the European Associa-tion for Theoretical Computer Science, v. 74, p. 235–241, 2001. Disponível em:<http://citeseer.ist.psu.edu/dafonseca01animation.html>.

[22] BOVET, J. Visual Automata Simulator. 2006. Disponível em: <http://www.

cs.usfca.edu/~jbovet/vas.html>.

[23] RODGER, S. H. et al. A collection of tools for making automata theory andformal languages come alive. In: SIGCSE ’97: Proceedings of the twenty-eighthSIGCSE technical symposium on Computer science education. New York, NewYork, USA: ACM Press, 1997. p. 15–19. ISBN 0-89791-889-4.

[24] TINI, S.; MAGGIOLO-SCHETTINI, A. Compositional synthesis of generalizedmealy machines. Fundam. Inf., IOS Press, Amsterdam, The Netherlands, TheNetherlands, v. 60, n. 1-4, p. 367–382, 2004. ISSN 0169-2968.

Page 119: Equivalência de Máquinas Universais: Demonstração, Análise e ...

118

[25] MOORE, E. F. Gedanken-experiments on sequential machines. In: AutomataStudies. Princeton, New Jersey, United States of America: Priceton UniversityPress, 1956. p. 129–132. ISBN 0691079161.

[26] JFLAP Tutorial for JFLAP Version 6.0. 2006. Disponível em: <http://www.

jflap.org/tutorial/>. Acesso em: 21 de setembro de 2006.