Você está na página 1de 5

ESIN/UCPel

058814 Linguagens Formais e Autômatos

TEXTO 5
Máquina de Turing
Linguagens Sensíveis ao Contexto e Enumeráveis Recursivamente
Prof. Luiz A M Palazzo
Maio de 2007
________________________________________________________________________

0. Introdução
• A Ciência da Computação é o estudo sistematizado relativo à Computação.
• Originou-se na Grécia com os algoritmos de Euclides (século III A.C.) e na Babilônia, com
estudos sobre complexidade e redutibilidade de problemas.
• Em 1936 Alan Mathieson Turing, matemático inglês, propôs um modelo que ficou
conhecido como Máquina de Turing, atualmente aceito como uma formalização do
conceito de procedimento, isto é, uma seqüência finita de instruções que podem ser
realizadas mecanicamente em um tempo finito.
• Ainda em 1936, Alonzo Church apresentou uma hipótese que ficou conhecida como a
Hipótese de Church, segundo a qual qualquer função computável pode ser representada
por uma Máquina de Turing.
• Como o conceito de procedimento é matematicamente impreciso, não é possível provar
que a Máquina de Turing é realmente o dispositivo computacional mais genérico possível.
• Entretanto nenhum modelo computacional desenvolvido até o presente conseguiu
apresentar capacidade computacional superior ao modelo de Turing, o que reforça a
Hipótese de Church.
• As Linguagens Enumeráveis Recursivamente (LER), ou do Tipo Zero, são as linguagens
que podem ser reconhecidas por uma Máquina de Turing e portanto esta classe de
linguagem representa o conjunto de todas as linguagens que podem ser reconhecidas
mecanicamente e em um tempo finito.
• Para gerar as LER emprega-se um formalismo axiomático ou gerador na forma de uma
gramática denominada Gramática Irrestrita (não possui qualquer restrição quanto ao
formato das produções).
• As Linguagens Sensíveis ao Contexto (LSC), ou do Tipo 1, estão contidas propriamente
no conjunto das LER.
• Gramáticas Sensíveis ao Contexto (GSC): É o formalismo gerador das LSC. O lado
esquerdo das produções pode ser uma palavra de variáveis ou terminais definindo um
contexto de derivação.
• Máquina de Turing com Fita Limitada: É o mecanismo reconhecedor das LSC. Sua fita é
limitada e portanto finita.. Não se sabe se o não-determinismo aumenta ou não o poder
computacional das Máquinas de Turing com Fita Limitada.
1. Máquina de Turing

• A Máquina de Turing, para ser considerada um modelo de um procedimento deve


apresentar, entre outras, as seguintes propriedades:
a) A execução do algoritmo deve ser finita.
b) Deve consistir de passos (1) discretos, (2) executáveis mecanicamente, (3) num
tempo finito.

• O modelo proposto por Alan Turing em 1936 consistia de 3 partes:


a) Fita: usada simultaneamente como dispositivo de entrada, saída e memória de
trabalho,
b) Unidade de Controle: reflete o estado corrente da máquina. Possui uma unidade
de leitura e gravação (cabeça da fita) que acessa uma célula da fita de cada vez,
movendo-se para a esquerda e para a direita, e
c) Programa ou Função de Transição: comanda as leituras e gravações, o sentido
do movimento da cabeça e define o estado da máquina.

• A fita é finita à esquerda e infinita à direita, sendo dividida em células onde cada uma
armazena um símbolo, que podem pertencer ao alfabeto de entrada, ao alfabeto auxiliar
ou ser "branco".

• Inicialmente a palavra a ser processada ocupa as células mais à esquerda da fita, ficando
as demais em "branco".

• A unidade de controle possui um número finito e pré-definido de estados


• A cabeça de leitura/gravação lê o símbolo contido em uma célula da fita de cada vez e
grava um novo símbolo.

• Após a leitura/gravação a cabeça se move uma célula para a direita ou para a esquerda.

• O símbolo gravado e o sentido do movimento são definidos pelo programa.

• Inicialmente a cabeça está posicionada na célula mais à esquerda da fita como pode ser
visto na figura, onde β representa "branco".

a b b c a β β β ... ∝

Controle

• O programa é uma função que, dependendo do estado corrente da máquina e do


símbolo lido, determina o símbolo a ser gravado, o sentido do movimento da cabeça e o
novo estado da máquina.
(a1, a2, m)
p q

ESTADO NOVO
ANTERIOR ESTADO

Símbolo lido Símbolo gravado Sentido do


movimento

Isto é: δ (p, a1) = (q, a2, m)

2. Definição Formal da Máquina de Turing


• Uma máquina de Turing é uma heptupla:
M = (Σ, Q, δ, q0, F, V, β), onde:
 Σ é um alfabeto de entrada
 Q é um conjunto finito de estados possíveis de M
 δ é um programa ou função de transição parcial:
δ:Qx(Σ∪V∪{β})Qx(Σ∪V∪{β})x{E,D}
 q0 é um estado inicial da máquina, q0 ∈ Q
 F é um conjunto de estados finais da máquina tal que F está contido em Q
 V é um alfabeto auxiliar (que pode ser vazio)
 β é o símbolo especial "branco"
• A função de transição considera o estado corrente e o símbolo lido da fita para
determinar o novo estado, o símbolo a ser gravado e o sentido do movimento da cabeça,
onde esquerda e direita são representadas por E e D respectivamente.
• O processamento de uma Máquina de Turing, M = (Σ, Q, δ, q0, F, V, β), para uma
palavra de entrada w consiste na sucessiva aplicação da função programa a partir do
estado inicial q0 e da cabeça posicionada na célula mais à esquerda da fita até ocorrer
uma condição de parada.
• O processamento de M para a entrada w pode parar ou ficar em loop infinito. A parada
pode ser de duas maneiras: aceitando ou rejeitando a entrada w.
• As condições de parada são as seguintes:
a) A máquina assume um estado final: a máquina pára e a palavra de entrada é
aceita.
b) A função programa é indefinida para o argumento (símbolo lido e estado
corrente): a máquina pára e a palavra de entrada é rejeitada.
c) O argumento da função programa determina um movimento para a esquerda
e a cabeça já está na posição mais à esquerda da fita: a máquina pára e a
palavra de entrada é rejeitada.
• Para definir formalmente o comportamento da Máquina de Turing é necessário estender
a função programa para usar como argumento um estado e uma palavra.
• Se M é uma Máquina de Turing:
a) ACEITA(M) ou L(M) é o conjunto de todas as palavras de Σ* aceitas por M.
b) REJEITA(M) é o conjunto de todas as palavras de Σ* rejeitadas por M.
c) LOOP(M) é o conjunto de todas as palavras de Σ* para as quais M entra em
loop infinito.

3. Exemplo: Máquina de Turing


• Seja a linguagem L1= { anbn | n ≥ 0}.
• A Máquina de Turing M = ({a, b}, {q0, q1, q2, q3, q4}, δ1, q0, {q4}, {A, B}, β), onde δ1 é
como na tabela a seguir é tal que:
(1) ACEITA(M) = L1, (2) REJEITA(M) = Σ* - L1 e (3) LOOP(M) = ∅

δ1 a b A B β
q0 (q1, A, D) (q3, B, D) (q4, β, D)

q1 (q1, a, D) (q2, B, E) (q1, B, D)

q2 (q2, a, E) (q0, A, D) (q2, B, E)

q3 (q3, B, D) (q4, β, D)

q4

(A, A, D)

(a, A, D) (b, B, E)
q0 q1 q2

(B, B, D)
(a, a, D) (a, a, E)
(B, B, D) (B, B, E)
(β, β, D) q3
(B, B, D)

(β, β, D)

q4
a a b b β β A a b b β β A a b b β β

q0 q1 q1

A a B b β β A a B b β β A a B b β β

q2 q2 q0

A A B B β β A A B b β β A A B B β β

q1 q1 q2

A A B b β β A A B B β β A A B B β β

q2 q0 q3

A A B B β β A A B B β β

q3 q4