Você está na página 1de 36

3

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

3 Mquinas Universais

3 MQUINAS UNIVERSAIS

3.1 Codificao de Conjuntos Estruturados


3.2 Mquina de Registradores - Norma
3.3 Mquina Norma como Mquina Universal
3.3.1 Operaes e Testes
3.3.2 Valores Numricos
3.3.3 Dados Estruturados
3.3.4 Endereamento Indireto e Recurso
3.3.5 Cadeias de Caracteres

3.4 Mquina de Turing


3.4.1 Noo Intuitiva
3.4.2 Noo como Mquina
3.4.3 Modelo Formal
3.4.4 Mquinas de Turing como Reconhecedores de Linguagens
3.4.5 Mquinas de Turing como Processadores de Funes
3.4.6 Equivalncia entre as Mquinas de Turing e Norma

3.5 Outros Modelos de Mquinas Universais


3.5.1 Mquina de Post
3.5.2 Mquina com Pilhas
3.5.3 Autmato com Duas Pilhas

3.6 Modificaes sobre as Mquinas Universais


3.6.1 No-Determinismo
3.6.2 Mquina de Turing com Fita Infinita Esquerda e Direita
3.6.3 Mquina de Turing com Mltiplas Fitas
3.6.4 Outras Modificaes sobre a Mquina de Turing

3.7 Hierarquia de Classes de Mquinas


3.8 Hiptese de Church

Algoritmo

termo intuitivamente usado como soluo de um problema,


como uma forma de descrever se determinada propriedade
verificada ou no para uma dada classe de entrada.

Investigao da solucionabilidade de um problema

a investigao da existncia de um algoritmo capaz de resolv-lo.

Noo intuitiva de algoritmo

sua descrio deve ser finita e no-ambgua;


deve consistir de passos discretos, executveis mecanicamente e em
um tempo finito.
Limitaes de tempo ou de espao podem determinar se um
algoritmo pode ou no ser descrito na prtica. (no so restries
tericas).
estudo ser restrito aos algoritmos naturais, ou seja, definidos sobre
o conjunto dos nmeros naturais.
qualquer conjunto contvel pode ser equivalente ao dos naturais,
atravs de uma codificao.
conceito de programa, como introduzido anteriormente, satisfaz
noo intuitiva de algoritmo. Entretanto, necessrio definir a
mquina a ser considerada.

Mquina

simples, para permitir estudos de propriedades, sem a necessidade


de considerar caractersticas no-relevantes, bem como permitir
estabelecer concluses gerais sobre a classe de funes
computveis;
poderosa, capaz de simular qualquer caracterstica de mquinas
reais ou tericas, de tal forma que os resultados provados sejam
vlidos para modelos aparentemente com mais recursos.

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
0

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
1

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

Mquina Universal
Se for possvel representar qualquer algoritmo como um programa
em tal mquina, ento esta denominada de mquina universal.
As evidncias de que uma mquina universal:
Evidncia Interna. Consiste na demonstrao de que qualquer
extenso das capacidades da mquina universal proposta computa,
no mximo, a mesma classe de funes, ou seja, no aumenta o seu
poder computacional;
Evidncia Externa. Consiste no exame de outros modelos que
definem a noo de algoritmo, juntamente com a prova de que so,
no mximo, computacionalmente equivalentes.

Mquina Norma, uma mquina universal

um conjunto de registradores naturais


trs instrues sobre os registradores:
operao de incrementar um - sucessor
operao de decrementar um - antecessor
teste se o valor armazenado zero.

Mquina de Turing, proposta em 1936 por Alan Turing

modelo mais utilizado como formalizao de algoritmo


um mecanismo simples que formaliza a idia de uma pessoa que
realiza clculos usando um instrumento de escrita e um apagador
modelo formal baseado em
uma fita (usada para entrada, sada e rascunho),
uma unidade de controle
um programa

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

Hiptese de Church, apresentada em 1936 por Alonzo Church

afirma que qualquer funo computvel pode ser processada por


uma Mquina de Turing,
que existe um algoritmo expresso na forma de Mquina de Turing
capaz de processar a funo.
Como a noo intuitiva de algoritmo no matematicamente
precisa, impossvel formalizar uma demonstrao de que a
Mquina de Turing , efetivamente, o mais genrico dispositivo de
computao.
Entretanto, todas as evidncias internas e externas imaginadas
foram sempre verificadas, reforando a Hiptese de Church.
Os demais modelos de mquinas propostos, bem como qualquer
extenso de suas capacidades, possuem, no mximo, a mesma
capacidade computacional da Mquina Turing.
Mquina de Post. Baseada na estrutura de dados do tipo fila (o
primeiro dado armazenado o primeiro a ser recuperado);
Autmato com Pilhas. Baseada na estrutura de dados do tipo pilha
(o ltimo dado armazenado o primeiro a ser recuperado), onde
so necessrias pelo menos duas pilhas para simular o mesmo
poder computacional de uma fita ou fila.
Extenses da Mquina de Turing no aumentam o seu poder
computacional
No-Determinismo. Permite que a mquina possa tentar
diversos caminhos alternativos para uma mesma situao;
Mltiplas fitas. Mais de uma fita.
Mltiplas cabeas
Fita infinita de ambos os lados

Na realidade, no se trata de uma mquina no sentido dado a essa


palavra, mas sim de um programa para uma mquina universal.
____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
2

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
3

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

Uso de Mquinas de Turing

3.1 Codificao de Conjuntos Estruturados

Existem trs maneiras de abordar o estudo das Mquinas de


Turing
a)

Processar

Funes. Funes computveis e suas

propriedades;
b)

Reconhecer Linguagens. Linguagens que podem ser


reconhecidas e suas propriedades;

c)

Solucionar Problemas. Problemas solucionveis e nosolucionveis,


problemas
parcialmente
solucionveis
(computveis) e completamente insolveis (no computveis).

As trs abordagens so usadas ao longo deste livro.


A terceira constitui um dos problemas fundamentais da
Cincia da Computao e tratada em captulo especfico.
existe um grande nmero de funes para as quais no possvel
desenvolver algoritmos capazes de comput-las.
existem funes que so no-computveis, sendo algumas
relativamente simples de serem enunciadas como, por exemplo,
uma funo que nomeia todas as funes.

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
4

codificao de conjuntos estruturados, onde elementos de tipos


de dados estruturados so representados como nmeros naturais.
Para um dado conjunto estruturado X, a idia bsica definir
uma funo injetora c: X N, onde, para todo x, y X, tem-se
que:
se c(x) = c(y), ento x = y
nesse caso, o nmero natural c(x) a codificao do elemento
estruturado x.
EXEMPLO 3.1 Codificao de n-Uplas Naturais.
n
Suponha que desejado codificar, de forma unvoca, elementos de N
como nmeros naturais, ou seja, deseja-se uma funo injetora
n
c: N N. Uma codificao simples a seguinte:
a) lembre-se de que, pelo Teorema Fundamental da Aritmtica, cada
nmero natural univocamente decomposto em seus fatores
primos;
b) suponha os n primeiros nmeros primos denotados por p1 = 2,
p2 = 3, p3 = 5 e assim sucessivamente.
n

Ento, a codificao c: N N definida como segue unvoca


n
(suponha (x1, x2, ..., xn) em N e que o smbolo denota a operao
de multiplicao nos naturais):
c(x1, x2, ..., xn) = p1x1p2x2...pnxn
Deve-se reparar que essa codificao no constitui uma funo
bijetora, ou seja, nem todo nmero natural corresponde a uma n-upla.
Entretanto, todo nmero natural decomponvel nos n primeiros
nmeros primos corresponde a uma n-upla.

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
5

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

EXEMPLO 3.2 Codificao de Programas Monolticos.

A seguir, ilustrado como, a partir de um nmero natural que denota


um programa monoltico, pode-se recuperar o programa original.
Suponha o nmero
150
105
p = (2 )(3 )
Portanto, o programa possui duas instrues rotuladas correspondentes
aos nmeros 150 e 105. Relativamente s decomposies em seus
fatores primos, tem-se que:
1 1 2 0
0 1 1 1
150 = 2 3 5 7 e 105 = 2 3 5 7
o que corresponde s qudrulas:
(1, 1, 2, 0) e (0, 1, 1, 1)

Um programa monoltico pode ser codificado como um nmero


natural.
Suponha um programa monoltico P = (I, r) com m instrues
rotuladas onde {F1, F2, ..., Ff} e {T1, T2, ..., Tt} so os
correspondentes conjuntos de identificadores de operaes e testes,
respectivamente.
Seja P' = (I, 1) como P, exceto pelos rtulos, os quais so
renomeados como nmeros naturais, onde 1 o rtulo inicial, e o
0 nico rtulo final (se existir).
Assim, uma instruo rotulada pode ser de uma das duas seguintes
formas:
a) Operao. r1: faa Fk v_para r2
b)

Teste.
r1:se Tk ento v_para r2 seno v_para r3

Cada instruo rotulada pode ser denotada por uma qudrupla


ordenada, onde a primeira componente identifica o tipo da
instruo:
a)Operao.
b) Teste.

(0, k, r2, r2)


(1, k, r2, r3)

Usando a codificao do exemplo anterior, o programa monoltico P',


visto como qudruplas ordenadas pode ser codificado como segue:
cada qudrupla (instruo rotulada) codificada como um nmero
natural, usando a codificao. Assim, o programa monoltico P'
com m instrues rotuladas pode ser visto como uma m-upla;
por sua vez, a m-upla correspondente ao programa monoltico P'
codificada como um nmero natural, usando a codificao.
codificao de programas monolticos apresentada no uma
funo bijetora.
____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
6

se T1 ento v_para 2 seno v_para 0


faa F1 v_para 1

1:
2:

Sugere-se como exerccio a generalizao do caso ilustrado para


qualquer nmero natural correspondente codificao de um
programa monoltico.
EXERCCIOS:
Codifique os seguintes programas monolticos em um nico nmero
natural.
a) M1:

1:
2:
3:
4:
5:
6:
7:
8:

faa
se T
faa
se T
faa
se T
faa
se T

F v_para 2
ento v_para
G v_para 4
ento v_para
F v_para 6
ento v_para
G v_para 8
ento v_para

faa
se T
faa
se T

F v_para 2
ento v_para 3 seno v_para 1
G v_para 4
ento v_para 1 seno v_para 0

3 seno v_para 5
1 seno v_para 0
7 seno v_para 2
6 seno v_para 0

b) M2:

1:
2:
3:
4:

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
7

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

3.2 Mquina de Registradores - Norma

3.3 Mquina Norma como Mquina Universal

A Mquina Universal Norma (Number TheOretic Register


MAchine) possui como memria um conjunto infinito de registradores
naturais e trs instrues sobre cada registrador: adio e subtrao do
valor um e teste se o valor armazenado zero.
Ndenota o conjunto de todas as uplas com infinitos (mas
contveis) componentes sobre o conjunto dos nmeros naturais .
Para evitar subscritos, as componentes das uplas so denotadas
por letras maisculas como A, B, X, Y, ..., as quais denotam os
registradores na Mquina Norma.
Definio 3.1. Mquina Norma.
A Mquina Norma uma sete-upla (suponha que K seja um
registrador, K { A, B, X, Y,... }):
Norma = (N, N, N, ent, sai, { adK, subK }, { zeroK })
a) Cada elemento do conjunto de valores de memria N denota uma
configurao de seus infinitos registradores, os
quais so denotados por: A, B, X, Y, ...
b) A funo de entrada: ent: N N tal que carrega no registrador
denotado por X o valor de entrada, inicializando
todos os demais registradores com zero;
c) A funo de sada:
sai: N N tal que retorna o valor
corrente do registrador denotado por Y;
d) O conjunto de interpretaes de operaes uma famlia de
operaes indexada pelos registradores, na qual, para cada
registrador K { A, B, X, Y,... }, tem-se que:
adK: N N adiciona um componente correspondente ao registrador K,

uma mquina extremamente simples, de tal forma que parece


difcil acreditar que o seu poder computacional , no mnimo, o de
qualquer computador moderno.

deixando as demais com seus valores inalterados. K:=K+1

subK: N N subtrai um da componente correspondente ao registrador K,


se o seu valor for maior que zero (caso contrrio, mantm o
valor zero), deixando as demais com seus valores
inalterados. K:=K-1
e) O conjunto de interpretaes de testes uma famlia de testes indexada pelos
registradores na qual, para cada registrador K, tem-se que:

zeroK: N { verdadeiro, falso } resulta

em verdadeiro, se a
componente correspondente ao registrador K for zero e em
falso, caso contrrio. K=0?

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
8

Caractersticas de mquinas reais so simuladas usando a Mquina


Norma, reforando as evidncias de que se trata de uma mquina
universal.
As caractersticas so as seguintes:
a) Operaes e Testes. Definio de operaes e testes mais
complexos como adio, subtrao, multiplicao e diviso de dois
valores e tratamento de valores diversos como os nmeros primos;
b) Valores Numricos. Armazenamento de tratamento de valores
numricos de diversos tipos como inteiros (negativos e nonegativos) e racionais;
c) Dados Estruturados. Armazenamento de tratamento de dados
estruturados como em arranjos (vetores uni e multidimensionais),
pilhas, etc;
d) Endereamento Indireto e recurso. Desvio para uma instruo
determinada pelo contedo de um registrador;
e) Cadeia de Caracteres. Definio e manipulao de cadeias de
caracteres.

3.3.1 Operaes e Testes


EXEMPLO 3.3 Atribuio do Valor Zero a um Registrador A.
Programa Iterativo A := 0:
at A = 0
faa (A := A 1)
pode-se tratar a operao A := 0 como uma macro, ou seja, um
trecho de programa que substitudo pela sua definio sempre
que referenciado.
Usando a macro A := 0, fcil construir macros para definir
operaes de atribuio de um valor qualquer.
____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
9

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

EXEMPLO 3.4 Atribuio de um Valor Natural a um Registrador.


A macro de atribuio de um valor natural n a um registrador A,
A := n, a generalizao do programa abaixo.
Programa Iterativo n := 3:

EXEMPLO 3. 7 Atribuio do Contedo de um Registrador.


Programa Iterativo A := B usando C:

A := 0;
A := A+1;
A := A+1;
A := A+1
EXEMPLO 3.5 Adio de Dois Registradores.
A macro correspondente operao de adio do valor do
registrador B ao do registrador A, denotada por: A : = A + B
Programa Iterativo A : = A + B:
at B = 0
faa (A := A + 1; B := B - 1)

Observe que, ao somar o valor de B em A, o registrador B zerado!

EXEMPLO 3.6 Adio de Dois Registradores, Preservando B


A macro correspondente operao de adio do valor do
registrador B ao do registrador A, preservando o valor em B,
necessita usar um registrador auxiliar C
Programa Iterativo A := A + B usando C
C := 0;
at B = 0
faa (A := A + 1; C := C + 1; B := B - 1);
at C = 0
faa (B := B + 1; C := C - 1)
como este programa no preserva o contedo original do registrador de
trabalho C, faz-se necessrio explicitar o uso deste registrador.
necessrio escolher um registrador de trabalho C que no seja usado!

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
10

A := 0;
A := A + B usando C
EXEMPLO 3.8 Multiplicao de Dois Registradores.
A definio de uma macro de multiplicao requer dois
registradores de trabalho.
Programa Iterativo A := A B usando C, D:
C := 0;
at A = 0
faa (C := C + 1; A := A - 1);
at C = 0
faa (A := A + B usando D; C := C - 1)
correspondente a uma macro cuja operao a multiplicao do valor do
registrador B pelo valor do registrador A, usando dois registradores de
trabalho C e D

EXEMPLO 3.9 Teste se o Valor do Registrador um Primo.


Programa Iterativo teste_primo(A) usando C
(se
A=0
ento falso
seno C := A;
C := C - 1;
(se
C=0
ento verdadeiro
seno at
teste_mod(A, C)
faa (C := C 1)
C := C - 1;
(se
C=0
ento verdadeiro
seno falso) ) )
uma macro de teste que verifica se o valor de um registrador A um
nmero primo, usando um registrador de trabalho C, retornando o valor
verdadeiro, se o valor de A primo, e o valor falso, caso contrrio:
teste_mod(A, C) um teste que retorna o valor verdadeiro, se o resto da
diviso inteira do contedo de A por C zero, e o valor falso, caso
contrrio.
____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
11

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

EXEMPLO 3.10 Atribuio do n-simo nmero primo ao registrador.


Programa Iterativo A := primo(B) usando D

Representao de Inteiros utilizando dois registradores

A := 1;
D := B;
at D = 0
faa (D := D - 1;
A := A + 1;
at teste_primo(A) usando C
faa (A := A + 1) )
a atribuio do n-simo nmero primo a um registrador A,
usando um registrador de trabalho D,

usa a macro teste_primo construda acima (suponha que 1 o 0-simo


nmero primo)

3.3.2 Valores Numricos


Norma pode definir inteiros e racionais?

Supor que o registrador inteiro A representado pelo par (A1, A2)


na representao conhecida como sinal-magnitude, ou seja, A1
(sinal) e A2 (magnitude ).
necessrio desenvolver programas em Norma para executar as
operaes inteiras A := A+1, A := A-1 e o teste A = 0?

Programa Iterativo A := A + 1:
(se A1 = 0
ento A2 := A2 + 1
seno A2 := A2 - 1;
(se A2 = 0
ento A1 := A1 1
seno 4) )

EXERCCIOS:

Programa Iterativo A := A - 1:

EXEMPLO 3.11 Inteiros.


Um valor inteiro m pode ser representado como um par ordenado:
(s, m) onde:
m denota magnitude dada pelo valor absoluto de m;
s denota o sinal de m: se m < 0,
ento s = 1 (negativo)
seno s = 0 (positivo)

( se A1 = 0
ento (se A2 = 0
ento A1:= A1 +1;
A2 := A2 +1
seno A2:= A2 -1)
seno A2:= A2 + 1)
Programa Iterativo A = 0 ?

Como representar pares ordenados em Norma?


usando codificao de n-uplas naturais como introduzido em 3.1;
usando dois registradores, o primeiro referente ao sinal, e o
segundo, magnitude.

( se A2 = 0 ento verdadeiro seno falso )

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
12

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
13

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

EXEMPLO 3.12 Racionais.


Um valor racional r pode ser denotado como um par ordenado:
(a, b) tal que b > 0 e r = a/b.
A representao no nica pois, por exemplo, o valor racional
0.75 pode ser representado pelos pares (3, 4) e (6, 8), entre outros
(na realidade, os pares (3, 4) e (6, 8) pertencem mesma classe
de equivalncia).
Neste contexto, as operaes de adio, subtrao, multiplicao
e diviso, bem como o teste de igualdade, podem ser definidos
como segue:

(a, b) - (c, d) = (ad - bc, bd)


(a, b) (c, d) = (ac, bd)

UNIVERSAIS

3.3.3 Dados Estruturados


Arranjos podem ser definidos em Norma? E arranjos
multidimensionais?
EXEMPLO 3.13 Arranjo Unidimensional.
Uma estrutura do tipo arranjo unidimensional da forma
A(1), A(2), , pode ser definida por um nico registrador A
usando a codificao de n-uplas naturais.

Em uma estrutura do tipo arranjo, desejvel indexar as suas


posies de forma direta (nmero natural) ou indireta (contedo
de um registrador).

(a, b) / (c, d) = (ad, bc) (com c 0)


se, e somente se,

MQUINAS

________________________________________________________________________________________

Note-se que o arranjo no necessita ter tamanho mximo


predefinido (nmero de posies indexveis). Lembre-se de que
a funo de entrada tal que carrega o valor da entrada no
registrador X, zerando todos os demais, incluindo o arranjo.

(a, b) + (c, d) = (ad + bc, bd)

(a, b) = (c, d)

ad = bc

EXERCCIO:
Desenvolva os programas iterativos em Norma
implementam as operaes entre nmeros racionais.

Para ambos os casos e para manter a coerncia com a definio


da Mquina Norma, necessrio definir as operaes de adio e
de subtrao do valor 1, bem como o teste se o valor zero.

que

3.3.5 Cadeias de Caracteres


Cadeia de caracteres outro tipo de dado no pr-definido na
Mquina Norma.
O tratamento da definio e da manipulao de cadeias de
caracteres ser realizado atravs de uma outra Mquina
Universal, denominada Mquina de Turing, a qual prova-se,
equivalente Norma.

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
14

o arranjo implementado usando o registrador A;


pn denota o n-simo nmero primo;
teste_div(A, C) um teste que retorna o valor verdadeiro, se a
diviso inteira do contedo de A pelo contedo de C zero, e o
valor falso, caso contrrio;
A := A / C denotada uma macro de diviso de dois registradores;
por simplicidade, na referncia a uma macro definida
anteriormente, omitida a referncia aos registradores usados. Por
exemplo: A:=AB usando C,D abreviada por A:= A B

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
15

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

a) Indexao Direta.
Programa Iterativo adA(n) usando C
C := pn;
A := A C
Programa Iterativo subA(n) usando C
C := pn;
(se teste_div(A, C)
ento A := A / C
seno 4)
Programa Iterativo zeroA(n) usando C
C := pn;
(se teste_div(A, C)
ento falso
seno verdadeiro)

b) Indexao Indireta.

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

Observao3.2: Arranjo Unidimensional Norma com 2 Registradores.


Usando a estrutura de arranjo unidimensional com indexao direta, podese mostrar que os registradores X e Y so suficientes para realizar
qualquer processamento;
De fato, suficiente usar X para armazenar um arranjo unidimensional
onde cada posio corresponde a um registrador (por exemplo: X, Y, A, B,
, correspondem s posies do arranjo indexadas por 0, 1, 2, 3, ).
Assim, para um determinado registrador K, as operaes e testes de
Norma:
adK, subK e zeroK podem ser simulados pelas operaes e
testes indexados introduzidos no Exemplo 3.13, ou seja, adX(k) usando
Y, subX(k) usando Y e zeroX(k) usando Y onde X(k) denota a k-sima
posio do arranjo em X.

EXEMPLO 3.14 Pilha.


Estruturalmente, a principal caracterstica de uma pilha que o
ltimo valor gravado o primeiro a ser lido.
empilha

desempilha

Programa Iterativo adA(B) usando C


C := primo(B)
A := A C
topo

Programa Iterativo subA(B) usando C


C := primo(B)
(se teste_div(A, C)
ento A := A / C
seno 4)
Programa Iterativo zeroA(B) usando C
C := primo(B)
(se teste_div(A, B)
ento falso
seno verdadeiro)

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
16

sentido
de
crescimento
base

Figura 3.1 Estrutura do tipo pilha

A base de uma pilha fixa e define o seu incio.


O topo varivel e define a posio do ltimo smbolo gravado.
definem-se as operaes empilha (adiciona o contedo de um registrador
no topo da pilha) e desempilha (retira o valor do topo e armazena em um
registrador).
Uma pilha pode facilmente ser simulada usando um arranjo e um
registrador de ndice (indexao indireta do arranjo) que aponta para o
topo da pilha.

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
17

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

3.3.4 Endereamento Indireto e Recurso

3.4 Mquina de Turing

Como definir desvios, usando endereamento indireto


(determinado pelo contedo de um registrador) em
programas do tipo monoltico?
EXEMPLO 3.15 Endereamento Indireto em um Programa Monoltico.

Uma operao com endereamento indireto da seguinte forma,


onde A um registrador:
r:
faa F v_para A
pode ser definida pelo seguinte programa monoltico:
r:
faa F v_para End_A

3.4.1 Noo Intuitiva

partida

Programa
Monoltico
End_A

f
A:=A-1

f
A:=A-1

parada

v
A=0

...
A:=A-1

v
A=0

A:=A+1

v
A=0

proposta por Alan Turing em 1936;


universalmente conhecida e aceita como formalizao de algoritmo;
trata-se de um mecanismo simples que formaliza a idia de uma pessoa
que realiza clculos;
possui, no mnimo, o mesmo poder computacional de qualquer
computador de propsito geral;
no constitui uma mquina, como definida anteriormente, mas sim um
programa para uma mquina universal.

A:=A+1

Figura 3.2 Fluxograma para tratar endereamento indireto

onde a macro End_A, trata o endereamento indireto de A (cada


circunferncia rotulada representa um desvio incondicional para
a correspondente instruo).
De forma anloga, possvel definir um teste com
endereamento indireto como segue, onde A e B so
registradores:
r: se T ento v_para A seno v_para B
____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
18

O ponto de partida de Turing foi analisar a situao na qual uma pessoa,


equipada com um instrumento de escrita e um apagador, realiza clculos
em uma folha de papel organizada em quadrados.
Inicialmente, a folha de papel contm somente os dados iniciais do
problema.
O trabalho da pessoa pode ser resumido em seqncias de operaes
simples como segue:
ler um smbolo de um quadrado;
alterar um smbolo em um quadrado;
mover os olhos para outro quadrado;
quando encontrada alguma representao satisfatria para a
resposta desejada, a pessoa termina seus clculos.
Para viabilizar esse procedimento, as seguintes hipteses so aceitveis:
a natureza bidimensional do papel no um requerimento essencial
para os clculos.
assumido que o papel consiste de uma fita infinita organizada em
quadrados (clulas);
conjunto de smbolos pode ser finito;
conjunto de estados da mente da pessoa durante o processo de
clculo finito.
existem dois estados em particular: estado inicial e estado final,
correspondendo ao incio e ao fim dos clculos, respectivamente;
comportamento da pessoa a cada momento determinado somente pelo
seu estado presente e pelo smbolo para o qual sua ateno est voltada;
a pessoa capaz de observar e alterar o smbolo de apenas um quadrado de
cada vez, bem como de transferir sua ateno somente para um dos
quadrados adjacentes.

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
19

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

3.4.2 Noo como Mquina

3.4.3 Modelo Formal

marcador de
incio de fita
fita

entrada

cabea
da fita
controle

branco

...

unidade de
controle

Figura 3.3 Fita e unidade de controle de uma Mquina de Turing

Fita.

Usada simultaneamente como dispositivo de entrada, de sada e


de memria de trabalho;
finita esquerda e infinita (to grande quanto necessrio)
direita, sendo dividida em clulas, cada uma das quais
armazenando um smbolo.
Os smbolos podem pertencer:
ao alfabeto de entrada,
ao alfabeto auxiliar
branco
b marcador de incio de fita

Inicialmente, a palavra a ser processada ocupa as clulas mais


esquerda, aps o marcador de incio de fita, ficando as demais
com branco.

Unidade de Controle

Reflete o estado corrente da mquina.


Possui um nmero finito e predefinido de estados.
Possui uma unidade de leitura e gravao (cabea da fita), a qual acessa
uma clula da fita de cada vez.
A cabea da fita l o smbolo de uma clula de cada vez e grava um novo
smbolo. Aps a leitura/gravao (a gravao realizada na mesma clula
de leitura), a cabea move-se uma clula para a direita ou esquerda.

Definio 3.4 Mquina de Turing.


Uma Mquina de Turing uma 8-upla: M =(,Q,,q0, F, V, , b)
alfabeto de smbolos de entrada;
Q conjunto de estados possveis da mquina, o qual finito;
programa ou funo de transio: ( uma funo parcial)
: Q ( V { , b }) Q ( V { , b }) { E, D }

q0
F
V

estado inicial da mquina, tal que q0 elemento de Q;


conjunto de estados finais, tal que F est contido em Q;
alfabeto auxiliar ;
smbolo especial branco;
smbolo especial marcador de incio da fita.

smbolo de incio de fita ocorre exatamente uma vez e sempre na


clula mais esquerda da fita, auxiliando na identificao de que
a cabea da fita se encontra na clula mais esquerda da fita.
A funo programa considera:
estado corrente p Q,
smbolo lido da fita au ( V { , b })
para determinar:
novo estado q Q,
smbolo a ser gravado av ( V { , b })
sentido de movimento da cabea esquerda (E) e direita
(D) m{E, D}

Programa ou Funo de Transio.

o programa comanda as leituras e gravaes, o sentido de movimento da


cabea e define o estado da mquina.
programa uma funo que, dependendo do estado corrente da mquina e
do smbolo lido, determina o smbolo a ser gravado, o sentido do
movimento da cabea e o novo estado.

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
20

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
21

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

O programa pode ser representado como um grafo finito


(p, au) = (q, av, m)
(au, av, m)

estado corrente
smbolo lido

novo estado
sentido do movimento

smbolo gravado
Figura 3.4 Representao da funo programa como um grafo

q0

qf

Figura 3.5 Representao de um estado inicial (esq.) e final (dir.) como nodos de grafos

O programa pode ser representado por uma Tabela de Transies


(p, au) = (q, av, m)

au

av

p
(q, av, m)
q

Figura 3.6 Representao da Funo Programa como uma tabela

O processamento de uma Mquina de Turing M=(,Q, , q0, F,

V, , b) para uma palavra de entrada w consiste na sucessiva


aplicao da funo programa, a partir do estado inicial q0 e da
cabea posicionada na clula mais esquerda da fita at ocorrer
uma condio de parada.
processamento de M para a entrada w pode parar ou ficar em
loop infinito.
____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
22

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

A parada pode ser de duas maneiras: aceitando ou rejeitando a


entrada w.
As condies de parada so as seguintes:
Estado Final.
A mquina assume um estado final: a mquina pra, e
a palavra de entrada aceita;
Funo Indefinida.
A funo programa indefinida para o argumento
(smbolo lido e estado corrente): a mquina pra, e a
palavra de entrada rejeitada;
Movimento Invlido.
O argumento corrente da funo programa define um
movimento esquerda e a cabea da fita j se
encontra na clula mais esquerda: a mquina pra, e
a palavra de entrada rejeitada.
Observao 3.6: Variaes sobre a Definio de Mquina de Turing.
Diversas variaes sobre a definio de Mquina de Turing so
adotadas.
Note-se que estas variaes no alteram o poder computacional do
formalismo.
As variaes mais significativas esto nas caractersticas da fita e
no movimento da cabea como, por exemplo:
Inexistncia do Marcador de Incio de Fita.
freqente no incluir um marcador de incio de fita. Assim, a
clula mais esquerda da fita contm o primeiro smbolo da
entrada (ou branco, se a entrada for vazia). Neste caso, ao definir
uma funo programa, deve-se tomar cuidado especial para
controlar quando a cabea da fita atinge o fim da mesma;
Cabea de Fita no se Move em uma Leitura/Gravao.
Na funo programa, possvel especificar, adicionalmente ao
movimento para esquerda ou direita, que a cabea permanea
parada (na clula de leitura/gravao). O principal objetivo dessa
variao facilitar a especificao da funo programa, bem
como reduzir o nmero de transies necessrias.
____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
23

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

EXEMPLO 3.16 Mquina de Turing Duplo Balanceamento.


Considere a linguagem:
Duplo_Bal = { anbn n 0 }
A Mquina de Turing:

3.4.4 Mquinas de Turing como Reconhecedores de


Linguagens
Uma das abordagens do estudo das Mquinas de Turing ou das
Mquinas Universais em geral como reconhecedores de
linguagens, ou seja, dispositivos capazes de determinar se uma dada
palavra sobre o alfabeto de entrada pertence ou no a uma certa
linguagem.

MT_Duplo_Bal=({a,b},{q0, q1, q2, q3, q4}, , q0, {q4}, {A,B}, , b)


ACEITA(MT_Duplo_Bal) = Duplo_Bal
REJEITA(MT_Duplo_Bal) = * - Duplo_Bal
LOOP(MT_Duplo_Bal) =

Definio 3.7 Linguagem Aceita por uma Mquina de Turing.


Seja M = (, Q, , q0, F, V, , b) uma Mquina de Turing.
Ento:
a) A linguagem aceita por M, denotada por ACEITA(M) ou L(M), o
conjunto de todas as palavras pertencentes a * aceitas por M, ou
seja:
ACEITA(M)={wM ao processar w*, pra em um estado qfF}
b) A linguagem rejeitada por M, denotada por REJEITA(M), o
conjunto de todas as palavras de * rejeitadas por M, ou seja:
REJEITA(M) = {wM ao processar w*, pra em um estado q F}
c) A linguagem para a qual M fica em loop infinito, denotada por
LOOP(M) conjunto de todas as palavras de * para as quais M
fica processando indefinidamente.

(A, A, D)

q0

(a, A, D)

(I, I, D)
(B, B, D)

(, , D)

q3

q1

(b, B, E)

(a, a, D)
(B, B, D)

q2

(a, a, E)
(B, B, E)

(B, B, D)

(, , E)

As seguintes afirmaes so verdadeiras:

ACEITA(M) REJEITA(M) =
ACEITA(M) LOOP(M) =
REJEITA(M) LOOP(M) =
ACEITA(M) REJEITA(M) LOOP(M) =
ACEITA(M) REJEITA(M) LOOP(M) = *

*
ACEITA(M)

REJEITA(M)

LOOP(M)

Conseqentemente, o complemento de:

ACEITA(M) REJEITA(M) LOOP(M)


REJEITA(M) ACEITA(M) LOOP(M)
LOOP(M) ACEITA(M) REJEITA(M)

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
24

q4

q0
q1
q2
q3
q4

b
(q0, b, D)

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

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

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

(q4, , D)

(q4, , E)

Figura 3.8 Grafo e tabela de transies da Mquina de Turing Duplo_Bal

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
25

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

programa reconhece o primeiro smbolo a, o qual marcado como


A, e movimenta a cabea da fita para a direita, procurando o b
correspondente, o qual marcado como B.
Esse ciclo repetido sucessivamente at identificar, para cada a, o
seu correspondente b.
programa garante que qualquer outra palavra que no esteja na
forma anbn rejeitada.
Note que o smbolo de incio de fita no tem influncia na soluo.

Critrio para o Reconhecimento de Linguagens.


Se a mquina pra para toda palavra da linguagem sobre o
alfabeto de entrada, ela reconhecida pela Mquina de Turing.
Definio 3.8 Linguagem Enumervel Recursivamente.
Uma linguagem aceita por uma Mquina de Turing dita
enumervel recursivamente.

Enumervel deriva do fato de que as palavras de qualquer linguagem


enumervel recursivamente podem ser enumeradas ou listadas por uma
Mquina de Turing.
Recursivamente um termo matemtico, anterior ao computador, com
significado similar ao de recurso, utilizado na computao.

Seqncia do processamento da Mquina de Turing Duplo_Bal para a


entrada w = aabb.
I

...

q0

...

...

...

q2

...

...

...

...

...

...

...

q1

...

q2

B
q3

...

A classe das linguagens Enumerveis Recursivamente inclui as


linguagens livre do contexto e algumas outras linguagens para as
quais no se pode, mecanicamente, determinar se uma dada palavra
pertence ou no linguagem.
Se L uma dessas linguagens, ento para qualquer mquina M
que aceita a linguagem L, existe pelo menos uma palavra w, no
pertencente a L, que, ao ser processada por M, resulta que a
mquina entre em loop infinito.
a) Se w pertence a L, M pra e aceita a entrada;
b) Se w no pertence a L, M pode parar, rejeitando a palavra,
ou permanecer processando indefinidamente (loop).

q2

q1

q2

q1

q0

q0

q1

q0

...

q3

q4

Figura 3.9 Computao de uma Mquina de Turing

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
26

...

EXEMPLO 3.17 Linguagem Enumervel Recursivamente.


As seguintes linguagens so exemplos de linguagens Enumerveis
Recursivamente.
a) Duplo_Bal = { anbn / n 0}
b) Triplo_Bal = { anbncn / n 0}
c) Palavra_Palavra = { ww / w palavra sobre os smbolos a e b}
d) { w / w tem o mesmo nmero de smbolos a que b}
e) { ai bj ck / i=j ou j=k}

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
27

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

Uma sub-classe da Classe das Linguagens Enumervel


Recursivamente, denominada Classe das Linguagens Recursivas,
composta pelas linguagens para as quais existe pelo menos uma
Mquina de Turing que pra para qualquer entrada, aceitando ou
rejeitando.

3.4.5 Mquinas de Turing como Processadores de Funes

Definio 3.9 Linguagem Recursiva.


Uma linguagem dita recursiva se existe uma Mquina de
Turing tal que:
ACEITA(M) = L
REJEITA(M) = * - L.
LOOP(M) =
Pode-se afirmar que a classe das Linguagens Recursivas representa
todas as linguagens que podem ser reconhecidas mecanicamente.
Existem conjuntos que no so Enumerveis Recursivamente, ou seja,
linguagens para as quais no possvel desenvolver uma MT que as
reconhea. O cardinal do conjunto dessas linguagens que no so
Enumerveis Recursivamente infinito.

EXEMPLO 3.18 Linguagem Recursiva


So exemplos de linguagens recursivas:
a) Duplo_Bal = { anbn / n 0}
b) Triplo_Bal ={ anbncn / n 0}
c) { w / w{a,b}* tem o dobro de smbolos a que b}
Propriedades das linguagens recursivas:
a) Se uma linguagem L sobre um alfabeto qualquer
recursiva, ento seu complemento, ou seja, *-L, recursivo.
b) Uma linguagem L sobre um alfabeto qualquer recursiva
se, e somente se, L e seu complemento so enumerveis
recursivamente.
c) A Classe das Linguagens Recursivas est contida
propriamente na Classe das Linguagens Enumerveis
Recursivamente.
____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
28

O estudo restrito s funes de mapeamento de palavras de um


alfabeto em uma palavra do mesmo alfabeto.
Definio 3.10 Funo Turing-Computvel.
Uma funo parcial:
f: (*)n *
dita Funo Turing-Computvel ou simplesmente Funo
Computvel se existe uma Mquina de Turing:
M = ( { # }, Q, , q0, F, V, , b)
que computa f, ou seja:
a) Para (w1, w2, , wn) (*)n, tem-se que a palavra de entrada para
M :
b w1 w2 wn
b) Se f definida para (w1, w2, , wn), ento o processamento de M
para a entrada b w1 w2 wn tal que:
pra (aceitando ou rejeitando);
o contedo da fita (excetuando-se os smbolos brancos):
bw
c) Se f indefinida para (w1, w2, , wn), ento M, ao processar a
entrada b w1 w2 wn , fica em loop infinito.

Observao 3.11: Funo Turing-Computvel Condio de Parada.


Na definio acima, considerado como resultado do
processamento de M somente o contedo gravado na fita, sendo
irrelevante o estado de parada da mquina.
Portanto, relativamente a funo computvel, um processamento
que pra em um estado no-final perfeitamente vlido.
o
Definio 3.13 Funo Turing-Computvel Total.
Uma funo total:
f: (*)n *
dita Funo Turing-Computvel Total ou simplesmente Funo
Computvel Total se existe uma Mquina de Turing M = (, Q, ,
q0, F, V, , b) que computa f e sempre pra para qualquer entrada.
____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
29

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

EXEMPLO 3.19 Mquina de Turing Concatenao.


A funo concatenao: ({ a, b }*)n { a, b }*

EXEMPLO 3.20 Mquina de Turing Funo Quadrado.

A funo quadrado: { 1 }* { 1 }* tal que associa o valor natural n,


representado em unrio, ao valor n2 (tambm em unrio).
A Mquina de Turing:
Quadr = ({1}, { q0, q1, q2, ..., q13 }, , q0, { q13 }, { A, B, C}, , b)

tal que associa ao par (w1, w2) a palavra w1w2.


A Mquina de Turing:
Conc = ({ a, b, # }, { q0, q1, q2, q3, q4 }, , q0, { q4 }, , , b)

q0
q1
q2
q3
q4

b
(q0, b, D)

a
(q0, a, D)
(q2, , E)
(q2, a, E)
(q2, b, E)

b
(q0, b, D)
(q3, , E)
(q3, a, E)
(q3, b, E)

q0

#
(q0, #, D)
(q4, , E)
(q4, a, E)
(q4, b, E)

(q1, , E)

(I, I, D)
(a, a, D)
(b, b, D)
(#, #, D)

(, , E)

(#, , E)
q1
(a, , E)

(b, , E)
(b, a, E)

(a, a, E)

q2

q3

(b, b, E)

(a, b, E)
(#, a, E)

(#, b, E)
q4

Figura 3.10 Tabela de Transies e Grafo da Mquina de Turing - Concatenao

O programa recebe como entrada a palavra: b w1 # w2.

posiciona a cabea no ltimo smbolo da palavra de entrada.


move a cabea para a esquerda at encontrar o smbolo #, quando pra.
Enquanto move a cabea, ao ler um smbolo, grava sobre este o smbolo
lido anteriormente.
A memorizao do smbolo anterior realizada pelos estados como segue:
q2 memoriza que o smbolo anterior a;
q3 memoriza que o smbolo anterior b.
____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
30

q0
q1
q2
q3
q4
q5
q6
q7
q8
q9
q10
q11
q12
q13

b
(q0, b, D)

1
(q1, A, D)
(q1, 1, D)
(q2, 1, E)

(q0, A, D)

(q13, b, D)
(q5, A, D)
(q7, b, D)

(q6, 1, E)
(q8, A, D)
(q9, A, D)
(q9, 1, D)
(q10, 1, E)
(q12, 1, E)

(q13, b, D)

B
(q0, B, D)
(q1, B, D)
(q2, B, E)
(q4, , E)
(q4, B, E)
(q6, C, E)

(q8, A, D)

(q3, , E)
(q2, B, E)

(q12, , E)
(q6, C, E)

(q9, B, D)
(q10, B, E)
(q6, C, E)

(q12, 1, E)

(q11, C, D)
(q9, C, D)
(q10, C, E)
(q11, C, D)
(q12, 1, E)

(q10, 1, E)

O programa recebe como entrada a palavra:


b n1 , onde n1 denota o
valor n representado em unrio sobre { 1 }.
(n1)2 simplesmente n1 concatenado consigo mesmo n vezes, ou seja:
(n1)2 = n1 n1 .... n1 (n vezes)
A concatenao obtida por:
Em q0, q1 e q2, gerado bnA nB (nA e nB so em unrio sobre {A} e {B});
Em q0, q3 e q4, retirado um smbolo B de nB, resultando em nA (n-1)B
Em q5 at q11, a subpalavra (n-1)B usada para controlar concatenaes
sucessivas, resultando em b nA (n-1)C (n-1)1 (n-1)1 ... (n-1)1, onde (n-1)1
repetida n-1 vezes
Em q12, as subpalavras nA(n-1)C so substitudas por n1(n-1)1, resultando em
b n1 (n-1)1 (n-1)1 (n-1)1 ... (n-1)1 onde (n-1)1 repetida n vezes
ou seja, o comprimento da palavra resultante :

n + (n-1) * n = n + (n2 - n) = n2
____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
31

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

(I, I, D)
(B, B, D)

q0

(1, 1, D)
(B, B, D)
(1, A, D)

(1, 1, E)
(B, B, E)

UNIVERSAIS

3.4.6 Equivalncia entre as Mquinas de Turing e Norma

q2

Reforam-se as evidncias de que ambas so Mquinas Universais


Resumidamente, a prova como segue:

(A, A, D)

(, , E)

MQUINAS

________________________________________________________________________________________

Prova-se que a Mquina de Turing equivalente Mquina Norma.

(, B, E)

q1

a) Turing Norma.
A estrutura de fita da Mquina de Turing simulada em
Norma usando uma estrutura de arranjo unidimensional;

(I, I, D)
q3

(B, , E)

(B, B, E)

(C, C, D)
(B, B, D)
(1, 1, D)

q4
q7

(A, A, D)

q5

(A, 1, E)
(C, C, E)

(B, C, E)

q9
(1, A, D)
(, 1, E)

(I, I, D)

(1, A, D)
q8

q6
(C, C, D)

(, , E)
(B, C, E)

(A, 1, E)
(C, 1, E)

(I, I, D)

A Mquina de Turing pode simular os dois registradores X e


Y como segue:
O contedo de cada registrador (valor natural)
implementado de forma unria em Turing;
O registrador X ocupa as clulas mpares da fita, e
Y, as pares.

(A, A, D)
q11

q10

(C, C, D)

(C, C, E)
(B, B, E)
(1, 1, E)

q12
(1, 1, E)

b) Norma Turing.
Conforme observado anteriormente os registradores X e Y so
suficientes para realizar qualquer processamento em Norma.

Lembre-se de que, no conceito de simulao, necessrio


considerar funes de codificao e decodificao para permitir
comparar mquinas com diferentes conjuntos de entrada e sada.

q13

Figura 3.12 Grafo da Mquina de Turing Funo Quadrado

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
32

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
33

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

Teorema 3.15 Mquina de Turing Mquina Norma.


O formalismo Mquina de Turing pode ser simulado
pelo formalismo Mquina Norma.
Prova:

Suponha uma Mquina de Turing M = (, Q, , q0, F, V, , b).


Ento, a simulao de M por um programa P em Norma pode ser
definida como segue:
Fita
A fita codificada como um arranjo unidimensional em X, sendo
que cada clula da fita corresponde a uma posio do arranjo.
O smbolo de cada clula codificado como um nmero natural
como segue: para um alfabeto = {a1, a2, , an}, o smbolo ai
codificado como o natural i, e os smbolos especiais e b como
zero e n+1, respectivamente.
Estados

Para os estados de Q ={q0, q1,, qn} em M, o programa P possui


correspondentes instrues rotuladas por 0, 1, , n;
O rtulo inicial de P 0 (pois q0 o estado inicial de M), e, para qualquer
qf F, f rtulo final;

Estado Corrente

O estado corrente de M simulado em Norma usando o registrador Q, o qual


assume valores em { 0, 1, , n } (correspondendo aos estados q0, q1, , qn);

Cabea da Fita

A posio corrente da cabea da fita de M simulada usando o registrador C


de Norma, o qual contm a posio corrente do arranjo em X e inicializado
com o valor 1;

Funo Programa
A funo programa de M pode ser simulada por um programa P de
Norma
Uma transio de M da forma: (qu, ar) = (qv, as, m)
onde m assume valores em { E, D } (esquerda e direita) simulada pelo trecho
de programa:

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
34

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

u:

a:
a1:
a2:

faa A := 2Q 3X(C) v_para End_A


faa X(C) := s v_para a1
faa adC v_para a2
faa Q := v v_para End_Q

grava na fita
move a cabea
novo estado

Observe que:
1) No programa, suposto que o movimento da cabea da fita
para a direita, e, portanto adicionado 1 ao registrador C; caso
o movimento seja para a esquerda, necessrio subtrair 1;
2)

A transio depende do estado corrente qu e do smbolo lido ar.


Assim, na instruo rotulada por u, especificado um desvio
incondicional para uma instruo rotulada pelo par (u, r),
usando a codificao de n-uplas;

3)

As macros End_A e End_Q referem-se ao endereamento


indireto definido anteriormente. O contedo do registrador A
denotado por a.

Rtulo final

A cada rtulo final f corresponde o seguinte trecho de programa em P, o qual


especifica que o contedo de X ("fita") atribudo a Y (pois em Norma a
funo de sada retorna o valor do registrador Y):

f: faa Y := X v_para fim

fim:
Decodificao.
o inverso da codificao acima.

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
35

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

Teorema 3.16 Mquina Norma Mquina de Turing


O formalismo Mquina de Norma pode ser simulado
pelo formalismo Mquina Turing.
Prova:
Seja o programa monoltico P de Norma, com somente dois
registradores X e Y
A simulao do programa P de Norma por uma Mquina de
Turing M = (, Q, , q0, F, V, , b) onde o alfabeto o
conjunto unrio { 1 } pode ser definida como segue:
Registrador X
contedo inicial do registrador X codificado em unrio na clulas
pares da fita de M.
se o natural em X x, ento x clulas pares da fita possuem o
smbolo 1.
Registrador Y
Analogamente ao registrador X, o registrador Y armazenado na fita em
unrio, mas nas clulas mpares (excetuando-se a primeira, que contm o
marcador de incio de fita b);

Rtulos
A cada rtulo r de instruo de P corresponde um estado qr de M. Aos rtulos
inicial e finais correspondem os estados inicial e finais, respectivamente;
Programa - Uma instruo rotulada de P da seguinte forma

ADIO

r:

faa adK v_para s

pode ser simulada por um trecho da funo programa de M resumido:


1) No estado qr, move a cabea, pesquisando as clulas pares (caso
K = X) ou mpares (caso K = Y) at encontrar o primeiro branco,
o qual substitudo pelo smbolo 1;
2)

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

SUBTRAO r:

faa subK v_para s

pode ser simulada por um trecho da funo programa de M resumido


1) No estado qr, move a cabea, pesquisando as clulas pares (caso
K = X) ou mpares (caso K = Y) at encontrar o ltimo smbolo
1, o qual substitudo por um branco. Caso a primeira clula
pesquisada j contenha o smbolo branco, nada substitudo;
2)

TESTE r:

Reposiciona a cabea no incio da fita e assume o estado qs

se zeroK v_para s seno v_para t

pode ser simulada por um trecho da funo programa de M resumido como


segue:
1) No estado qr, move a cabea, pesquisando a primeira clula par
(caso K = X) ou mpar (caso K = Y);
2)

Caso a clula pesquisada contenha o smbolo branco, reposiciona


a cabea no incio da fita e assume o estado qs; caso contrrio,
reposiciona a cabea no incio da fita e assume o estado qt.

Codificao.
contedo inicial do registrador X codificado em unrio nas
clulas pares da fita de M;
Decodificao.
o inverso da codificao acima.

Reposiciona a cabea no incio da fita e assume o estado qs;

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
36

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
37

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

3.5 Outros Modelos de Mquinas Universais

3.5.1 Mquina de Post

Mquina de Post.

Uma Mquina de Post consiste de duas partes:


Varivel X.
Trata-se de uma varivel do tipo fila e utilizada como entrada,
sada e memria de trabalho.
A varivel X no possui tamanho nem limite fixos. Seu
comprimento igual ao comprimento da palavra corrente
armazenada.
Os smbolos podem pertencer ao alfabeto de entrada ou a { # },
nico smbolo auxiliar.
Inicialmente, o valor de X a palavra de entrada. Caso X no
contenha smbolos, a entrada vazia, representada por .

A principal caracterstica da Mquina de Post que usa uma


estrutura de dados do tipo fila para entrada, sada e memria
de trabalho.
Estruturalmente, a principal caracterstica de uma fila que o
primeiro valor gravado tambm o primeiro a ser lido (uma
leitura exclui o dado lido).
gravao
de
dados

leitura
de
dados
dados armazenados

incio
da
fila

fim
da
fila

Figura 3.13 Estrutura do tipo fila

Mquina com Duas Pilhas.


A principal caracterstica da Mquina de Duas Pilhas que usa
estrutura do tipo pilha como memria de trabalho.
So necessrias duas pilhas para que a Mquina seja, de fato,
Universal.
empilha

desempilha

topo

Programa.
uma seqncia finita de instrues, representado como um
diagrama de fluxos (espcie de fluxograma), no qual cada vrtice
uma instruo.
As instrues podem ser de quatro tipos: partida, parada, desvio
(leitura com teste) e atribuio.
Definio 3.17 Mquina de Post.
Uma Mquina de Post uma tripla: M = (, D, #)
onde:
alfabeto de smbolos de entrada;
D programa ou diagrama de fluxos construdo a partir de
componentes elementares denominados partida, parada,
desvio e atribuio;
# smbolo auxiliar.

sentido
de
crescimento
base

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
38

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
39

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

Componentes elementares de um diagrama de fluxos

EXEMPLO 3.21 Mquina de Post Duplo Balanceamento.

a) Partida. Existe somente uma instruo de incio em um programa


b) Parada. Existem duas alternativas de instrues de parada em um programa,
uma de aceitao e outra de rejeio:

partida

rejeita

aceita

Considere a seguinte linguagem


Duplo_Bal = { anbn n 0 }
A Mquina de Post:
Post_Duplo_Bal = ({ a, b }, D, #)
onde D , como ilustrado abaixo, tal que:
ACEITA(Post_Duplo_Bal) = Duplo_Bal
REJEITA(Post_Duplo_Bal) = * - Duplo_Bal
LOOP(Post_Duplo_Bal) = .
partida

c) Desvio (ou leitura com teste). X ler (X)


denota o comando que l o smbolo mais esquerda da palavra armazenada
em X, retirando o primeiro smbolo.
uma instruo composta de uma leitura do smbolo esquerda (incio da
fila), excluindo-o da fila e desviando o fluxo do programa de acordo com o
smbolo lido;
fluxo do programa determinado de acordo com o smbolo mais esquerda
da palavra.
deve ser prevista a possibilidade de X conter a palavra vazia.
Portanto, um desvio condicional, e trata-se de uma funo total, estando
definida para todos os valores do domnio.
Se o cardinal de n, ento existem n+2 arestas de desvios condicionais,
pois se deve incluir as possibilidades # e ,

X X#

a2

...

an

d) Atribuio. XXs

uma instruo de concatenao, gravando o smbolo indicado (pertencente


a { # }) direita da palavra armazenada na varivel X (fim da fila).
A operao de atribuio representada a seguir, supondo que s { # }.

X Xs

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
40

b
X Xb

rejeita

#
aceita

#,
rejeita

ler (X)

X Xa

XLer (X)

a1

b,

a
X

ler (X)

ler (X)

#
X X#

a,
rejeita

algoritmo l e remove o primeiro smbolo a;


realiza uma varredura circular em busca do correspondente b.
Essa varredura realizada atravs de sucessivas leituras (e remoes),
armazenando o smbolo lido direita de X.
Ao encontrar o b, este removido, e uma nova varredura circular
realizada at o fim da palavra de entrada (identificado pelo smbolo
auxiliar #, atribudo a X no incio do processamento).
Este ciclo repetido at restar a palavra vazia ou ocorrer alguma condio
de rejeio.
____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
41

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

Teorema 3.18 Mquina de Turing Mquina de Post.


O formalismo Mquina de Turing pode ser simulado pelo
formalismo Mquina de Post.
Prova:
Seja a Mquina de Turing M = (, Q, , q0, F, V, , b).
A simulao por uma Mquina de Post M =( V ,D, #)
pode ser definida como segue:
a) Fita.

c) Movimento para a Direita.

A fita simulada pela varivel X, e a posio corrente da cabea da fita


representada pela primeira posio da fila (ou varivel); o smbolo especial #
introduzido para indicar na varivel X o que estava esquerda da cabea da fita,
a partir do incio da fita;
I

a1

a2

a4

a3

...

an

...

antes

a1

a2

a3

a4

...

an

...

a3

a4

...

an

...

controle

depois

a1

A2

controle

contedo da varivel X antes do movimento


X = a2 a3 a4 ... an # a1

controle

Para simular o movimento para a direita da cabea necessrio


alterar o contedo de X como segue, o que trivial:

X = a3 a4 ... an # a1 a2

b) Movimento para a Esquerda.


antes

a1

a2

a3

a4

...

an

...

controle

depois

a1

a2

A3

a4

...

an

...

controle

Se o contedo da varivel X antes do movimento o seguinte:


X= a3 a4 ... an # a1 a2
Simular o movimento para a esquerda da cabea e a substituio do
smbolo a3 por A3, necessrio alterar o contedo de X como segue:
X = a2 A3 a4 ... an # a1
Para tal so necessrios tantos testes (desvios) e atribuies quantos forem
os smbolos da palavra corrente.
____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
42

X = a3 a4 ... an # a1 A2

d) Estados.
A simulao dos estados como segue:
Estado Inicial. Simulado pela instruo partida;
Estados Finais. Simulados pela instruo aceita;
Demais Estados. Cada estado corresponde a uma instruo
desvio (leitura com teste);
e) Condies de Rejeio.
As condies de rejeio da Mquina de Turing (funo
programa indefinida ou movimento invlido) so simuladas em
Post por rejeita.

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
43

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

a) Varivel X.
A varivel X simulada pela fita, e a posio mais esquerda da fila
representada pela posio da cabea da fita.
Para X = a1 a2 a3 ... am #am+1 ... an
a1

a2

a3

...

am

am+1

...

an

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

Teorema 3.19 Mquina de Post Mquina de Turing


O formalismo Mquina de Post pode ser simulado pelo
formalismo Mquina de Turing.
Prova:
Suponha uma Mquina de Post M = (, D, #).
A simulao de M por uma Mquina de Turing
M = (, Q, , q0, F, { # }, , b) pode ser definida por:

c) Atribuio. XXs.
A concatenao de um smbolo s deve sempre ser direita do
contedo da varivel X (ou seja, no fim da fila).
Para o contedo de X
X = a1 ... am #am+1 ... an
resulta em
X = a1 ... am #am+1 ... ans
o que pode ser simulado pela Mquina de Turing:
Move-se a cabea para o fim da fita, grava-se o smbolo s e retornase para a posio correspondente ao primeiro smbolo da fila.
antes

a1

...

am

am+1

...

an

...

...

am

am+1

...

an

...

...
controle

controle
depois

b) Desvio. X ler(X).
Se o contedo da varivel X : X = a1 a2 a3 ... am #am+1 ... an
A leitura e remoo do smbolo mais esquerda resulta em:
X = a2 a3 ... am #am+1 ... an
Isso pode ser simulado pela alterao da fita e cabea da fita
I

a1

a2

a3

...

am

am+1

...

an

...

antes
controle
I

a2

a3

...

am

am+1

...

an

...

depois
controle

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
44

a1

controle

d) Partida.
A instruo partida pode ser simulada em uma Mquina de Turing
usando o estado inicial
e) Aceita.
Uma instruo aceita pode ser simulada em uma Mquina de Turing
usando um estado final
f) Rejeita.
Uma instruo rejeita pode ser simulada em uma Mquina de Turing
usando uma condio excepcional de parada (como um movimento
invlido).
____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
45

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

3.5.2 Mquina com Pilhas

As componentes elementares de um diagrama de fluxos so:


a) Partida. Existe somente uma instruo de incio (partida) em um
programa.
b) Parada. Existem duas alternativas de instrues de parada em um
programa: uma de aceitao (aceita), e outra de rejeio (rejeita).

Definio 3.20 Mquina com Pilhas.


Uma Mquina com Pilhas uma dupla:
M = (, D) onde:
alfabeto de smbolos de entrada;
D programa ou diagrama de fluxos construdo a partir de
componentes elementares denominados partida, parada,
desvio, empilha e desempilha.
Uma Mquina com Pilhas consiste, basicamente, de trs partes:
a) Varivel X. De entrada, similar da Mquina de Post, mas usada
somente para entrada;
b) Variveis Yi. Do tipo pilha, utilizadas como memria de trabalho;
c) Programa. uma seqncia finita de instrues, representado como
um diagrama de fluxos onde cada vrtice uma instruo.
As instrues podem ser de cinco tipos: partida, parada, desvio,
desempilha e empilha.
A varivel X no possui tamanho nem limite fixos. Os smbolos
pertencem ao alfabeto de entrada. Inicialmente, o valor de X a
palavra de entrada, e seu comprimento igual ao comprimento da
palavra corrente armazenada. Caso X no contenha smbolos, a
entrada vazia, representada por .
As variveis Yi, em nmero varivel mas finito, tambm no
possuem tamanho nem limite fixos, e os smbolos pertencem ao
alfabeto de entrada. Inicialmente, o valor de cada pilha Yi a
palavra vazia, e seu comprimento igual ao comprimento da
palavra corrente armazenada.

partida

rejeita

aceita

c) Desvio (ou Teste) e Desempilha. Determinam o fluxo do programa

de acordo com o smbolo mais esquerda da palavra armazenada


na varivel X (desvio) ou no topo da pilha Yi (desempilha).
So desvios condicionais. Se o cardinal de n, ento existem
n+1 arestas de desvios condicionais, pois se deve incluir a
possibilidade da palavra vazia .
X ler(X) denota uma leitura destrutiva, que l o smbolo mais
esquerda de X ou do topo de Yi, retirando o smbolo lido.
Yi ler(Yi)

X ler(X)

a1

a2

...

an

a1

a2

...

an

d) Empilha. Empilha um smbolo s no topo da pilha indicada, ou


seja, concatena o smbolo na extremidade da palavra armazenada na
varivel Yi.
Yi sYi

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
46

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
47

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

em um diagrama de fluxos, existe somente uma instruo de


partida, mas podem existir diversas (zero ou mais) instrues de
parada, tanto de aceitao como de rejeio;
uma palavra de entrada aceita ou rejeitada, se a computao,
iniciada com a varivel X contendo a entrada, atingir uma
instruo aceita ou rejeita, respectivamente;
em um desvio (respectivamente, desempilha), se X
(respectivamente, Yi) contm a palavra vazia , ento segue o
fluxo correspondente; caso contrrio, l o smbolo mais
esquerda de X (respectivamente, no topo de Yi) e o remove aps
a deciso de qual aresta do fluxo indica a prxima instruo.

As seguintes concluses podem ser estabelecidas sobre o


nmero de pilhas e o poder computacional das mquinas com
pilhas:

MQUINAS

EXEMPLO 3.22 Mquina com Pilhas Duplo Balanceamento.


Considere a seguinte linguagem
Duplo_Bal = { anbn n 0 }
A Mquina com Pilhas:
Pilhas_Duplo_Bal = ({ a, b }, D)
onde D tal que:
ACEITA(Pilhas_Duplo_Bal) = Duplo_Bal
REJEITA(Pilhas_Duplo_Bal) = * - Duplo_Bal
LOOP(Pilhas_Duplo_Bal) =
partida

Y ler(Y)

Y aY

b,

rejeita

a
b

c) Mquina com Duas Pilhas. Conforme ser verificado adiante, a


Classe das Mquinas com Duas Pilhas possui o mesmo poder
computacional que a Classe das Mquinas de Turing ou de Post;

X ler(X)
b

a) Mquina Finita. Uma Mquina Finita, que corresponde a uma


Mquina Sem Pilhas, possui um poder computacional relativamente
restrito, pois no tem memria auxiliar para armazenar informaes
de trabalho. Por exemplo, no existe Mquina Sem Pilha capaz de
reconhecer um duplo balanceamento como em { anbn n 0 }.
b) Mquina com Uma Pilha. A Classe das Mquinas com Uma Pilha,
embora mais poderosa que a Classe das Mquinas Finitas, ainda
possui uma capacidade computacional restrita. Por exemplo, no
existe Mquina com Uma Pilha capaz de reconhecer um triplo
balanceamento como em { anbncn n 0 } .

UNIVERSAIS

________________________________________________________________________________________

X ler(X)

rejeita

Y ler(Y)

a,b

rejeita

aceita

Figura 3.27 Diagrama de Fluxo da Mquina com Pilhas Duplo Balanceamento

d) Mquina com Mais de Duas Pilhas. A Classe das Mquinas com


Mais de Duas Pilhas possui o mesmo poder computacional que a
Classe das Mquinas com Duas Pilhas. Ou seja, para qualquer
mquina com mais de duas pilhas, possvel construir uma
equivalente com, no mximo, duas pilhas que realiza o mesmo
processamento.

O algoritmo l o prefixo de smbolos a e empilha na nica pilha


utilizada Y. Aps, para cada smbolo b em X deve existir um
correspondente a em Y.

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
48

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
49

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

EXEMPLO 3.23 Mquina com Pilhas Triplo Balanceamento.


Considere a seguinte linguagem
Triplo_Bal = { anbncn n 0 }
A Mquina com Pilhas: Pilhas_Triplo_Bal = ({ a, b, c }, D)
onde D tal que:

EXEMPLO 3.24 Mquina com Pilhas Prefixo.


Considere a seguinte linguagem:

ACEITA(Pilhas_Triplo_Bal) = Triplo_Bal
REJEITA(Pilhas_Triplo_Bal) = * - Triplo_Bal
LOOP(Pilhas_Triplo_Bal) =

X ler(X)

rejeita

a,b,c

Pilhas_Prefixo_aaa = ({ a, b }, D) onde D tal que:


ACEITA(Pilhas_Prefixo_aaa ) = Prefixo_aaa
REJEITA(Pilhas_Prefixo_aaa ) = * - Prefixo_aaa
LOOP(Pilhas_Prefixo_aaa ) =

partida

Y1 aY1

Prefixo_aaa={ww{a,b}* e w contm a subpalavra aaa como prefixo}

partida

rejeita

Y1 ler(Y1)

Y1 ler(Y1)

b,c,

rejeita

X ler(X)

X ler(X)

a,

X ler(X)

rejeita

c
Y1 ler(Y1)

rejeita

X ler(X)
a,c,

rejeita

X ler(X)

rejeita

a,b

rejeita

Y2 ler(Y2) a,b,c

rejeita

b,

rejeita

b
c

b,

a
a,b,c

Y2 ler(Y2)

rejeita

Y2 bY2

aceita

b,

a,b

X ler(X)

aceita

Note-se que foram usadas duas pilhas. O algoritmo l o prefixo de smbolos a e


empilha-os em Y1. Aps, para cada smbolo b em X, deve existir um
correspondente a em Y1. Adicionalmente, empilha a subpalavra de smbolos b
em Y2. Por fim, para cada c em X, deve existir um correspondente b em Y2.
____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
50

aceita
Figura 3.29 Diagrama de Fluxo da Mquina com Pilhas Prefixo

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
51

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

3.5.3 Autmato com Duas Pilhas

Autmato com Duas Pilhas ou simplesmente Autmato com


Pilhas possui a memria de entrada separada das memrias de
trabalho e de sada.
Essas estruturas auxiliares so do tipo pilha, e cada mquina
possui duas pilhas.

Um Autmato com Pilhas composto por:


a) Fita. Dispositivo de entrada que contm a informao a ser
processada;
b) Duas Pilhas. Memrias auxiliares que podem ser usadas livremente
para leitura e gravao;
Uma pilha dividida em clulas, armazenando, cada uma, um
smbolo do alfabeto auxiliar (pode ser igual ao alfabeto de entrada).
Em uma estrutura do tipo pilha, a leitura ou gravao sempre na
mesma extremidade (topo). No possui tamanho fixo e nem
mximo, sendo seu tamanho corrente igual ao tamanho da palavra
armazenada. Seu valor inicial vazio.
c) Unidade de Controle. Reflete o estado corrente da mquina. Possui
uma cabea de fita e uma cabea para cada pilha;
A unidade de controle possui um nmero finito e predefinido de
estados. Possui uma cabea de fita e uma cabea para cada pilha:
Cabea da Fita. Unidade de leitura que acessa uma clula da fita
de cada vez e movimenta-se exclusivamente para a direita.
Cabea da Pilha. Unidade de leitura e gravao para cada pilha
que move para cima ao gravar e para baixo ao ler um smbolo.
Acessa um smbolo de cada vez, estando sempre posicionada no
topo. A leitura exclui o smbolo lido.
d) Programa ou Funo de Transio. Comanda a leitura da fita, a
leitura e gravao das pilhas e define o estado da mquina.
programa uma funo parcial que, dependendo do estado
corrente, smbolo lido da fita e do smbolo lido de cada pilha,
determina o novo estado e o smbolo a ser gravado em cada pilha.

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
52

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

Definio 3.21 Autmato com Duas Pilhas.


Um Autmato com Duas Pilhas ou simplesmente Autmato com
Pilhas M uma 6-upla:
M = (, Q, , q0, F, V)
onde:
alfabeto de smbolos de entrada;
Q conjunto de estados possveis do autmato, o qual finito;
funo programa ou de funo de transio:
:Q ( { ,? }) (V { ,? }) (V { ,? }) Q (V { }) (V { })

a qual uma funo parcial;


q0 estado inicial do autmato, tal que q0 elemento de Q;
F conjunto de estados finais, tal que F est contido em Q;
V alfabeto auxiliar.
As seguintes caractersticas da funo programa devem ser
consideradas:
a funo pode no ser total, ou seja, pode ser indefinida para
alguns argumentos do conjunto de partida; a omisso do
parmetro de leitura, representada por "?", indica o teste da
correspondente pilha vazia ou de toda a palavra de entrada lida;
o smbolo na leitura da fita ou de alguma pilha indica que o
autmato no l nem move a cabea. Note-se que, pelo menos
uma leitura deve ser realizada ou sobre a fita ou sobre alguma
pilha;
o smbolo na gravao indica que nenhuma gravao
realizada na pilha (e no move a cabea).
Funo programa considera:

estado corrente;
smbolo lido da fita (pode ser
omitido) ou teste se toda a palavra de
entrada foi lida;
smbolo lido de cada pilha (pode ser
omitido) ou teste de pilha vazia;

determina

novo estado;

smbolo gravado em cada


pilha (pode ser omitido).

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
53

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

(p, ?, a, ) = { (q, , b) } indica que se:


no estado p;
a entrada foi completamente lida (na
fita);
o topo da pilha 1 contm o smbolo a;

no l da pilha 2;

assume o estado q;
no grava na pilha 1;
grava o smbolo b no topo da
pilha 2.

smbolo lido da fita

(x, a1, b1, a2, b2)

estado corrente
smbolo lido da pilha 1
smbolo gravado na pilha 1

novo estado
smbolo gravado na pilha 2
smbolo lido da pilha 2

Figura 3.30 Representao da funo programa como um grafo

processamento de um Autmato com Pilhas, para uma palavra de


entrada w, consiste na sucessiva aplicao da funo programa para
cada smbolo de w (da esquerda para a direita) at ocorrer uma
condio de parada.
Um exemplo simples de ciclo infinito um programa que empilha e
desempilha um mesmo smbolo indefinidamente, sem ler da fita.
As condies de parada so as seguintes:
Estado Final. O autmato assume um estado final: o autmato
pra, e a palavra de entrada aceita;
Funo Indefinida. A funo programa indefinida para o
argumento: o autmato pra, e a palavra de entrada rejeitada.

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
54

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

EXEMPLO 3.25 Autmato com Pilhas Duplo Balanceamento.


Considere a linguagem
Duplo_Bal = { anbn n 0 }
O Autmato com Pilhas
A2P_Duplo_Bal = ({ a, b }, { q0, q1, qf }, , q0, { qf }, { B })
onde tal que
(q0, a, , ) = (q0, B, )
(q0, b, B, ) = (q1, , )
(q0, ?, ?, ?) = (qf, , )
(q1, b, B, ) = (q1, , )
(q1, ?, ?, ?) = (qf, , )
ACEITA(A2P_Duplo_Bal) = Duplo_Bal
autmato pode ser representado por um grafo.
No estado q0, para cada smbolo a lido da fita, armazenado um
smbolo B na pilha 1.
No estado q1, realizado um batimento, verificando se, para cada
smbolo b da fita, existe um correspondente B na pilha 1.
O algoritmo somente aceita se, ao terminar de ler toda a palavra
de entrada, as pilhas estiverem vazias.

(a, , B, , )

q0

(b, B, , , )

(?, ?, , ?, )

q1

(b, B, , , )

(?, ?, , ?, )
qf

Figura 3.31 Grafo do Autmato com Pilhas - Duplo Balanceamento

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
55

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

EXEMPLO 3.26 Autmato com Pilhas Triplo Balanceamento.


Considere a linguagem:

A Classe dos Autmatos com Duas Pilhas equivalente


Classe das Mquinas de Turing,

Triplo_Bal = { anbncn n 0 }

O Autmato com Pilhas


A2P_Triplo_Bal = ({ a, b }, { q0, q1, q2, qf }, , q0, { qf }, { B, C })

tal que ACEITA(A2P_Triplo_Bal) = Triplo_Bal (e sempre pra).


(a, , B, , )

q0

(b, B, , , C)
(b, B, , , C)

q1

(?, ?, , ?, )

(c, , ?, C, )

(c, , ?, C, )

q2

(?, ?, , ?, )
qf

Figura 3.32 Grafo do Autmato com Pilhas - Triplo Balanceamento

a) Mquina de Turing Autmato com Duas Pilhas.


A estrutura de fita da Mquina de Turing simulada usando as
duas pilhas como segue: a pilha 1 simula o contedo da fita
esquerda da cabea da fita, e a pilha 2, o contedo direita;
b) Autmato com Duas Pilhas Mquina de Turing .
A fita e as duas pilhas do Autmato com Duas Pilhas so
simulada usando a fita da Mquina de Turing, como segue:
a palavra de entrada corresponde s primeiras posies da fita
da Mquina de Turing;
a pilha 1 corresponde as clulas mpares da fita, aps a
palavra de entrada;
analogamente, a pilha 2 corresponde s clulas pares da fita,
aps a palavra de entrada.
Teorema 3.22 Mquina de Turing Autmato com Duas Pilhas.

O formalismo Mquina de Turing pode ser simulado pelo


formalismo Autmato com Duas Pilhas e vice-versa.

No estado q0, para cada smbolo a lido da fita, armazenado um


smbolo B na pilha 1.
No estado q1, realizado um batimento, verificando se, para cada
smbolo b da fita, existe um correspondente B na pilha 1, bem como
armazenado na pilha 2 um smbolo C.
Por fim, no estado q2, realizado um batimento, verificando se,
para cada smbolo c da fita, existe um correspondente C na pilha 2.
O algoritmo somente aceita se, ao terminar de ler toda a palavra de
entrada, as pilhas estiverem vazias.

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
56

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
57

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

3.6 Modificaes sobre as Mquinas Universais


Mquinas Universais so equivalentes s diversas verses
modificadas do modelo bsico, com caractersticas que supostamente
aumentariam o poder computacional.

3.6.1 No-Determinismo
no-determinismo uma importante generalizao dos modelos de
mquinas.
No caso da Mquina de Turing, para o mesmo estado corrente e
smbolo lido, diversas alternativas so possveis. Cada alternativa
percorrida de forma totalmente independente.
Isso significa que as alteraes de contedo na fita realizadas em
um caminho no modificam o contedo da mesma nos demais
caminhos alternativos.
A mesma idia vlida para a varivel X da Mquina de Post ou
para as pilhas do Autmato com Pilhas.

MQUINAS

EXEMPLO 3.27 Autmato com Pilhas No-Determinstico


Palavra & Reversa
Considere a seguinte linguagem:
Palavra_Reversa = { wwr w pertence a { a, b }* }
A linguagem Palavra_Reversa contm todas as palavras sobre o
alfabeto { a, b } tais que a primeira metade igual segunda metade,
mas invertida. Exemplos:

abbbba
abaabaabaaba
bbbbbbbbbbaabbbbbbbbbb
(pode ser considerada como uma generalizao do duplo
balanceamento, mas no deve ser confundida com as palndromas).
Autmato com Pilhas ACEITA(APN_Palavra_Reversa)= Palavra_Reversa
(a, , a, , )
(b, , b, , )

Genericamente, no-determinismo interpretado como:


a mquina, ao processar uma entrada, tem como resultado um conjunto de
novos estados.
ela assume um conjunto de estados alternativos, como se houvesse uma
multiplicao da unidade de controle, uma para cada alternativa,
processando independentemente, sem compartilhar recursos com as
demais.
processamento de um caminho no influi no estado geral, nem no
smbolo lido dos demais caminhos alternativos.

Para uma mquina M no-determinstica, uma palavra w pertence a:


ACEITA(M) se existe pelo menos um caminho alternativo que
aceita a palavra.
REJEITA(M) se todas as alternativas rejeitam a entrada.
LOOP(M) se nenhum caminho aceita a palavra e pelo menos
um fica em loop.

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
58

UNIVERSAIS

________________________________________________________________________________________

q0

(a, a, , , )
(b, b, , , )

(?, ?, , ?, )

q1

(a, a, , , )
(b, b, , , )

(?, ?, , ?, )
qf

Figura 3.33 Grafo do Autmato com Pilhas No-Determinstico palavra e sua reversa

no-determinstico devido s duas alternativas de movimentos a


partir de q0, para os mesmo smbolos lidos da fita de entrada (ciclo
em q0 e desvio para q1).
Adicionalmente, o alfabeto auxiliar igual ao de entrada. Em q0,
empilhado (pilha 1) o reverso do prefixo.
A cada smbolo empilhado, se existe o correspondente smbolo no
topo da pilha 1, ento:

o autmato permanece no estado q0 e continua empilhando o reverso da


entrada (pois no existe controle se j identificou toda a primeira metade);
ocorre um movimento no-determinista para q1 (e, portanto, o autmato
inicia uma alternativa) o qual verifica se o sufixo da palavra igual ao
contedo da pilha 1 at ento empilhado.

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
59

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

Teorema 3.23 Mquina de Turing Mquinas No-Determinsticas.

3.6.3 Mquina de Turing com Mltiplas Fitas

O formalismo Mquina de Turing pode ser simulado pelos


seguintes formalismos e vice-versa.
a) Mquina de Turing No-Determinstica;
b) Mquina de Post No-Determinstica;
c) Autmato com Pilhas No-Determinstico.
Uma importante aplicao do no-determinismo nos sistemas de
computadores atuais o estudo dos sistemas concorrentes, em
especial dos conceitos de multiprogramao e multiprocessamento.
Multiprocessamento a existncia de duas ou mais unidades
de processamento, realizando computaes simultneas.
Multiprogramao um conceito lgico, normalmente
implementado em nvel de sistema operacional, que permite
manter ativo mais de um programa ao mesmo tempo.
Isso significa que o uso de multiprocessamento, ou de
multiprogramao, embora resultem em computadores mais
eficientes e flexveis, no aumentam o seu poder computacional.
importante destacar que o conceito de no-determinismo no
deve ser confundido com o de concorrncia.
3.6.2 Mquina de Turing com Fita Infinita Esquerda e Direita
A modificao da definio bsica da Mquina de Turing,
permitindo que a fita seja infinita dos dois lados, no aumenta o
poder computacional.
Simulao: as clulas pares representam a parte direita da fita, e as
mpares, a parte esquerda. O smbolo b usado para controlar a
fronteira entre as partes esquerda e direita.

...
I

a-3

a1

a-2

a-1

a-1

a2

a1

a-2

a2

a3

a3

a-3

...
...

Figura 3.34 Simulao de uma fita infinita dos dois lados

A Mquina de Turing com mltiplas fitas possui k fitas infinitas


esquerda e direita e k correspondentes cabeas de fita. O
processamento realizado
depende do estado corrente da mquina e do smbolo lido em
cada uma das fitas;
grava um novo smbolo em cada uma das fitas, move cada uma
das cabeas independentemente para a esquerda ou direita, e a
mquina assume um (nico) novo estado.
Inicialmente, a palavra de entrada armazenada na primeira fita, ficando as
demais com valor branco. As trs fitas so simuladas em uma nica fita,
modificando os alfabetos de entrada e auxiliar. Cada smbolo contido em uma
clula uma 6-upla, sendo 3 componentes para representar as clulas de cada
uma das 3 fitas, e as demais 3 componentes para marcar a posio corrente das
cabeas de cada fita (representadas na figura 3.35 pelo smbolo ).

...

a-3

a-2

a-1

a1

a2

a3

...

b-1

b1

b2

b3

...

c1

c2

c3

...

a-2

a3

a-3

cabea 1

...

b-3

b-2

cabea 2

...

c-3

c-2

c-1

cabea 3

a1

a-1

a2

b1

c1

b-1

b2

b-2

b3

b-3

c-1

c2

c-2

c3

c-3

...
...
...
...
...
...

Figura 3.35 Simulao de 3 fitas infinitas dos dois lados


____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
60

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
61

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

3.6.4 Outras modificaes sobre a Mquina de Turing

3.7 Hierarquia de Classes de Mquinas

So apresentadas outras modificaes sobre o modelo bsico da


Mquina de Turing, as quais no aumentam o poder computacional.
Ou seja, possvel construir Mquinas de Turing tradicionais que
simulam cada uma das modificaes sugeridas.
a) Mquina de Turing Multidimensional. Neste modelo, a fita
tradicional substituda por uma estrutura do tipo arranjo kdimensional, infinita em todas as 2k direes;
b) Mquina de Turing com Mltiplas Cabeas. A Mquina de Turing
com esta modificao possui k cabeas de leitura e gravao sobre
uma nica fita. Cada cabea possui movimento independente.
Assim, o processamento depende do estado corrente e do smbolo
lido em cada uma das cabeas.
c) Combinaes. Combinaes de algumas ou de todas as
modificaes apresentadas. A combinao de algumas ou de todas
as modificaes apresentadas no aumenta o poder computacional
da Mquina de Turing. Por exemplo, uma Mquina de Turing NoDeterminstica com Mltiplas Fitas e Mltiplas Cabeas pode ser
simulada por uma Mquina de Turing tradicional.

Mquinas Universais
Mquinas Universais - algoritmos que sempre pram
Mquina com Uma Pilha No-Determinstica
Mquina com Uma Pilha Determinstica

Mquina sem Pilhas


Determinstica ou
No-Determinstico

Hierarquia de Classes de Linguagens:


a) Linguagens Regulares. Correspondem Classe das Mquinas sem
Pilha.
So exemplos de linguagens dessa classe: alguns editores de texto,
protocolos de comunicao.
So linguagens muito simples, como as quais, por exemplo, no possvel
fazer qualquer tipo de balanceamento de tamanho no-predefinido.
A principal caracterstica dessa classe que o tempo de reconhecimento
de uma palavra diretamente proporcional ao comprimento da entrada.
qualquer algoritmo especificado usando esse formalismo igualmente
eficiente, em termos de tempo de processamento;
____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
62

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
63

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

b) Linguagens Livres do Contexto Determinsticas. Correspondem


Classe dos Autmatos Determinsticos com Uma Pilha.

3.7 Hiptese de Church

So linguagens mais complexas que as Regulares, mas ainda muito


simples, com as quais, por exemplo, no possvel reconhecer a
linguagem
Palavra_Reversa = { wwr w pertence a { a, b }* }
tempo de reconhecimento de uma entrada diretamente proporcional ao
dobro do tamanho da entrada;

c) Linguagens Livres do Contexto. Correspondem Classe dos


Autmatos No-Determinsticos com Uma Pilha:
Constituem uma classe de fundamental importncia, pois incluem
linguagens de programao como Algol e Pascal.

d)

Turing props um modelo abstrato de computao, conhecido como


Mquina de Turing, com o objetivo de explorar os limites da
capacidade de expressar solues de problemas.
Trata-se, portanto, de uma proposta de definio formal da noo
intuitiva de algoritmo.
Diversos outros trabalhos, como Mquina de Post (Post - 1936) e
Funes Recursivas (Kleene - 1936), bem como a Mquina Norma e o
Autmato com Pilhas, resultaram em conceitos equivalentes ao de
Turing.

Algumas linguagens muito simples no pertencem a essa classe de


linguagens como:
Triplo_Bal = { anbncn n 0 }
Palavra_Palavra = { ww w palavra sobre os smbolos a e b }

O fato de todos esses trabalhos independentes gerarem o mesmo


resultado em termos de capacidade de expressar computabilidade um
forte reforo no que conhecido como Hiptese de Church ou
Hiptese de Turing-Church:

Os melhores algoritmos de reconhecimento conhecidos possuem tempo de


processamento proporcional ao tamanho da entrada elevado ao cubo;

"A capacidade de computao representada pela Mquina


de Turing o limite mximo que pode ser atingido por
qualquer dispositivo de computao"

Linguagens Recursivas.
Correspondem classe de todas as linguagens que podem ser
reconhecidas mecanicamente e para as quais existe um algoritmo de
reconhecimento que sempre pra para qualquer entrada.
Inclui a grande maioria das linguagens aplicadas. Os reconhecedores de
linguagens recursivas podem ser muito ineficientes, tanto em termos de
tempo de processamento como de recursos de memria

e) Linguagens Enumerveis Recursivamente. Correspondem Classe


das Mquinas Universais.
Correspondem classe de todas as linguagens que podem ser
reconhecidas mecanicamente.

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
64

Em outras palavras, a Hiptese de Church afirma que qualquer


outra forma de expressar algoritmos ter, no mximo, a mesma
capacidade computacional da Mquina de Turing. Como a noo de
algoritmo ou funo computvel intuitiva, a Hiptese de Church no
demonstrvel.
Supondo verdadeira a Hiptese de Church, pode-se afirmar que
para:
a) Funo Computvel: possvel construir uma Mquina de Turing
(ou formalismo equivalente) que compute a funo;
b) Funo No-Computvel: No existe Mquina de Turing (ou
formalismo equivalente) que compute a funo.

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
65

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
66

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
67

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
68

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
69

MQUINAS

UNIVERSAIS

MQUINAS

UNIVERSAIS

________________________________________________________________________________________

________________________________________________________________________________________

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
70

____________________________________________________________
Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes
71