19.04.2013 Views

Autômato com Duas Pilhas - Podre

Autômato com Duas Pilhas - Podre

Autômato com Duas Pilhas - Podre

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!