2. Máquinas de várias pilhas
● Máquina de pilha ou autômato de pilha é dado
por M = (Q,Σ,Г,δ,q0,Z0,F)
– Q: é o conjunto de estados
– Σ: símbolos de fita
– Г: símbolos de pilha
– δ: Q x Σ ⋃ {ε} x Г → 2Σ x Г*
● Exemplo: δ(q,a,X) = {(p,YZ), (r,ε)}
● Na fita, ε é usado para não avançar a fita
●
Na pilha, ε indica que o topo foi apagado
3. Máquinas de várias pilhas
– q0: estado inicial
– Z0: símbolo que indica fim da pilha
– F⊆Q: conjunto de estados de aceitação
5. Máquinas de várias pilhas
● A máquina de várias pilhas é uma
extensão deste autômato para usar mais
de uma pilha.
6. Máquinas de várias pilhas
● Toda linguagem recursivamente enumerável é
aceita por uma máquinas com duas pilhas
● Prova:
– Se uma linguagem é RE, então existe uma M.T.
que a aceite.
– Esta M.T. Pode ser simulada por um autômato de
duas pilhas da seguinte forma:
● Quebre a fita da M.T. em duas partes a partir da cabeça
de leitura
7. Máquinas de várias pilhas
● Na Máquina de Pilhas, faça a pilha esquerda
(primeira pilha) conter todos os símbolos a
esquerda da fita da M.T.
● A pilha direita (segunda pilha) guarda todos os
símbolos à direita da fita da M.T.
– Considere S o nome desta Máquina de pilhas.
8. Máquinas de várias pilhas
– S possuirá um marcador de fundo de pilha. A
pilha está vazia quando só possui este
marcador de fundo de pilha.
– Suponha que a palavra w$ esteja na entrada
de S. S copia w no topo de sua primeira pilha.
– S extrai um simbolo por vez e empilha na pilha
esquerda. Agora a segunda pilha conterá w
com o topo na extremidade esquerda de w.
9. Máquinas de várias pilhas
– S pode simular a M.T. caminhando em suas pilhas.
– O símbolo no topo da segunda pilha corresponde
ao símbolo atual.
– Se a M.T. anda para direita, este símbolo é
empilhado na primeira pilha e desempilhado da
segunda
– Se a M.T. anda para esquerda, o primeiro símbolo
da pilha esquerda é empilhado na pilha da direita
● Se o fundo de alguma pilha for alcançado, S possui um
símbolo B para marcar o branco da máquina de Turing.
10. Máquinas de contadores
● A máquina de contador pode ser vista como
uma máquina de várias pilhas.
● Ao invés de pilhas, temos contadores
inteiros não negativos.
● Estes contadores podem ser incrementados
ou decrementados.
● Quando um contador alcança 0, não pode
decrementar.
11. Máquinas de contadores
● Uma M.C. é uma restrição de uma M.P.
Onde:
– Só existem dois símbolos de pilha, Z0 e X.
– Z0 representa o 0.
– Só podemos substituir Z0 por XiZ0 onde i é o
número inteiro não negativo a ser armazenado
no contador.
12. Máquinas de contadores
● Toda linguagem recursivamente enumerável é aceita por
uma máquina de contadores (M.C.) com três contadores.
● Prova:
– Suponha que a máquina de contador C simula uma máquina de
pilhas S.
– Se S possui r-1 símbolos de fita, então podemos representar estes
símbolos por inteiros de 1 a r-1.
– A pilha será simulada por um número na base r.
– Suponha que a pilha tenha os símbolos X1, X2, …, Xn (o topo é X1)
– O número Xnrn-1 + … + X3r2 + X2r1 + X1 representa o conteúdo da
pilha
13. ● Г = {S,X,Y,Z}
● Г = {1,2,3,4}
Máquinas de contadores
S
X
Y
Z0
1
2
3
Z0
321
14. Máquinas de contadores
● Exemplo:
– Considere que os símbolos da fita sejam 0, 1 e 2.
– Temos que r – 1 = 3.
● A base r, será r = 4
– Então modificamos os símbolos para 1 a r – 1, isto
é, 1, 2 e 3.
– Se a pilha tiver em um dado momento a seguinte
configuração:
● 233 (onde 2 está no topo)
15. Máquinas de contadores
– Teremos o seguinte número inteiro para
representar este conteúdo:
● 3·42 + 3·41 + 2 = 62
– Se a pilha tiver em um dado instante a
seguinte configuração:
● 323
– Teremos o seguinte número inteiro para
representar este conteúdo:
● 3·42 + 2·41 + 3 = 59
16. Máquinas de contadores
● Dois contadores servem para representar as
pilhas.
● O terceiro contador serve para efetuar
contas, como dividir por r e multiplicar por r.
– Lembre-se que C somente soma e subtrai.
● Para extrair o símbolo X1, da pilha, devemos
devemos substituir o número i, por i/r,
descartando o resto. O resto é o X1.
17. Máquinas de contadores
● Para trocar um símbolo X por outro, Y, na
pilha, fazemos que i seja igual a i – (Y –
X), caso Y > X e i – (X – Y), caso X > Y.
● Para empilhar X, fazemos i se tornar ir + X.
18. Máquinas de contadores
● Toda linguagem RE pode ser representado
por uma máquina de contador com dois
contadores apenas.
● Prova:
– Faça que os três contadores, i, j e k, sejam
representados por um número inteiro
somente.
– Este número inteiro será m = 2i3j5k
19. Máquinas de contadores
– Note que m é representado por uma
multiplicação de números primos. A ordem
será mantida.
● Se escolhessemos 2i3j4k então o número 12
poderia ser representado por i = 0, j = 1 e k = 1 ou i
= 2, j = 1 e k = 0. Isto tornaria a representação
ambígua.
– O segundo contador tem a função de realizar
a multiplicação e divisão por 2, 3 e 5.
20. Computadores pessoais
● Os computadores e M.T. São equivalentes
quanto a aceitação de linguagens RE? Para
provar, precisamos mostrar que:
– Uma M.T. pode ser simulada em um PC.
– Um PC pode ser simulado por uma M.T.
● M.T. em PC
– Pode ser escrito uma M.T. em qualquer linguagem de
programação.
– Existem diversas simulações em sites da internet
22. Computadores pessoais
● PC em M.T.
– Usa uma M.T. com várias fitas.
– Cada componente principal do PC é simulado
em cada fita
● Registradores
● Contadores de instrução
● Endereço de memória atual
● Conteúdo de um arquivo de entrada
● Rascunho
23. Computadores pessoais
● PC em M.T.
– Cada componente guarda o endereço de
memória e seu conteúdo binário entre # e *
25. Comparação de tempo
entre M.T. e PC.
● O tempo de execução entre cada um dos
modelos acima deve ser limitado por um
polinômio.
– Limite entre problemas tratáveis e intratáveis
● A M.T. que simula um PC pode executar n
etapas do PC em O(n3) passos.
● Como esta M.T. possui várias fitas, a sua
conversão para M.T. de uma fita levará a uma
quantidade de passos de no máximo O(n6).
26. Tese de Church-Turing
● Toda função computável pode ser
simulada por uma Máquina de Turing
– O que é uma função computável?
● É uma função que possui uma descrição efetiva
para calculá-la (ou seja, possui um algoritmo).
– E se existir uma máquina mais poderosa que
a MT?
27. Referência
● [1] HOPCROFT, John E.; ULLMAN, Jeffrey
D.; MOTWANI, Rajeev. Introdução à teoria
de autômatos, linguagens e computação.
[Rio de Janeiro]: Campus, c2003. p. 328-
352
● Imagens da versão em inglês