Ábaco - universidade federal fluminensecbraga/cantodosalunos/abaco.pdf · abaco (1).pptx author:...
TRANSCRIPT
Ábaco Wagner Luiz Oliveira dos Santos
William Batista Teixeira
Instituto de Computação – UFF Disciplina – Teoria da Computação Prof. – Christiano Braga
1
Sumário • Definição
• Representação por fluxograma
• Operações com números naturais
• Simulação de ábaco por MT
• Simulação de FRP por ábaco
• Conclusão
2
Definições • 1936 - Tese de Church: Uma função é computável se e somente
se for computável por uma MT. • Todas as Funções Recursivas Parciais são computáveis por MTs. • Limitação da MT: impossibilidade de acesso aleatório aos dados. • Máquina de Lambek, ou Ábaco:
• Possui um número ilimitado de registradores (R0, R1, R2,...). • Cada registrador pode acomodar números (dados) de tamanho
arbitrário. • É possível acessar diretamente qualquer registrador.
3
Fluxograma
n+ n- e
Acrescentar um elemento ao
registrador n e sair
Se o registrador n estiver vazio, sair por “e”. Caso contrário,
remover um elemento de n e sair
pelo outro lado
Operações elementares
n- e
Fluxograma
Exemplo: esvaziar um registrador n
0 n
Diagrama de blocos
4
2 1 0 0 1 2
Adição
m-
n+
p+
p-
m+
e e [m]+[n]->n
Se [p]=0 de início
Fluxograma Diagrama de blocos
Resumo
[m]+[n]->[n] [m]+[p]->[m] 0->p
1
m n p
2 3
5
Multiplicação
m1-
[m2] + [n] n
e
Fluxograma simplificado
m1- e
m2-
n+
p+
p-
m2+
ee
Fluxograma completo
[m1] . [m2] n
0 m1
se [n] = [p] = 0, de início
Diagrama de blocos
6
Exponenciação
n+
m1-
Multiplicação cumulativa [m2].[n]->n
[m2]^[m1]->n
5
0
0
e
m2
m1
n
5
2
0
m2
m1
n
7
Ábaco para MT Convenções: (a) Os argumentos são os números de elementos
existentes nas primeiras “R” caixas e as outras estão vazias.
(b) O valor da função é o número de elementos em uma caixa “n” previamente especificada.
(c) Se a computação nunca para a função é indefinida.
8
Correspondência
1 1 1 1 1 1 1
n+ n- e
Leitura Escrita Esquerda Direita
Operações elementares
R1 R2 R3 R4
9
Primeiro passo n+
1a 1b 2a 2b
B:1 1:R B:1 1:R
1:R 1:R B:R B:R
1:R
sb sa x
B:1 1:R
B:1 1:R
B:1
B:R
1:B
1:R B:L
1:L
B:L B:R B:R
1:L
Encontre o branco à direita do s-ésimo bloco de 1s
Escreva 1, mova quaisquer blocos adicionais um quadrado à direita e volte
10
1 1 1 1 1 1 1
1b 1a x
B:1 1:R
B:1 1:R
B:1
B:R
1:B
1:R B:L
1:L
B:L B:R B:R
1:L
1:R
Caso especial onde: s=1
11
Segundo passo
n- e
Encontre e apague o 1 mais à direita do bloco. Escreva 1 antes de quaisquer 1s que possa haver no primeiro bloco à direita. Há algum?
Retorne à posição padrão
É [S] = 0?
Vá ao primeiro 1 no s-ésimo bloco substituindo Bs de registradores vazios por 1s, enquanto procede
Retorne à posição padrão
1 a
1 : R
1 : R (Não) B : L (Sim)
B : R B : R
B : L (Não) 1 : R (Sim)
1 : B
1 : R (Sim)
1 : R
1 : R
B : R
B : L
B : 1
B : L (Não)
12
Terceiro passo(limpeza do registrador)
B : L
1 : L B : L B : R
1 : R
B : R
B : R 1 : B 1 : R 1 : R B : R
1 : L
1 : B
B : R
1 : B B : R
B : L
1 : B
B : L
1 : R
B : 1
B : L
1 : R
B : R
1 : B 1 : R
1 : L
B : R
1 : L
1 : L
n-1 desses
Apague tudo entre o 1 mais à esquerda e
o n-ésimo bloco
Pule o n-ésimo bloco
Apague todos os 1s à direita do n-
ésimo bloco
Encontre o 1 mais à esquerda do n-ésimo bloco
Há um 1 à direita?
Sim
Não
Apague o 1 mais à esquerda no n-ésimo bloco e escreva um 1 à direita do 1 mais à direita do bloco
Apague o último 1 no n-ésimo bloco, encontre o 1 mais à esquerda e então pare, examinando este 1
. . .
13
FRP para Ábaco
• Funções básicas (zero, sucessor e projeção) • Composição/ Substituição • Recursão • Minimização
14
Funções básicas Zero Sucessor Projeção
[1] [2] [3] [4]
2+
[1] + [2] -> 2 [m] + [n+1] -> n+1
z([1])->[2]
15
Composição h(x1,x2,x3)=f(g1(x1,x2,x3),g2(x1,x2,x3))
f([1],[2])-> 3 g1([1],[2],[3]) -> 4 g2([1],[2],[3]) -> 4
h([1],[2],[3]) -> 4
Queremos encontrar uma função h que seja computável
Suponha que tenhamos f , g1 e g2 e que todas sejam computáveis por ábaco.
16
Composição h(x1,x2,x3)=f(g1(x1,x2,x3),g2(x1,x2,x3))
g1([1],[2],[3]) -> 4
Esvaziar [4] no P1
g2([1],[2],[3]) -> 4
Esvaziar [4] no P2
Esvaziar [1] no Q1
Esvaziar [2] no Q2
Esvaziar [3] no Q3
Esvaziar P1 no [1]
Esvaziar P2 no [2]
F([1],[2])-> 3
Esvaziar [3] no [4]
1-
2-
Esvaziar Q1 no [1]
Esvaziar Q2 no [2]
Esvaziar Q3 no [3]
17
Recursão h(x,0)=f(x) h(x,n+1)=g(x,n,h(x,n))
h(x,0)=f(x) h(x,1)=g(x,0,h(x,0)) h(x,2)=g(x,1,h(x,1)) ....
f([1])-> 2
Queremos encontrar uma função h que seja computável
g1([1],[2],[3]) -> 4
h([1],[2]) -> 3
Suponha que tenhamos f e g1 e que ambas sejam computáveis por ábaco.
18
Recursão Esvaziar [2] no P
F([1])->2
Esvaziar [2] no [3]
p-
2+
G([1],[2],[3])->4
3-
Esvaziar [4] no [3]
e
e
h(x,[2]) agora está na caixa 4
Esvaziar a caixa 3
h(x,0) agora está na caixa 2
h(x,0)=f(x)=x h(x,y+1)=g(x,y,h(x,y))=h(x,y)+2
h(2,1)=???
h(2,0) h(2,1)=g(2,0,h(2,0))
19
Minimização
3-
3-
2+
e
e
Se f(x,0)..f(x,i-1) <> 0 e f(x,i)=0 então h(x)=i
x 0 0 [1] [2] [3]
f 1 1 0
f([1],[2])->3
1 2 0 0
20
Conclusão
• Como é possível implementar qualquer ábaco utilizando MTs e implementar qualquer Função Recursiva Parcial em um ábaco, podemos dizer que MTs e ábacos são equivalentes.
21
22
Obrigado!