MÁQUINA DE TURING Centro Federal de Educação Tecnológica de Minas Gerais

Leonardo Dias

1

RESUMO Este trabalho propõe um material de apoio para estudo de máquina de turing na área de Engenharia de Computação. Dado o caráter teórico da disciplina de Linguagens Formais e Autô matos, existe, na maioria dos casos, dificuldade em abstrair os conceitos para compreender o mecanismo de funcionamento dos formalismos. Uma forma de auxiliar nesse processo é utilizar exemplos e exercícios resolvidos para um melhor entendimento do conteúdo. Dessa maneira, este trabalho tem como objetivo explicar de uma forma mais direta a definição e a representação da máquina de turing. ABSTRAT This work proposes a study material for T u r i n g M a c h i n e in the field of Computer Engineering. Given the theoretical nature of the discipline of Formal Languages and Automata, there is, in most cases, difficulty with abstract concepts to understand the mechanism of operation of the formalisms. One way to assist in this process is solved using examples and exercises for a better understanding of the content. Thus, this paper aims to explain in a more direct definition and representation of turing machine.

Palavras-chaves: máquina de turing, linguagens enumeráveis recursivas, formalismo.

1

Graduando em Engenharia da Computaçao (CEFET/MG). Email: darops@gmail.com

1-Introdução A Máquina de turing para ser considerada como um modelo formal de procedimento efetivo, algoritmo ou função computável deve satisfazer às seguintes propriedades, entre outras: a) A descrição do algoritmo deve ser finita; b) Deve consistir de passos: – discretos – executáveis mecanicamente; – em um tempo finito O modelo proposto por Alan Turing em 1936, conhecido como Máquina de Turing consiste basicamente de 3 partes: – Fita: usada simultaneamente como dispositivo de entrada, saída e memória de trabalho; – Unidade de Controle: reflete o estado corrente da máquina. Possui uma unidade de leitura e gravação (cabeça da fita) a qual acessa uma célula da fita de cada vez e movimenta-se para a esquerda ou direita; – Função de Transição: função que comanda as leituras e gravações, o sentido de movimente da cabeça e define o estado da máquina.

Figura 1: Exemplo da fita e unidade de controle.

2-Funcionamento da Máquina de Turing A Máquina de Turing deve assumir empre em um estado, pertencente à um conjunto finito de estados; O processamente de uma Máquina de Turing começa sempre em um estado especial, chamado estado inicial; Inicialmente a primeira célula da fita é preenchida com “<”, que indica o início da mesma; A cabeça de leitura é posicionada inicialmente na segunda célula da fita, a célula seguinte a “<” As células em branco, que não fazem parte da palavra a ser processada, são preenchidas com o simbolo “B”; O processo em uma Máquina de Turing consiste em uma sequência de passos que consistem em: a) Observar o estado e o símbolo corrente da fita (aquele que o cabeçote está posicionado); b) Escrever um símbolo nesta célula da fita;

c) Mover o cabeçote para a esquerda ou direita; d) Mudar estado corrente. A ação a ser executada é determinada por um programa que comunica à unidade de controle o que deve ser feito com base na configuração em que a Máquian de Turing se encontra O processamente cessa quando a máquina atinge uma configuração para a qual não existe função prevista, neste caso: a) Se a máquina estiver com um estado final ativo, a palavra de entrada é aceita; b) Se o estado ativo não for final, a palavra de entrada não é aceita; c) Se a máquina não parar (looping), a palavra de entrada não é aceita. 2.1-Definição Formal Mais formalmente, uma máquina de Turing (com uma fita) é usualmente definida como uma Tupla M= (Q,Σ,Γ,s,b,F,δ), onde •Q é um conjunto finito de estados •Σ é um alfabeto finito de símbolos •Γ é o alfabeto da fita (conjunto finito de símbolos) • é o estado inicial

• é o símbolo branco (o único símbolo que se permite ocorrer na fita infinitamente em qualquer passo durante a computação) • é o conjunto dos estados finais é uma função parcial chamada é o movimento para a esquerda e éo

• ⇒ função de transição, onde movimento para a direita.

Definições na literatura às vezes diferem um pouco, para tornar argumentos ou provas mais fáceis ou mais claras, mas isto é sempre feito de maneira que a máquina resultante tem o mesmo poder computacional. Por exemplo, mudar o conjunto para , onde P permite ao cabeçote permanecer na mesma célula da fita em vez de mover-se para a esquerda ou direita, não aumenta o poder computacional da máquina (Fonte - Michael Sipser - Int Teoria da Computação). A Máquina de Turing pode ser empregada como modelo de natureza reconhecedora ou transdutora: – Reconhecedora: processa a palavra de entrada aceitando-a ou rejeitando-a. Neste caso, o conjunto de palavras aceitas corresponde à linguagem descrita pela Máquina de turing;

– Transdutora: máquina para computar uma função. Aplica uma função e o resultado produzido é lançado na própria fita. A função programa, considera o estado corrente e o símbolo lido da fita para determinar o novo estado, o símbolo a ser gravado e sentido de movimento da cabeça onde esquerda e direita são representados por E e D, respectivamente. A função programa pode ser interpretada como um grafo finito direto, como ilustrado na Figura 2. Neste caso, os estados inicial e finais são representados como nos Autômatos Finitos.

Figura 2: Representação da funçã o pr ograma como um grafo.

Exemplo 1 Uma Máquina de Turing com alfabeto de entrada {a} que pára se, e somente se, a palavra de entrada for da forma a2n , para n>=0:

Processamento de “aaa” = cadeia rejeitada Processamento de “aaaa” = cadeia reconhecida

3- Hipótese de Church

A. M. Turing propôs, em 1936, um modelo abstrato de computação, conhecido como Máquina de Turing, com o objetivo de explorar os limites da capacidade de expressar soluções de problemas. Trata-se, portanto, de uma proposta de definição formal da noção intuitiva do algoritmo. Diversos outros trabalhos, resultaram em conceitos equivalentes ao de Turing. O fato de todos estes trabalhos independentes gerarem o mesmo resultado em termos de capacidade de expressar computabilidade é um forte reforço no que é conhecido como Hípotese de Church ou Hipótese de Turing-Church: “A capacidade de computação representada pela Máquina de Turing é o limite máximo que pode ser atingido por qualquer dispositivo de computação” Em outras palavras, a Hipótese de Church afirma que qualquer outra forma de expressar algoritmos terá no máximo a mesma capacidade computacional da Máquina de Turing. Como noção de algoritmo ou Função Computável é intuitiva, a Hipótese de Church não é demonstrável. 4- Máquina de Turing como reconhecedor de linguagem Uma linguagem aceita por uma Máquina de Turing é dita Enumerável Recursivamente. Historicamente, o termo “enumerável” deriva do fato de que as palavras de qualquer Linguagem Enumerável Recursivamente podem ser enumeradas por uma Máquina de Turing; e “recursivamente” é um termo matemático anterior ao computador, com significado similar ao de “recursão”, usado em informática. A Classe das Linguagens Enumerável Recursivamente inclui algumas para as quais é impossível determinar mecanicamente se uma palavra não pertence à linguagem. Se L é uma destas linguagens, então para qualquer máquina M que aceita L, existe pelo menos uma palavra w nao pertencente a L que, ao ser processada por M, a máquina emtra em loop infinito. Assim, podemos afirmar que: se w pertence a L, M pára e aceita a entrada se w não pertence a L, M pode parar, rejeitando a palavra ou permanecer processando indefinidamente Portanto, é conveniente definir uma subclasse da Classe das Linguagens Enumerável Recursivamente, denominada Classe das Linguagens Recursivas, composta pelas linguagens para as quais existe pelo menos uma Máquina de Turing que pára para qualquer entrada, aceitando ou rejeitando.

4.1- Linguagem Recursivo Uma lingaguem é dita recursiva se existe uma Máquina de Turing tal que: ACEITA(M) = L REJEITA(M) = Σ* - L

LOOP(M) = vazio Pode-se afirmar que a classe das Linguagens Recursivas representa todas as linguagens que podem ser reconhecidas mecanicamente Existem conjuntos que não são Enumeráveis Recursivamente, ou seja, linguagens para as quais não é possível desenvolver uma Máquina de Turing que as reconheça. Se uma linguagem L sobre um alfabeto Σ qualquer é recursiva, então seu complemento, ou seja, Σ* - L, é recursivo. Uma linguagem L sobre um alfabeto Σ qualquer é recursiva se, e somente se, L e seu complemento são enumeráveis recursivamente.

Figura 4: Representação do conjunto de Linguagens Enumeráveis Recursivamente.

4.2- Decidível x Reconhecível

Figura 5: Linguagem Enumerável Recursivamente.

Figura 6: Linguagens Recursivas param para toda entrada.

As linguagens decidíveis são fechadas sob as operações a) União b) Concatenação c) Complemento d) Kleene e) Interseção

As linguagens RECURSIVAS ENUMERÁVEIS são fechadas sob as operaçoes a) União b) Concatenação c) Kleene d)Interseção

Toda linguagem decidível é turing reconhecível. Nem toda linguagem turing reconhecível é turing decidível

5- Decidibilidade Na teoria da computação e na teoria da complexidade computacional um problema de decisão é uma questão sobre um sistema formal com uma

resposta do tipo: Sim ou Não Um problema de decisão também pode ser formalizado como o problema de verificar se determinada cadeia de caracteres pertence ou não a uma linguagem formal. Um problema de decisão é chamado decidível ou efetivamente solúvel se tem uma representaçao na qual o conjunto de strings aceito é uma linguagem recursiva. Um problema de decisão é chamado semi-decidível ou solúvel ou provável se tem uma representação na qual um conjunto de strings aceito é uma linguagem recursivamente enumerável Um problema de decisão é chamado indecidível ou insolúvel ou improvável se não há uma máquina de turing que o solucione

6-Referências MENEZES, PAULO BLAUTH. Linguagens Formais e Autômatos, Porto Alegre, 3ª. Edição, Editora Sagra Luzzato, 2000. MALDONADO, YANDRE. Autômato com P ilha. RANGEL, JOSÉ LUC AS. Linguagens Livres de Contexto e Autômatos de Pilha, 1999. DELAMARO, MÁRCIO EDUARDO. Linguagens Formais e Autômatos. UEM, 1998.