Sie sind auf Seite 1von 56

Resoluo Exe 2.

12 Monoltico
Recursivo
Recursivo

PR R1 onde
R1 def (se T1 ento R2 seno R3 )
R2 def F; R3
R3 def (se T2 ento R4 seno R7 )
R4 def G; R5
R5 def (se T1 ento R7 seno R6 )
R6 def F; R1
R7 def

Fig. 2.30 Monoltico


Unidade 3 Mquinas Universais

Resoluo Exe 2.12 Monoltico


Recursivo
Recursivo

PR R1 onde
R1 def (se T1 ento R2 seno R3 )
R2 def F; R3
R3 def (se T2 ento R4 seno R7 )
R4 def G; R5
R5 def (se T1 ento R7 seno R6 )
R6 def F; R1
R7 def
Simplificado

Fig. 2.30 Monoltico

PR R1 onde
R1 def (se T1 ento F; R2 seno R2 )
R2 def (se T2 ento G; R3 seno )
R3 def (se T1 ento seno F; R1 )
Unidade 3 Mquinas Universais

Resoluo Exe 2.12 Monoltico


Recursivo
Recursivo

PR R1 onde
R1 def F; R2
R2 def (se T1 ento R1 seno R3 )
R3 def G; R4
R4 def (se T2 ento R5 seno R1 )
R5 def

Fig. 2.32 Monoltico


Unidade 3 Mquinas Universais

Resoluo Exe 2.12 Monoltico


Recursivo
Recursivo

PR R1 onde
R1 def F; R2
R2 def (se T1 ento R1 seno R3 )
R3 def G; R4
R4 def (se T2 ento R5 seno R1 )
R5 def
Simplificado

Fig. 2.32 Monoltico

PR R1 onde
R1 def F; (se T1 ento R1 seno R2 )
R2 def G; (se T2 ento seno R1 )
Unidade 3 Mquinas Universais

Resoluo Exe 2.13 Iterativo

Monoltico

Fluxograma
Partida
v
T1

T2T2
T

T3

Parada

Unidade 3 Mquinas Universais

Resoluo Exe 2.13 Iterativo

Monoltico

Fluxograma
Partida
v
T1

f
Parada

T2T2
T

T3

Instrues rotuladas

1: Se T1 ento v-para 2 seno v-para 6


2: Se T2 ento v-para 3 seno v-para 6
3: Se T3 ento v-para 2 seno v-para 4
4: Faa V v-para 5
5: Faa
W 3v-para
3 Universais
Unidade
Mquinas

Resoluo Exe 2.17 Equivalncia de programas

Unidade 3 Mquinas Universais

1
Partida

f
T

v
2

4
v

f
F

v
f

Parada

ProgramaUnidade
P 3 Mquinas Universais

Partida

f
T

4
v

f
T

v
f
Parada

Programa P

1: (F, 2) (Ciclo, )
2: (G, 3) (G, 3)
3: (F, 4) (Parada, )
4: (F, 2) (Ciclo, )
: (Ciclo, ) (Ciclo, )

A0 = {}
A1 = {3, }
A2 = {2, 3, }
A3 = {1, 2, 3, 4, }
A4 = A3

Unidade 3 Mquinas Universais

Programa Q

Unidade 3 Mquinas Universais

10

Programa Q
6: (F, 7) (Ciclo, )
7: (G, 8) (G, 8)
8: (F, 9) (Parada, )
9: (F, 7) (Ciclo, )
: (Ciclo, ) (Ciclo, )

A0 = {}
A1 = {8, }
A2 = {7, 8, }
A3 = {6, 7, 8, 9, }
A4 = A3

Unidade 3 Mquinas Universais

11

Resoluo Exe 2.17 Verificao de Equivalncia


Verificao de equivalncia:
Unio dos conjuntos de Instrues Rotuladas Compostas:
1: (F, 2) (Ciclo, )
2: (G, 3) (G, 3)
3: (F, 4) (Parada, )
Programa P
4: (F, 2) (Ciclo, )
6: (F, 7) (Ciclo, )
7: (G, 8) (G, 8)
8: (F, 9) (Parada, )
Programa Q
9: (F, 7) (Ciclo, )
: (Ciclo, ) (Ciclo, )
B0 = {(1, 6)}
B1 = {(2, 7) (
,
)}
B2 = {(3, 8), (3, 8)}
B3 = (4, 9) (,)
B4 = {(2, 7) (
,
)}
B5 =
Unidade
3 Mquinas Universais
P e Q so fortemente
equivalentes.

12

Teoria da Computao

Unidade 3 Mquinas Universais


Referncia Teoria da Computao (Divrio, 2000)

13

Mquinas Universais
Algoritmo
uma forma de descrever se determinada
propriedade verificada ou no a partir de uma
classe de entrada

Unidade 3 Mquinas Universais

14

Mquinas Universais
Noo intuitiva de algoritmo
Sua descrio deve ser finita e no-ambgua
Deve consistir de passos discretos, executveis em
tempo finito
Limitaes de tempo ou espao podem determinar
se um algoritmo pode ou no ser utilizado na
prtica
necessrio definir a mquina a ser considerada

Unidade 3 Mquinas Universais

15

Mquinas Universais
Mquinas devem ser:
Simples: permite 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.

Unidade 3 Mquinas Universais

16

Mquinas Universais
Mquina Universal - conceito
Uma mquina dita universal se ela for capaz de
representar qualquer algoritmo como um
programa

Unidade 3 Mquinas Universais

17

Mquinas Universais
As evidncias que permitem caracterizar uma
mquina como universal:
Evidncia Interna: Qualquer extenso das
capacidades da mquina universal, 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.
Unidade 3 Mquinas Universais

18

Mquinas Universais
Mquina Universal modelos a serem estudados
1.
2.
3.
4.

Mquina
Mquina
Mquina
Mquina

Norma
de Turing
de Post
com Pilhas

Unidade 3 Mquinas Universais

19

Mquinas Universais
Exemplo de Mquina Universal
1. Mquina Norma
Conjunto de registradores naturais e somente trs
operaes sobre eles
Adio e subtrao do valor um
Teste se o valor armazenado zero

Unidade 3 Mquinas Universais

20

Mquinas Universais
2. Mquina de Turing,
1936 por Alan Turing

proposta em

um mecanismo simples que formaliza a ideia de


uma pessoa que realiza clculos usando um
instrumento de escrita e um apagador
Formada por:
uma fita (usada para entrada, sada e rascunho),
uma unidade de controle
um programa

Unidade 3 Mquinas Universais

21

Mquinas Universais
Mquina de Turing
marcador de
incio de fita
fita

entrada

cabea
da fita
controle

branco

...

unidade de
controle

Unidade 3 Mquinas Universais

22

Mquinas Universais
Mquina de Turing

(au, av, m)

estado corrente
smbolo lido

novo estado
sentido do movimento

smbolo gravado

Unidade 3 Mquinas Universais

23

Mquinas Universais
Mquina de Turing
representao

formas

de

Unidade 3 Mquinas Universais

24

Mquinas Universais
Mquina de Turing exemplo
Reconhece anbn

Unidade 3 Mquinas Universais

25

Mquinas Universais
Mquina Norma X Mquina de Turing
Os registradores da mquina Norma podem
assumir qualquer valor natural to grande quanto
necessrio e, existem tantos registradores quanto
necessrios
A mquina de Turing possui tantas clulas de
armazenamento de dados quanto necessrio

Unidade 3 Mquinas Universais

26

Mquinas Universais
3. Mquina de Post: Baseada na estrutura de
dados do tipo fila (o primeiro dado armazenado
o primeiro a ser recuperado)
Fila
Entrada, sada e trabalho
Tamanho inicial igual ao tamanho da cadeia de entrada
Tamanho pode variar sem restries

Possui um programa (fluxograma) associado


Partida, parada, desvio condicional e atribuio

Unidade 3 Mquinas Universais

27

Exemplo: Reconhece anbn

Mquina de Post
X contm entrada
# indica final de X
ler(x) l e remove da fila
Xn insere n na fila

Unidade 3 Mquinas Universais

28

Mquinas Universais
4. Mquinas 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

Unidade 3 Mquinas Universais

29

MQUINA NORMA COMO MQUINA UNIVERSAL

Unidade 3 Mquinas Universais

30

Mquina Norma
Definida por Richard Bird em 1976
Norma - Number Theoretic Register Machine nome da
esposa dele
A Mquina Universal Norma possui como memria um conjunto
infinito de registradores naturais e trs instrues sobre cada
registrador: adio e subtrao (se 0, continua com 0) do valor um
e teste se o valor armazenado zero.
Para evitar subscritos, os registradores so denotadas por letras
maisculas como A, B, X, Y, ...
Unidade 3 Mquinas Universais

31

Mquina Norma
Norma = (N, X, Y, ent, sai, { adK, subK }, { zeroK })

onde:
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
A funo de entrada: ent: N N carrega no registrador denotado
por X o valor de entrada, iniciando todos os demais registradores com
zero;
Unidade 3 Mquinas Universais

32

Mquina Norma
Norma = (N, N, N, ent, sai, { adK, subK }, { zeroK })
A funo de sada: sai: N N tal que retorna o valor
corrente do registrador denotado por Y;
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, deixando as demais com seus valores inalterados.
K:=K+1

Unidade 3 Mquinas Universais

33

Mquina Norma
Norma = (N, N, N, ent, sai, { adK, subK }, { zeroK })
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:
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

O conjunto de interpretaes 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?
Unidade 3 Mquinas Universais

34

Mquina Norma
uma mquina extremamente simples, e o seu poder
computacional , no mnimo, o de qualquer computador moderno
Caractersticas de mquinas reais so simuladas usando a Mquina
Norma, reforando as evidncias de que se trata de uma mquina
universal.

Unidade 3 Mquinas Universais

35

Mquina Norma
Simulaes suportadas
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 e tratamento de valores
numricos de diversos tipos como inteiros (negativos e no-negativos)
e racionais;
c) Dados Estruturados: Armazenamento e 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;

Unidade 3 Mquinas Universais

36

Mquina Norma
a) Operaes e Testes
Atribuio do Valor Zero a um Registrador (A:=0)
Programa Iterativo

A := 0
at
A=0
faa (A := A 1)

Representada pela macro A := 0


Usando a macro A := 0, fcil construir macros para definir
operaes de atribuio de um valor qualquer.

Unidade 3 Mquinas Universais

37

Mquina Norma
Atribuio de um Valor
Registrador (macro: A:=n)

Natural

um

Programa Iterativo (para n=3)

A := n
A := 0;
A := A+1;
A := A+1;
A := A+1

Unidade 3 Mquinas Universais

38

Mquina Norma
Adio de Dois Registradores
(macro: 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!

Unidade 3 Mquinas Universais

39

Mquina Norma
Adio de Dois Registradores Preservando o
Contedo (B) (macro: A := A + B usando 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)

Unidade 3 Mquinas Universais

40

Mquina Norma
Atribuio do Contedo de um Registrador
(macro: A := B usando C)
Programa Iterativo
A := B usando C
A := 0;
A := A + B usando C
B permanece inalterado aps a atribuio
Unidade 3 Mquinas Universais

41

Mquina Norma
Multiplicao de Dois Registradores
(macro: A := A x B usando C, D)
Programa Iterativo
A := A x 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)

Unidade 3 Mquinas Universais

42

Mquina Norma
b) Valores Numricos
Os tipos de dados no definidos na Norma:
inteiros (negativos e positivos)
racionais

Unidade 3 Mquinas Universais

43

Mquina Norma
Inteiros
Um valor inteiro m pode ser representado como
um par (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)

Unidade 3 Mquinas Universais

44

Mquina Norma
Inteiros
Supondo que o registrador inteiro A representado pelo
par (A1, A2) na representao conhecida como sinalmagnitude, ou seja, A1 (sinal) e A2 (magnitude ).
Programa em Norma para executar a operao A := A+1
Programa Iterativo

A := A+1
(se A1 = 0
ento
A2 := A2 + 1
seno A2 := A2 - 1;
(se
A2 = 0
ento
A1 := A1 1
seno ) )
Unidade 3 Mquinas Universais

45

Mquina Norma
b) Valores Numricos

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.

Unidade 3 Mquinas Universais

46

Mquina Norma
b) Valores Numricos
Racionais: 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) = (a*d + b*c, b*d)
(a, b) - (c, d) = (a*d b*c, b*d)
(a, b) * (c, d) = (a*c, b*d)
(a, b) / (c, d) = (a*d, b*c) (com c 0)
(a, b) = (c, d) se, e somente se, a*d = b*c

Unidade 3 Mquinas Universais

47

Mquina Norma
b) Valores Numricos
Racionais: exemplos
Adio 0,25 + 0,75 = 1
(1, 4) + (3, 4) = (4 + 12, 16) = (16, 16)
(a, b) + (c, d) = (a*d + b*c, b*d)
Multiplicao 0,25 * 0,75 = 0,1875
(1, 4) * (3, 4) = (3, 16)
(a, b) * (c, d) = (a*c, b*d)
Teste de igualdade
(1, 4) = (3, 12) e verdadeiro pois, 1*12 = 4*3
(a, b) = (c, d) se, e somente se, a*d = b*c
Unidade 3 Mquinas Universais

48

Mquina Norma
c) Dados Estruturados

Arranjo Unidimensional
Uma estrutura da forma A(1), A(2), , pode ser
representada por um nico registrador A, usando a
codificao de n-uplas naturais;
No necessita ter tamanho mximo pr-definido;
Pode ser indexado de forma direta (nmero natural) ou
indireta (contedo de um registrador)

Operaes:
Adiciona 1 posio indexada
Subtrai 1 de uma posio indexada
Testa se uma posio indexada tem o valor 0

Unidade 3 Mquinas Universais

49

Mquina Norma
c) Dados Estruturados

Arranjo Unidimensional
indexao direta. As macros:
adA(n) usando C
subA(n) usando C
zeroA(n) usando C
Onde A(n) denota a n-sima posio do arranjo A

Unidade 3 Mquinas Universais

50

Mquina Norma
Arranjo Unidimensional exemplos
indexao direta.
Programa iterativo adA(n) usando C
C:=pn;
A:=AxC
Programa iterativo subA(n) usando C
C:=pn;
(se teste_div(A,C)
ento A:=A/C
seno )
teste_div(A,C)

Programa iterativo zeroA(n) usando C


C:=pn;
(se teste_div(A,C)
ento falso
seno verdadeiro )

uma macro que retorna Verdadeiro se C um divisor de A


Unidade 3 Mquinas Universais

51

Mquina Norma
c) Dados Estruturados

Arranjo Unidimensional
indexao indireta. As macros:
adA(B) usando C
subA(B) usando C
zeroA(B) usando C
Onde A(B) denota a b-sima posio do arranjo A, onde B o
contedo do registrador B

Unidade 3 Mquinas Universais

52

Mquina Norma
Arranjo Unidimensional exemplos
indexao indireta.
Programa iterativo adA(B) usando C
C:=primo(B)
A:=AxC
Programa iterativo subA(B) usando C
C:=primo(B)
(se teste_div(A,C)
ento A:=A/C
seno )

Programa iterativo zeroA(n) usando C


C:=primo(B)
(se teste_div(A,C)
ento falso
seno verdadeiro )

Unidade 3 Mquinas Universais

53

Mquina Norma
c) Dados Estruturados
Pilha: pode ser simulada usando 2 registradores
O primeiro representa o contedo da pilha, considerado
como um vetor
O segundo contm o nmero do elemento que corresponde
ao topo da pilha
empilha
desempilha
Operaes:
Empilha
desempilha
topo
sentido
de
crescimento
base

Unidade 3 Mquinas Universais

54

Mquinas Universais
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.

Unidade 3 Mquinas Universais

55

Mquinas Universais
Implemente uma mquina norma qualquer linguagem que
realize as seguintes operaes:
Adio entre dois registradores
Sem preservar contedo obs: utilize nmeros positivos/negativos
Preservando o contedo

Multiplicao entre dois registradores.


Testes A<B e A<=B
Testar se o valor de um registrador um nmero primo.
Fatorial e potenciao do nmero 5
Resto da diviso de dois registradores
Demais exemplos apresentados
Implemente as operaes da estrutura Pilha

Entregar at dia 25/05

Unidade 3 Mquinas Universais

56

Das könnte Ihnen auch gefallen