Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
1. Introdução<br />
<strong>Autômato</strong> <strong>com</strong> <strong>Duas</strong> <strong>Pilhas</strong><br />
<strong>Autômato</strong>s finitos aceitam linguagens regulares. <strong>Autômato</strong>s <strong>com</strong> pilha aceitam linguagens livres de<br />
contexto. O aumento no conjunto de linguagens aceito deve-se simplesmente à adição da pilha ao<br />
autômato (que funciona basicamente <strong>com</strong>o uma memória). Seguindo este raciocínio, poderíamos afirmar<br />
que duas pilhas aumentam o poder <strong>com</strong>putacional do autômato? É isto que iremos explanar neste<br />
trabalho, definindo o formalismo do <strong>Autômato</strong> <strong>com</strong> <strong>Duas</strong> <strong>Pilhas</strong>, demonstrando a sua equivalência à<br />
Máquina de Turing e demonstrando alguns exemplos de linguagens aceitas por este formalismo.<br />
2. Definição Intuitiva<br />
Um <strong>Autômato</strong> <strong>com</strong> <strong>Duas</strong> <strong>Pilhas</strong> é <strong>com</strong>posto por:<br />
a) Fita: dispositivo de entrada que contém a string a ser processada.<br />
b) <strong>Duas</strong> <strong>Pilhas</strong>: memórias auxiliares que podem ser usadas livremente para leitura e gravação<br />
Uma pilha é dividida em células, armazenando cada uma um símbolo do alfabeto auxiliar (pode ser igual<br />
ao alfabeto de entrada). Em uma estrutura do tipo pilha, a leitura ou gravação é sempre na mesma<br />
extremidade (topo). Não possui tamanho fixo e nem máximo, sendo seu tamanho corrente igual ao<br />
tamanho da palavra armazenada. Seu valor inicial é vazio.<br />
c) Unidade de Controle: reflete o estado corrente da máquina. Possui uma cabeça de fita e uma<br />
cabeça para cada pilha. A unidade de controle possui um número finito e predefinido de estados. Possui<br />
uma cabeça de fita e uma cabeça para cada pilha:<br />
➔ Cabeça da Fita: unidade de leitura que acessa uma célula da fita de cada vez e<br />
movimenta-se exclusivamente para a direita.
➔ Cabeça da Pilha: unidade de leitura e gravação para cada pilha que move para cima<br />
ao gravar e para baixo ao ler um símbolo. Acessa um símbolo de cada vez, estando<br />
sempre posicionada no topo. A leitura exclui o símbolo lido.<br />
d) Programa ou Função de Transição: <strong>com</strong>anda a leitura da fita, a leitura e gravação das pilhas<br />
e define o estado da máquina. Programa é uma função parcial que, dependendo do estado corrente,<br />
símbolo lido da fita e do símbolo lido de cada pilha, determina o novo estado e o símbolo a ser gravado<br />
em cada pilha.<br />
3. Definição Formal<br />
Um autômato <strong>com</strong> duas pilhas é uma sêxtupla M = (Q, Σ, Γ, δ, q0, F) onde:<br />
Q = conjunto finito de estados;<br />
Σ = conjunto finito de símbolos de entrada;<br />
Γ = conjunto finito de símbolos da fita;<br />
δ = conjunto de relações de transições, que é um subconjunto finito de (K x (Σ U {e}) x Γ* x Γ*)<br />
x (K x Γ* x Γ*), onde o terceiro parâmetro desempilha na primeira pilha, o quarto parâmetro desempilha<br />
na segunda pilha, o sexto parâmetro empilha na primeira pilha e o setimo parâmetro empilha da segunda<br />
pilha.<br />
q0 = estado inicial, sendo que q0 ∈ Q<br />
F = conjunto de estados finais, sendo que F ⊆ Q.<br />
Para que uma transição ocorra são consultados: o estado atual, o símbolo de entrada e o topo de<br />
ambas pilhas. A ação pode alterar qualquer um destes <strong>com</strong>ponentes. Uma string é aceita somente se<br />
toda a string for processada e o estado de parada for um estado pertencente à F.<br />
A função pode não ser total, ou seja, pode ser indefinida para alguns argumentos do conjunto de
partida; a omissão do parâmetro de leitura, representada por "?", indica o teste da correspondente pilha<br />
vazia ou de toda a palavra de entrada lida;<br />
O símbolo ε na leitura da fita ou de alguma pilha indica que o autômato não lê nem move a cabeça.<br />
Note-se que, pelo menos uma leitura deve ser realizada ou sobre a fita ou sobre alguma pilha.<br />
O símbolo ε na gravação indica que nenhuma gravação é realizada na pilha (e não move a cabeça).
4.Exemplos<br />
4.1 - Duplo Balanceamento<br />
<strong>Autômato</strong> <strong>com</strong> pilhas:<br />
Duplo_Bal = { a n b n | n ≥ 0 }<br />
A2P = ( {a,b}, {q 0 ,q 1 ,q f }, Π , q 0 , {q f }, {B})<br />
Uma única pilha é usada para este exemplo. Note que não é necessário o uso de todas as pilhas<br />
para o reconhecimento de determinadas linguagens. Neste exemplo tambem e feita a omissão da pilha<br />
2 – nao sao feitas leituras nem gravacoes neste exemplo.<br />
Entrada: aabb<br />
Π(q 0 , a, ε , ε ) = (q 0 , B, ε ) Π (q 1 , b, B , ε ) = (q 1 , ε , ε )<br />
Π(q 0 , a, ε , ε ) = (q 0 , B, ε ) Π (q 1 , ?, ?, ε ) = (q f , ε , ε )<br />
Π(q 0 , b, B , ε ) = (q 1 , ε , ε )
4.2 - Triplo Balanceamento<br />
<strong>Autômato</strong> <strong>com</strong> pilhas:<br />
Triplo_Bal = { a n b n c n | n ≥ 0 }<br />
A2P = ( {a,b,c}, {q 0 ,q 1 , q 2 , q f }, Π , q 0 , {q f }, {B,C})<br />
Neste exemplo são usadas as duas pilhas.<br />
Entrada: aabbcc<br />
Π(q 0 , a, ε , ε ) = (q 0 , B, ε ) Π (q 1 , c, ? , C ) = (q 2 , ε , ε )<br />
Π(q 0 , a, ε , ε ) = (q 0 , B, ε ) Π (q 2 , c, ? , C ) = (q 2 , ε , ε )<br />
Π(q 0 , b, B , ε ) = (q 1 , ε , C ) Π (q 2 , ?, ?, ?) = (q f , ε , ε )<br />
Π(q 1 , b, B , ε ) = (q 1 , ε , C )
5.Simulação de Máquina de Turing em <strong>Autômato</strong> <strong>com</strong> 2 <strong>Pilhas</strong><br />
A estrutura de fita da Máquina de Turing é simulada usando as duas pilhas <strong>com</strong>o segue:<br />
– a pilha 1 simula o conteúdo da fita à esquerda da cabeça da fita;<br />
– a pilha 2 simula o conteúdo da fita à direita da cabeça da fita.<br />
Exemplo: duplo balanceamento – L = { a n b n | n ≥ 0 }.
Seqüência do Processamento da Equivalência entre MT e <strong>Autômato</strong> de 2 <strong>Pilhas</strong>:<br />
– Supõe-se que a pilha 2 esteja <strong>com</strong> todo o conteúdo da fita gravado nela, pois <strong>com</strong>o a cabeça<br />
de leitura da fita está na primeira posição, todo conteúdo da fita está situado a direita da<br />
mesma.<br />
– Conforme a cabeça se move para a direita, desempilha-se os valores da pilha 2 e empilha-se na<br />
pilha 1.<br />
– Quando a pilha 2 estiver vazia, desempilha-se da pilha 1 e então se faz o teste para ver se<br />
ambas as pilhas estão vazias. Se estiverem, a palavra é aceita, senão é rejeitada.<br />
6.Simulação de <strong>Autômato</strong> <strong>com</strong> 2 <strong>Pilhas</strong> em Máquina de Turing<br />
A simulação de um <strong>Autômato</strong> de 2 <strong>Pilhas</strong> em uma Máquina de Turing é realizada de forma<br />
bastante simples: a fita e as duas pilhas do <strong>Autômato</strong> são simuladas utilizando a fita de Turing da<br />
seguinte maneira:<br />
– Palavra de Entrada: corresponde às primeiras posições da fita da Máquina de Turing.<br />
– Pilha 1: corresponde às células ímpares da fita, após a palavra de entrada.<br />
– Pilha 2: corresponde às células pares da fita, após a palavra de entrada.<br />
É exibido a seguir uma representação gráfica da fita de Turing, de acordo <strong>com</strong> os itens acima.
O sustenido (#) demarca o fim da palavra da entrada, local onde as pilhas <strong>com</strong>eçam a ser<br />
armazenadas. É a partir desta posição que os índices de pilha passam a ser considerados, ou seja, o<br />
primeiro elemento após # é o índice 1 (ímpar - pilha 1), e assim sucessivamente.<br />
Considerando uma transição de <strong>Autômato</strong> <strong>com</strong> 2 <strong>Pilhas</strong>: (x, r1, w1, r2, w2), existem 2 5<br />
possibilidades de transições. Entretanto, serão ilustradas somente as seis principais possibilidades,<br />
sendo mostradas a seguir.<br />
Observação: nessas possibilidades descritas, a cabeça está no início da fita - em todos os casos<br />
abaixo a cabeça é retornada ao início, fazendo <strong>com</strong> que estasMáquinas de Turing.<br />
– Empilha x em P1:(x, ε, x, ε, ε)
– Empilha x em P2:(x, ε, ε, ε, x)<br />
– Desempilha x em P1:(ε, x, ε, ε, ε)
– Desempilha x em P2: (ε, ε, ε, x, ε)<br />
– Teste Fita Vazia: (?, ε, ε, ε, ε)
– Teste Pilha 1 Vazia: (ε, ?, ε, ε, ε)<br />
– Teste Pilha 2 Vazia: (ε, ε, ε, ?, ε)<br />
Dessa forma, <strong>com</strong> os itens 5 e 6, pode ser definido o seguinte teorema:<br />
O formalismo Máquina de Turing pode ser simulado pelo formalismo <strong>Autômato</strong> <strong>com</strong> 2 <strong>Pilhas</strong><br />
e vice-versa.<br />
Ou seja, os <strong>Autômato</strong>s <strong>com</strong> 2 <strong>Pilhas</strong> e as Máquinas de Turing são equivalentes no ponto de vista<br />
de processamento - tudo o que é processado por um <strong>Autômato</strong> de 2 <strong>Pilhas</strong> pode ser processado em uma<br />
Máquina de Turing, e vice-versa.
7.Exercícios<br />
linguagens:<br />
Construa utilizando Automatos Finitos <strong>com</strong> <strong>Duas</strong> <strong>Pilhas</strong> reconhecedores para as seguintes<br />
a) {a i b 2i a i | i,j ≥ 0}<br />
b) { a i b j a i b j | i,j ≥ 0}<br />
c) {wcw | w ∈ {a, b}*}<br />
Bibliografia<br />
➔ Sudkamp, Thomas A. , Languages and Machines – An Introduction to the Theory of<br />
Computer Science, p. 250 – 252<br />
➔ Diverio, Tiarajú A.; Menezes, Paulo B. – Teoria da Computação – Máquinas Universais e<br />
Computabilidade – p. 117 - 121