Você está na página 1de 20

Automatos para linguagens I.C.

{w2w
R
| w {0, 1}

}
Nao e reconhecida por um automato nito, porque para x {0, 1, 2}

e
necessario que ele memorize os smbolos que vai lendo ate encontrar um
2, e depois conrme se o resto coincide com o que foi lido, por ordem
inversa...
Para 1002001 e necessario guardar 1, 0, 0 e depois do 2, comparar esses
smbolos com os que forem lidos...Podemos fazer isso se tivermos uma
pilha:
1 0 0 2 0 0 1
1
0
1
0
0
1
0
0
1
0
1 1
Departamento de Ciencia de Computadores da FCUP MC Aula 17 1
Automatos de Pilha
Um automato de pilha (nao determinstico) (AP) e um automato nito
nao determinstico com transicoes , acrescido de uma memoria innita
a pilha em que o modo de acesso `a informacao e restrito `as operacoes
duma pilha: pop() e push().
Departamento de Ciencia de Computadores da FCUP MC Aula 17 2
Cada transicao e caracterizada pelo estado, smbolo que esta ser lido e o
elemento no topo da pilha.Em cada transicao:
o estado e alterado
o elemento no topo da pilha e substitudo por uma sequencia, eventual-
mente vazia, de elementos. Isto e:
O topo da pilha X e substitudo pela sequencia X
1
. . . X
k
correspondente a retirar X e colocar sucessivamente X
k
, . . . , X
1
,
passando o topo a ser X
1
.
se nao for uma transicao-, avanca um smbolo nos dados.
A informacao na pilha so pode ser acedida retirando os elementos do topo
da pilha.
Inicialmente, a pilha contem um unico smbolo inicial.
Departamento de Ciencia de Computadores da FCUP MC Aula 17 3
Formalmente, um automato de pilha P e um tuplo
(S, , , , s
0
, Z
0
, F)
S e o conjunto de estados (sendo S nito)
e o alfabeto de entrada
e o alfabeto da pilha
s
0
S e o estado inicial
Z
0
o smbolo inicial na pilha
F o conjunto de estados nais
(funcao de transicao) e uma funcao de S ({}) no conjunto
dos subconjuntos nitos de S

Departamento de Ciencia de Computadores da FCUP MC Aula 17 4


Aceitacao dum AP (I)
Aceitacao por estados nais
x

e aceite pelo automato de pilha P por estados nais se e so x


leva o automato do estado s
0
a algum dos estados nais, sendo totalmente
processada.
A linguagem aceite pelo automato de pilha P por estados nais e o conjunto
das palavras aceites por estados nais.
Aceitacao por pilha vazia
Diz-se que a pilha esta vazia quando nao tem qualquer smbolo de .
x

e aceite pelo automato de pilha P por pilha vazia se e so x leva


o automato do estado s
0
a pilha vazia, sendo totalmente processada.
A linguagem aceite pelo automato de pilha P por pilha vazia e o conjunto
das palavras aceites por pilha vazia.
Departamento de Ciencia de Computadores da FCUP MC Aula 17 5
Exemplo 17.1. Seja o automato de pilha
P = ({s
0
, s
1
, s
2
}, {0, 1}, {Z, O}, , s
0
, Z, {s
2
}) onde
(s
0
, , Z) = {(s
2
, Z)} (s
0
, 0, Z) = {(s
0
, OZ)}
(s
0
, 0, O) = {(s
0
, OO)} (s
0
, 1, O) = {(s
1
, )}
(s
1
, 1, O) = {(s
1
, )} (s
1
, , Z) = {(s
2
, Z)}
e (s, , X) = para os restantes ternos (s, , X) S ( {}) .
O processamento da palavra 0011 e
s
0
s
0
s
0
s
1
s
1
s
2
Z
0

O
Z
0

O
O
Z
1

O
Z
1

Z
Departamento de Ciencia de Computadores da FCUP MC Aula 17 6
A linguagem aceite pelo automato por estados nais e
{0
n
1
n
| n N}
Mas a linguagem aceite pelo automato por pilha vazia e (porque Z nunca
e retirado).
Se compararmos com o automato nito que reconhece {0
n
1
m
| n, m
N} = L(0

),
G` _ \
0
1
G` _ \
1

vemos que o que falta e simular a contagem de quantos 0s tinham sido


lidos: que neste caso se faz com a pilha.
Departamento de Ciencia de Computadores da FCUP MC Aula 17 7
Diagrama de transicoes dum AP
Podemos generalizar o diagrama de transicoes usado para AFs, denindo
um diagrama de transicoes para um AP:
os nos sao os estados do AP
o estado inicial e indicado por uma seta e os estados nais por dois
crculos
Um arco de s para s

e etiquetado por a, X/ se (s, a, X) contem


(s

, )
Para o automato do exemplo 17.1 vem:
G '` __
s
0
0,Z/OZ
0,O/OO
3
1,O /
G
,Z/Z
T
'` __
s
1
1,O /

,Z/Z
G '` __ \ __
s
2
Departamento de Ciencia de Computadores da FCUP MC Aula 17 8
AP para a linguagem dos parentesis
bem casados
({s
0
}, {(, )}, {Z, A}, , s
0
, Z, )
(s
0
, , Z) = {(s
0
, )} (s
0
, (, Z) = {(s
0
, AZ)}
(s
0
, (, A) = {(s
0
, AA)} (s
0
, ), A) = {(s
0
, )}
G '` __
s
0
,Z/
(,Z/AZ
(,A/AA
),A/
%
A linguagem dos parentesis bem casados sobre {(, )}

e aceite pelo
automato por pilha vazia.
Departamento de Ciencia de Computadores da FCUP MC Aula 17 9
O processamento da palavra (())() e.
Z
(

A
Z
(

A
A
Z
)

A
Z
)

Z
(

A
Z
)

s
0
s
0
s
0
s
0
s
0
s
0
s
0
s
0
Departamento de Ciencia de Computadores da FCUP MC Aula 17 10
Conguracoes
Uma conguracao do automato de pilha (ou descricao instantanea) e um
triplo (s, x, ) S

onde:
s e o estado corrente
x e a porcao da palavra de entrada que falta ler
conteudo da pilha: sendo o topo da pilha, o primeiro smbolo de
Nota que no caso de um AF apenas o estado era necessario, para o descrever
em cada momento.
Departamento de Ciencia de Computadores da FCUP MC Aula 17 11
Por exemplo, (s
0
, )(), AZ) e uma conguracao do automato anterior, ao
processar (())():
Departamento de Ciencia de Computadores da FCUP MC Aula 17 12
Mudanca de conguracao
Dado P = (S, , , , s
0
, Z
0
, F) e x

, a conguracao inicial e
(s
0
, x, Z
0
).
A relacao
1

P
mudan ca de conguracao num passo e uma relacao binaria
no conjunto das conguracoes, denida para s S, a {}, X ,
x

e ,

por:
(s, ax, X)
1

P
(q, x, ) se e so se (q, ) (s, a, X)
Denimos
n

P
e

P
, sendo C, D, E conguracoes:
C
0

P
C
C
n+1

P
D
def
E C
n

P
E e E
1

A
D
C

P
D
def
n 0 C
n

P
D

P
e o fecho reexivo e transitivo de
1

P
Departamento de Ciencia de Computadores da FCUP MC Aula 17 13
As mudancas de conguracao do AP do exemplo 17.1 com dados 0011 e:
(s
0
, 0011, Z) (s
0
, 011, OZ)
(s
0
, 11, OOZ)
(s
1
, 1, OZ)
(s
1
, , Z)
(s
2
, , Z)
Nota que como um automato de pilha pode ser nao determinstico, em cada
conguracao podera haver varias alternativas de movimento.
Departamento de Ciencia de Computadores da FCUP MC Aula 17 14
Aceitacao dum AP (II)
Formalmente, dado um automato de pilha P = (S, , , , s
0
, Z
0
, F)
a linguagem aceite por estados nais e
L(P) = {x | f F

(s
0
, x, Z
0
)

P
(f, , )}
e a linguagem aceite por pilha vazia e
N(P) = {x | s S (s
0
, x, Z
0
)

P
(s, , )}
Departamento de Ciencia de Computadores da FCUP MC Aula 17 15
Exemplo 17.2. (Exemplo 17.1) Sendo P = ({s
0
, s
1
, s
2
}, {0, 1}, {Z, O}, , s
0
, Z, {s
2
})
(s
0
, , Z) = {(s
2
, Z)} (s
0
, 0, Z) = {(s
0
, OZ)}
(s
0
, 0, O) = {(s
0
, OO)} (s
0
, 1, O) = {(s
1
, )}
(s
1
, 1, O) = {(s
1
, )} (s
1
, , Z) = {(s
2
, Z)}
G '` __
s
0
0,Z/OZ
0,O/OO
9
1,O /
G
,Z/Z
T
'` __
s
1
1,O /

,Z/Z
G '` __ \ __
s
2
Mostrar que L(P) = {0
n
1
n
| n N}
Dem. ()Se x = entao (s
0
, , Z) (s
2
, , Z).
Se x = 0
n
1
n
, para algum n > 0, entao (s
0
, 0
n
1
n
, Z)

(s
0
, 1
n
, O
n
Z)

(s
1
, , Z) (s
2
, , Z)
Departamento de Ciencia de Computadores da FCUP MC Aula 17 16
() Para entrar no estado nal s
2
e necessario que Z esteja no topo
da pilha e estar no estado s
1
ou s
0
. Mas estando em s
0
isso so pode
acontecer se nao for lido nenhum smbolo, i.e, x = . Caso contrario,
sera necessario passar por s
1
. Vamos ver que: Se (s
0
, x, )

(s
1
, , )
entao x = 0
n
1
n
para algum n.
E entao em particular para = Z temos que : (s
0
, x, Z)

(s
1
, , Z)
(s
2
, , Z) entao x = 0
n
1
n
para algum n > 0.
Por inducao em |x|.
Base. x = entao a conclusao verica-se para n = 0 embora
(s
0
, x, )

(s
1
, , ) nao se verique.
Inducao. Seja x = a
1
a
2
. . . a
n
, n > 0.Entao
a
1
= 1 entao (s
0
, a
1
a
2
. . . a
n
, ) (s
1
, a
2
. . . a
n
,

) e = O

.Mas
entao se (s
0
, x, )

(s
1
, , ), entao || < ||.
a
1
= 0 entao (s
0
, a
1
a
2
. . . a
n
, ) (s
0
, a
2
. . . a
n
, O). Para
que (s
0
, x, )

(s
1
, , ) entao o ultimo passo
Departamento de Ciencia de Computadores da FCUP MC Aula 17 17
tem de ser: (s
1
, a
n
, O) (s
1
, , ) e a
n
= 1.
E se (s
0
, a
2
. . . a
n
, O)

(s
1
, a
n
, O) entao tambem
(s
0
, a
2
. . . a
n1
, O)

(s
1
, , O).Entao por hipotese de inducao,
a
2
. . . a
n1
= 0
m
1
m
para algum m 0. E entao x = a
1
0
m
1
m
a
n
=
0
m+1
1
m+1
.
2
Departamento de Ciencia de Computadores da FCUP MC Aula 17 18
Exemplos
Exerccio 17.1. Descreve automatos de pilha que reconhecam (por pilha
vazia ou por estados nais) cada uma das linguagens seguintes.
(a) {x {a, b}

| x e capcua}
(b) {w {0, 1, 2}

: w contem mais 1s do que 0s}


(c) {a
i
b
j
c
k
| i = j ou j = k}

Departamento de Ciencia de Computadores da FCUP MC Aula 17 19


Leituras
[HMU00] (Cap. 6.1-6.2) [Tom99] (Pag 66-72)
Referencias
[HMU00] John E. Hopcroft, Rajeev Motwani, and Jerey D. Ullman.
Introduction to Automata Theory, Languages and Computation.
Addison Wesley, 2nd edition, 2000.
[Tom99] Ana Paula Tomas. Apontamentos de modelos de computacao.
Technical report, Departamento de Ciencia de Computadores,
FCUP, 1999.
Departamento de Ciencia de Computadores da FCUP MC Aula 17 20

Você também pode gostar