Você está na página 1de 503

Teoria da Computao

Acetatos das aulas tericas


Lus Monteiro
DI-FCT/UNL

Lic. Eng. Informtica, 2008/09

LM (DI)

Apresentao

TC 2008/09

1 / 14

Docentes
Pginas da cadeira

Docentes
Lus Monteiro lm@di.fct.unl.pt (responsvel)
Tericas T1
Prticas P2, P4
Vasco Amaral Vasco.Amaral@di.fct.unl.pt
Tericas T2
Prticas P1, P3, P5, P6

Pginas da cadeira
Pginas
CLIP
MOODLE chave de acesso: tcviiiix
LM (DI)

Apresentao

TC 2008/09

2 / 14

Avaliao
Classificao final

Avaliao
Teste 1 teste, sem consulta
Data: 10 de Novembro
Frequncia Nota no teste 8,5 valores
Exame Sem consulta, no calendrio de exames

Classificao
Final 25% teste + 75% exame
Aprovao Classificao exame 9,5 valores
Classificao final 9,5 valores
Melhoria S conta a nota do exame

LM (DI)

Apresentao

TC 2008/09

3 / 14

O que a teoria da computao?


Algumas reas de estudo

Limitaes do mtodo algortmico:


Que problemas tm soluo algortmica?
Computabilidade e decidibilidade
Eficincia dos algoritmos:
Que problemas tm algoritmos rpidos?
Complexidade
Correco dos algoritmos:
O algoritmo faz o que se pretende? Como se garante?
Verificao
Linguagens de programao:
Como se definem? Que conceitos envolvem? Como se processam?
Sintaxe e semntica
...
LM (DI)

Apresentao

TC 2008/09

4 / 14

Nesta disciplina
Trs grandes temas

Sintaxe das linguagens de programao


(gramticas e autmatos)

Computabilidade e decidibilidade
(mquinas de Turing)

Modelo de computao baseado em mquinas de estados


(semntica operacional e verificao de programas)

LM (DI)

Apresentao

TC 2008/09

5 / 14

Principais conceitos
Autmatos e gramticas

Autmatos tm estados e transies


amanhece

?>
=<
89pra:;
K
g

anoitece

vermelho

?>
=<
89
noite:;
b

"
?>
89dia=<
:;

verde

verde

?>
89avana=<
:;

laranja

%
?>
89abranda=<
:;
I
laranja

vermelho

Gramticas so definidas por produes


hfrasei Joo hverboi Maria
hverboi ama
hverboi odeia

LM (DI)

Apresentao

TC 2008/09

6 / 14

Outros exemplos
Na definio de linguagens de programao

Nmeros reais sem sinal autmato finito


()*+
/.-,

/.-,
/()*+

abrevia

()*+
/.-,

.. /.-,
()*+
. 6

89:;
/ ?>=<
1

89:;
0123
7654
/ ?>=<
2


?>=<
89:;
5

d
89:;
?>=<
7654
0123
/ ?>=<
/ 89:;
3 KK
4
KK+,
O
KKK O d
E
K%
u
?>=<
7654
0123
89:;
?>=<
/ 89:;
d
7
6

Instrues bsicas gramtica independente do contexto


hsti

|
|
|
hvari
LM (DI)

hvari := hexpi
if hbooli then hsti else hsti fi
while hbooli do hsti od
hsti; hsti

Apresentao

afectao
condicional
iterao
sequenciao

TC 2008/09

7 / 14

Exemplo
Na anlise sintctica (descendente)

Reconhecimento de {an cbn | n 0} autmato de pilha


,S/aSb

GFED
@ABC
qa
K

a,z/z (z)

,a/


@ABC
/ GFED
qL l
K

b,z/z (z)

, @ABC
GFED

qb

,b/

c,z/z (z)

,c/


GFED
@ABC
qc
J
,S/c
LM (DI)

Apresentao

TC 2008/09

8 / 14

Exemplo
Em computabilidade

Reconhecimento de {uu | u {a, b} } mquina de Turing


@ABC
GFED
q0

x {a, b}
y {a, b, B}

[B/B R,B/B R]


@ABC
GFED
q1
T
[x/x R,B/x R]

[B/B L,B/B L]

@ABC
/ GFED
q2

[x/x L,y /y L]

@ABC
GFED
q3
,

[B/B R,y /y R]


GFED
@ABC
q4
T

[x/x L,y /y S]

[y /y R,B/B R]

@ABC
GFED
89:;
?>=<
q5

[x/x R,x/x R]

LM (DI)

Apresentao

TC 2008/09

9 / 14

Exemplo
Em verificao

Clculo de n! diagrama de transies


?>=<
89:;
A _ _ _ _ _ _ _ _ _ _ _ _ _{x = n n 0}
z := 1

x := x 1

GF

?>=<
89:;
E
O
z := x z @A

LM (DI)


89:;
/ ?>=<
B _ _ _ _ _ _ _ _ _ _ _{x 0 z x! = n!}
x 0
x >0

89:;
0123
7654
/ ?>=<
C _ _ _ _ _ _{z = n!}


?>=<
89:;
D
Apresentao

TC 2008/09

10 / 14

Objectivos da disciplina
Em linhas gerais

Proporcionar um primeiro contacto com os seguintes temas:


Sintaxe das linguagens de programao incluindo a anlise
sintctica (parsing):
I
I

descendente (top-down),
ascendente (bottom-up).

Noo formal de algoritmo e existncia de problemas sem


soluo algortmica.
Modelos de computao baseados em mquinas de estados:
I
I

semntica operacional,
verificao de programas.

LM (DI)

Apresentao

TC 2008/09

11 / 14

Plano da Disciplina
Nas suas grandes reas temticas

Linguagens regulares e autmatos finitos

Gramticas independentes do contexto e autmatos de pilha

Anlise sintctica descendente e ascendente

Mquinas de Turing e problemas indecidveis

Semntica operacional e verificao

LM (DI)

Apresentao

TC 2008/09

12 / 14

Material de apoio
Na pgina de TC no MOODLE

Notas de curso
Transparncias das aulas tericas.
Exerccios das aulas prticas.
Exerccios resolvidos.
As transparncias das aulas tericas e os exerccios resolvidos iro
sendo actualizados ao longo do semestre.

LM (DI)

Apresentao

TC 2008/09

13 / 14

Bibliografia recomendada
Existente na biblioteca ou acessvel online

Michael Sipser, Introduction to the Theory of Computation, PWS


Publishing Company, Boston, 1997.
Thomas A. Sudkamp, Languages and Machines, Addison-Wesley,
1997.
Eitan Gurari, An Introduction to the Theory of Computation,
Computer Science Press, 1989.
(Acessvel gratuitamente online atravs da pgina de TC no Moodle.)

Nissim Francez, Program Verification, Addison-Wesley, 1992.

LM (DI)

Apresentao

TC 2008/09

14 / 14

1. Linguagens
Teoria da Computao

Lus Monteiro
DI-FCT/UNL

Lic. Eng. Informtica, 2008/09

LM (DI)

Linguagens

TC 2008/09

1/9

Alfabeto
Definio e exemplos

Definio
Um alfabeto um conjunto finito de smbolos ou letras.
Pode ter zero, um ou mais smbolos.

Exemplos
{a, b, c, d, . . . , w, x, y , z}
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, E, ., +, }
{a, b, c, . . . , 0, 1, 2, . . . , +, , /, , =, <, . . . ,
(, ), [, ], {, }, , , ; , :=, begin, end, if, . . .}
{amanhece, anoitece}
{vermelho, verde, laranja}
{Joo, Maria, ama, odeia}
Em muitos exemplos: {0, 1} ou {a, b}
LM (DI)

Linguagens

TC 2008/09

2/9

Palavra sobre um alfabeto T


Palavra vazia

Definio
Uma palavra sobre um alfabeto T uma sequncia finita
a1 a2 an1 an

(n 0)

de smbolos a1 , a2 , . . . , an1 , an T , possivelmente repetidos.


Se n = 0 a palavra diz-se vazia e representa-se por (lambda).
Nota: 6 T .

Exemplos
3.14159
z := 1; while x 0 do z := x z; x := x 1 od
amanhece anoitece amanhece
ama ama Joo Maria
LM (DI)

Linguagens

TC 2008/09

3/9

Comprimento e igualdade de palavras


Alguns exemplos

Comprimento de uma palavra


O comprimento da palavra a1 a2 an |a1 a2 an | = n.

Exemplos
|3.14159|
= 7
|z := 1; while x 0 do z := x z; x := x 1 od| = 21
|amanhece anoitece amanhece|
= 3
|ama ama Joo Maria|
= 4
||
= 0

Igualdade de palavras
Sejam x = a1 a2 an e y = b1 b2 bk . Ento:
x = y n = k , a1 = b1 , a2 = b2 , . . . , an = bn .
LM (DI)

Linguagens

TC 2008/09

4/9

Conjunto das palavras sobre T


Algumas propriedades

Notaes
T conjunto de todas as palavras sobre T (incluindo ).
T + = T {} conjunto das palavras no vazias sobre T .

Propriedades de T
1

T T .

= {}.

T1 T2

(Exemplo: {0, 1} {0, 1} = {, 0, 1, 00, 01, 10, 11, 000, 001, . . .}.)
(Sem smbolos, a nica palavra possvel a vazia.)

T1 T2 .

(Exemplo: {0, 1} = {, 0, 1, 00, 01, 10, . . .} {, 0, 1, 2, 00, 01, 02, . . .} = {0, 1, 2} .)


4

T 6=

T infinito.

(Seja a T . Ento a, aa, aaa, aaaa, . . . T .)


|
{z
}
s

LM (DI)

Linguagens

TC 2008/09

5/9

Visualizao de T em rvore
Particularizada para T = {a, b, c}

 Q
mmm QQQQQ c
QQQ
b
QQQ
mmm
m
QQ
m

8mm
88
8
8
 888


8
8
8



8
88c
88c
a 
a 
a 
8888c
b
b
b
88
88
8888















ammmm

..
.

..
.

..
.

..
.

..
.

..
.

..
.

..
.

..
.

(rvore ternria completa)


Palavras: caminhos finitos com incio na raiz.
O caminho indicado por trao duplo
palavra bc.

corresponde

Palavra vazia: caminho que termina na raiz.

LM (DI)

Linguagens

TC 2008/09

6/9

Concatenao ou produto de palavras


Potncias de uma palavra

Concatenao
def

def

xy = x.y = a1 a2 an b1 b2 bk
| {z } | {z }
x

Exemplo: x = infra, y = estrutura, xy = infraestrutura.

Potncias
n def

x = xx
x}
| {z

Por induo:

x0

def

def

x n+1 = x n x

Exemplo: w 3 = www, (pa)2 = papa, n = .

LM (DI)

Linguagens

TC 2008/09

7/9

Propriedades
As mais elementares

x(yz) = (xy )z (associativa).

x = x = x (elemento neutro).
Logo T um monide.

Em geral, xy 6= yx (no-comutativa).
Exemplo: x = bo, y = ca, xy = boca 6= cabo = yx.

4
5

x m x n = x m+n , (x m )n = x mn .
Em geral, (xy )n 6= x n y n porque a concatenao no comutativa.
Exemplo: x = p, y = a, (xy )2 = papa 6= ppaa = x 2 y 2 .
|xy | = |x| + |y | e |x n | = n|x|.

LM (DI)

Linguagens

TC 2008/09

8/9

Linguagens
Primeiros exemplos

Linguagem L sobre um alfabeto T


um conjunto L T de palavras sobre T .

Exemplos de linguagens
1

{ Reais } {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, E, ., +, } .

{ Inteiros mpares em representao binria } =


{ palavras sobre {0, 1} iniciadas e terminadas em 1} {0, 1} .

{ Expresses }, { Programas }, etc, so linguagens.

T (linguagem vazia).

{} T (linguagem da palavra vazia).

T T (palavras de comprimento 1).

T T (todas as palavras).
LM (DI)

Linguagens

TC 2008/09

9/9

2. Linguagens regulares
Teoria da Computao

Lus Monteiro
DI-FCT/UNL

Lic. Eng. Informtica, 2008/09

LM (DI)

Linguagens regulares

TC 2008/09

1 / 35

Algumas operaes sobre linguagens


Propriedades

Operaes
L1 L2 (unio).
L1 L2 (interseco).
L1 L2 (diferena).
def

def

L1 .L2 = L1 L2 = {xy | x L1 , y L2 } (Produto ou concatenao).


Exemplo: {pa, ga, }{to, la} = {pato, pala, gato, gala}.

Propriedades
(L1 L2 )L3 = L1 (L2 L3 ) (associativa).
e {}L = L{} = L (elemento neutro).
e L = L = (elemento absorvente).

LM (DI)

Linguagens regulares

TC 2008/09

2 / 35

Potncias de uma linguagem


Necessrias para definir o fecho ou iterao
def

Ln = LL
L} = {x1 x2 xn | x1 , x2 , . . . , xn L}
| {z
n

L0

Indutivamente,

def

= {}

def

Ln+1 = Ln L
Exemplo com L = {0, 1}
L0
L1
L2
L3
..
.
Nota:

n
n0 L

LM (DI)

=
=
=
=

{}
{0, 1}
{00, 01, 10, 11}
{000, 001, 010, 011, 100, 101, 110, 111}

= {0, 1} = L
Linguagens regulares

TC 2008/09

3 / 35

Fecho ou iterao de uma linguagem


Operaes regulares

def

L = L0 L1 L2 =

n
n0 L

Exemplos
{c}n = {cc
c}}, {ab}n = {abab
|
{z ab}}
| {z
n

{c}

= {, c, cc, ccc, . . .}

{ab}

= {, ab, abab, ababab, . . .}.

ab, , c, ababccc {ab} {c} .


ac, abcab, b, a 6 {ab} {c} .
Operaes regulares: unio, produto, fecho.

LM (DI)

Linguagens regulares

TC 2008/09

4 / 35

Linguagens regulares sobre T


Abreviadamente, LR/T

LR/T .
{} LR/T .
{a} LR/T (a T ).
Se L1 e L2 so LR/T :
I
I
I

L1 L2 ,
L1 .L2 ,
L1

so LR/T .
Nada mais LR/T .

LM (DI)

Linguagens regulares

TC 2008/09

5 / 35

Exemplos
Toda a linguagem finita regular

{lin, gu, a, gem, fini, ta} = {lin} {gu} {a} {gem}


{fini} {ta}
= {l}{i}{n} {g}{u}
{a} {g}{e}{m}
{f }{i}{n}{i} {t}{a}
{am bn | m, n 0}

= {am | m 0}{bn | n 0}
= {a} {b}

{an bn | n 0}

6= {an | n 0}{bn | n 0}
= {a} {b}

LM (DI)

Linguagens regulares

TC 2008/09

6 / 35

Expresses regulares sobre T


Abreviadamente, ER/T

ER/T .
ER/T .
a ER/T (a T ).
Se E1 e E2 so ER/T :
I
I
I

E1 + E2 ,
E1 .E2 ,
E1

so ER/T .
Nada mais ER/T .
Exemplos lin+gu+a+gem+fini+ta
Joo (ama + odeia) Maria
(vermelho verde laranja)
LM (DI)

Linguagens regulares

TC 2008/09

7 / 35

Linguagem denotada por uma ER


Acrescenta {, }, troca + por

L() = ,
L() = {},
L(a) = {a}
(a T ),
L(E + F ) = L(E) L(F ),
L(EF ) = L(E)L(F ),
L(E ) = L(E)
Exemplo
L((ab) + c) = L((ab) ) L(c)
= L(ab) {c}
= [L(a)L(b)] {c}
= [{a}{b}] {c}
= {ab} {c}

LM (DI)

Linguagens regulares

TC 2008/09

8 / 35

Diagramas sintcticos de ER (Wirth)


Para ER e LR

E +F

EF
E

{}

{a}

E
F





LM (DI)

Linguagens regulares

L(E) L(F )

L(E)L(F )
L(E)

TC 2008/09

9 / 35

Exemplo
Instruo: repeat s until b

Smbolos: s execuo de s
b avaliao de b com true
b avaliao de b com false
Linguagem das execues possveis:
{sb, sbsb, sbsbsb, . . .}
Expresso regular: s(bs) b
Diagrama sintctico:
- s

'

- b
$


&
s 
LM (DI)

b 

Linguagens regulares

%
TC 2008/09

10 / 35

Outro exemplo
Falar ao telefone: marca (atende toca) (atende fala + ) desliga

?
marca
 


toca
6
atende


?


 


atende
?
fala

?
desliga
?
LM (DI)

Linguagens regulares

TC 2008/09

11 / 35

Exemplo de ER
Comer a sopa

Smbolos: vazio, vazio, colher


(prato vazio, prato no vazio, comer uma colher de sopa)

Linguagens regulares:
{vazio}{colher } = {vazio colher }
(prato no vazio, comer uma colher de sopa)

({vazio}{colher }) =
{, vazio colher , vazio colher vazio colher , . . .}
(prato no vazio e comer uma colher, zero ou mais vezes)

({vazio}{colher }) {vazio} =
{vazio, vazio colher vazio, . . .}
(enquanto prato no vazio comer uma colher)

Expresso regular: (vazio colher ) vazio


LM (DI)

Linguagens regulares

TC 2008/09

12 / 35

Outros exemplos
Processos simples

Pregar um prego
(enterrado martela) enterrado
Telefonar (1)
marca (atende toca) atende fala desliga
Telefonar (2)
marca (atende toca) (atende fala + ) desliga
Mquina de vendas
(200$ ChGra + 100$ ChPeq + 100$ 100$ ChGra)

LM (DI)

Linguagens regulares

TC 2008/09

13 / 35

Propriedades de ER
Baseadas na definio de igualdade de ER

E =F

def

L(E) = L(F )

Propriedades de +
P + (Q + R) = (P + Q) + R

Associativa

P +=+P =P

E. neutro

P +Q =Q+P

Comutativa

P +P =P

Idempotncia

Propriedades de

LM (DI)

P(QR) = (PQ)R

Associativa

P = P = P

E. neutro

P = P =

E. absorvente

Linguagens regulares

TC 2008/09

14 / 35

Outras propriedades
(Mesmo assim incompletas)

Distributividades
P(Q + R) = PQ + PR
(Q + R)P = QP + RP

esquerda
direita

Propriedades de
P + = P
P + P = P
(P + ) = P
(P ) = P
+ PP = P
P(QP) = (PQ) P

LM (DI)

Linguagens regulares

TC 2008/09

15 / 35

Justificao intuitiva de + PP = P
Recorrendo a diagramas (justificao anloga para as outras igualdades)

GF
O
@A

+ PP

@A

/ P

ED

P o

BC

O
BC
O

@A

P o

BC

Em ambos os diagramas, P percorrido zero ou mais vezes.


LM (DI)

Linguagens regulares

TC 2008/09

16 / 35

Equao linear direita X = AX + B


A e B so expresses regulares sem ocorrncias da incgnita X

Resoluo intuitiva
Expandindo:
X

=
=
=
=
..
.

AX + B
A(AX + B) + B
A2 X + AB + B
A3 X + A2 B + AB + B

No limite:
X

= B + AB + A2 B + A3 B + + An B +
= ( + A + A2 + A3 + + An + )B

(O raciocnio no rigoroso: o membro direito no uma ER.)

Tem-se ento
X = A B
LM (DI)

Linguagens regulares

TC 2008/09

17 / 35

Exemplo
Comer a sopa

X
X

= AX + B
= A B

Comer a sopa consiste em:


1

Se o prato estiver vazio, terminar.

Se no estiver vazio, comer uma colher de sopa e repetir o


processo.

A ER S correspondente satisfaz:
S = vazio
colher} S + vazio
|
{z
| {z }
A

Soluo:
S = (vazio colher ) vazio
LM (DI)

Linguagens regulares

TC 2008/09

18 / 35

Outro exemplo
Execues de: repeat s until b

X
X

= AX + B
= A B

A ER R das execues de repeat s until b satisfaz:


R = s(b + bR)
Resolvendo:
R = s(b + bR)
R = sb + sbR
R = |{z}
sb R + |{z}
sb
A

R = (sb) sb
R = s(bs) b
LM (DI)

Linguagens regulares

TC 2008/09

19 / 35

Mais dois exemplos


Os as ocorrem em pares consecutivos:
X
X

= + aaX + bX

= (aa + b) X + |{z}
| {z }

= (aa + b)

Mquina de vendas:
M = 200$ ChGra M + 100$ ChPeq M + 100$ 100$ ChGra M +
M = (200$ ChGra + 100$ ChPeq + 100$ 100$ ChGra)

LM (DI)

Linguagens regulares

TC 2008/09

20 / 35

Resultados sobre a equao X = AX + B


1

A B soluo.

Se L(A), existem infinitas solues.

A B a menor soluo.
( um subconjunto de todas as outras.)

Se 6 L(A), A B a nica soluo.

Verificao de 1
A(A B) + B = AA B + B
= (AA + )B
= A B
Exemplo de 2
(

X =X +a
X = a = a

LM (DI)

Infinitas solues:
E +a
Linguagens regulares

( E)
TC 2008/09

21 / 35

Sistemas de equaes lineares direitas


Resoluo por eliminao e substituio

X1 = A11 X1 + + A1n Xn + B1
..
.

Xn = An1 X1 + + Ann Xn + Bn
De forma abreviada:
Xi =

n
X

Aij Xj + Bi

(i = 1, . . . , n)

j=1

Resoluo
1

Eliminar 1 incgnita.

Substitu-la nas outras equaes.

Resolver essas equaes.

Substituir as solues na primeira equao.


LM (DI)

Linguagens regulares

TC 2008/09

22 / 35

Exemplo
Palavras sobre {a, b} com nmero par de as

P = aI + bP +
I = aP + bI


Eliminar I

I = b aP


P = a(b aP) + bP +

Substituir na
equao de P

P = (ab a + b)P +
= (ab a + b)

Resolver a
equao de P

P = (ab a + b)
I = b a(ab a + b)

Substituir na
equao de I

LM (DI)

Linguagens regulares

TC 2008/09

23 / 35

Outra resoluo do mesmo sistema


Onde se mostra a importncia da ordem de eliminao na simplicidade da soluo

P = aI + bP +
I = aP + bI

P = b (aI + )


I = ab (aI + ) + bI = ab aI + ab + bI

I = (ab a + b)I + ab = (ab a + b) ab


P = b ( a (ab a + b) ab + )

P = b a (ab a + b) ab + b
I = (ab a + b) ab

LM (DI)

Linguagens regulares

TC 2008/09

24 / 35

Propriedade
Minimalidade da soluo

A soluo obtida por eliminao/substituio a soluo mnima.

LM (DI)

Linguagens regulares

TC 2008/09

25 / 35

Equao linear esquerda


Soluo simtrica da soluo da equao linear direita

X = XA + B
Soluo mnima:
X = BA
Exemplo:


X
X

= Xab + c
= c(ab)

(Sero teis para uma questo sobre gramticas LL(1).)

LM (DI)

Linguagens regulares

TC 2008/09

26 / 35

Equaes no lineares
Em geral, as solues no so linguagens regulares

Exemplo
X = XX + (X ) +
A soluo a linguagem das expresses de parnteses
bem-formadas como
()

(()())

()()(())

No uma linguagem regular.

LM (DI)

Linguagens regulares

TC 2008/09

27 / 35

Equaes lineares, nem direitas nem esquerdas


Em geral tambm no tem solues regulares

Exemplo
X = aXb +
A soluo a linguagem {an bn | n 0}.
No regular.

LM (DI)

Linguagens regulares

TC 2008/09

28 / 35

Sistemas com equaes lineares direitas e esquerdas


Em geral, as solues no so regulares

Exemplo


X
Y

= aXb +
= Xb

X
Y

= aY +
= Xb


X
Y

= {an bn | n 0}
= {an bn+1 | n 0}

A soluo no regular.

LM (DI)

Linguagens regulares

TC 2008/09

29 / 35

Sistema no linear com soluo regular


So por vezes usados por serem mais legveis que os SLD

S
N

=
=
=
=

Dependncias
entre incgnitas

SN
+ +
A + AN
0+1+2
9 eK
tt I KKKK
tt
K
t
t
NO
S

A
Resolvendo pela ordem das dependncias (p. ex., A N S I)

I = ( + + )(0 + 1 + 2) (0 + 1 + 2)

S = + +
N = A A = (0 + 1 + 2) (0 + 1 + 2)

A = 0+1+2
LM (DI)

Linguagens regulares

TC 2008/09

30 / 35

rvores de linguagens
Linguagens representadas por caminhos de rvores etiquetadas

A rvore de L T obtm-se a partir da rvore de T do seguinte


modo:
1

Distinguem-se dois tipos de ns na rvore de T :


I
I

!"#

Ns de aceitao '&%$
Ns simples

onde terminam palavras de L.


onde no terminam palavras de L.

Eliminam-se as sub-rvores s com ns do segundo tipo.


A rvore resultante a rvore de L.

Nota: Sub-rvore significa um n e todos os seus descendentes.

LM (DI)

Linguagens regulares

TC 2008/09

31 / 35

Exemplo
T = {a, b}, linguagem a b

1. rvore de T modificada:

!"#
XXXXXXXb
eeee'&%$
XXXXX
eeaeeee
e
e
e
e
X'&%$
e
!"#
'&%$
!"#e
a mmm RRRRbR
akkkk RRRRbR
m
k
RR
R
k
m
R
k
m
k
m
'&%$
!"#
'&%$
!"#
'&%$
!"#
a vv HHHb
a z HHHb
a z HHHb
a ~~@@@b
z
z
H
H
H
@
v
~
z
z
v
~
z
z
'&%$
!"#
'&%$
!"#
'&%$
!"#
'&%$
!"#

..
.

..
.

..
.

..
.

..
.

..
.

..
.

..
.

2. Eliminao de sub-rvores:

'&%$
!"#
a ll RRRRbR
RR
lll
l
l
'&%$
!"#
'&%$
!"#
RRRRb
a lll RRRRbR
RRR
RR
ll
l
l
'&%$
!"#
'&%$
!"#
'&%$
!"#
RRRRb
RRRRb
a lll RRRRbR
RRR
RRR
l
R
l
R
l
l
'&%$
!"#
'&%$
!"#
'&%$
!"#
'&%$
!"#

..
.

LM (DI)

..
.

..
.

Linguagens regulares

..
.

TC 2008/09

32 / 35

rvores racionais
Comprimem-se em autmatos finitos

Tm um nmero finito de sub-rvores distintas


(em rigor: no-isomorfas).

'&%$
!"#
o_ _ _ _ _ _ _ _ _ _ c_ _c1
qq MMMMbM c c c c c c c
q
q
q
c c cMM
cqMq q c c c
'&%$
!"#
'&%$
!"#

Mo_MM_ _ _ e_ e_ e_ _eq2
MMMb
a qqq
b e
q
M
q
e eMMeMM
q
M
q
M'&%$
e e e
xq
qq
r
e
'&%$
!"#
!"#
'&%$
!"#
MMM
MMM
MMM
a qqq
MbMM
MbMM
MbMM
q
q
M
M
M'&%$
q
q
'&%$
!"#
'&%$
!"#
!"#
'&%$
!"#

..
.

..
.

..
.

..
.

Representao finita:

89:;
0123
7654
/ ?>=<
1

a
b

?>=<
7654
0123
/ 89:;
2

( um autmato finito, como se ver.)


LM (DI)

Linguagens regulares

TC 2008/09

33 / 35

Outra linguagem racional


Linguagem de repeat s until b: s(bs) b

o_ _ _ _ _ _ _ _ _ _1
s

lo_SSS_S _b _ _ _ _ _ _ _2
bllll
SSS
l
SSS
l
ll
l
'&%$
!"#
o_ _ _ _ _3

lll

ll
..
.
Representao finita:

SSSSS b

blllll

SSSS
S'&%$
!"#

89:;
/ ?>=<
1

k
b

LM (DI)

Linguagens regulares

?>=<
89:;
2
b
?>=<
89:;
0123
7654
3
TC 2008/09

34 / 35

Uma linguagem no racional


{an bn | n 0}

'&%$
!"#
a mm
mmm
m
m
v
a nnnQQQQbQ
n
QQ
n
n
nN
'&%$
!"#
o_ _ _1
a ppp NNNb
NNN
p
p
p
a _ ] \ Z
pN
rPdPPPbb
2
a ppp NNNb
_
NNN h e b PPP\ Y V
pp
p
p
'&%$
!"#
N

tNNNNb
3
a ppp NNNb
NNN
p
c aNNN _ ] [ Z Y W
p
d
f
p
g
p
s
NNNNb
NNNNb a ` _ ^P]PPPb
4
\PPP[ Z Y
..
NNN
e d c bNNN
X
f
.
s
'&%$
!"#
KKK b

KKK b
5
KK
KK
KK
KK
..
LLL b
KKK b
.
LLL
KK
KK
L
'&%$
!"#
PPPPb

PPP
QQQQb
QQQ
'&%$
!"#

LM (DI)

Linguagens regulares

TC 2008/09

35 / 35

3. Aut
omatos Finitos
Teoria da Computa
c
ao

Lus Monteiro
DI-FCT/UNL

Lic. Eng. Inform


atica, 2008/09

Problema do reconhecimento de
linguagens
Dados x T e L T .
Determinar se x L .
Aut
omatos
Entrada
x T
/

Controlo

Sa
da
/
S/N

Se a resposta for S, diz-se que o aut


omato
reconhece ou aceita x.
Aut
omatos finitos
Reconhecem as linguagens regulares.

Aut
omatos finitos s
ao grafos
NML
/OHIJK

1


s
-

b,b !

s
r
q
$
p

o p
n
ONML
HIJK v m
m[ \ ^ _ `
?8
r

s,b,b

HIJK
ONML


ONML
HIJK
@ABC
GFED

s,b,b

Alfabeto de entrada T = {s, b, b} .


Estados Q = {1, 2, 3, 4} .
Estado inicial qI = 1 , de aceita
c
ao F = {3} .
Fun
c
ao de transi
c
ao : Q T Q :

1
2
3
4

s
2
4
4
4

b
4
3
4
4

b
4
1
4
4

Linguagem reconhecida: as palavras que etiquetam os caminhos de 1 a 3.


3

Defini
c
ao de aut
omato finito (AF)

A = (T, Q, qI , , F )
T alfabeto de entrada;
Q conjunto finito de estados;
qI estado inicial;
: Q T Q fun
c
ao de transi
c
ao de estado;
F Q conjunto de estados de aceita
c
ao.
Representa
c
ao esquem
atica:


Fita

a b b a





Cabe
ca de leitura

Unidade de
controlo

q
4

Extens
ao de a : Q T Q
(q, ) = q;
(q, ax) = ((q, a), x)

(a T, x T ).

Exemplos (AF do repeat):


NML
/OHIJK

1


b,b !

s
-

s
r
q
$
p

o p
n
ONML
HIJK v m
m[ \ ^ _ `
?8
r

s,b,b

HIJK
ONML


HIJK
ONML
@ABC
GFED

s,b,b

(3, ) = 3
(2, b) = (2, b) = ((2, b), )
= (3, ) = 3
(ou = (2, b) = 3)
(1, sb) = ((1, s), b) = (2, b) = 3
5

Linguagem reconhecida ou aceite por um


AF
L(A) = {x T | (qI , x) F }.
Exemplo (AF do repeat):
NML
/OHIJK

1


s
-

b,b !

s
r
q
$
p

o p
n
ONML
HIJK v m
m[ \ ^ _ `
?8
r

s,b,b

HIJK
ONML


HIJK
ONML
@ABC
GFED

s,b,b

(1, sb) = 3, qI = 1 e 3 F , logo sb L(A).


Linguagem reconhecida

sb,

sbsb,

sbsbsb,

...

Exemplo: M
aquina de vendas

200$

HIJK
ONML
@ABC
GFED
NML
/OHIJK
mQ ?_ ?
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
??
?


ChGra

100$

ChGra

ChP eq

HIJK
ONML

HIJK
/ONML

100$

Nota: As transi
c
oes em falta iriam para um
estado de erro como no exemplo do repeat.
costume deixar esse estado implcito.
E
Linguagem reconhecida (como se ver
a)
(200$ ChGra + 100$ ChP eq +
100$ 100$ ChGra)
7

Exemplo: labirinto
Esquema:

Aut
omato:
HIJK
/ ONML

Este

ONML
/HIJK
o
O

HIJK
ONML

HIJK
ONML

Este
Oeste

N orte

Sul


ONML
HIJK

Este
Oeste

OGFED
@ABC
NML
/ HIJK

Este

Linguagem:
E(EO + S(EO)N )S(EO)EE
8

Exemplo: casa assombrada


Uma casa est
a assombrada por dois rudos:
Um riso sard
onico.
Um canto mordaz.
Os rudos podem ser alterados:
Tocando
org
ao.
Queimando incenso.
Regras:
O canto permanece como est
a (audvel ou
em sil
encio) a menos que se toque
org
ao com
o riso em sil
encio, e nesse caso o canto adopta
o comportamento oposto.
Se se queima incenso, o riso imita o canto.
Se n
ao, far
a exactamente o contr
ario.
Neste momento ouvem-se os dois rudos.
Que fazer para conseguir o sil
encio total?
9

Aut
omato da casa assombrada
Estados:
A: ambos os rudos (estado inicial)
R: riso sard
onico
C: canto mordaz
S: sil
encio (estado final)
Ac
c
oes:
I: queimar incenso
O: tocar
org
ao
T : passar tempo sem fazer nada
I

T,O



HIJK
ONML
HIJK
ONML
/
m
Fc F
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
FF
F
- HIJK
HIJK
ONML
O@ABC
GFED
NML
m
O
O

T,O

S
I

Linguagem:
I (T + O)[T + II (T + 0)] O
{I + T (T + O) I + OI (T + O)[T + II (T + 0)] O}
10

N
ao-determinismo

E
util alargar o conceito de AF para permitir
que uma palavra de entrada n
ao determine um
comportamento
unico (um caminho
unico no
grafo do aut
omato).
Exemplo: n
umeros reais sem sinal

ONML
/HIJK

ONML
/HIJK

HIJK
/ONML

ONML
/HIJK

HIJK
/ONML

+, /ONML
d
HIJK

&
OGFED
@ABC
NML
/HIJK

(d abrevia 0, 1, 2, . . . , 9)
A palavra dd tem, entre outros, os caminhos:
HIJK
ONML

ONML
/HIJK

ONML
/HIJK

ONML
/HIJK

HIJK
ONML

ONML
/HIJK

ONML
/HIJK

ONML
/HIJK

ONML
/HIJK

ONML
/HIJK

HIJK
ONML

ONML
/HIJK

ONML
/HIJK

O@ABC
GFED
NML
/HIJK

ONML
/HIJK

O@ABC
GFED
NML
/HIJK

11


Arvore
dos percursos possveis

ONML
/8HIJK

a,b
*
j

HIJK
ONML
@ABC
GFED f

Arvore
de percursos
()*+
/.-,


/.-,
()*+


/.-,
()*+


/.-,
()*+


/.-,
()*+


/.-,
()*+

ONML
HIJK
??

??

??


??


?
 
HIJK
ONML
HIJK
ONML
@ABC
GFED
??


??


??




??




?
 
 
HIJK
ONML
@ABC
GFED
HIJK
ONML
@ABC
GFED
HIJK
ONML
??

??

??

??


?


HIJK
ONML
@ABC
GFED
HIJK
ONML
??

??

??


??

?


HIJK
ONML
HIJK
ONML
@ABC
GFED
??

??

??


??



?
 
HIJK
ONML
@ABC
GFED
HIJK
ONML
HIJK
ONML
@ABC
GFED

Palavra reconhecida
Pelo menos um caminho com a palavra toda
lida termina num estado de aceita
c
ao.
12

Simula
c
ao determinista do
n
ao-determinismo

ONML
/8HIJK

a,b
*
j

HIJK
ONML
@ABC
GFED f

Simulador:

GF
/
@A

ED

{1}BC

GF
?>
/
@A
89

ED
=<

{1, 2}BC
:;

}>
}}
}
}}
}}
}
}
}}
}
}}
}}
}
}}
}}
}
}}
}}
}
}
}}
}
}}
}}
}
}
ED
=<
GF
/
BC
:;
@A

a, b

b
GF
?>
@A
89

{2}

ED

{ }BC
c

a, b

(O conjunto vazio escreveu-se aqui { }.)


13

Outro exemplo
HIJK
ONML
L
O LLLL
LLL
LLL
LLL
L% 
HIJK
ONML
@ABC
GFED
9
r
r
rr
rrr
r
r
rrr

rrr
ONML r
/8HIJK

a,b

ONML
/HIJK

a,b

HIJK
/ONML

b

b

HIJK
ONML
@ABC
GFED
}
}}
}}
}
}}

~}}
HIJK
ONML
@ABC
GFED
HIJK
ONML

ONML
HIJK
@ABC
GFED
AA
AA
AA
AA
AA

HIJK
ONML
@ABC
GFED
HIJK
ONML

ONML
1 /HIJK
3

ONML
1 /HIJK
3

A
B
C
D

HIJK
/ ONML

a
b
{1, 3} {1, 2, 3}
{2}
{1, 2, 3} {1, 2, 3} {1, 2, 3}
{2}
{}
{1, 2, 3}
{}
{}
{}

HIJK
@ABC
GFED ]o
/ ONML

a,b

HIJK
ONML
@ABC
GFED

HIJK Z
/ ONML

a,b

14

Constru
c
ao da tabela
ONML
HIJK
L
O LLLL
LLL
LLL
LLL
L% 
HIJK
ONML
@ABC
GFED
r9
r
r
rr
rrr
r
r
rr

rrr
ONML r
/8HIJK

a,b

a,b

a
b
1 {1, 2, 3}
{2}
Tabela auxiliar:
2
{}
{1, 2, 3}
3 {1, 2, 3}
{2}
Estado inicial: {1, 3}
a
b
{1, 3} {1, 2, 3}
{2}
Tabela principal: {1, 2, 3} {1, 2, 3} {1, 2, 3}
{2}
{}
{1, 2, 3}
{}
{}
{}
Estados de aceita
c
ao: {1, 2, 3} e {2}.
15

Aut
omato finito n
ao determinista
(AFND)
A = (T, Q, qI , , F )
: Q (T {}) P(Q)

(q, a) Q

Transi
c
ao:
a

q q 0 q 0 (q, a)

(a T {})

Transi
c
ao repetida:
x

a1 a2

x
}|

an

q = q 0 q q 0
Linguagem reconhecida
x

L(A) = {x T | ( q F ) qI = q}

16

AFD como caso particular de AFND


AFD

AFND

: Q T Q : Q (T {}) P(Q)
(q, a) = q 0

(q, a) = {q 0}
(q, ) =

Propriedade Vendo um AFD como um AFND,


(q, x) = q 0 (AFD)

q = q 0 (AFND).

Propriedade
L(A) reconhecida como AFD
=
L(A) reconhecida como AFND.

17

Simula
c
ao de um AFND por um AFD
O AFND
A = (T, Q, qI , , F )

e simulado pelo AFD


= (T, Q,
qI , , F).
A

Cada q Q
e um conjunto q Q.

Defini
c
ao de A:

.
qI = {q Q | qI = q} Q

e a T , ent
Se P Q
ao
a
.
(P, a) = {q 0 Q | ( q P ) q = q 0} Q

| P F 6= } .
F = {P Q
18

Propriedade
x
(
qI , x) = {q Q | qI = q}

Caso x = :

(
qI , ) = qI = {q Q | qI = q}.

Caso x = ya:
(
qI , ya) = ((
qI , y), a)
y

= ({q | qI = q}, a)
|
{z
}
P

= {q 0 | ( q P ) q = q 0}
y

= {q 0 | ( q) qI = q = q 0}
ya

= {q 0 | qI = q 0}.

19

Teorema

L(A) = L(A)

x L(A)

( q F ) qI = q

{q | qI = q} F 6=

(
qI , x) F 6=

(
qI , x) F

x L(A).

20

AFND dos n
umeros reais

ONML
/HIJK

d
h

ONML
/HIJK

HIJK
/ONML

d
h

ONML
/HIJK

HIJK
/ONML

+, /ONML
d
HIJK
6

&
OGFED
@ABC
NML
/HIJK

Tabela auxiliar
1
2
3
4
5
6
7

d
. E +
1, 2, 3, 4, 6, 7
1, 2, 3, 4, 6, 7 3 5, 6
3, 4, 6, 7
3, 4, 6, 7
5, 6
6, 7
6 6
6, 7
6, 7

(Para aligeirar a nota


c
ao os conjuntos foram representados sem as chavetas exteriores.)

21

Simula
c
ao determinista
Tabela auxiliar
1
2
3
4
5
6
7

d
. E +
1, 2, 3, 4, 6, 7
1, 2, 3, 4, 6, 7 3 5, 6
3, 4, 6, 7
3, 4, 6, 7
5, 6
6, 7
6 6
6, 7
6, 7

Tabela principal
d
.
E
+

> {1}
{1, 2, 3, 4, 6, 7}
{1, 2, 3, 4, 6, 7} {1, 2, 3, 4, 6, 7} {3} {5, 6}

{3}
{3, 4, 6, 7}
{5, 6}
{6, 7}
{6} {6}
{3, 4, 6, 7}
{3, 4, 6, 7}
{5, 6}
{6, 7}
{6, 7}
{6}
{6, 7}
Nota: As casas em branco deviam conter o conjunto
vazio (omitido para facilitar a leitura).
22

AF equivalente
Para n
ao sobrecarregar a figura omite-se o estado de erro .
d
.
E
+

>A
{1}
{1, 2, 3, 4, 6, 7}
B {1, 2, 3, 4, 6, 7} {1, 2, 3, 4, 6, 7} {3} {5, 6}
C
{3}
{3, 4, 6, 7}
D
{5, 6}
{6, 7}
{6} {6}
E
{3, 4, 6, 7}
{3, 4, 6, 7}
{5, 6}
F
{6, 7}
{6, 7}
G
{6}
{6, 7}

HIJK
/ ONML

HIJK
@ABC
GFED 
/ ONML


ONML
HIJK

HIJK
HIJK
@ABC
GFED 
/ ONML
DO MMMMM d / ONML
FO
MM+,
MMM
E
d
MMM
M

M&
HIJK
ONML

HIJK
@ABC
GFED _
/ ONML

23

Propriedade de fecho
A classe das linguagens reconhecidas por AF
(AFD ou AFND)
e fechada para as opera
c
oes
de:
O,
UNIA
O,
CONCATENAC
A
O,
ITERAC
A
O,
COMPLEMENTAC
A
O.
INTERSECC
A

24

Demonstra
c
ao
Sejam Ai = (T, Qi, qiI , i, Fi) AFD ou AFND
tais que Li = L(Ai), (i = 1, 2).
Vamos construir AFND que reconhecem
L1 L2, L1.L2, L1, T L1 e L1 L2.
Podemos supor que Q1 Q2 = .
Para simplificar, identificaremos com o conjunto de triplos (q, a, P ) tal que (q, a) = P .
As constru
c
oes s
ao ilustradas por diagramas
para os aut
omatos da forma:







- i
i
u








qI

25

Uni
ao L1 L2
O aut
omato A tal que L(A) = L1 L2 tem a
forma:


- i
@

qI

 
q1I 
F1



i
i
u
A1

 



 



 
@


@ 

Ri
@
i
u






I


A2

q2

F2

Defini
c
ao de A:

A = (T, Q, qI , , F )
Q = Q1 Q2 {qI }

(qI 6 Q1 Q2)

F = F1 F2
= 1 2 { (qI , , {q1I , q2I }) }
26

Produto L1L2
O aut
omato A tal que L(A) = L1L2 tem a
forma:

 




i
- i






I


A1

q1

F1


 




i
u
- i






I


A2

q2

F2

Defini
c
ao de A:

A = (T, Q, qI , , F )
Q = Q1 Q2
qI = q1I
F = F2
= 1 2 {(q, , {q2I }) | q F1}
27

Itera
c
ao L1
O aut
omato A tal que L(A) = L1 tem a forma:


- u
i

qI

 
q1I 
F1



- i
i
u
A1


6







&

Defini
c
ao de A:

A = (T, Q, qI , , F )
Q = Q1 {qI }

(qI 6 Q1)

F = F1 {qI }
= 1 {(q, , {q1I }) | q F }
NOTA: q F significa q = qI ou q F1.
28

Complementa
c
ao T L1 e intersec
c
ao
L1 L2
Complementa
c
ao
Suponhamos que A1
e determinista.
O aut
omato A tal que L(A) = T L1
e:
A = (T, Q1, q1I , 1, Q1 F1).
Intersec
c
ao
Como pelas leis de Morgan
L1 L2 = T [(T L1) (T L2)],
podem-se usar as constru
c
oes anteriores para
definir o aut
omato A.
29

Uma constru
c
ao com AFD
para a uni
ao e a intersec
c
ao
Sejam dados AFD A1 e A2. Definem-se:

A = (T, Q, qI , , F),

L(A) = L(A1) L(A2),

A = (T, Q, qI , , F),

L(A) = L(A1) L(A2),

em que:
Q = Q1 Q2.
qI = (q1I , q2I ).
((q1, q2), a) = (1(q1, a), 2(q2, a)).
F = (F1 Q2) (Q1 F2).
F = F1 F2 .
30

Toda a linguagem regular

e reconhecida por um AF


e reconhecida por

{}
e reconhecida por

()*+
//.-,

.
/.-,


/()*+

{a} (a T )
e reconhecida por

/()*+
/ .-,

()*+


//.-,

Se L1 e L2 forem linguagens regulares reconhecidas por AF, L1 L2, L1L2 e L1


tamb
em s
ao reconhecidas por AF (propriedade anterior).

31

AFND que reconhece (a + bab)


NOTA: Nos AFNDs que se seguem, abrevia-se
/.-,
()*+
()*+
()*+ /()*+
/.-,
//.-, omitindo a etiqueta .
para /.-,
Express
ao regular a
()*+
//.-,

()*+


//.-,

Express
ao regular a
zn _ P
()*+

 _ _ _/.-,
()*+
// .-,
()*+


_ _ _//.-,
/

Express
ao regular ab
/.-,
/()*+

z
/.-,
()*+
/
W

a
_

/.-,_ _ _//.-,
()*+
/()*+
6
j
c g

/.-,


/()*+

Express
ao regular bab
/()*+
/ .-,

/()*+
()*+
/
/ .-,_ _ _/.-,

z
/.-,
()*+
/

()*+
//.-,

.-,
//()*+
6

/.-,


/()*+

32

Continua
c
ao
Express
ao regular a + bab

()*+
_ _ _//.-,
2

/.-,
()*+
F

2
/.-,
()*+

//()*+
.-,



.-,
//()*+

/.-,
/()*+

z
/.-,
()*+
/

/.-,
/()*+

()*+
//.-,
6

()*+


//.-,

Express
ao regular (a + bab)
/.-,
()*+
/.-,


/()*+
F







~


z
w


t

()*+
 _ _ _/.-,
()*+
_ _ _/.-,
/ 
/ nw \q \ \ [ [
22
[ Z Z Z
YYY
22
XXX
22
WWW
VVU
22
UU
22
TT
22
TS
SS
22
RR
z
/.-,
/.-,
/()*+
()*+
/.-,
()*+
/.-,
()*+
/()*+


/()*+
/ .-,
/
/()*+
//.-,
/ .-,
6

33

AFD equivalente

()*+


//.-,

()*+

 q
//.-,
ww O
w
w
ww
ww
w
ww
ww
w
w
ww
ww
w
ww
ww
w
ww
ww
w
w
ww
ww
w
w
 ww
,/.-,
()*+Dw{ l
/.-,
()*+

< 
DD
z
z
DD
z
DD
zz
DD
zz
z
DD
zz
DD
zz
DD
z
DD
zz
DD
zz
z
D" zz
()*+m
/.-,

AFD reduzido equivalente (a definir mais tarde)


/.-,

 k
/()*+

+ q
()*+
/.-,

34

A linguagem reconhecida
por um AF
e regular
Seja A = (T, Q, qI , , F ) um AFD.
Defina-se o sistema de equa
c
oes lineares direitas

P
Xq = (q) + aT aX(q,a),

q Q.

em que (q) =

se q F,
se q
6 F.

As linguagens
Lq = {x T | (q, x) F }

(q Q)

(palavras que levam de q a F ) s


ao a solu
c
ao
unica
do sistema, logo s
ao regulares.
Como L(A) = LqI ,
e regular.
35

Exemplos
a

AFD:


ONML
/HIJK

+ONML
HIJK
@ABC
GFED x

X1 = aX1 + bX2

Sistema:

X2 = + bX1 + aX2

ONML
HIJK
L
O LLLL
LLL
LLL
LLL
L% 
HIJK
ONML
@ABC
GFED
9
r
r
r
rrr
r
r
r
rrr

rrr
ONML r
/8HIJK

AFND:

a,b

a,b

Sistema:

X1 = aX1 + aX2 + bX2 + X3

X2 = + bX1 + bX2

X = aX + aX + bX
3
1
2
2

36

Xq = Lq (q Q)
e solu
c
ao do sistema
Tem de se ver que
x Lq

x (q) aT aL(q,a).
S

CASO x = :
Lq

leva de q a F

qF

(q)

(q) aT aL(q,a).
S

CASO x = ay:
ay Lq

ay leva de q a F

y leva de (q, a) a F

y L(q,a)

ay aL(q,a)

ay (q) aT aL(q,a).
S

37

Propriedade de itera
c
ao
(pumping lemma)
Seja L uma linguagem regular infinita.
x, y 6= , z

n 0

xy nz L.

DEM.: Seja A um AFD que reconhece L


Seja k o n
umero de estados de A.
Como L
e infinita, tem uma palavra w de
comprimento k.
O percurso de w em A passa por k + 1 estados, logo h
a pelo menos um estado repetido:
x




- i

...

- i



i




...

- i
*

qI

- i


i

- i
d

F
?
i

...

...

i
I




y
x, y, z determinam-se como na figura.
38

Uma linguagem n
ao regular:
L = {anbn | n 0}
1a DEM.: Se fosse regular, era reconhecida
por um AFD, logo era racional, o que se sabe
n
ao ser.
2a DEM.: Se fosse regular, existiam x, y 6= , z
com xy nz L para todo o n 0.
1o caso: y s
o com as
x = ap, y = aq , z = ar bs (p + q + r = s).
Viria ap+nq+r bs L: impossvel porque q > 0.
2o caso: y s
o com bs: an
alogo
3o caso: y com as e bs
x = ap, y = aq br , z = bs (p + q = r + s).
Viria ap(aq br )nbs L: impossvel porque viriam
as depois de bs.
39

Existem algoritmos para as seguintes


quest
oes relativas a AFDs (e AFNDs)
1. x L(A)?
Observar no AFD o percurso determinado
por x e ver se termina num estado de aceita
c
ao.
2. L(A) = ?
Ver se existe um caminho do estado inicial
para um estado de aceita
c
ao.
3. L(A) = T ?
Ver se L(A0) = onde L(A0) = T L(A).
4. L(A1) L(A2)?
Ver se (T L(A2)) L(A1) = .
5. L(A1) = L(A2)?
Ver se L(A1) L(A2) e L(A2) L(A1).
40

AFD acessvel
x T

qQ

(qI , x) = q

x

- i




...

- i


i

- i

qI

Para tornar um AFD acessvel reconhecendo a


mesma linguagem, restringem-se os estados a
{q | x T

(qI , x) = q}.

Exemplo:
=

/.-,?
()*+
G ??
??
??
??
??
??
??
??
?

()*+?_
/.-,
()*+
/.-,


??
?

??

??

??

??

??


??

??

? 
()*+
/.-,


()*+
/.-,


/.-,?
()*+
G ??
??
??
??
??
??
??
??
?
()*+
/.-,



41

Estados equivalentes: indistinguveis pela


observa
c
ao dos comportamentos
S
o
e observ
avel a interface com o exterior:
as entradas em T e as sadas S/N .
b


6 
YI *

-

Caixa negra

=

WVUT
PQRS
EE
y
EE
yy
EE
y
y
EE
y
y
EE
y
y
EE
y
y
EE
y
y
EE
y
y
E"
y
|y
HIJK
ONML
@ABC
GFED
HIJK
ONML h
<
y
yy
y
yy
yy
y
y
yy
yy
y
yy
'
WVUT
PQRS

10


ONML
HIJK
DD
DD
D
DD
DD
DD
DD
DD
DD
D"
HIJK
ONML
GFED
@ABC


ONML
HIJK

100

10 e 100 t
em o mesmo comportamento.
Podem-se fundir num
unico estado 1.
42

Estados equivalentes: defini


c
ao
q q 0 ( x T ) (q, x) F

(q 0, x) F
Lq = Lq 0

onde
Lq = {x | (q, x) F }

e uma rela
c
ao de equival
encia:
Reflexividade: q q
Simetria: q q 0 = q 0 q
Transitividade: q q 0 q 00 = q q 00

43

Aut
omato reduzido de A = (T, Q, qI , , F )
AR = (T, QR , qRI , R , FR )
QR = {[q] | q Q}
onde [q] = {q 0 | q q 0}.
qRI = [qI ].
R ([q], a) = [(q, a)] para q Q, a T .
FR = {[q] | q F }.
R ([q], a) est
a bem definida:
[q] = [q 0]
= q q 0
= x T

(q, ax) F (q 0, ax) F

= x T

((q, a), x) F ((q 0, a), x) F

= (q, a) (q 0, a)
= [(q, a)] = [(q 0, a)]
44

Exemplo


PQRS
WVUT
II
u
II
uu
II
u
u
II
u
u
II
u
u
II
u
II
uu
u
II
u
u
I$
uz
PQRS
WVUT
PQRS
WVUT
HIJK
ONML
WVUT
PQRS
T

10

200

20

10 100


)
PQRS
WVUT

30

100

20 200

WVUT
HIJK
ONML
/ PQRS

300

30 300

[10] = [100] = {10, 100} = A


[20] = [200] = {20, 200} = B
[30] = [300] = {30, 300} = C

b

HIJK
ONML


ONML
HIJK
II
II
B
II
II
II
II
II
II
$
HIJK
ONML
@ABC
GFED

45

([q], x)
Caracteriza
c
ao de R
([q], x) = [ (q, x)]
R

Caso x = :
([q], ) = [q]
R

= [ (q, )]
Caso x = ay:
([q], ay) = ( ([q], a), y)
R
R R
([(q, a)], y)
= R
HI

= [ ((q, a), y)]


= [ (q, ay)]
HI

=: igual por hip


otese indutiva.
46

Equival
encia de A e AR
L(A) = L(AR )

x L(AR )

(q , x) F
R
RI
R

([q ], x) F
R
I
R

[ (qI , x)] FR

(qI , x) F

x L(A)

47

Algoritmo para o c
alculo de
Id
eia do algoritmo
Definem-se aproxima
c
oes por excesso:
0

O significado de
q k q 0

e que q e q 0 n
ao se distinguem nas primeiras k
transi
c
oes.
O algoritmo define
k+1

em fun
c
ao de

O processo estabiliza ao fim de k n 2


transi
c
oes (n = n
umero de estados):
k

igual a

k+1

igual a

48

Caracteriza
c
ao do algoritmo

q 0 q 0

q, q 0 F
ou
q, q 0 Q F

q k+1 q 0

q k q 0

a T

(q, a) k (q 0a)

Propriedades
q q0

k 0

q k q 0 .

(q e q 0 s
ao indistinguveis se nenhuma sequ
encia
de transi
c
oes os distingue.)
q q0

q n2 q 0.

(0 tem 2 classes. Quando o processo estabiliza, no pior dos casos h


a n classes e em cada
transi
c
ao aumenta-se apenas 1 classe. Logo o
processo estabiliza ao fim de n 2 transi
c
oes.)
49

Exemplo

HIJK
ONML
@ABC
GFED o

ONML
HIJK
\

Q
>1
2
3
4
5
6
7


HIJK
ONML

ONML
HIJK
@ABC
GFED
O


ONML
HIJK


HIJKu
ONML

a
7
7
6
7
6
7
7

b
5
7
7
7
7
3
7

c
2
7
7
7
7
4
7

(> estado inicial, estados de aceita


c
ao.)
50

C
alculo das rela
c
oes k
Q
>1
2
3
4
5
6
7

a
7
7
6
7
6
7
7

b
5
7
7
7
7
3
7

c
2
7
7
7
7
4
7

1 Q a
A 1 B
6 B
3 A
B 5 A
7 B
C 2 B
4 B

b
B
B
B
B
B
B
B

0 Q
1
3
A 5
6
7
B 2
4
c
C
C
B
B
B
B
B
=

a
A
A
A
A
A
A
A

b
A
A
A
A
A
A
A

c
B
A
A
B
A
A
A

2 Q a
A 1 C
6 C
B 3 A
5 A
C 7 C
D 2 C
4 C

b
B
B
C
C
C
C
C

c
D
D
C
C
C
C
C

51

Aut
omato reduzido
2 Q a
A 1 C
6 C
B 3 A
5 A
C 7 C
D 2 C
4 C

b
B
B
C
C
C
C
C

c
D
D
C
C
C
C
C

HIJK
/ ONML

QR
>A
B
C
D

a
C
A
C
C

b
,

b
B
C
C
C

c
D
C
C
C

HIJK
ONML

a
c

b,c
a


ONML
HIJK
@ABC
GFED

'

a,b,c


HIJK ^
/ ONML

a,b,c

52

Problema do reconhecimento de
linguagens
Dados x T e L T .

3. Aut
omatos Finitos

Determinar se x L .

Teoria da Computa
c
ao

Aut
omatos
Entrada
x T

Lus Monteiro

Controlo

Sada
S/N
!

DI-FCT/UNL

Se a resposta for S, diz-se que o aut


omato
reconhece ou aceita x.

Lic. Eng. Inform


atica, 2008/09

Aut
omatos finitos
Reconhecem as linguagens regulares.
1

Aut
omatos finitos s
ao grafos

s
#

!"#$
!%&'(

"

b,b $

*
,+
%
-"
/ .
0
%
%&'(
!"#$
$9 8 7 6 5
21'
+

A = (T, Q, qI , , F )

&

s,b,b

'

Defini
c
ao de aut
omato finito (AF)

%&'(
!"#$

&
!"#$
%&'(
)*+,
-./0

T alfabeto de entrada;

s,b,b

Q conjunto finito de estados;

Alfabeto de entrada T = {s, b, b} .

qI estado inicial;

Estados Q = {1, 2, 3, 4} .
c
ao F = {3} .
Estado inicial qI = 1 , de aceita
Fun
c
ao de transi
c
ao : Q T Q :

1
2
3
4

s
2
4
4
4

b
4
3
4
4

: Q T Q fun
c
ao de transi
c
ao de estado;
F Q conjunto de estados de aceita
c
ao.
Representa
c
ao esquem
atica:

b
4
1
4
4

Fita

a b b a
!

!
!
"
"

Cabe
ca de leitura

Linguagem reconhecida: as palavras que etiquetam os caminhos de 1 a 3.


3

Unidade de
controlo

q
4

Extens
ao de a : Q T Q

Linguagem reconhecida ou aceite por um


AF

(q, ) = q;
(q, ax) = ((q, a), x)

(a T, x T ).

Exemplos (AF do repeat):


1

Exemplo (AF do repeat):

s
#

!"#$
!%&'(

"

b,b $

*
+
-,
"
. /
%&'( % 0
!"#$
$9 8 7 6 5
21'
+

'

b
3

s
#

!"#$
!%&'(

&

s,b,b

%&'(
!"#$

L(A) = {x T | (qI , x) F }.

"

b,b $

&
%&'(
!"#$
)*+,
-./0

*
,+
-"
/ .
0
%
%&'(
!"#$
$9 8 7 6 5
21'
+

s,b,b

'

&

s,b,b

%&'(
!"#$

&
!"#$
%&'(
)*+,
-./0

s,b,b

(1, sb) = 3, qI = 1 e 3 F , logo sb L(A).


(3, ) = 3

Linguagem reconhecida

(2, b) = (2, b) = ((2, b), )


= (3, ) = 3
(ou = (2, b) = 3)
(1, sb) = ((1, s), b) = (2, b) = 3

sb,

sbsb,

sbsbsb,

...

}
6

Exemplo: labirinto

Exemplo: M
aquina de vendas
Esquema:

200$

#
%&'(
!"#$

-./0
)*+,
"#$
!!%&'(
) 1* 1$ 1
11
11
11
11
11
11
11
11
11
11
11
11
11
11
11
11
(

ChGra

100$

Nota: As transi
c
oes em falta iriam para um
estado de erro como no exemplo do repeat.
costume deixar esse estado implcito.
E

%&'(
!"#$
!

Oeste

N orte

+
!"#$
%&'(

(200$ ChGra + 100$ ChP eq +

Este

!"#$
!%&'(
,
-

Sul

Linguagem reconhecida (como se ver


a)

100$ 100$ ChGra)

Este

Aut
omato:
%&'(
! !"#$

%&'(
!!"#$

ChGra

100$

ChP eq

%&'(
!"#$

Este
,

Oeste

%&'(
!"#$

Este

!)*+,
-./0
"#$
! %&'(

Linguagem:

E(EO + S(EO)N )S(EO)EE

Aut
omato da casa assombrada

Exemplo: casa assombrada


Uma casa est
a assombrada por dois rudos:
Um riso sard
onico.
Um canto mordaz.
Os rudos podem ser alterados:
Tocando
org
ao.
Queimando incenso.
Regras:
O canto permanece como est
a (audvel ou
em sil
encio) a menos que se toque
org
ao com
o riso em sil
encio, e nesse caso o canto adopta
o comportamento oposto.
Se se queima incenso, o riso imita o canto.
Se n
ao, far
a exactamente o contr
ario.

Estados:
A: ambos os rudos (estado inicial)
R: riso sard
onico
C: canto mordaz
S: sil
encio (estado final)
Ac
c
oes:
I: queimar incenso
O: tocar
org
ao
T : passar tempo sem fazer nada
I

T,O

+
+
#
%&'( $
%&'(
!"#$
! !"#$
:. :
::
::
::
::
::
::
::
::
::
::
::
::
::
::
: &
# %&'(
%&'(
!"#$
!)*+,
-./0
"#$
$
-

T,O

Linguagem:
I (T + O)[T + II (T + 0)] O
{I + T (T + O) I + OI (T + O)[T + II (T + 0)] O}

Neste momento ouvem-se os dois rudos.


Que fazer para conseguir o sil
encio total?
9

10

Arvore
dos percursos possveis

N
ao-determinismo

E
util alargar o conceito de AF para permitir
que uma palavra de entrada n
ao determine um
comportamento
unico (um caminho
unico no
grafo do aut
omato).

a,b

!"#$
!#%&'(

!"#$
!%&'(

!"#$
!%&'(

a
&
1234
5678

%&'(
!!"#$

!"#$
!%&'(

+, !!"#$
d
%&'(
%&'(
!!"#$

b
+

!)*+,
-./0
"#$
!%&'(

(d abrevia 0, 1, 2, . . . , 9)

&
1234
5678

a
&
1234
5678

a
&
1234
5678

A palavra dd tem, entre outros, os caminhos:


1

!"#$
!%&'(

!"#$
!%&'(

!"#$
!%&'(

%&'(
!"#$

%&'(
!"#$

%&'(
!"#$

!"#$
!%&'(

!"#$
!%&'(

!"#$
!%&'(

b
&
1234
5678

!"#$
!%&'(

!"#$
!%&'(

!)*+,
-./0
"#$
!%&'(

!"#$
!%&'(

!"#$
!%&'(

%&'(
!"#$
)*+,
-./0 %

Arvore
de percursos
5678
1234

Exemplo: n
umeros reais sem sinal

"
$

%&'(
!"#$
11
;
11
11
11
;
1(
;
;'
%&'(
!"#$
%&'(
!"#$
)*+,
-./0
11
;
11
;
;;
11
;;
;;
11
;;
;;
;
;
1(
;' ;
;' ;
%&'(
!"#$
-./0
)*+,
%&'(
!"#$
%&'(
!"#$
-./0
)*+,
1
11
;;
1
;
11
;
;
11
;;
1(
;' ;
%&'(
!"#$
%&'(
!"#$
-./0
)*+,
11
;
1
;
11
;;
11
;;
1
;
1(
;' ;
%&'(
!"#$
%&'(
!"#$
)*+,
-./0
11
11
;;
;
11
;;
11
;
;
&
1(
;
;'
%&'(
!"#$
-./0
)*+,
%&'(
!"#$
%&'(
!"#$
)*+,
-./0

a;;;;;

Palavra reconhecida

Pelo menos um caminho com a palavra toda


lida termina num estado de aceita
c
ao.

!"#$
!%&'(

!)*+,
-./0
"#$
!%&'(

11

12

Simula
c
ao determinista do
n
ao-determinismo

Outro exemplo
3

a,b

!"#$
!#%&'(

"
$

%&'(
!"#$
)*+,
-./0 %

!"#$
%&'(
=
3 ====
===
===
===
=0 2
%&'(
!"#$
-./0
)*+,
+4
+++
+
+
++
+
+
++
/
+++
!"#$ 1
!#%&'(

a,b

%&'(
!!"#$

b&

a,b

!"#$
!%&'(

b&

%&'(
!"#$
)*+,
-./0
<

b<<<<<

<<
5<<
%&'(
!"#$
-./0
)*+,

b
&

%&'(
!"#$

!"#$
%&'(
)*+,
-./0
>>
>>
>>
>>
>>
&
6
%&'(
!"#$
)*+,
-./0
%&'(
!"#$

!"#$
1 !%&'(
3

!"#$
!%&'(

Simulador:

)*
!
-.

+,

+,
;<

{1, 2}/0
?@

a, b

<.
<<
<<
<<
<
<
<<
<<
<<
<<
<
<<
<<
<<
<<
<<
<
<
<<
<<
<<
<<
+,
;<
)*
!
?@
/0
-.

)*
9:
-.
=>

)*
9:
!
-.
=>

{1}/0

a
b
A {1, 3} {1, 2, 3}
{2}
B {1, 2, 3} {1, 2, 3} {1, 2, 3}
C
{2}
{}
{1, 2, 3}
D
{}
{}
{}

&

{2}

b
+,

{ }/0

%&'(
! !"#$

a, b

%&'(
)*+,
-./0 89
! !"#$

%&'(
!"#$
)*+,
-./0

%&'( :
! !"#$

a,b

a,b

(O conjunto vazio escreveu-se aqui { }.)


14

13

Constru
c
ao da tabela

!"#$
%&'(
=
3 ====
===
===
===
=0 2
%&'(
!"#$
-./0
)*+,
4
++
+
+
++
+++
+
+
+
/
+++
!"#$ 1
!#%&'(

a,b

Aut
omato finito n
ao determinista
(AFND)
b

A = (T, Q, qI , , F )

a,b

: Q (T {}) P(Q)

(q, a) Q

Transi
c
ao:
a
b
1 {1, 2, 3}
{2}
Tabela auxiliar:
2
{}
{1, 2, 3}
3 {1, 2, 3}
{2}

q q ) q ) (q, a)

(a T {})

Transi
c
ao repetida:

Estado inicial: {1, 3}

x
!
"#
$
a1 a2
an )
)
q = q q
q
x

a
b
{1, 3} {1, 2, 3}
{2}
Tabela principal: {1, 2, 3} {1, 2, 3} {1, 2, 3}
{2}
{}
{1, 2, 3}
{}
{}
{}

Linguagem reconhecida
x

L(A) = {x T | ( q F ) qI = q}

Estados de aceita
c
ao: {1, 2, 3} e {2}.
15

16

Simula
c
ao de um AFND por um AFD
AFD como caso particular de AFND
AFD

O AFND
A = (T, Q, qI , , F )

AFND

: Q T Q : Q (T {}) P(Q)
(q, a) = q )

e simulado pelo AFD

(q, a) = {q )}

= (T, Q,
qI , , F).
A

(q, ) =

Cada q Q
e um conjunto q Q.

Propriedade Vendo um AFD como um AFND,


(q, x) = q ) (AFD)

Defini
c
ao de A:

q = q ) (AFND).

.
qI = {q Q | qI = q} Q

Propriedade
e a T , ent
Se P Q
ao

L(A) reconhecida como AFD

a
.
(P, a) = {q ) Q | ( q P ) q = q )} Q

=
L(A) reconhecida como AFND.

| P F .= } .
F = {P Q
18

17

Propriedade
x
(
qI , x) = {q Q | qI = q}

Teorema

Caso x = :

L(A) = L(A)

(
qI , ) = qI = {q Q | qI = q}.

Caso x = ya:

x L(A)

(
qI , ya) = ((
qI , y), a)
y

= ({q | qI = q}, a)
#
$!
"
P

= {q ) | ( q P ) q = q )}
y

= {q ) | ( q) qI = q = q )}

( q F ) qI = q

{q | qI = q} F .=

(
qI , x) F .=

(
qI , x) F

x L(A).

ya

= {q ) | qI = q )}.
19

20

Simula
c
ao determinista
AFND dos n
umeros reais
Tabela auxiliar

!"#$
!%&'(
)

!"#$
!%&'(

%&'(
!!"#$

4 E

!"#$
!%&'(

%&'(
!!"#$

+
!)*+,
-./0
"#$
!%&'(

+, !!"#$
d
%&'(

Tabela auxiliar
d
. E +
1 1, 2, 3, 4, 6, 7
2 1, 2, 3, 4, 6, 7 3 5, 6
3
3, 4, 6, 7
4
3, 4, 6, 7
5, 6
5
6, 7
6 6
6
6, 7
7
6, 7

d
. E +
1 1, 2, 3, 4, 6, 7
2 1, 2, 3, 4, 6, 7 3 5, 6
3
3, 4, 6, 7
4
3, 4, 6, 7
5, 6
5
6, 7
6 6
6
6, 7
7
6, 7
Tabela principal

(Para aligeirar a nota


c
ao os conjuntos foram representados sem as chavetas exteriores.)

d
.
E
+

> {1}
{1, 2, 3, 4, 6, 7}
{1, 2, 3, 4, 6, 7} {1, 2, 3, 4, 6, 7} {3} {5, 6}

{3}
{3, 4, 6, 7}
{5, 6}
{6, 7}
{6} {6}
{3, 4, 6, 7}
{3, 4, 6, 7}
{5, 6}
{6, 7}
{6, 7}
{6}
{6, 7}

Nota: As casas em branco deviam conter o conjunto


vazio (omitido para facilitar a leitura).
21

22

AF equivalente
Para n
ao sobrecarregar a figura omite-se o estado de erro .
d
.
E
+

>A
{1}
{1, 2, 3, 4, 6, 7}
B {1, 2, 3, 4, 6, 7} {1, 2, 3, 4, 6, 7} {3} {5, 6}
C
{3}
{3, 4, 6, 7}
D
{5, 6}
{6, 7}
{6} {6}
E
{3, 4, 6, 7}
{3, 4, 6, 7}
{5, 6}
F
{6, 7}
{6, 7}
G
{6}
{6, 7}

Propriedade de fecho
A classe das linguagens reconhecidas por AF
(AFD ou AFND)
e fechada para as opera
c
oes
de:
O,
UNIA
O,
CONCATENAC
A
O,
ITERAC
A
O,
COMPLEMENTAC
A

%&'(
! !"#$

d
%&'(
)*+,
-./0 ;
! !"#$

.
&
!"#$
%&'(

d
F
+,
d

O.
INTERSECC
A

%&'(
%&'(
)*+,
-./0 '
! !"#$
! !"#$
???
3
3
???
???
???
???
+
%&'(
)*+,
-./0 <
%&'(
!"#$
! !"#$

23

24

Demonstra
c
ao

Uni
ao L1 L2

Sejam Ai = (T, Qi, qiI , i, Fi) AFD ou AFND


tais que Li = L(Ai), (i = 1, 2).

O aut
omato A tal que L(A) = L1 L2 tem a
forma:

Vamos construir AFND que reconhecem


L1 L2, L1.L2, L1, T L1 e L1 L2.

Para simplificar, identificaremos com o conjunto de triplos (q, a, p) tal que p (q, a):
q

-./0
! )*+,

As constru
c
oes s
ao ilustradas por diagramas
para os aut
omatos da forma:
' !%
(
!%
!
%
!
%
" #
#
$
"
&
"
&
"&
"&
)*

qI

"
&
"&
"&
)*

##

" #
#
%

qI

Podemos supor que Q1 Q2 = .

-./0
)*+,

'(

!% !%
q1I !
F1
%
%
!
#
#
$
A
1
&
$ "
#

'(
!% !%
%
!
%
% !
%
&#
%
#
$
"
&
&
"
"&
I "&
)*

q2

A2

F2

Defini
c
ao de A:

A = (T, Q, qI , , F )
Q = Q1 Q2 {qI }

(qI . Q1 Q2)

F = F1 F2
= 1 2 { (qI , , q1I ), (qI , , q2I ) }

25

26

Produto L1L2

Itera
c
ao L1

O aut
omato A tal que L(A) = L1L2 tem a
forma:

O aut
omato A tal que L(A) = L1 tem a forma:

'(
!% !%
%
!
!
%
" #
#
"
&
"
&
"&
I "&
)*

q1

A1

F1

'(
!% !%
%
!
!
%
" #
#
$
"
&
"
&
"&
I "&
)*

q2

A2

" $
#

qI

'(
!%
%
%
#
$
&
"
!
"
&
"&
"&
)*

!%
q1I !
" #! A
+

F2

F1

Defini
c
ao de A:

Defini
c
ao de A:

A = (T, Q, qI , , F )

A = (T, Q, qI , , F )

Q = Q1 Q2

Q = Q1 {qI }

(qI . Q1)

qI = q1I

F = F1 {qI }

F = F2

= 1 {(q, , q1I ) | q F }

= 1 2 {(q, , q2I ) | q F1}

NOTA: q F significa q = qI ou q F1.


27

28

Complementa
c
ao T L1 e intersec
c
ao
L1 L2

Uma constru
c
ao com AFD
para a uni
ao e a intersec
c
ao
Sejam dados AFD A1 e A2. Definem-se:

Complementa
c
ao
Suponhamos que A1
e determinista.
O aut
omato A tal que L(A) = T L1
e:

A = (T, Q, qI , , F),

L(A) = L(A1) L(A2),

A = (T, Q, qI , , F),

L(A) = L(A1) L(A2),

em que:

A = (T, Q1, q1I , 1, Q1 F1).

Q = Q1 Q2.

Intersec
c
ao

qI = (q1I , q2I ).

Como pelas leis de Morgan


L1 L2 = T [(T L1) (T L2)],
podem-se usar as constru
c
oes anteriores para
definir o aut
omato A.

((q1, q2), a) = (1(q1, a), 2(q2, a)).


F = (F1 Q2) (Q1 F2).
F = F1 F2 .
30

29

AFND que reconhece (a + bab)


Toda a linguagem regular

e reconhecida por um AF


e reconhecida por
{}
e reconhecida por

NOTA: Nos AFNDs que se seguem, abrevia-se


5678 5678
1234
5678
5678
!1234 omitindo a etiqueta .
!1234 para 1234
Express
ao regular a

5678
!1234

5678
!1234

5678
EFGH
ABCD
!1234

5678
EFGH
ABCD
!1234

{a} (a T )
e reconhecida por

Express
ao regular a
5678
!1234

=/ 6 @
5678
EFGH 6 6 61234
ABCD
5678
5678
EFGH
ABCD
6 6 6!1234
!
!1234

5678
EFGH
ABCD
!1234

Se L1 e L2 forem linguagens regulares reconhecidas por AF, L1 L2, L1L2 e L1


tamb
em s
ao reconhecidas por AF (propriedade anterior).

Express
ao regular ab
A

a
6

5678
5678
!12346 6 6!1234
,
C D

5678
EFGH
ABCD
!1234

Express
ao regular bab
5678
!1234

31

=
5678
!1234

5678
!1234

5678
5678
!12346 6 61234
!

=
1234
5678
!

5678
!1234

234
!15678
,

5678
EFGH
ABCD
!1234

32

AFD equivalente

Continua
c
ao
Express
ao regular a + bab

56782
6 6 6!1234
E

2
E

1234
5678
2>

1! 234
5678
EFGH G
ABCD
&& 3
&&
&&
&
&&
&&
&&
&&
&&
&&
&
&
&&
&&
&&
&&
&&
&
&
&&
&&
& &&
H1234
5678
EFGH
5678Q&F J
1234
L ABCD
QQ
II
QQ
II
QQ
II
QQ
I
QQ
II
QQ
II
QQ
II
QQ
II
QQ
II
QI III
5678K
1234

b
E

1! 234
5678
EFGH
ABCD

5678
EFGH
ABCD
!1234

E?
1234
5678

5678
!1234

5678
!1234

=
1234
5678
!

5678
!1234

5678
!1234
,

5678
EFGH
ABCD
!1234

Express
ao regular (a + bab)

1234
5678
5678
EFGH
ABCD
!1234
>
F
22
22
G
2
H
22
I
22
&
22
22, )
2
5678
EFGH 6 6 6!1234
5678A@ 8 8 8 9 9
6 6 61234
! ABCD
EE
9 P P P
OOO
EE
NNN
EE
BBB
MML
EE
LL
EE
AA
EE
AK
KK
EE
JJ
=
?
5678
1234
15678
234
1
5678
234
5678
1234
15678
5678
1! 234
5678
EFGH
ABCD
!
!
!
! 234
!1234
,

AFD reduzido equivalente (a definir mais tarde)

M
234
EFGH E
ABCD
!15678

C G
1234
5678

34

33

A linguagem reconhecida
por um AF
e regular

Exemplos

Seja A = (T, Q, qI , , F ) um AFD.

AFD:

Defina-se o sistema de equa


c
oes lineares direitas

)
Xq = (q) + aT aX(q,a),

em que (q) =

C!"#$
%&'(
)*+,
-./0 D

X1 = aX1 + bX2

AFND:

se q F,
se q
. F.

X2 = + bX1 + aX2

!"#$
%&'(
=
3 ====
===
===
===
=0 2
%&'(
!"#$
)*+,
-./0
+4
+++
+
+
++
+
+
++
/
+++
!"#$ 1
!#%&'(

As linguagens
Lq = {x T | (q, x) F }

b
E

Sistema:

q Q.

B
!"#$
!%&'(

a,b

a,b

(q Q)

(palavras que levam de q a F ) s


ao a solu
c
ao
unica
do sistema, logo s
ao regulares.
Como L(A) = LqI ,
e regular.
35

Sistema:

X1 = aX1 + aX2 + bX2 + X3

X2 = + bX1 + bX2

X = aX + aX + bX
3
1
2
2
36

Xq = Lq (q Q)
e solu
c
ao do sistema

Propriedade de itera
c
ao
(pumping lemma)

Tem de se ver que


x Lq

CASO x = :
Lq

leva de q a F

qF

(q)

(q) aT aL(q,a).

CASO x = ay:
ay Lq

Seja L uma linguagem regular infinita.

x (q) aT aL(q,a).

" #

qI

ay leva de q a F

y leva de (q, a) a F

y L(q,a)

ay aL(q,a)

ay (q) aT aL(q,a).

n 0

x
" #

/
.

...

" #
'

"

" #

/
.

...

(
#

#
)

Uma linguagem n
ao regular:
L = {anbn | n 0}

%
!

...

37

xy nz L.

DEM.: Seja A um AFD que reconhece L


Seja k o n
umero de estados de A.
Como L
e infinita, tem uma palavra w de
comprimento k.
O percurso de w em A passa por k + 1 estados, logo h
a pelo menos um estado repetido:
!

x, y .= , z

...
0
1

" #
-

&

x, y, z determinam-se como na figura.

38

Existem algoritmos para as seguintes


quest
oes relativas a AFDs (e AFNDs)

1a DEM.: Se fosse regular, era reconhecida


por um AFD, logo era racional, o que se sabe
n
ao ser.
2a DEM.: Se fosse regular, existiam x, y .= , z
com xy nz L para todo o n 0.
1o caso: y s
o com as

1. x L(A)?
Observar no AFD o percurso determinado
por x e ver se termina num estado de aceita
c
ao.
2. L(A) = ?
Ver se existe um caminho do estado inicial
para um estado de aceita
c
ao.

x = ap, y = aq , z = ar bs (p + q + r = s).
Viria ap+nq+r bs L: impossvel porque q > 0.
2o caso: y s
o com bs: an
alogo

3. L(A) = T ?
Ver se L(A)) = onde L(A)) = T L(A).
4. L(A1) L(A2)?
Ver se (T L(A2)) L(A1) = .

3o caso: y com as e bs
x = ap, y = aq br , z = bs (p + q = r + s).
Viria ap(aq br )nbs L: impossvel porque viriam
as depois de bs.
39

5. L(A1) = L(A2)?
Ver se L(A1) L(A2) e L(A2) L(A1).
40

AFD acessvel
x T

qQ

" #

qI

(qI , x) = q

x
" #

/
.

...

Estados equivalentes: indistinguveis pela


observa
c
ao dos comportamentos
S
o
e observ
avel a interface com o exterior:
as entradas em T e as sadas S/N .

" #

(qI , x) = q}.

Exemplo:

&
12341
5678
S 11
11
11
11
11
11
11
11
1(
R
56781<
1234
5678
1234
EFGH
ABCD
11
;T
11
;;
;
11
;;
11
;
11
;;
11
;;
11
;;
11
;;
1 ;;;
1234
5678

R
5678
1234

&
12341
5678
S 11
11
11
11
11
11
11
11
1(
5678
1234
EFGH
ABCD

41

P
%&'(
!"#$

&
!"#$
%&'(
QQ
QQ
Q
QQ
QQ
QQ
QQ
QQ
QQ
QI
%&'(
!"#$
-./0
)*+,

&
MNOP
IJKL
SS
R
SS
R
SS
RR
SS
RR
SS
RR
SS
RR
R
SS
RR
SS
R
R
SI
NRR
%&'( )
!"#$
%&'(
!"#$
)*+,
-./0
L
RR
R
RR
R
RR
R
RR
RR
RR
RR
O
MNOP
IJKL

1)

'
! (
*) $'
+
"

Caixa negra

Para tornar um AFD acessvel reconhecendo a


mesma linguagem, restringem-se os estados a
{q | x T

1))

1) e 1)) t
em o mesmo comportamento.
Podem-se fundir num
unico estado 1.

42

Aut
omato reduzido de A = (T, Q, qI , , F )
AR = (T, QR , qRI , R , FR )
Estados equivalentes: defini
c
ao

QR = {[q] | q Q}
onde [q] = {q ) | q q )}.

q q ) ( x T ) (q, x) F

(q ), x) F
Lq = Lq )

qRI = [qI ].

onde
Lq = {x | (q, x) F }

R ([q], a) = [(q, a)] para q Q, a T .


FR = {[q] | q F }.
R ([q], a) est
a bem definida:

e uma rela
c
ao de equival
encia:

[q] = [q )]

Reflexividade: q q

= q q )

Simetria: q q ) = q ) q
Transitividade: q q ) q )) = q q ))

= x T

(q, ax) F (q ), ax) F

= x T

((q, a), x) F ((q ), a), x) F

= (q, a) (q ), a)
= [(q, a)] = [(q ), a)]
43

44

Exemplo
([q], x)
Caracteriza
c
ao de R
([q], x) = [ (q, x)]
R

&
IJKL
MNOP
TT
(
TT
(
TT
((
TT
((
TT
((
TT
((
(
TT
((
TT
(
TU
(= (
MNOP
IJKL
IJKL
MNOP
MNOP
IJKL
%&'(
!"#$
W

1)

2)

2))

1) 1))

Caso x = :

3)

([q], ) = [q]
R

b
V
IJKL
MNOP

1))

2) 2))

3))

MNOP
%&'(
!"#$
! IJKL

= [ (q, )]

3) 3))

Caso x = ay:

[1)] = [1))] = {1), 1))} = A

([q], ay) = ( ([q], a), y)


R
R R

[2)] = [2))] = {2), 2))} = B

([(q, a)], y)
= R

[3)] = [3))] = {3), 3))} = C

= [ ((q, a), y)]

= [ (q, ay)]

&
!"#$
%&'(
TT
TT
Y
TT
TT
TT
TT
TT
TT
U
%&'(
!"#$
)*+,
-./0

b
X
%&'(
!"#$

HI

HI

=: igual por hip


otese indutiva.

45

46

Algoritmo para o c
alculo de
Id
eia do algoritmo
Definem-se aproxima
co
es por excesso:

Equival
encia de A e AR

L(A) = L(AR )

x L(AR )

(q , x) F
R
RI
R

([q ], x) F
R
I
R

[ (qI , x)] FR

(qI , x) F

x L(A)

O significado de
q k q )

e que q e q ) n
ao se distinguem nas primeiras k
transi
c
oes.
O algoritmo define
k+1

em fun
c
ao de

O processo estabiliza ao fim de k n 2


transi
c
oes (n = n
umero de estados):
k
47

igual a

k+1

igual a

48

Caracteriza
c
ao do algoritmo

q 0 q )

q, q ) F
ou
q, q ) Q F

q k+1 q )

Exemplo

q k q )

a T

&
!"#$
%&'(

%&'(
!"#$
-./0 9
)*+,

!"#$
%&'(
]

(q, a) k (q )a)

&
!"#$
%&'(

!"#$
%&'(
-./0
)*+,
3

[
!"#$\
%&'(

Propriedades
q q)

k 0

q k q ) .

Q
>1
2
3
4
5
6
7

(q e q ) s
ao indistinguveis se nenhuma sequ
encia
de transi
co
es os distingue.)
q q)

q n2 q ).

(0 tem 2 classes. Quando o processo estabiliza, no pior dos casos h


a n classes e em cada
transi
c
ao aumenta-se apenas 1 classe. Logo o
processo estabiliza ao fim de n 2 transi
c
oes.)

a
7
7
6
7
6
7
7

b
5
7
7
7
7
3
7

c
2
7
7
7
7
4
7

(> estado inicial, estados de aceita


c
ao.)

49

50

Aut
omato reduzido

C
alculo das rela
c
oes k
Q
>1
2
3
4
5
6
7

a
7
7
6
7
6
7
7

b
5
7
7
7
7
3
7

c
2
7
7
7
7
4
7

0 1 Q
A 1
6
A
3
B 5
7
B C 2
4

a
B
B
A
A
B
B
B

b
B
B
B
B
B
B
B

0 Q
1
3
A 5
6
7
B 2
4

1 2 Q
A A 1
6
B 3
B
5
C 7
C D 2
4

c
C
C
B
B
B
B
B

a
A
A
A
A
A
A
A

b
A
A
A
A
A
A
A
a
C
C
A
A
C
C
C

2 Q a
A 1 C
6 C
B 3 A
5 A
C 7 C
D 2 C
4 C

c
B
A
A
B
A
A
A
b
B
B
C
C
C
C
C

c
D
D
C
C
C
C
C

51

b
B
B
C
C
C
C
C

c
D
D
C
C
C
C
C

QR
>A
B
C
D

a
C
A
C
C

b
%&'(
! !"#$

c
&
!"#$
%&'(
-./0
)*+,

c
D
C
C
C

%&'(
!"#$

b,c

a
O

a,b,c

b
B
C
C
C

&
%&'( Z
! !"#$

a,b,c

52

4. Gram
aticas Independentes
do Contexto
Teoria da Computa
c
ao

Lus Monteiro
DI-FCT/UNL

Lic. Eng. Inform


atica, 2008/09

Reconhecimento vs gera
c
ao
Aut
omatos s
ao dispositivos reconhecedores:
testam palavras, verificando se satisfazem certos crit
erios de reconhecimento.
As gram
aticas s
ao dispositivos geradores:
produzem palavras, utilizando certo tipo de regras de produ
c
ao.
O mecanismo de gera
c
ao usado
e a rescrita:
substitui
c
ao de uma sub-palavra por outra palavra.
A rescrita
e especificada por regras de produc

ao ou produ
c
oes: indicam como uma palavra
pode ser substituda por outra.

Defini
c
ao de gram
atica
Uma gram
atica
e constituda por quatro tipos
de entidades:

1. Smbolos terminais T .
2. Smbolos n
ao-terminais N .
T e N s
ao disjuntos e p
oe-se V = T N .
3. Smbolo inicial S N .
4. Produ
c
oes , V N V , V .
O conjunto das produ
c
oes
e P .
Uma gram
atica indica-se assim:
G = (T, N, S, P )
3

Exemplo de gram
atica
T = {+, =, 1}
N = {E, A, B}
S=E
P = {

+A

BAB ,

+B

B+

}
Como se geram palavras numa gram
atica? Como
se caracteriza a linguagem gerada por uma
gram
atica?
4

Deriva
c
ao
A gera
c
ao de palavras baseia-se na opera
c
ao
de deriva
c
ao (tamb
em chamada rescrita).
Deriva
c
ao directa

se

P.

Deriva
c
ao em n 0 passos n

0 , 1 , . . . , n V
= 0 1 n = .

Deriva
c
a o

n0

n
5

Exemplo de deriva
c
ao
Produ
c
oes:

P :

E +A
A BAB
A =

+B B+

B 1

Deriva
c
ao:
E +A +BAB
+BBABB +BB = BB
B + B = BB 1 + B = BB
1 + 1 = BB 1 + 1 = 1B
1 + 1 = 11
(As sub-palavras rescritas est
ao sublinhadas.)
6

Linguagem gerada por uma gram


atica
Algumas propriedades da deriva
c
ao
Se P ent
ao .
V

e implicam .
Conjuntos de palavras derivadas
D() = { V | }
L() = {x T | x}
Linguagem gerada por uma gram
atica G
L(G) = L(S) = {x T | S x}

Exemplo de linguagem gerada

E +A
A BAB
A =

+B B+

B 1

E +A +BAB +B 2AB 2
+B nAB n
+B n = B n B + B n1 = B n
B k + B nk = B n
1k + 1nk = 1n
L(E) = {1k + 1n = 1k+n | k, n 0}
(Tabuada da adi
c
ao na base un
aria.)
8

Classifica
c
ao de Chomsky das gram
aticas
(Segundo a forma das produ
c
oes)
Tipo 0 : Nenhuma restri
c
ao

( V N V ,

V )

Gram
aticas n
ao restringidas: todas as produ
c
oes
s
ao do tipo 0 (quaisquer gram
aticas).
Tipo 1 :
A

(, V ,
A N,
V+

( 6= ))

Gram
aticas dependentes do contexto: todas as
produ
c
oes s
ao do tipo 1 excepto S se S
n
ao ocorrer no corpo de nenhuma produ
c
ao.
9

Classifica
c
ao de Chomsky (cont.)
Tipo 2 :
A

(A N,

V )

Gram
aticas independentes do contexto: todas
as produ
c
oes s
ao do tipo 2.
Tipo 3 :
Ax

(x T ,

A xB

A, B N )

Gram
aticas lineares direitas: todas as produ
c
oes
s
ao do tipo 3.

10

Classifica
c
ao de Chomsky:
Classes not
aveis de linguagens
Li:

Classe das linguagens geradas


por gram
aticas do tipo i.

Designa
c
oes particulares:
L3:

Linguagens regulares,

L2:

Linguagens independentes do contexto,

L0:

Linguagens recursivamente enumer


aveis.

T
em-se as seguintes inclus
oes estritas:
L3 L2 L1 L0

11

Representa
c
ao abreviada de gram
aticas
independentes do contexto (GIC)
Indicam-se apenas as produ
c
oes, juntando as
que t
em a mesma cabe
ca.
Produ
c
oes
E

E+T

T F

(E)

Abreviatura

E+T |T

T F |F

(E) | a

Os smbolos n
ao terminais s
ao as cabe
cas
das produ
c
oes: {E, T, F }.
Os outros smbolos s
ao terminais: {+, , (, ), a}.
O smbolo inicial
e o da cabe
ca da primeira
produ
c
ao: E.
12

Exemplos de GIC: Programas


1. Instru
c
oes

(Programa)

I | I; S

(Seq. de instru
c
oes)

V := E

(Instru
c
ao)

if C then I

while C do I

begin S end

13

Exemplos de GIC: Programas


2. Express
oes

E + T | E T | T (Express
ao)

T F | T /F | F

(Termo)

V | N | (E)

(Factor)

E = E | E 6= E

(Condi
c
ao)

LR

(Vari
avel)

| LR | DR

(Resto da var.)

D | ND

(N
umero)

a | | z

(Letra)

0 | | 9

(Dgito)

14

Exemplos de GIC: Dados

1. Arvores
etiquetadas
rvores com etiquetas nos n
A
os e nos arcos s
ao
usadas para representar os mais variados tipos
de informa
c
ao.
A
arvore seguinte representa a igualdade x = 0:

equalK

tt
tt
t
t
tt
tt
t
t
tt
tt
t
tt
tt

left

var
id
x

KKK
KKK
KKK
KKK
KKK
KKK
KKK
K

right

const
val
0

15

Exemplos de GIC: Dados


2. Representa
c
ao de
arvores etiquetadas
por palavras
As etiquetas s
ao consideradas como smbolos.
A
arvore
e representada pela palavra:
N
o[Arco:Sub-
arvore, Arco:Sub-
arvore, . . .]
rvore:
A
equalK

t
tt
tt
t
t
tt
tt
t
tt
tt
t
tt
tt

left

var
id
x

KKK
KKK
KKK
KKK
KKK
KKK
KKK
K

right

const
val
0

Representa
c
ao:
equal[left:var[id:x], right:const[val:0]]
16

Exemplos de GIC: Dados


3. Outro exemplo de
arvore etiquetada
Esta
arvore cont
em informa
c
ao sobre pessoas:
anaJJ

r
rrr
r
r
rr
rrr
r
r
r
rrr
r
r
r
rrr

morada
caparica

JJ
JJ
JJ
JJ
JJ
JJ
JJ
JJ
JJ
J

m
ae

joanaJ

u
uu
uu
u
uu
uu
u
u
uu
uu
u
uu
uu

profiss
ao
eng-inf

JJ
JJ
JJ
JJ
JJ
JJ
JJ
JJ
JJ
JJ
J

morada
caparica

representada pela palavra:


E
ana [ morada: caparica,
m
ae: joana [ profiss
ao: eng-inf,
morada: caparica ] ]

17

Exemplos de GIC: Dados


4. Gram
atica para
arvores etiquetadas

S T

% Smbolo inicial

T N | N [L]

rvore
% A

L A : T | L, A : T

% Lista de sub-
arvores

N n1 | | nk

% Etiqueta de n
o

A a1 | | ar

% Etiqueta de arco

(N
ao se detalhou a defini
c
ao das etiquetas.)

18

Exemplos de GIC: Processos


Interac
c
ao com filas ou pilhas
Assumindo as opera
c
oes open, close, put e get,
pretende-se captar o seguinte princpio de funcionamento:
Em cada interac
c
ao, put e get s
ao executadas o mesmo n
umero de vezes (no incio a
pilha ou fila est
a vazia e no fim tamb
em).
Em qualquer ponto de uma interac
c
ao, get
n
ao pode ter sido executada mais vezes do que
put.

hinteractioni open hsessioni close


|

hsessioni put hsessioni get hsessioni


|

19

Exemplos de GIC: Lnguas naturais


hsentencei hnoun-phraseihverb-phrasei
|

hnoun-phraseihverb-phrasei
hnoun-phrasei

hnoun-phrasei hproper-nouni
|

hdeterminerihcommon-nouni

hproper-nouni Jill | John


hcommon-nouni car | hamburger
hdetermineri a | the
hverb-phrasei hverbi
|

hverbihadverbi

hverbi drives | eats


hadverbi slowly | frequently

Jill drives slowly


John eats a hamburger
John eats frequently a hamburger
20

Representa
c
ao de produ
c
oes por
arvores
E

E+T |T

T F |F

(E) | a

A cabe
ca etiqueta a raiz e o corpo as folhas,
ordenadamente da esquerda para a direita:

uu
uu
u
uu
uu
uu

t
tt
tt
t
t
tt
tt

u
uu
uu
u
uu
uu
uu

E IIII
+

II
II
II
I

E
T

T
T

T JJJJ

JJ
JJ
JJ
J

F
F

F IIII
E

II
II
II
II

A representa-se por A

21

Deriva
c
oes com
arvores
Gram
atica
E
T
F

E+T |T
T F |F
(E) | a

Deriva
c
ao (esquerda) de a + a
E E+T T +T F +T a+T a+F a+a

Constru
c
ao da
arvore de deriva
c
ao de a + a
E
E22

22
22

E2

22
22

E2

22
22

E2

22
22

E2

22
22

E2

22
22

E + T E + T E + T E + T E + T E + T
T

F T

a
22


Arvores
de deriva
c
ao
N
os interiores etiquetados por n
ao-terminais.
Folhas etiquetadas por terminais ou .
Cada n
o interior com os seus filhos s
ao uma

arvore-produ
c
ao.
Exemplo:

E+T |T

T F |F

(E) | a

uu
uu
u
uu
uu
uu

E IIII
+

II
II
II
I

uu
uu
u
uu
uu
uu

T IIII

II
II
II
I

F
a

23

Deriva
c
oes esquerda e direita
O smbolo que se rescreve
e sempre o mais
`
a esquerda ou sempre o mais `
a direita.
Uma
arvore de deriva
c
ao corresponde a uma
deriva
c
ao esquerda e a uma deriva
c
ao direita:

u
uu
uu
u
u
uu
uu

E IIII
+

II
II
II
I

uu
uu
u
uu
uu
uu

T IIII

II
II
II
I

F
a

E E+T T +T F +T a+T
a+T F a+F F a+aF
a+aa
E E+T E+T F E+T a
E+F a E+aa T +aa
F +aa a+aa
24


Arvores
de deriva
c
ao e sem
antica
Uma
arvore de deriva
c
ao
e uma estrutura
associada a uma palavra que
e usada para lhe
dar significado.

E+T |T

T F |F

(E) | 0 | 1 | 2 | | 9

E
T
F

3

2




13

QQQn
Q Q
oo
n QQQQ
Q Q
ooo
n
o
Q
o
Q
n
QQQ
Q Q
oo
n
o
Q
o
n
QQQ
o
Q Q
n
o
o
Q
n
Q
oo
n
QQQm
P P
mm

m QQQQ
mmm
m
m
Q
m

QQQ P P P
m
mm
QQQ
mmm
m
m
P P
m

QQQ
m
mm
m
m
Q
m
P
m
m










10




2
25

Ordem de prioridade dos operadores


Pode-se dar a + prioridade superior a :
E

EF |F

F +T |T

(E) | 0 | 1 | 2 | | 9

E
F

25

QQQn
P P
nn
n QQQQQ
nnn
n
n
n
QQQ P P P
n
n
n
QQQ
n
n
P P
n
QQQ
nnn
Q
P
nnn
n n







P P
OOOo
o OO
ooo
P P
o
o
O
o
OOO
P P
ooo
oo
o
O
o
O
o
OOO
P P
oo
o
o
o
O
o
O
P
oo
o







5



Em 3 + 2 5 avalia-se + antes de .
26

Ambiguidade
Gram
atica ambgua
Existe pelo menos uma palavra com 2 ou mais

arvores de deriva
c
ao (ou deriva
c
oes esquerdas,
ou deriva
c
oes direitas).
Exemplo: E E + E | E E | (E) | a

E
a

w
ww
ww
w
ww
ww

E GGG
+
E
a

v
vv
vv
v
vv
vv

GG
GG
GG
G

w
ww
ww
w
ww
ww

E GGG

GG
GG
GG
G

ww
ww
w
w
ww
ww

E HHHH

E GGG

GG
GG
GG
G

HH
HH
HH

E
a

Linguagem inerentemente ambgua


Toda a gram
atica para a linguagem
e ambgua.
Exemplo: {aibicj | i, j 1} {aibj cj | i, j 1}
27

A ambiguidade
e decidvel?
S
ao indecidveis:

1. O problema de saber se uma linguagem arbitr


aria
e inerentemente ambgua.

2. O problema de saber se uma gram


atica
independente do contexto arbitr
aria
e ambgua.

Embora n
ao seja possvel dispor de algoritmos
gerais, h
a t
ecnicas que permitem a detec
c
ao e
remo
c
ao da ambiguidade em certos casos de
interesse.

28

Exemplo de remo
c
ao da ambiguidade
A a | AbA
AbA introduz ambiguidade porque:
w
ww
ww
w
ww
ww

w
ww
ww
w
ww
ww

A GGGG

GG
GG
GG

A GGGG

GG
GG
GG

w
ww
ww
w
ww
ww

A GGGG

GG
GG
GG

b
A

w
ww
ww
w
ww
ww

A GGGG

GG
GG
GG

A fun
c
ao de A AbA
e gerar sequ
encias
AbAb AbA .
A a transforma-as em abab aba .
Na primeira deriva
c
ao directa A AbA, o b
pode ser qualquer um da sequ
encia a derivar.
Elimina-se a ambiguidade se obrigarmos a
que ele seja (por exemplo) o primeiro:
A a | abA
29

Ordem de avalia
c
ao
Se b for um operador, A a | abA avalia as
express
oes da direita para a esquerda:

u
uu
uu
u
u
uu
uu

A IIII
b
a

II
II
II
I

u
uu
uu
u
u
uu
uu

A IIII
b

II
II
II
I

A
a

A a | Aba avalia esquerda direita:


A IIII

uu
uu
u
uu
uu
uu

A
b

uu
uu
uu
u
uu
uu
II
II
II
II
II
I

II
II
II
I

a
(Na primeira deriva
c
ao directa A Aba, o b
e
o
ultimo da sequ
encia a derivar.)
30

Express
oes aritm
eticas: 1a tentativa

E E + E | E E | (E) | a
O que cria a ambiguidade s
ao E + E e E E.
A linguagem gerada
e formada por sequ
encias
de (E) ou a separadas por + ou por , como
por exemplo:
F +F +F F +F F
em que F
e (E) ou a.
Por analogia com o exemplo anterior, temse a seguinte gram
atica com a ambiguidade
eliminada:
E F |E+F |EF
F (E) | a
(Ordem de avalia
c
ao esquerda direita.)
31

Problema com a 1a tentativa

E F |E+F |EF
F (E) | a
Problema: As express
oes s
ao sempre avaliadas da esquerda para a direita:

t
tt
tt
t
t
tt
tt

E
F

u
uu
uu
u
u
uu
uu

E JJJJ

E IIII

II
II
II
I

JJ
JJ
JJ
J

F
a

a
Contraria a ordem habitual de avalia
c
ao da
express
ao a + a a.
32

Dando a prioridade superior a +


encias separadas por
Linguagem gerada: sequ
+, de sequ
encias de F s separadas por :
F
F} + F
F} + + F
F}
| {z
| {z
| {z
T

F} + F
F +F
Exemplo: |{z}
F + |{z}
F}.
| {z
| {z
T

Gram
atica:

E T |E+T
T F |T F
F (E) | a

Respeita as prioridades usuais dos operadores:

u
uu
uu
u
u
uu
uu

E IIII
+

II
II
II
I

u
uu
uu
u
u
uu
uu

T IIII

II
II
II
I

F
a

33

Para alterar prioridades


Usam-se par
enteses, como em (a + a) a:
E T |E+T
T F |T F
F (E) | a

kk
kkkk
k
k
k
kk
kkkk
k
k
k
kk
kkkk
vv
vv
v
vv
vv
vv

jj
jjjj
j
j
j
jjj
jjjj
j
j
j
j
jjjj

T SSSSSSSS

E HHH
+

HH
HH
HH
HH

F
a

F TTTTTTTT

TTTT
TTTT
TTTT
TTTT

SSS
SSS
SSS
SSS

a
34

Outros exemplos de ambiguidades


s em excesso
(

L(S) = ( + a) = a

S | AS
A|a
S 888






88
88






S 999

99
99

S 888







88
88






S 999

99
99

S 888







88
88

Dupla itera
c
ao
(

S | AS
A | aA

L(S) = (a) = a

Nos 2 casos a ambiguidade resolve-se por:


S | AS
Aa
35

Propriedade das deriva


c
oes
Para todos os , , , V :

implica

Caso da deriva
c
ao directa
= A =

(A P )

logo
= A = .
Caso geral
= 0 1 n =
logo
= 0 1 n =

36

Propriedade recproca
Sejam x, y T e , V .
xy implica V
= xy,
.
Se xy tem-se
xy x1y x |{z}
n y =

com
1 n = .

37

Propriedade das gram


aticas lineares
direitas (GLD)
Toda a GLD G pode ser transformada numa
GLD G0 tal que:
L(G) = L(G0).
As produ
c
oes de G0 s
ao da forma
A ,

AB

ou

A aB

com A, B N e a T .

38

Demonstra
c
ao
Para obter apenas produ
c
oes dos tipos A ,
A B e A aB procede-se do seguinte modo:
1. Substituir cada A x (x T +) por
A xB

onde B
e um novo smbolo n
ao terminal.
(Fica-se com produ
c
oes A ou A xB
com x T .)

2. Substituir cada A a1 anB (n > 1) por


A
A1
An1

...

a1A1
a2A2
an B

onde A1, A1, . . . , An1 s


ao novos smbolos
n
ao terminais.
39

Exemplo
S aS | cc | A
A bcA |

S aS | ccB | A
B
A bcA |

S
B1
B
A
A1

aS | cB1 | A
cB

bA1 |
cA

40

GLD G

AFND A

L(A) = L(G)

Seja G = (T, N, S, P ) com produ


c
oes dos
tipos A e A aB com a T {}.
Define-se A = (T, Q, qI , , F ) por
Q = N,
qI = S,
(A, a) = {B | A aB P },
F = {A | A P }.
Exemplo GLD = AFND
S aS | T
T bT |

ONML z
/ HIJK

HIJK
@ABC
GFED |
/ ONML

S aS aT abT ab
NOTA: Comparar com sistemas de equa
c
oes
lineares direitas.
41

AFND A

GLD G

L(G) = L(A)

Seja A = (T, Q, qI , , F ).
Define-se G = (T, N, S, P ) por
N = Q,
S = qI ,
P = {q ap | p (q, a)}

{q | q F }.
Exemplo AFND = GLD
a


GFED
/ @ABC

b
i

GFED
@ABC
?>=<
89:; v

q aq | bp
p | bq | ap

NOTA: Comparar com sistemas de equa


c
oes
lineares direitas.
42

A classe das LIC


e fechada para as
opera
c
oes regulares

L L0

s
ao linguagens
L, L0 independentes
do contexto

L.L0

tamb
em s
ao

Suponhamos que
L = L(G)

com G = (T, N, S, P )

L0 = L(G0) com G0 = (T, N 0, S 0, P 0)


(N N 0 = )
Vamos construir G, G, G tais que:
L L0 = L(G)
L.L0

= L(G)

= L(G).
43

Esquematicamente ...
Uni
ao

S0 S | S 0
(

S
...
(
S0
0
G
...
G

Produto

S0 SS 0
(

S
...
(
S0
0
G
...
G

Itera
c
ao
G

S0 | SS0
(

S
...

44

Mais formalmente ...

G = (T,
N N 0 {S0},

(S0 6 T N N 0)

S0 ,
P P 0 {S0 S, S0 S 0})
G = (T,
N N 0 {S0},

(S0 6 T N N 0)

S0 ,
P P 0 {S0 SS 0})
G = (T,
N {S0},

(S0 6 T N )

S0 ,
P {S0 , S0 SS0})
45

A classe das LIC n


ao
e fechada para a
intersec
c
ao e a complementa
c
ao
{anbncn | n 0} n
ao
e IC (como se ver
a).
ao IC.
{anbnck | n, k 0} , {anbk ck | n, k 0} s

Por exemplo:

nbnck i hanbni hck i

ha

hanbni a hanbni b |

k
hc i c hck i |

Mas {anbncn | n 0} = {anbnck | n, k 0}

{anbk ck | n, k 0}.
Logo a intersec
c
ao de LICs pode n
ao ser IC.
Como
L L0 = T ((T L) (T L0))
o complementar de uma LIC pode n
ao ser IC.
46

Smbolos que geram


= {A N | A }

e o menor subconjunto de N tal que:
AP

AP

A==










A10


 

 

00
00
00
00
0

...

==
==
==
==
==

An0


 

 

00
00
00
00
0

47

Algoritmo para calcular


:= ;
para todo o A P fazer
:= {A};
repetir
para todo o A P fazer
se + e A 6 ent
ao
:= {A}
at
e n
ao se modificar

48

Exemplo
S aAb | bAa
A BC | aB
B

| aB

| Cb

| Cb

1o B, C
2o

= {A, B, C}

49

Smbolos produtivos
A N produtivo

L(A) 6=

O conjunto P r dos smbolos produtivos


eo
menor subconjunto de N tal que:

AxP

x T

AP

(T P r)

A Pr
=

A Pr

A>>










X11

11
11
11
11
1

x1

...

>>
>>
>>
>>
>>
>

Xn1

11
11
11
11
1

xn

50

Exemplo
A aBb | bBa
B CD | aC
C

| aC

| DA

| Ab

E aE | Da
P r = {A, B, C}
Gram
atica simplificada
A aBb | bBa
B aC | Ab
C

| aC

51

Smbolos acessveis
XV

acessvel

, V

xx
xx
x
x
xx
xx
x
xx
xx
x
x

S X

SO FFF
O

O

O
O

O

FF
FF
FF
FF
FF
FF
FF

O conjunto Ac dos smbolos acessveis


e o
menor subconjunto de V tal que:

S Ac
A AC

A X P

xx
xx
x
xx
xx
x
xx
xx
x
xx

...

X Ac

SO FFF
O

O

O
O

O

FF
FF
FF
FF
FF
FF
FF

A 6F66FF ...

x
xx
xx
x
xx 
xx 
x
xx 
xx
x

x

66FFF
66 FF
66 FFF
66 FF
FF
66
FF

52

Exemplo
A aBb | bBa
B Cb | bC
C

| aC

| Db

E aE | Da
Ac = {a, b, A, B, C}
Gram
atica simplificada
A aBb | bBa
B Cb | bC
C

| aC

53

Gram
atica reduzida ou limpa
S
o tem smbolos produtivos e acessveis
Redu
c
ao ou limpeza da gram
atica
Eliminam-se:
1o

improdutivos

2o

inacessveis

in
uteis

e todas as produ
c
oes onde ocorram.

Sa|A
A AB
Bb

Pr

Sa
Bb

Ac

Ac


Sa
54

Gram
atica livre-
N
ao tem produ
c
oes- (i.e., da forma A ).
G0 livre-

GIC G

L(G0) = L(G) {}

Se G = (T, N, S, P ) ent
ao G0 = (T, N, S, P 0)
onde P 0
e definido por:
Retiram-se de P as produ
c
oes-.
Para cada A X1 Xn em P acrescentamse A Xi1 Xik (k > 0) onde os Xj omitidos
geram .
Tem-se L(G0) = L(G) {} porque:
oo
ooo
o
o
oo
ooo
o
o
oo
ooo
o
o
oo

A >O>OOOO ks

+3

>> OOO
>> OOO
OOO
>>
OOO
>>
OOO
>>
OOO

X-1 ... Xi.1 ... X,j ... Xi.k ... X-n

 --- 
-
-



 

 


..
..
..
..
.

xi1

 ,
  ,,,
,,

,,
 
,



 

 


..
..
..
..
.

xik

 --- 
-
-


A88









Xi1

 ...
..
 
..

..
 
.


88
88
88
88
8

...

Xik

.
  ...
..

..
 
..


xi1

xik

55

Exemplo
E TX
X +T X |
T FY

= {X, Y }

Y F Y

F (E)

| a

Gram
atica modificada
E TX

X +T X | +T
T FY

Y F Y

| F

F (E)

Outro exemplo de produ


c
oes
A T XY

A T XY | T X | T Y

B XY

B XY

| X

| T

| Y
56

Continua
c
ao do exemplo
E TX

E TX

X +T X |

X +T X | +T

T FY

T FY

Y F Y

| F

F (E)

| a

F (E)

E JJJJ

X III







55
55
5

Y + T 66
F
a

E888

JJ
JJ
JJ
J

T 55

Y F Y






II
II
II
I

66
66
6

Y 777






77
77

F Y
a







88
88

X55







55
55
5

F +
a

T 55

F
a

55
55
5

Y 66

66
66

F
a

57

Forma normal de Chomsky


Uma gram
atica na FNC s
o tem produ
c
oes
Aa

ou

A BC

(a T, B, C N ).

Teorema
G

G0 em FNC

L(G0) = L(G) {}

Demonstra
c
ao
G0 constr
oi-se a partir de G em 4 passos.
1o passo
Constr
oi-se a gram
atica livre- que reconhece
L(G) {}.

58

2o passo
Para cada a T :
Cria-se um novo smbolo n
ao terminal A .
c
oes.
Substitui-se a por A nas produ
Acrescenta-se a produ
c
ao A a .
Exemplo

S aSb | c =

S ASB | C
Aa

Bb

Cc

No fim do 1o passo t
em-se produ
c
oes
Aa

ou

A B1 Bn

(n > 0)

59

3o passo
Substitui-se cada A B1 Bn
A

B 1 C1

C1

...

B 2 C2

(n > 2) por

C1, . . . , Cn2
novos n
ao terminais

Cn2 Bn1Bn
Exemplo
S AT | C

S ASB | C
Aa

Bb

Cc

T SB
Aa

Bb

Cc

No fim do 2o passo t
em-se produ
c
oes
Aa

ou

AB

ou

A BC
60

4o passo
Para cada A + B e cada B ( 6 N )
acrescenta-se a produ
c
ao A .
No fim, removem-se as produ
c
oes A B .
A1
A2
...
AnC

{
{{
{{
{
{{

ks

+3

A1<








CC
CC
CC
C

...

<<
<<
<<
<<

An1

{{
{{
{
{{
{{
{{

DD
DD
DD
DD
DD

Exemplo
S AT | C

S AT | c

T SB

T SB

Aa
Cc

Bb

Aa

Bb

Cc
61

Para toda a GIC G


e decidvel se x L(G)
Caso x =
Calcular e verificar se S .
Caso x 6=
Determinar G0 em FNC tal que
L(G0) = L(G) {}.
Seja |x| = n > 0.
Se x L(G0), ent
ao x
e derivada em 2n 1
passos (ver a seguir).

62

Deriva
c
ao de x em 2n 1 passos
Seja x = a1 an .
Primeiro deriva-se
S n1 A1 An
usando produ
c
oes do tipo A BC.
Depois deriva-se
A1 An n a1 an
com produ
c
oes do tipo A a.
Algoritmo para decidir se x L(G0)
Enumeram-se todas as deriva
c
oes esquerdas
de comprimento 2n 1.
Verifica-se se x
e gerada ou n
ao.
63

Exemplo

S AT | c

T SB

Aa

abc L(G) ?

Bb

S O_OO_OO_O _ _ _ _ _ _ _ _ _ _ _ 0


AT

OOOO
OOOO
OO #+

c_ _ _ _ _ _1

aT _ _ _ _ _ _ _ _ _ _ _ _ _ _ 2


aSBOO_OO_ _ _ _ _ _ _ _ _ _ _ _ 3

mmm
mmm
m
m
mm
rz mm

aAT B


aaT B

OOOO
OOO
O #+

acB _

_ _ _

acb _ _ _ _ _ 5

acb
e a u
nica palavra de comprimento 3 que
pertence a L(G).
64

Teorema uvwxy
Seja G uma GIC que gera uma linguagem infinita. Existe k > 0 tal que todo o
z L(G)

|z| > k

com

se pode escrever na forma


z = uvwxy
em que
v 6=

ou

x 6=

e
uv nwxny L(G)
para todo o n 0.

65

Demonstra
c
ao
Suponhamos que existe k 0 tal que todo
c
ao
o z L(G) com |z| > k tem uma deriva
da forma
S uAy uvAxy uvwxy = z
com v 6= ou x 6= .
Repetindo a subderiva
c
ao A vAx n vezes
vem A v nAxn , logo
S uAy uv nAxny uv nwxny
Assim, uv nwxny L(G) para todo o n 0.
Falta ver que existe a primeira deriva
c
ao
acima.
66

Demonstra
c
ao (2)
Seja p o comprimento m
aximo do corpo de
qualquer produ
c
ao:
p = max{|| : A

A P }.

Seja m = n
umero de elementos em N .
Seja k = pm+1.
Se a
arvore de deriva
c
ao de x T tiver altura
h (n
umero de desnveis), o comprimento de x

e majorado por ph:


_O

h
_

S 88
















88
88
88
88
88
88
88
88
88

|x| ph

67

Demonstra
c
ao (3)
Seja z L(G) com |z| > k = pm+1.
Se a
arvore de deriva
c
ao de z tivesse altura
m + 1 ter-se-ia |z| pm+1 = k.
Logo a
arvore de deriva
c
ao de z tem pelo
menos um ramo de comprimento m + 2.
SO <<

















{

{{

{

{

{

{{

O

O

AO
O

O

AO

O

O

w
z

_O

<<
<<
<<
<<
<<
<<
>>
<<
>>
<<
>>
<<
>>
<<
>>
<<
>>
<<
>>
CC
CC
<<
>>
CC
<<
>>
CC
<
>

m+2

_

Esse ramo tem m + 1 n


ao terminais, logo
pelo menos um deles aparece repetido.
Se v 6= ou x 6= nada mais h
a a demonstrar.
68

Demonstra
c
ao (4)
Se v = x = , fundiam-se as duas ocorr
encias
de A.
y
yy
yy
y
yy
yy
y
yy
yy
y
y

SO EEE
O

O

O
O

O

A77









EE
EE
EE
EE
EE
EE
EE

77
77
77
77
7

Se se fizesse esta opera


c
ao para todos os
n
ao terminais repetidos, a
arvore teria altura
m + 1.
Logo h
a pelo menos um ramo com um n
ao
terminal repetido nas condi
c
oes requeridas.

69

L = {anbncn | n 0} n
ao
e IC
Suponhamos que L = L(G) em que G
e IC.
Seja z = anbncn com 3n > k (k do teorema).
Tem-se z = uvwxy com v 6= ou x 6= e
uv iwxiy L para todo o i = 0, 1, . . ..
Caso 1: v ou x cont
em 2 dos smbolos a, b, c
Em uv 2wx2y, um b precede um a ou um c
precede um b.
Caso 2: v e x s
o cont
em 1 de a, b, c
uv 2wx2y n
ao tem igual n
umero de a, b, c.
Qualquer dos dois casos
e impossvel.

70

Reconhecimento vs gera
c
ao

4. Gram
aticas Independentes
do Contexto

Aut
omatos s
ao dispositivos reconhecedores:
testam palavras, verificando se satisfazem certos crit
erios de reconhecimento.
As gram
aticas s
ao dispositivos geradores:
produzem palavras, utilizando certo tipo de regras de produ
c
ao.

Teoria da Computa
c
ao

Lus Monteiro
O mecanismo de gera
c
ao usado
e a rescrita:
substitui
c
ao de uma sub-palavra por outra palavra.

DI-FCT/UNL

Lic. Eng. Inform


atica, 2008/09
A rescrita
e especificada por regras de produ
c
ao ou produ
c
oes: indicam como uma palavra
pode ser substituda por outra.

Defini
c
ao de gram
atica

Exemplo de gram
atica

Uma gram
atica
e constituda por quatro tipos
de entidades:

T = {+, =, 1}
N = {E, A, B}

1. Smbolos terminais T .

S=E

2. Smbolos n
ao-terminais N .
T e N s
ao disjuntos e p
oe-se V = T N .

P = {

3. Smbolo inicial S N .
4. Produ
c
oes , V N V , V .
O conjunto das produ
c
oes
e P .

+A

BAB ,

+B

B+

}
Como se geram palavras numa gram
atica? Como
se caracteriza a linguagem gerada por uma
gram
atica?

Uma gram
atica indica-se assim:
G = (T, N, S, P )
3

Exemplo de deriva
c
ao
Deriva
c
ao
Produ
co
es:
A gera
c
ao de palavras baseia-se na opera
c
ao
de deriva
c
ao (tamb
em chamada rescrita).
Deriva
c
ao directa

P :
se

P.

Deriva
c
ao em n 0 passos n
n

Deriva
c
ao:

E +A
A BAB
A =

+B B+

B 1

E +A +BAB

0 , 1 , . . . , n V

+BBABB +BB = BB

= 0 1 n = .

B + B = BB 1 + B = BB
1 + 1 = BB 1 + 1 = 1B

Deriva
c
ao

n0

1 + 1 = 11

(As sub-palavras rescritas est


ao sublinhadas.)
5

Exemplo de linguagem gerada


Linguagem gerada por uma gram
atica
Algumas propriedades da deriva
c
ao

E +A
A BAB
A =

+B B+

B 1

Se P ent
ao .
V

e implicam .

E +A +BAB +B 2AB 2

Conjuntos de palavras derivadas

+B nAB n

D() = { V | }

+B n = B n B + B n1 = B n

L() = {x T | x}

B k + B nk = B n
1k + 1nk = 1n

Linguagem gerada por uma gram


atica G

L(E) = {1k + 1n = 1k+n | k, n 0}

L(G) = L(S) = {x T | S x}

(Tabuada da adi
c
ao na base un
aria.)
7

Classifica
c
ao de Chomsky das gram
aticas
(Segundo a forma das produ
co
es)

Classifica
c
ao de Chomsky (cont.)

Tipo 0 : Nenhuma restri


c
ao

Tipo 2 :

( V N V ,

V )

(A N,

V )

Gram
aticas n
ao restringidas: todas as produ
co
es
s
ao do tipo 0 (quaisquer gram
aticas).

Gram
aticas independentes do contexto: todas
as produ
c
oes s
ao do tipo 2.

Tipo 1 :

Tipo 3 :

(, V ,
A N,
V+

( += ))

Gram
aticas dependentes do contexto: todas as
produ
c
oes s
ao do tipo 1 excepto S se S
n
ao ocorrer no corpo de nenhuma produ
c
ao.

Ax

(x T ,

A xB

A, B N )

Gram
aticas lineares direitas: todas as produ
c
oes
s
ao do tipo 3.

10

Representa
c
ao abreviada de gram
aticas
independentes do contexto (GIC)
Classifica
c
ao de Chomsky:
Classes not
aveis de linguagens

Indicam-se apenas as produ


co
es, juntando as
que t
em a mesma cabe
ca.
Produ
co
es

Li:

Abreviatura

Classe das linguagens geradas


por gram
aticas do tipo i.

Designa
c
oes particulares:
L3:

Linguagens regulares,

L2:

Linguagens independentes do contexto,

L0:

Linguagens recursivamente enumer


aveis.

T
em-se as seguintes inclus
oes estritas:

E+T

T F

(E)

E+T |T

T F |F

(E) | a

Os smbolos n
ao terminais s
ao as cabe
cas
das produ
c
oes: {E, T, F }.

L3 L2 L1 L0

Os outros smbolos s
ao terminais: {+, , (, ), a}.
O smbolo inicial
e o da cabe
ca da primeira
produ
c
ao: E.
11

12

Exemplos de GIC: Programas


2. Express
oes

Exemplos de GIC: Programas


1. Instru
co
es

(Programa)

I | I; S

(Seq. de instru
c
oes)

V := E

(Instru
c
ao)

if C then I

while C do I

begin S end

E + T | E T | T (Express
ao)

T F | T /F | F

(Termo)

V | N | (E)

(Factor)

E = E | E += E

(Condi
c
ao)

LR

(Vari
avel)

| LR | DR

(Resto da var.)

D | ND

(N
umero)

a | | z

(Letra)

0 | | 9

(Dgito)

14

13

Exemplos de GIC: Dados


Exemplos de GIC: Dados

2. Representa
c
ao de
arvores etiquetadas
por palavras

1. Arvores
etiquetadas
rvores com etiquetas nos n
A
os e nos arcos s
ao
usadas para representar os mais variados tipos
de informa
c
ao.

As etiquetas s
ao consideradas como smbolos.

A
arvore seguinte representa a igualdade x = 0:

rvore:
A

A
arvore
e representada pela palavra:
N
o[Arco:Sub-
arvore, Arco:Sub-
arvore, . . .]

equal"

equal"

!!
!!
!!
!!
!!
!
!!
!!
!!
!!
!!

left

var
id
x

!!
!!
!!
!!
!!
!
!!
!!
!!
!!
!!

left

"""
"""
"""
"""
"""
"""
"""
"

right

var
id

const

val

"""
"""
"""
"""
"""
"""
"""
"

right

const

val
0

Representa
c
ao:

equal[left:var[id:x], right:const[val:0]]
15

16

Exemplos de GIC: Dados


3. Outro exemplo de
arvore etiquetada
Exemplos de GIC: Dados
Esta
arvore cont
em informa
c
ao sobre pessoas:

4. Gram
atica para
arvores etiquetadas

ana$$

###
###

##
morada
###
###
###
###
###

$$
$$
$$
$$
$$
$$
$$
$$
$$
$

m
ae

joana$

caparica

%%
%%

%%
%%
profiss
a%%o
%%
%
%%
%%
%%
%%

eng-inf

$$
$$
$$
$$
$$
$$
$$
$$
$$
$$
$

morada
caparica

representada pela palavra:


E
ana [ morada: caparica,
m
ae: joana [ profiss
ao: eng-inf,
morada: caparica ] ]

S T

% Smbolo inicial

T N | N [L]

rvore
% A

L A : T | L, A : T

% Lista de sub-
arvores

N n1 | | nk

% Etiqueta de n
o

A a1 | | ar

% Etiqueta de arco

(N
ao se detalhou a defini
c
ao das etiquetas.)

17

Exemplos de GIC: Processos

Exemplos de GIC: Lnguas naturais

Interac
c
ao com filas ou pilhas

-sentence. -noun-phrase.-verb-phrase.

Assumindo as opera
c
oes open, close, put e get,
pretende-se captar o seguinte princpio de funcionamento:
Em cada interac
c
ao, put e get s
ao executadas o mesmo n
umero de vezes (no incio a
pilha ou fila est
a vazia e no fim tamb
em).
Em qualquer ponto de uma interac
c
ao, get
n
ao pode ter sido executada mais vezes do que
put.

-noun-phrase.-verb-phrase.
-noun-phrase.

-noun-phrase. -proper-noun.
|

-determiner.-common-noun.

-proper-noun. Jill | John


-common-noun. car | hamburger
-determiner. a | the
-verb-phrase. -verb.
|

-verb.-adverb.

-verb. drives | eats

Jill drives slowly

-session. put -session. get -session.


|

-adverb. slowly | frequently

-interaction. open -session. close


|

18

John eats a hamburger


John eats frequently a hamburger

19

20

Representa
c
ao de produ
c
oes por
arvores
E

E+T |T

T F |F

(E) | a

Gram
atica
E
T
F

A cabe
ca etiqueta a raiz e o corpo as folhas,
ordenadamente da esquerda para a direita:

%
%%
%%
%%
%%
%%

!
!!
!!
!!
!!
!!

%%
%%
%%
%%
%%
%%

E &&&&
+

&&
&&
&&
&

Constru
c
ao da
arvore de deriva
c
ao de a + a
E 'E((

F &&&&
E

Deriva
c
ao (esquerda) de a + a
E E+T T +T F +T a+T a+F a+a

''
''
''

((
((

E(
' (
''
''
''

((
((

E(
' (
''
''
''

E(
' (
''
''
''

((
((

((
((

E(
' (
''
''
''

((
((

E(
' (
''
''
''

A representa-se por A

F T

21

22

Arvores
de deriva
c
ao

Deriva
c
oes esquerda e direita

N
os interiores etiquetados por n
ao-terminais.

O smbolo que se rescreve


e sempre o mais
`
a esquerda ou sempre o mais `
a direita.

Folhas etiquetadas por terminais ou .

Cada n
o interior com os seus filhos s
ao uma

arvore-produ
c
ao.

Uma
arvore de deriva
c
ao corresponde a uma
deriva
c
ao esquerda e a uma deriva
c
ao direita:

Exemplo:
E

%
%%
%%
%%
%%
%%

E &&&&
+

E+T |T

T F |F

(E) | a

%
%%
%%
%%
%%
%%

E &&&&
+

% T &&&
&
%%

&&
&&
&&
&

&&
&&
&&
&

%
%%
%%
%%
%%
%%

T &&&&

&&
&&
&&
&

F
a

E E+T T +T F +T a+T

&&
&&
&&
&

%%
%%
%%
%%

((
((

E + T E + T E + T E + T E + T E + T

&&
&&
&&
&&

E+T |T
T F |F
(E) | a

T $$$$

$$
$$
$$
$

Deriva
c
oes com
arvores

a+T F a+F F a+aF

a+aa

E E+T E+T F E+T a

E+F a E+aa T +aa

23

F +aa a+aa

24


Arvores
de deriva
c
ao e sem
antica

Ordem de prioridade dos operadores

Uma
arvore de deriva
c
ao
e uma estrutura
associada a uma palavra que
e usada para lhe
dar significado.

E+T |T

T F |F

(E) | 0 | 1 | 2 | | 9

E
T

3,

F
5,
,

2,

F +T |T

(E) | 0 | 1 | 2 | | 9

25

***+
.
+
***
+++
*** . . .
+ +
+++
***
.
+++ + + +
***
+++
*** . . .
+
+
+
+
+
,
,
,
,
,
,

. .
///)
)
) //
. .
)))
///
))
)))
. .
///
)))
))
///
. .
))) ) )
//
.
)))
)
,
,
,
,
,
,

5,
,

EF |F

10

3,

2,

13

***+
* *
)))
+ ****
* *
)))
***
++
* *
***
)))
++
***
)))
* *
+
)
)
**
+
))
+
***. .
,
- ****
--. .
***
,
***
-. .
--***
,
---. .
**
--

Pode-se dar a + prioridade superior a :

Em 3 + 2 5 avalia-se + antes de .
26

25

Ambiguidade
Gram
atica ambgua

A ambiguidade
e decidvel?

Existe pelo menos uma palavra com 2 ou mais

arvores de deriva
c
ao (ou deriva
c
oes esquerdas,
ou deriva
co
es direitas).

1. O problema de saber se uma linguagem arbitr


aria
e inerentemente ambgua.

Exemplo: E E + E | E E | (E) | a

E
a

00
00
00
00
00

E 111
+
E
a

11
11
11
1

00
00
00
00
00

22
22
22
22
22

E 111

11
11
11
1

00
00
00
00
00

E 3333

E 111

11
11
11
1

S
ao indecidveis:

33
33
33

E
a

Linguagem inerentemente ambgua


Toda a gram
atica para a linguagem
e ambgua.

2. O problema de saber se uma gram


atica
independente do contexto arbitr
aria
e ambgua.

Embora n
ao seja possvel dispor de algoritmos
gerais, h
a t
ecnicas que permitem a detec
c
ao e
remo
c
ao da ambiguidade em certos casos de
interesse.

Exemplo: {aibicj | i, j 1} {aibj cj | i, j 1}


27

28

Exemplo de remo
c
ao da ambiguidade

Ordem de avalia
c
ao

A a | AbA

Se b for um operador, A a | abA avalia as


express
oes da direita para a esquerda:

AbA introduz ambiguidade porque:


00
00
00
00
00

00
00
00
00
00

A 1111

A 1111

11
11
11

11
11
11

00
00
00
00
00

A 1111
b
A

11
11
11

00
00
00
00
00

%
%%
%%
%%
%%
%%

A 1111
b

11
11
11

A &&&&
b
a

&&
&&
&&
&

%
%%
%%
%%
%%
%%

A &&&&
b

&&
&&
&&
&

A fun
c
ao de A AbA
e gerar sequ
encias
AbAb AbA .

A
a

A a | Aba avalia esquerda direita:


A &&&&

A a transforma-as em abab aba .


Na primeira deriva
c
ao directa A AbA, o b
pode ser qualquer um da sequ
encia a derivar.
Elimina-se a ambiguidade se obrigarmos a
que ele seja (por exemplo) o primeiro:

%
%%
%%
%%
%%
%%

A
b

%
%%
%%
%%
%%
%%
&&
&&
&&
&&
&&
&

&&
&&
&&
&

a
(Na primeira deriva
c
ao directa A Aba, o b
e
o
ultimo da sequ
encia a derivar.)

A a | abA

30

29

Express
oes aritm
eticas: 1a tentativa

Problema com a 1a tentativa

E E + E | E E | (E) | a

E F |E+F |EF

O que cria a ambiguidade s


ao E + E e E E.
A linguagem gerada
e formada por sequ
encias
de (E) ou a separadas por + ou por , como
por exemplo:

F (E) | a
Problema: As express
oes s
ao sempre avaliadas da esquerda para a direita:

F +F +F F +F F

!
!!
!!
!!
!!
!!

em que F
e (E) ou a.
Por analogia com o exemplo anterior, temse a seguinte gram
atica com a ambiguidade
eliminada:

E F |E+F |EF

F (E) | a

(Ordem de avalia
c
ao esquerda direita.)

31

E $$$$

% E &&&
&
%%

%%
%%
%%
%%

&&
&&
&&
&

$$
$$
$$
$

F
a

Contraria a ordem habitual de avalia


c
ao da
express
ao a + a a.
32

Dando a prioridade superior a +

Para alterar prioridades

Linguagem gerada: sequ


encias separadas por
+, de sequ
encias de F s separadas por :

Usam-se par
enteses, como em (a + a) a:
E T |E+T
T F |T F
F (E) | a

F( + + F
F(
F
F( + F
% &'
% &'
% &'
T

Exemplo: %&'(
F + %&'(
F + %F &'
F( + %F &'
F(.
T

E T |E+T
T F |T F
F (E) | a

Gram
atica:

Respeita as prioridades usuais dos operadores:


E

%
%%
%%
%%
%%
%%

E &&&&
+

&&
&&
&&
&

%
%%
%%
%%
%%
%%

666
6666
6666
6666
6
6
6
66
6666

T &&&&

&&
&&
&&
&

2
22
22
22
22
22

4444
4444
4444
4444
4444
4444

T 55555555

555
555
555
555

F 77777777
E 333
+

7777
7777
7777
7777

33
33
33
33

a
34

33

Outros exemplos de ambiguidades


Propriedade das deriva
c
oes

s em excesso
)

S
8 999

88
88
88

A
a

S :::
8

99
99

Para todos os , , , V :

L(S) = ( + a) = a

S | AS
A|a

A
a

88
88
88

::
::

S 999

8
88
88
88

S :::
8

88
88
88

::
::

99
99

S | AS
A | aA

= A =

(A P )

logo
= A = .

Dupla itera
c
ao
)

Caso da deriva
c
ao directa

S 999

8
88
88
88

99
99

implica

Caso geral

L(S) = (a) = a

= 0 1 n =

Nos 2 casos a ambiguidade resolve-se por:

logo
= 0 1 n =

S | AS
Aa
35

36

Propriedade recproca
Propriedade das gram
aticas lineares
direitas (GLD)

Sejam x, y T e , V .

Toda a GLD G pode ser transformada numa


GLD G/ tal que:

xy implica V
= xy,
.

L(G) = L(G/).
As produ
c
oes de G/ s
ao da forma

Se xy tem-se
xy x1y x %&'(
n y =

A ,

com

AB

ou

A aB

com A, B N e a T .

1 n = .

37

38

Demonstra
c
ao
Para obter apenas produ
c
oes dos tipos A ,
A B e A aB procede-se do seguinte modo:
1. Substituir cada A x (x T +) por
A xB

(Fica-se com produ


c
oes A ou A xB
com x T .)
2. Substituir cada A a1 anB (n > 1) por

An1

...

S aS | cc | A
A bcA |

onde B
e um novo smbolo n
ao terminal.

A
A1

Exemplo

a1A1
a2A2
an B

onde A1, A1, . . . , An1 s


ao novos smbolos
n
ao terminais.
39

S aS | ccB | A
B
A bcA |

S
B1
B
A
A1

aS | cB1 | A
cB

bA1 |
cA

40

GLD G

AFND A

L(A) = L(G)

AFND A

GLD G

L(G) = L(A)

Seja G = (T, N, S, P ) com produ


co
es dos
tipos A e A aB com a T {}.

Seja A = (T, Q, qI , , F ).

Define-se A = (T, Q, qI , , F ) por

Define-se G = (T, N, S, P ) por

Q = N,

N = Q,

qI = S,

S = qI ,

(A, a) = {B | A aB P },

P = {q ap | p (q, a)}

F = {A | A P }.

{q | q F }.

Exemplo GLD = AFND


a

S aS | T

T bT |

1234 &
! 5678

Exemplo AFND = GLD

5678
%&'( '
!"#$
! 1234

#
%&'(
! !"#$

b
$

"

%&'(
!"#$
-./0 %
)*+,

S aS aT abT ab
NOTA: Comparar com sistemas de equa
c
oes
lineares direitas.

q aq | bp

p | bq | ap

NOTA: Comparar com sistemas de equa


c
oes
lineares direitas.
42

41

A classe das LIC


e fechada para as
opera
c
oes regulares

Esquematicamente ...
Uni
ao

s
ao linguagens
L, L/ independentes
do contexto

L L/
L.L/

tamb
em s
ao

Suponhamos que
L = L(G)

G
Produto

com G = (T, N, S, P )

L/ = L(G/) com G/ = (T, N /, S /, P /)

(N N / = )

Vamos construir G, G, G tais que:

Itera
c
ao

L L/ = L(G)
L.L/ = L(G)
L
= L(G).

43

S0 S | S /
S
..

S/

G
...

S0 SS /

S
..

S/

G
...

S0 | SS0
S
...
44

Mais formalmente ...

A classe das LIC n


ao
e fechada para a
intersec
c
ao e a complementa
c
ao
{anbncn | n 0} n
ao
e IC (como se ver
a).

G = (T,
N N / {S0},

(S0 + T N N /)

{anbnck | n, k 0} , {anbk ck | n, k 0} s
ao IC.

S0 ,
P P / {S0 S, S0 S /})

Por exemplo:

G = (T,
N N / {S0},

(S0 + T N N /)

-anbnck . -anbn. -ck .

-anbn. a -anbn. b |

k
-c . c -ck . |

Mas {anbncn | n 0} = {anbnck | n, k 0}

S0 ,

{anbk ck | n, k 0}.

P P / {S0 SS /})

Logo a intersec
c
ao de LICs pode n
ao ser IC.

G = (T,

Como

(S0 + T N )

N {S0},

L L/ = T ((T L) (T L/))

S0 ,
P {S0 , S0 SS0})

o complementar de uma LIC pode n


ao ser IC.
45

46

Smbolos que geram


= {A N | A }

Algoritmo para calcular


e o menor subconjunto de N tal que:
AP

AP

para todo o A P fazer

:= ;

:= {A};

repetir

para todo o A P fazer


se + e A + ent
ao

A<<

;
;;
;;
;;
;;
;
;;

A1

>
== >>>
>>
==
>>
==
>>
== =
=

...

<<
<<
<<
<<
<<

:= {A}

at
e n
ao se modificar

An

>
== >>>
>>
==
>>
== =
>>
=
==

47

48

Smbolos produtivos
A N produtivo

Exemplo

O conjunto P r dos smbolos produtivos


eo
menor subconjunto de N tal que:

S aAb | bAa
A BC | aB
B
C

| aB

| Cb

| Cb

1o B, C
2o

L(A) +=

AxP

x T

AP

(T P r)

A Pr
=

A Pr

A??

;;
;;
;;
;;
;
;
;;

...

X1A

= {A, B, C}

@@
@@
@@
@
@
@@

??
??
??
??
??
?

XnA

@@
@@
@@
@
@
@@

AA
AA
AA
AA
A

x1

AA
AA
AA
AA
A

xn

49

50

Smbolos acessveis
Exemplo

XV

acessvel

B
BB
BB
BB
BB
B
B
BB
BB
BB

A aBb | bBa
B CD | aC
C
D

| aC

| Ab

E aE | Da

A AC

Gram
atica simplificada

!"

!"
!"

!"
!"

CC
CC
CC
CC
CC
CC
CC

A X P
B
BB
BB
BB
BB
B
B
BB
BB
BB
BD
BBD
BB DD
BB D
BB DDD
B
B
BB DDD
BB
DD
BB

A aBb | bBa
B aC | Ab
a

S!" CCC

S Ac

P r = {A, B, C}

S X

O conjunto Ac dos smbolos acessveis


e o
menor subconjunto de V tal que:

| DA

, V

...

| aC

51

X Ac

S!" CCC
!"

!"
!"

!"
!"

CC
CC
CC
CC
CC
CC
CC

A ECEECC ...

EECCC
EE CC
EE CCC
EE CC
CC
EE
CC

52

Gram
atica reduzida ou limpa
Exemplo
S
o tem smbolos produtivos e acessveis
A aBb | bBa

Redu
c
ao ou limpeza da gram
atica

B Cb | bC

Eliminam-se:

| aC

1o improdutivos

| Db

2o inacessveis

E aE | Da

in
uteis

e todas as produ
c
oes onde ocorram.

Ac = {a, b, A, B, C}
Sa|A
A AB
Bb

Gram
atica simplificada

B Cb | bC
a

Sa
Bb

A aBb | bBa
C

Pr

Ac

Ac

| aC

Sa
53

54

Gram
atica livre-

Exemplo

N
ao tem produ
c
oes- (i.e., da forma A ).
G/ livre-

GIC G

L(G/) = L(G) {}

E TX

X +T X |
T FY

Se G = (T, N, S, P ) ent
ao G/ = (T, N, S, P /)
onde P /
e definido por:
Retiram-se de P as produ
c
oes-.

Y F Y

F (E)

?? ///
?? ///
///
??
///
??
///
??
///

XI1 ... XiK1 ... XMj ... XiKk ... XIn

H I
HH III
II
HH
II
HH H
I
HH

J
JJ
JJ
JJ J
JJ

KK
KK
KK
KK
K

xi1

L M
LL MMM
MM
LL
MM
LL L
M
LL

J
JJ
JJ
JJ J
JJ

KK
KK
KK
KK
K

xik

H I
HH III
II
HH
II
HH H
I
HH

| a

Xi1

...

99
99
99
99
9

J KKK
KK
JJ
KK
JJ
KK
JJ J
K
JJ

Xik

J KK
JJ KKK
KK
JJ
KK
JJ J
K
JJ

xi1

xik

55

T FY

F (E)

Y F Y

A99

G
GG
GG
GG
G
G
GG

E TX

X +T X | +T

Tem-se L(G/) = L(G) {} porque:


A ?/?//// *

Gram
atica modificada

Para cada A X1 Xn em P acrescentamse A Xi1 Xik (k > 0) onde os Xj omitidos


geram .

)
))) F
))) FF
))) FFF
F
)))
)
F
)
))
FF
)))
FF
)))

= {X, Y }

| F

Outro exemplo de produ


c
oes
A T XY

B XY

A T XY | T X | T Y

B XY

| X

| Y

| T
56

Forma normal de Chomsky

Continua
c
ao do exemplo
E TX

X +T X |
T FY

Y F Y

T FY

F (E)

Y F Y

| a

E $$$$

NN
NN
NN

$$
$$
$$
$

T OO

F
a

N
NN
NN
NN

X &&&

Y + PT EE
F
a

PP
PP
PP

&&
&&
&&
&

T
X

| F

Y QQQ

F Y
a

G/ em FNC

L(G/) = L(G) {}

Demonstra
c
ao

XOO

P
PP
PP
PP

QQ
QQ

(a T, B, C N ).

A BC

Teorema

99
99
OO
OO
O

F +

EE
EE
E

P
PP
PP
PP

P
PP
PP
PP

ou

Aa

E999

P
PP
PP
PP

OO
OO
O

Uma gram
atica na FNC s
o tem produ
c
oes

X +T X | +T

F (E)

E TX

G/ constr
oi-se a partir de G em 4 passos.

T OO

N
NN
NN
NN

OO
OO
O

1o passo

Y EE

N
NN
NN
NN

EE
EE

F
a

Constr
oi-se a gram
atica livre- que reconhece
L(G) {}.
58

57

3o passo
2o passo

Substitui-se cada A B1 Bn

Para cada a T :

Cria-se um novo smbolo n


ao terminal A .

C1

Substitui-se a por A nas produ


c
oes.

...

B 1 C1
B 2 C2

C1, . . . , Cn2
novos n
ao terminais

Cn2 Bn1Bn

Acrescenta-se a produ
c
ao A a .

Exemplo

Exemplo

S aSb | c =

S ASB | C
Aa

Bb

Cc

ou

A B1 Bn

S ASB | C
Aa
Cc

No fim do 1o passo t
em-se produ
c
oes
Aa

(n > 2) por

(n > 0)

59

S AT | C

Bb

T SB
Aa
Cc

Bb

No fim do 2o passo t
em-se produ
c
oes
Aa

ou

AB

ou

A BC

60

4o passo
Para cada A + B e cada B ( + N )

acrescenta-se a produ
c
ao A .

Para toda a GIC G


e decidvel se x L(G)

No fim, removem-se as produ


co
es A B .

Caso x =

A1
A2
...
AnW

UU
UU
UU
UU

A1T

S
SS
SS
SS
SS

WW
WW
WW
W

...

TT
TT
TT
TT

Calcular e verificar se S .

An1
U
UU
UU
UU
UU
UU

VV
VV
VV
VV
VV

Determinar G/ em FNC tal que


L(G/) = L(G) {}.

Exemplo

Seja |x| = n > 0.

S AT | C
T SB
Aa
Cc

Caso x +=

Bb

Se x L(G/), ent
ao x
e derivada em 2n 1
passos (ver a seguir).

S AT | c
=

T SB
Aa
Cc

Bb
62

61

Exemplo
Deriva
c
ao de x em 2n 1 passos
Seja x = a1 an .

Primeiro deriva-se

S AT | c

T SB

Aa

abc L(G) ?

Bb

S n1 A1 An
usando produ
c
oes do tipo A BC.

S /R//R//R/ R R R R R R R R R R R 0

Depois deriva-se

AT

A1 An n a1 an

////
////
// -

cR R R R R R1

aT R R R R R R R R R R R R R R 2

com produ
c
oes do tipo A a.

aSB//R//R R R R R R R R R R R R 3

------.& --

Algoritmo para decidir se x L(G/)

aAT B

Enumeram-se todas as deriva


c
oes esquerdas
de comprimento 2n 1.

aaT B

///
///
// -

acB R

R R R

acb R R R R R 5

acb
e a u
nica palavra de comprimento 3 que
pertence a L(G).

Verifica-se se x
e gerada ou n
ao.
63

64

Demonstra
c
ao
Suponhamos que existe k 0 tal que todo

Teorema uvwxy
Seja G uma GIC que gera uma linguagem infinita. Existe k > 0 tal que todo o
com

z L(G)

S uAy uvAxy uvwxy = z

|z| > k

se pode escrever na forma

com v += ou x += .

z = uvwxy

Repetindo a subderiva
c
ao A vAx n vezes

n
n
vem A v Ax , logo

em que
v +=

ou

c
ao
o z L(G) com |z| > k tem uma deriva
da forma

x +=

S uAy uv nAxny uv nwxny

e
uv nwxny L(G)

Assim, uv nwxny L(G) para todo o n 0.

para todo o n 0.

Falta ver que existe a primeira deriva


c
ao
acima.
66

65

Demonstra
c
ao (3)

Demonstra
c
ao (2)
Seja p o comprimento m
aximo do corpo de
qualquer produ
c
ao:
p = max{|| : A

A P }.

Seja m = n
umero de elementos em N .

Seja z L(G) com |z| > k = pm+1.


Se a
arvore de deriva
c
ao de z tivesse altura
m + 1 ter-se-ia |z| pm+1 = k.
Logo a
arvore de deriva
c
ao de z tem pelo
menos um ramo de comprimento m + 2.
S!" TT

SS
SS
SS
SS
S
S
SS
SS
FF
SS
FF
SS
FF
S
S
FF
S
F
SS
FF
SS
FF
UU
SS
FF
UU
SS
FF
UU
SS
FF
UU

Seja k = pm+1.

h
R(

!"

A!"

Se a
arvore de deriva
c
ao de x T tiver altura
h (n
umero de desnveis), o comprimento de x

e majorado por ph:


R/.

!"

S
G 99

G
GG
GG
GG
G
GG
GG
GG
GG
G
GG

99
99
99
99
99
99
99
99
99

!"

!"

A!"

!"

!"

w
z

R/.

TT
TT
TT
TT
TT
TT
??
TT
??
TT
??
TT
??
TT
??
TT
??
TT
??
WW
WW
TT
??
WW
TT
?
?
WW
T
?

m+2
R(

Esse ramo tem m + 1 n


ao terminais, logo
pelo menos um deles aparece repetido.

|x| ph

Se v += ou x += nada mais h
a a demonstrar.
67

68

L = {anbncn | n 0} n
ao
e IC

Demonstra
c
ao (4)
Se v = x = , fundiam-se as duas ocorr
encias
de A.
XX
XX
XX
XX
XX
X
XX
XX
XX

!"
!"

!"
!"

A
P QQ

PP
PP
PP
PP
PP

Seja z = anbncn com 3n > k (k do teorema).

Tem-se z = uvwxy com v += ou x += e


uv iwxiy L para todo o i = 0, 1, . . ..

S!" YYY
!"

Suponhamos que L = L(G) em que G


e IC.

YY
YY
YY
YY
YY
YY
YY

Caso 1: v ou x cont
em 2 dos smbolos a, b, c

QQ
QQ
QQ
QQ
Q

Se se fizesse esta opera


c
ao para todos os
n
ao terminais repetidos, a
arvore teria altura
m + 1.
Logo h
a pelo menos um ramo com um n
ao
terminal repetido nas condi
c
oes requeridas.

69

Em uv 2wx2y, um b precede um a ou um c
precede um b.
Caso 2: v e x s
o cont
em 1 de a, b, c
uv 2wx2y n
ao tem igual n
umero de a, b, c.
Qualquer dos dois casos
e impossvel.

70

5. Autmatos de Pilha
Teoria da Computao

Lus Monteiro
DI-FCT/UNL

Lic. Eng. Informtica, 2008/09

LM (DI)

Autmatos de Pilha

TC 2008/09

1 / 49

Tpicos
1

Introduo informal noo de autmato de pilha

Definio de autmato de pilha

Linguagem reconhecida

Autmato de pilha determinista

Relao entre os critrios de aceitao

Autmato de pilha generalizado

Autmatos de pilha e gramticas

LM (DI)

Autmatos de Pilha

TC 2008/09

2 / 49

Prximo tpico
1

Introduo informal noo de autmato de pilha

Definio de autmato de pilha

Linguagem reconhecida

Autmato de pilha determinista

Relao entre os critrios de aceitao

Autmato de pilha generalizado

Autmatos de pilha e gramticas

LM (DI)

Autmatos de Pilha

TC 2008/09

3 / 49

O problema
Nem sempre basta um nmero finito de estados

Para reconhecer a linguagem das interaces com uma fila ou uma


pilha precisamos de um autmato com infinitos estados:
()*+


/ /.-,

open
%
e
close

()*+
/.-,

put
%
e

()*+
/.-,

put
%
e

get

()*+
/.-,

get

Q: Como se representam de forma finita os infinitos


estados?
R: Anotando a diferena entre os nmeros de put e get
ocorridos.
Q: Como se anota essa diferena?
R: Por meio de uma pilha que contm os put em excesso.
LM (DI)

Autmatos de Pilha

TC 2008/09

4 / 49

Uma soluo
Utilizao de uma pilha

A pilha representa-se por uma palavra com o topo esquerda e a


base direita.
Tem na base um smbolo bottom sobre o qual se empilham os put
em excesso:
put put put bottom
O autmato anterior representa-se por um autmato de pilha:
open,
()*+


/ /.-,

bottom/
bottom
(
h

()*+
/.-,
g

close,
bottom/
bottom
LM (DI)

Autmatos de Pilha

put, bottom/put bottom


put, put/put put
get, put/

TC 2008/09

5 / 49

Componentes de um autmato de pilha (AP)


AP = AF + pilha

Unidade de controlo
Cabea de leitura
Fita de leitura
Cabea de leitura e escrita
Pilha
Fita

a b b a






6
Leitura
Controlo






LM (DI)

q
Leitura e escrita

b a z
Autmatos de Pilha

Pilha

TC 2008/09

6 / 49

Exemplo de funcionamento
Reconhecimento de {ww 1 : w T }

a b b a





a b b a





6






a b b a





LM (DI)

a z

a b b a







a z

6







a b b a

Autmatos de Pilha




6

b a z

a b b a
q F






6

TC 2008/09

7 / 49

O que necessrio especificar para definir um AP


Um AP uma extenso de um AF
1
2
3
4
5
6
7

o alfabeto de entrada
o alfabeto da pilha
os estados
o estado inicial
o smbolo inicial da pilha
os estados de aceitao
a funo de transio, que
calcula:
em funo de:

estado seguinte
contedo seguinte da pilha
estado corrente
smbolo na fita de leitura (ou )
smbolo no topo da pilha

(em geral, no determinista).


LM (DI)

Autmatos de Pilha

TC 2008/09

8 / 49

Tipo das operaes sobre a pilha


Um s tipo de operao em todas as transies

Para haver uma transio a pilha nunca pode estar vazia.


Numa transio a pilha comporta-se sempre do seguinte modo:
I

desempilhado o smbolo que se encontra no topo.

empilhada uma palavra arbitrria sobre o alfabeto da pilha


(smbolo a smbolo).

LM (DI)

Autmatos de Pilha

TC 2008/09

9 / 49

Operaes usuais sobre pilhas


So casos particulares da operao geral

Desempilhar z
Desempilha-se z e empilha-se .
Ler z sem desempilhar
Desempilha-se z e empilha-se de novo z .
Empilhar
Estando z no topo, desempilha-se z e empilha-se z .
Nestas operaes, z um smbolo e uma palavra.

LM (DI)

Autmatos de Pilha

TC 2008/09

10 / 49

Prximo tpico
1

Introduo informal noo de autmato de pilha

Definio de autmato de pilha

Linguagem reconhecida

Autmato de pilha determinista

Relao entre os critrios de aceitao

Autmato de pilha generalizado

Autmatos de pilha e gramticas

LM (DI)

Autmatos de Pilha

TC 2008/09

11 / 49

Definio de AP
Em geral no-determinista

A = (T , Q, Z , qI , zI , , F )
T alfabeto de entrada;
Q conjunto de estados;
Z alfabeto da pilha;
qI Q estado inicial;
zI Z smbolo inicial da pilha;
: Q Z (T {}) Pfin (Q Z ) funo de transio;
F Q conjunto de estados de aceitao.

LM (DI)

Autmatos de Pilha

TC 2008/09

12 / 49

Regras de transio
Mais cmodas de usar do que a funo de transio

Tm a forma
a

(q, z) (q 0 , )
Abreviam
(q 0 , ) (q, z, a)
Significam que no estado q , com z no topo da pilha e
a T {} , o AP pode transitar para o estado q 0 empilhando
smbolo a smbolo depois de ter desempilhado z .

LM (DI)

Autmatos de Pilha

TC 2008/09

13 / 49

Efeito da aplicao de uma regra de transio


Exemplificao quando consumido um smbolo de entrada

Exemplo de aplicao de
a

(q, z) (q 0 , )
com a T e = zk z1 :

... a b ...





... a b ...

q0

q



LM (DI)

z z0 ...





?
 zk ... z1 z0 ...


Autmatos de Pilha

TC 2008/09

14 / 49

Exemplo: A1 = (T , Q, Z , qI , zI , , F )
Reconhece {an bn | n 1}, como se ver

p, z
p, a
q, a
q, z

T = {a, b}
Q = {p, q, t}
qI = p, F = {t}
Z = {a, z}, zI = z

a
b
p, az
p, aa q,
q,

t, z
a

Por exemplo: (p, z, a) = {(p, az)} ou (p, z) (p, az),


(q, z, ) = {(t, z)}

ou (q, z) (t, z),

(p, z, b) = ,
etc.

LM (DI)

Autmatos de Pilha

TC 2008/09

15 / 49

Continuao do exemplo
Diagrama de transies

Autmato

A1 = ({a, b}, {p, q, t}, {a, z}, p, z, , {t})

p, z
p, a
q, a
q, z

a
b
p, az
p, aa q,
q,

t, z

Diagrama de transies
a, a/aa
a, z/az

89:;
/ ?>=<
p

89:;
?>=<
p

a,z/

b,a/
b,a/

89:;
/ ?>=<
q

,z/z

?/.-,
()*+
>=<
/89:;
t

a
89:;
/ ?>=<
q significa que (p, z)
(q, ):

No estado p o autmato pode ler a, desempilhar z, empilhar e


transitar para q.
LM (DI)

Autmatos de Pilha

TC 2008/09

16 / 49

Prximo tpico
1

Introduo informal noo de autmato de pilha

Definio de autmato de pilha

Linguagem reconhecida

Autmato de pilha determinista

Relao entre os critrios de aceitao

Autmato de pilha generalizado

Autmatos de pilha e gramticas

LM (DI)

Autmatos de Pilha

TC 2008/09

17 / 49

Configuraes, transies
Configurao: (q, , x) Q Z T
Configurao inicial: (qI , zI , x)

(x T )

Transio:
(q, z, ax) ` (q 0 , 0 , x)

se

(q, z) (q 0 , 0 ),

em que
q, q 0 Q,
z Z,
, 0 Z ,
a T {},
x T .

LM (DI)

Autmatos de Pilha

TC 2008/09

18 / 49

Linguagem reconhecida por um AP


Dois critrios de reconhecimento

Sequncia de transies
c ` c 0 existem n 0 e configuraes
c0 , c1 , . . . , cn tal que
c = c0 ` c1 ` ` cn = c 0 .
Linguagem aceite por estados de aceitao
L(A) = {x T | (qI , zI , x) ` (q, , )
com q F e Z }.
Linguagem aceite por pilha vazia
N (A) = {x T | (qI , zI , x) ` (q, , )
para algum q Q}.
LM (DI)

Autmatos de Pilha

TC 2008/09

19 / 49

Primeiro exemplo
A1 reconhece {an bn | n 1}
a,x/ax

89:;
/ ?>=<
p

b,a/
b,a/

89:;
/ ?>=<
q

,z/z

()*+
/.-,
>=<
/?89:;
t

(x {a, z})

A tabela a seguir apresenta a sequncia de configuraes do


reconhecimento de aabb:
Estado Pilha Fita
p
z aabb
p
az
abb
p
aaz
bb
q
az
b
q
z

t
z

Aceita porque t F .
LM (DI)

Autmatos de Pilha

TC 2008/09

20 / 49

Continuao do exemplo
Casos de no reconhecimento

a,x/ax

89:;
/ ?>=<
p

b,a/
b,a/

89:;
/ ?>=<
q

,z/z

()*+
/.-,
>=<
/?89:;
t

(x {a, z})

Paragem em estado
de no-aceitao:

Entrada no
completamente lida:

Estado Pilha Fita


p
z aab
p
az
ab
p
aaz
b
q
az

Estado Pilha Fita


p
z aba
p
az
ba
q
z
a
t
z
a

LM (DI)

Autmatos de Pilha

TC 2008/09

21 / 49

Variante do exemplo anterior


Reconhecimento de {an bn | n 1} por pilha vazia

O AP quase igual a A1 , excepto que em vez de transitar para o


estado de aceitao t, esvazia a pilha:
A01 = (T , Q, Z , qI , zI , , F )
T = {a, b}, Q = {p, q}, Z = {a, z};
qI = p, zI = z, F = ;
dada pelo diagrama de transies (x {a, z}):
b, a/
, z/

a,x/ax

89:;
/ ?>=<
p

LM (DI)

b,a/

Autmatos de Pilha

?>=<
/ 89:;
q

TC 2008/09

22 / 49

Outra variante
Reconhecimento de {an bn | n 0}

O estado inicial tem de ser de aceitao:


A2 = (T , Q, Z , qI , zI , , F )
T = {a, b};
Q = {i, p, q, t}, qI = i, F = {i, t};
Z = {a, z}, zI = z;
definida por:
?89:;
()*+
>=<
/ /.-,
i

a,a/aa
a,z/az

89:;
/ ?>=<
p

b,a/
b,a/

89:;
/ ?>=<
q

,z/z

?/.-,
()*+
>=<
/89:;
t

NOTA: Tem de ser i 6= t, para que no se reconheam blocos de an bn


consecutivos como em a2 b2 a3 b3 .
LM (DI)

Autmatos de Pilha

TC 2008/09

23 / 49

Ainda outra variante


Reconhecimento de {an bn | n 1}+

Os blocos an bn repetem-se uma ou mais vezes com valores de n


possivelmente diferentes.
A repetio de um bloco inicia-se com o aparecimento de um novo a,
que provoca uma transio de t para p:
a,x/ax

89:;
/ ?>=<
p

b,a/

b,a/

89:;
/ ?>=<
q

,z/z

()*+
/.-,
>=<
/?89:;
t

(x {a, z})

a,z/az

LM (DI)

Autmatos de Pilha

TC 2008/09

24 / 49

Segundo exemplo
Reconhecimento de {wcw 1 | w {a, b} }

A3 = (T , Q, Z , qI , zI , , F )
T = {a, b, c};
Q = {p, q, t}, qI = p, F = {t};
Z = {a, b, z}, zI = z;
definida por (x {a, b}, y {a, b, z}):
x,x/

x,y /xy

89:;
/ ?>=<
p

LM (DI)

c,y /y

89:;
/ ?>=<
q

Autmatos de Pilha

,z/z

?/.-,
()*+
>=<
/89:;
t

TC 2008/09

25 / 49

Continuao do exemplo
Reconhecimento de uma palavra
x,x/

x,y /xy

?>=<
/ 89:;
p

c,y /y

89:;
/ ?>=<
q

,z/z

()*+
/.-,
>=<
/?89:;
t

(x {a, b}, y {a, b, z})

Reconhecimento de abcba:
Estado Pilha
Fita
p
z abcba
p
az
bcba
p
baz
cba
q
baz
ba
q
az
a
q
z

t
z

Aceita porque t F .
LM (DI)

Autmatos de Pilha

TC 2008/09

26 / 49

Prximo tpico
1

Introduo informal noo de autmato de pilha

Definio de autmato de pilha

Linguagem reconhecida

Autmato de pilha determinista

Relao entre os critrios de aceitao

Autmato de pilha generalizado

Autmatos de pilha e gramticas

LM (DI)

Autmatos de Pilha

TC 2008/09

27 / 49

AP determinista
So permitidas transies com

Para todo o q Q e todo o z Z :


| (q, z, a) | 1 para todo o a T {}.
Se | (q, z, ) |= 1, ento | (q, z, a) |= 0 para todo o a T .
Propriedade Para um AP determinista e configuraes c, c 0 , c 00 :
c ` c0

LM (DI)

c ` c 00

Autmatos de Pilha

c 0 = c 00 .

TC 2008/09

28 / 49

Exemplo de AP no-determinista
Reconhece {ww 1 | w {a, b} }

A4 = (T , Q, Z , qI , zI , , F )
T = {a, b}, Q = {i, p, q, t}, Z = {a, b, z};
qI = i, zI = z, F = {i, t};
definida por:

?89:;
()*+
>=<
/ /.-,
i

LM (DI)

b, b/bb
b, a/ba
a, b/ab
a, a/aa
a, z/az
b, z/bz

89:;
/ ?>=<
p

b, b/
a, a/
b, b/
a, a/

Autmatos de Pilha

89:;
/ ?>=<
q

,z/z

?/.-,
()*+
>=<
/89:;
t

TC 2008/09

29 / 49

Continuao do exemplo
Reconhecimento de uma palavra

?89:;
()*+
>=<
/ /.-,
i

x,y /xy

89:;
/ ?>=<
p

x,z/xz

x,x/
x,x/

89:;
/ ?>=<
q

,z/z

?/.-,
()*+
>=<
/89:;
t

(x {a, b}, y {a, b})


Reconhecimento de abba:
Estado Pilha Fita
i
z abba
p
az
bba
p
baz
ba
q
az
a
q
z

t
z

Aceita porque t F .
LM (DI)

Autmatos de Pilha

TC 2008/09

30 / 49

Outro AP no-determinista
Reconhece {an bn | n 0} por pilha vazia

A02 = (T , Q, Z , qI , zI , , F )
T = {a, b};
Q = {p, q}, qI = p, F = ;
Z = {a, z}, zI = z;
dada por:
a, a/aa
a, z/az
, z/

89:;
/ ?>=<
p

LM (DI)

b, a/
, z/
b,a/

Autmatos de Pilha

89:;
/ ?>=<
q

TC 2008/09

31 / 49

Prximo tpico
1

Introduo informal noo de autmato de pilha

Definio de autmato de pilha

Linguagem reconhecida

Autmato de pilha determinista

Relao entre os critrios de aceitao

Autmato de pilha generalizado

Autmatos de pilha e gramticas

LM (DI)

Autmatos de Pilha

TC 2008/09

32 / 49

Teorema: A A0 L(A0 ) = N (A)


Demonstrao

Dado
(F = )

A = (T , Q, Z , qI , zI , , F )
constri-se

A0 = (T , Q 0 , Z 0 , qI0 , zI0 , 0 , F 0 ) :
A0
GFED
/ @ABC
q0
I

A
,zI0 /zI zI0

GFED
89:;
?>=<
/ @ABC
qI
q

>>


>>

>>


>>

,zI0 /zI0 >
 ,zI0 /zI0
0
HIJK
ONML
@ABC
GFED
q

A construo garante que se A for determinista, A0 determinista.


LM (DI)

Autmatos de Pilha

TC 2008/09

33 / 49

Continuao da demonstrao
Construo de A0

T
Q 0 = Q {qI0 , qF0 }
Z 0 = Z {zI0 }

(qI0 , qF0 6 Q)
(zI0 6 Z )

qI0
zI0
F 0 = {qF0 }
0 constituda pelas regras de transio de juntamente com:

(qI0 , zI0 ) (qI , zI zI0 )

(q, zI0 ) (qF0 , zI0 ) para todo o q Q.

LM (DI)

Autmatos de Pilha

TC 2008/09

34 / 49

Exemplo
A linguagem {wcw 1 | w {a, b} }

A Reconhecimento por pilha vazia


A0 Reconhecimento por estados de aceitao
a

qI , azI
qI , aa
qI , ab
q,

qI , bzI
qI , ba
qI , bb

q, zI
q, a
q, b

qI0 , zI0
qI , zI
qI , a
qI , b
q, a
q, b
q, zI
qI , zI0
q, zI0

LM (DI)

qI , zI zI0

q,
q,
qF0 , zI0
qF0 , zI0

Autmatos de Pilha

TC 2008/09

35 / 49

Continuao do exemplo
Exemplo de funcionamento de A0

qI , azI
qI , aa
qI , ab
q,

qI , bzI
qI , ba
qI , bb

q, zI
q, a
q, b

qI0 , zI0
qI , zI
qI , a
qI , b
q, a
q, b
q, zI
qI , zI0
q, zI0

qI , zI zI0

q,
q,
qF0 , zI0
qF0 , zI0

LM (DI)

Autmatos de Pilha

Estado Pilha Fita


qI0
zI0 aca
qI
zI zI0 aca
qI
azI zI0
ca
0
q
azI zI
a
q
zI zI0

q
zI0

0
0
qF
zI

TC 2008/09

36 / 49

Teorema: A A0 N (A0 ) = L(A)


Demonstrao

Dado
A = (T , Q, Z , qI , zI , , F )
constri-se
A0 = (T , Q 0 , Z 0 , qI0 , zI0 , 0 , F 0 )

(F 0 = ) :

A0
A
GFED
/ @ABC
q0

,zI0 /zI zI0

FED
/ G@ABC
qI

89:;
?>=<
q

,z/z (z)

ONML
/ HIJK
q0
V

,z/ (z)

Mesmo que A seja determinista, A0 pode ser no-determinista.


LM (DI)

Autmatos de Pilha

TC 2008/09

37 / 49

Continuao da demonstrao
Construo de A0

T
Q 0 = Q {qI0 , qV0 }
Z 0 = Z {zI0 }

(qI0 , qV0 6 Q).


(zI0 6 Z ).

qI0
zI0
F 0 = .
0 constituda pelas regras de juntamente com:

(qI0 , zI0 ) (qI , zI zI0 ).

(q, z) (qV0 , z)

(qV0 , z) (qV0 , )

LM (DI)

q F , z Z 0.
z Z 0.

Autmatos de Pilha

TC 2008/09

38 / 49

Exemplo
A linguagem {an bn | n 1}+

A Reconhecimento por estados de aceitao


A0 Reconhecimento por pilha vazia
a

qI , azI
qI , aa

q,

qI0 , zI0
qI , zI
qI , a
q, zI
q, a
qF , zI
qF , zI0
qF , a
qV0 , z

qI , zI zI0

qF , zI
q,
qI , azI

z {zI0 , zI , a}

qV0 , zI
qV0 , zI0
qV0 , a
qV0 ,

no-determinista.
LM (DI)

Autmatos de Pilha

TC 2008/09

39 / 49

Smbolo terminador
Para tornar A0 determinista

Acrescenta-se um smbolo terminador $ 6 T .


Q 0 , Z 0 , F 0 so como no caso anterior.
Em 0 , a passagem para qV0 d-se apenas quando se encontra $:
$

(q, z) (qV0 , z)

q F , z Z 0.

A linguagem reconhecida neste caso


N (A0 ) = L(A){$}.

LM (DI)

Autmatos de Pilha

TC 2008/09

40 / 49

Exemplo
A0 modificado com $

qI , azI
qI , aa

q,

qI0 , zI0
qI , zI
qI , a
q, zI
q, a
qF , zI
qF , zI0
qF , a
qV0 , z

qI , zI zI0

qF , zI
q,
qI , azI

qV0 , zI
qV0 , zI0
qV0 , a

qV0 ,

z {zI0 , zI , a}

LM (DI)

Autmatos de Pilha

TC 2008/09

41 / 49

Prximo tpico
1

Introduo informal noo de autmato de pilha

Definio de autmato de pilha

Linguagem reconhecida

Autmato de pilha determinista

Relao entre os critrios de aceitao

Autmato de pilha generalizado

Autmatos de pilha e gramticas

LM (DI)

Autmatos de Pilha

TC 2008/09

42 / 49

Autmato de pilha generalizado


Usado na anlise sintctica ascendente

Cada transio pode depender de um nmero arbitrrio 1 de


smbolos no topo da pilha:
: Q ZZ (T {}) Pfin (Q Z ).
As regras de transio tm a forma:
a

(q, z) (q 0 , 0 ).
Teorema
L aceite por APG = L aceite por AP.

LM (DI)

Autmatos de Pilha

TC 2008/09

43 / 49

Prximo tpico
1

Introduo informal noo de autmato de pilha

Definio de autmato de pilha

Linguagem reconhecida

Autmato de pilha determinista

Relao entre os critrios de aceitao

Autmato de pilha generalizado

Autmatos de pilha e gramticas

LM (DI)

Autmatos de Pilha

TC 2008/09

44 / 49

Autmatos de pilha e gramticas


Comea aqui a anlise sintctica

Teorema A G L(G) = L(A)


Teorema G A N (A) = L(G) (An. sintctica)
Dada
G = (T , N, S, P)
constri-se
A = (T , Q, Z , qI , zI , , F ) :
Q = {q} (s um estado), qI = q, F = .
Z = V = T N, zI = S.
Regras de transio de :
I
I

(q, C) (q, )
a
(q, a) (q, )

LM (DI)

C P.
a T.

Autmatos de Pilha

TC 2008/09

45 / 49

Exemplo
Construo de um analisador sintctico

Gramtica
S aSb | c
Autmato de pilha

LM (DI)

q, S

q, a
q, b
q, c

q,

q, aSb
q, c

q,
q,

Autmatos de Pilha

TC 2008/09

46 / 49

Continuao do exemplo
Derivao e reconhecimento de uma palavra

Derivao:
S aSb acb
Reconhecimento
Estado Pilha Fita
q
S acb
q
aSb acb
q
Sb
cb
q
cb
cb
q
b
b
q

LM (DI)

Autmatos de Pilha

TC 2008/09

47 / 49

Um AP determinista para a mesma gramtica


Um primeiro exemplo de gramtica LL(1)

Q = {qL } {qa | a T },

qI = qL .
a
b
c
Regras de leitura
qa , z qb , z qc , z

qL , z
(z Z )
Regras de reconhecimento
qa , a
qL ,
qb , b
qL ,
qc , c
qL ,
Regras de expanso
qa , S
qa , aSb
qc , S
qc , c
Est.
qL
qa
qa
qL
qc

LM (DI)

Pilha
S
S
aSb
Sb
Sb

Fita
acb
cb
cb
cb
b

Est.
qc
qL
qb
qL

Autmatos de Pilha

Pilha
cb
b
b

Fita
b
b

TC 2008/09

48 / 49

Continuao do exemplo
Diagrama de transies
S/aSb

@ABC
GFED
qa
J

a/

GFED
/ @ABC
qL l
J

c/

@ABC
GFED
qc
J

, @ABC
GFED

qb

b/

S/c
z/
a

LM (DI)

abrevia
abrevia
Autmatos de Pilha

,z/

a,z/z (z)

/
TC 2008/09

49 / 49

5. Autmatos de Pilha
Teoria da Computao

Lus Monteiro
Lic. Eng. Informtica, 2008/09

Contedo
1

Introduo informal noo de autmato de pilha

Definio de autmato de pilha

Linguagem reconhecida

Autmato de pilha determinista

12

Relao entre os critrios de aceitao

14

Autmato de pilha generalizado

19

Autmatos de pilha e gramticas

20

Nota prvia
Este texto contm os acetatos das aulas tericas, organizados por seces e com comentrios adicionais. Os acetatos distinguem-se dos comentrios por disporem de um
ttulo. Para melhor compreenso, uns e outros apresentam-se separados por linhas horizontais.

Introduo informal noo de autmato de pilha

Por meio de um exemplo, ilustra-se como o reconhecimento de certas linguagens requer autmatos com infinitos estados. Mostra-se, para o exemplo dado, como esses estados podem ser representados pelos estados de uma pilha, e apresenta-se um autmato
de pilha que reconhece a linguagem proposta. Discute-se em seguida, informalmente,
a constituio de um autmato de pilha, incluindo uma descrio pormenorizada do
modo de funcionamento da pilha. A definio formal de autmato de pilha, bem como
da linguagem que ele reconhece, so apresentadas nas duas seces seguintes.
A linguagem considerada no exemplo seguinte essencialmente a das interaces com uma fila ou uma pilha, apresentada no captulo sobre gramticas independentes do contexto. A nica diferena que se permite que aps uma interaco
open<session>close se recomece de novo.

O problema
Para reconhecer a linguagem das interaces com uma fila ou uma pilha precisamos
de um autmato com infinitos estados:

()*+


/ /.-,

open

%
e

()*+
/.-,

put

%
e

()*+
/.-,

get

close

put

%
e

()*+
/.-,

get

Q: Como se representam de forma finita os infinitos estados?


R: Anotando a diferena entre os nmeros de put e get ocorridos.
Q: Como se anota essa diferena?
R: Por meio de uma pilha que contm os put em excesso.
Estas observaes levam construo de um novo tipo de autmato, que basicamente um autmato finito ao qual se adiciona a capacidade de manipular uma pilha.

Uma soluo
A pilha representa-se por uma palavra com o topo esquerda e a base direita.
Tem na base um smbolo bottom sobre o qual se empilham os put em excesso:
put put put bottom
O autmato anterior representa-se por um autmato de pilha:
open,

()*+


/ /.-,

bottom/
bottom

(
h

()*+
/.-,
f

put, bottom/put bottom


put, put/put put
get, put/

close,
bottom/
bottom

Os estados globais do autmato tm duas componentes: o estado propriamente


dito e o contedo corrente da pilha. No estado inicial o contedo bottom o que d
um nico estado global. No outro estado o contedo pode ser putn bottom para todo o
n 0, o que d infinitos estados globais. Os estados globais assim obtidos no so
mais do que os infinitos estados do autmato apresentado anteriormente.
As transies tambm tm dois elementos, separados por uma vrgula. O primeiro
o smbolo do alfabeto de entrada que consumido. O segundo descreve o que se
altera na pilha, na forma antes/depois, e ser explicado mais tarde. A seta aponta para
o estado seguinte.

Componentes de um autmato de pilha (AP)


Unidade de controlo
Cabea de leitura
Fita de leitura
Cabea de leitura e escrita
Pilha






a b b a

Fita

6
Leitura

Controlo

Leitura e escrita






b a z

Pilha

No exemplo seguinte ilustra-se o comportamento esperado da pilha durante o reconhecimento da linguagem {ww1 : w T }. H duas fases distintas. Na primeira,
lem-se os smbolos da fita de leitura e empilham-se medida que vo sendo lidos.
Note-se que os smbolos aparecem na pilha na ordem inversa da que tinham na palavra. Quando se atinge o meio da palavra, a metade empilhada deve ser igual metade
que falta ler. Comparam-se um a um os restantes smbolos da fita de leitura com os que
foram empilhados, desempilhando um smbolo por cada um lido, caso sejam iguais; se
houver uma discrepncia, o autmato pra sem reconhecer a palavra.

Exemplo de funcionamento

a b b a





a b b a





6






a b b a





a z

a b b a







a z

6







a b b a




6

b a z

a b b a
q F






6

Um AP basicamente um AF ao qual se adicionou uma pilha. As componentes


de um AP so pois as de um AF, com as devidas adaptaes, mais as que servem para
descrever a pilha.

O que necessrio especificar para definir um AP


1. o alfabeto de entrada
2. o alfabeto da pilha
3. os estados
4. o estado inicial
5. o smbolo inicial da pilha
6. os estados de aceitao
7. a funo de transio, que
calcula:
em funo de:

estado seguinte
contedo seguinte da pilha
estado corrente
smbolo na fita de leitura (ou )
smbolo no topo da pilha

(em geral, no determinista).

H um nico tipo de operao que pode ser executado sobre a pilha. Como veremos, esse tipo suficientemente geral para cobrir as operaes usuais.

Tipo das operaes sobre a pilha


Para haver uma transio a pilha nunca pode estar vazia.
Numa transio a pilha comporta-se sempre do seguinte modo:
desempilhado o smbolo que se encontra no topo.
empilhada uma palavra arbitrria sobre o alfabeto da pilha (smbolo a
smbolo).

Embora o comportamento da pilha numa transio seja uniformemente

desempilhar topo / empilhar palavra


este comportamento inclui como casos particulares as operaes usuais sobre pilhas,
como se ilustra no prximo acetato.

Operaes usuais sobre pilhas


Desempilhar z
Desempilha-se z e empilha-se .
Ler z sem desempilhar
Desempilha-se z e empilha-se de novo z .
Empilhar
Estando z no topo, desempilha-se z e empilha-se z .
Nestas operaes, z um smbolo e uma palavra.

Definio de autmato de pilha

Nesta seco define-se autmato de pilha (AP) e apresenta-se um exemplo.

Definio de AP
A = (T, Q, Z, qI , zI , , F )
T alfabeto de entrada;
Q conjunto de estados;
Z alfabeto da pilha;
qI Q estado inicial;
zI Z smbolo inicial da pilha;
: Q Z (T {}) Pf in (Q Z ) funo de transio;
F Q conjunto de estados de aceitao.
Nem sempre cmodo lidar directamente com a funo . Muda-se ento um
pouco a notao e usam-se as chamadas regras de transio.

Regras de transio
Tm a forma
a

(q, z) (q 0 , )
Abreviam
(q 0 , ) (q, z, a)

Significam que no estado q , com z no topo da pilha e a T {} , o AP


pode transitar para o estado q 0 empilhando smbolo a smbolo depois de ter
desempilhado z .

Mostra-se a seguir uma figura que exemplifica a aplicao de uma regra de transio
no caso em que consumido um smbolo de entrada.

Efeito da aplicao de uma regra de transio


Exemplo de aplicao de
a
(q, z) (q 0 , )
com a T e = zk z1 :

... a b ...





... a b ...

q0

q







?
 zk ... z1 z0 ...


z z0 ...

O prximo exemplo apresenta a definio detalhada de um AP que, como se ver


mais adiante, reconhece a linguagem {an bn | n 1}.

Exemplo: A1 = (T, Q, Z, qI , zI , , F )
T = {a, b}
Q = {p, q, t}
qI = p, F = {t}

Z = {a, z}, zI = z

p, z
p, a
q, a
q, z

a
b
p, az
p, aa q,
q,

t, z
a

Por exemplo: (p, z, a) = {(p, az)} ou (p, z) (p, az),


(q, z, ) = {(t, z)}

ou (q, z) (t, z),

(p, z, b) = ,
etc.
Tal como para os AF, til representar os AP por diagramas de transies. Estes
a,z/

so iguais aos dos AF, excepto que em vez de transies se tm onde z/


descreve o que acontece pilha.

Continuao do exemplo
Autmato

A1 = ({a, b}, {p, q, t}, {a, z}, p, z, , {t})

p, z
p, a
q, a
q, z

a
b
p, az
p, aa q,
q,

t, z

Diagrama de transies
a, a/aa
a, z/az


>=<
/ ?89:;
p

?>=<
89:;
p

a,z/

b,a/


?>=<
/ 89:;
q

b,a/

,z/z

89:;
?/ /.-,
()*+
>=<
t

a
>=<
/ ?89:;
q significa que (p, z)
(q, ):

No estado p o autmato pode ler a, desempilhar z, empilhar e transitar para q.

Linguagem reconhecida

Nesta seco apresentam-se dois critrios que podem ser usados para o reconhecimento
de linguagens por AP, os quais so depois ilustrados com vrios exemplos.
Os critrios assentam na descrio do funcionamento de um AP. Uma configurao
uma descrio instantnea compreendendo o estado corrente, o contedo da pilha e a
parte da fita de leitura que falta ler. O funcionamento do AP consiste numa sequncia
7

de configuraes a partir de uma configurao inicial, onde as transies entre configuraes so determinadas pelas regras de transio.

Configuraes, transies
Configurao: (q, , x) Q Z T
(x T )

Configurao inicial: (qI , zI , x)


Transio:
(q, z, ax) ` (q 0 , 0 , x)

se

(q, z) (q 0 , 0 ),

em que
q, q 0 Q,
z Z,
, 0 Z ,
a T {},
x T .

Linguagem reconhecida por um AP


Sequncia de transies
c ` c0

existem n 0 e configuraes
c0 , c1 , . . . , cn tal que
c = c0 ` c1 ` ` cn = c0 .

Linguagem aceite por estados de aceitao


L(A) = {x T | (qI , zI , x) ` (q, , )
com q F e Z }.
Linguagem aceite por pilha vazia
N (A) = {x T | (qI , zI , x) ` (q, , )
para algum q Q}.
O exemplo seguinte sobre o AP A1 apresentado anteriormente. Note-se que a
sequncia de configuraes (estado,pilha,fita) Q, Z T que descreve o funcionamento do autmato apresentada sob a forma de uma tabela.

Primeiro exemplo
a,x/ax


>=<
/ ?89:;
p

b,a/
b,a/


?>=<
/ 89:;
q

,z/z

89:;
?/ /.-,
()*+
>=<
t

(x {a, z})

A tabela a seguir apresenta a sequncia de configuraes do reconhecimento de


aabb:
Estado Pilha Fita
p
z aabb
p
az
abb
p
aaz
bb
q
az
b
q
z

t
z

Aceita porque t F .
Para compreender o funcionamento de um autmato igualmente importante perceber quando ele no reconhece palavras.

Continuao do exemplo
a,x/ax


>=<
/ ?89:;
p

b,a/
b,a/


?>=<
/ 89:;
q

,z/z

89:;
?/ /.-,
()*+
>=<
t

(x {a, z})

Paragem em estado
de no-aceitao:

Entrada no
completamente lida:

Estado Pilha Fita


p
z aab
p
az
ab
p
aaz
b
q
az

Estado Pilha Fita


p
z aba
p
az
ba
q
z
a
t
z
a

No exemplo seguinte reconhece-se a mesma linguagem {an bn | n 1} pelo


critrio da pilha vazia.

Variante do exemplo anterior


O AP quase igual a A1 , excepto que em vez de transitar para o estado de aceitao
t, esvazia a pilha:
A01 = (T, Q, Z, qI , zI , , F )
T = {a, b}, Q = {p, q}, Z = {a, z};
9

qI = p, zI = z, F = ;
dada pelo diagrama de transies (x {a, z}):
b, a/
, z/

a,x/ax


?>=<
/ 89:;
p


?>=<
/ 89:;
q

b,a/

A variante apresentada a seguir {an bn | n 0}, em que se admite n = 0.

Outra variante
O estado inicial tem de ser de aceitao:
A2 = (T, Q, Z, qI , zI , , F )
T = {a, b};
Q = {i, p, q, t}, qI = i, F = {i, t};
Z = {a, z}, zI = z;
definida por:

?89:;
()*+
>=<
/ /.-,
i

a,a/aa
a,z/az


?>=<
/ 89:;
p

b,a/
b,a/


?>=<
/ 89:;
q

,z/z

89:;
?/ /.-,
()*+
>=<
t

NOTA: Tem de ser i 6= t, para que no se reconheam blocos de an bn consecutivos


como em a2 b2 a3 b3 .
Na variante seguinte a linguagem considerada {an bn | n 1}+ , que o conjunto
de todas as palavras an1 bn1 an2 bn2 ank bnk onde k e todos os ni so 1.

Ainda outra variante


Os blocos an bn repetem-se uma ou mais vezes com valores de n possivelmente
diferentes.
A repetio de um bloco inicia-se com o aparecimento de um novo a, que provoca
uma transio de t para p:
a,x/ax


>=<
/ ?89:;
p h

b,a/
b,a/


?>=<
/ 89:;
q

,z/z

a,z/az

10

89:;
?/ /.-,
()*+
>=<
t

(x {a, z})

O AP do prximo exemplo reconhece {wcw1 | w {a, b} }. O seu funcionamento o seguinte: empilha todos os smbolos lidos at chegar c, depois verifica que a
palavra empilhada (que o inverso da parte lida) igual ao que ainda falta ler.

Segundo exemplo
A3 = (T, Q, Z, qI , zI , , F )
T = {a, b, c};
Q = {p, q, t}, qI = p, F = {t};
Z = {a, b, z}, zI = z;
definida por (x {a, b}, y {a, b, z}):
x,y/xy

x,x/


>=<
/ ?89:;
p

c,y/y


?>=<
/ 89:;
q

,z/z

89:;
?/ /.-,
()*+
>=<
t

Vai-se ilustrar o funcionamento do autmato com o reconhecimento de uma palavra. Sugere-se o exerccio de ver o que acontece com palavras que no pertencem
linguagem, como acaa ou acb.

Continuao do exemplo
x,y/xy


>=<
/ ?89:;
p

x,x/
c,y/y


?>=<
/ 89:;
q

,z/z

89:;
?/ /.-,
()*+
>=<
t

(x {a, b}, y {a, b, z})

Reconhecimento de abcba:
Estado Pilha
Fita
p
z abcba
p
az
bcba
p
baz
cba
q
baz
ba
q
az
a
q
z

t
z

Aceita porque t F .

11

Autmato de pilha determinista

Todos os AP dos exemplos apresentados at agora so deterministas. Mas dado que a


definio dada compreende os casos determinista e no-determinista, pode-se perguntar como se caracterizam os AP deterministas. A resposta dada nesta seco, onde
tambm se apresentam exemplos de AP no-deterministas.
a
Uma condio que se espera que exista no mximo uma transio (q, z)
(q 0 , ) para cada (q, z, a) Q Z (T {}). Por outras palavras, cada casa da
tabela que define tem zero ou um elementos. Mas como se permitem transies com
(isto , permite-se a = ), exige-se adicionalmente que se (q, z) tiver uma transio
com , ento no tem transies com nenhum smbolo do alfabeto de entrada.
Na definio seguinte, a notao |X| para um conjunto finito X representa o nmero de elementos de X.

AP determinista
Para todo o q Q e todo o z Z:
| (q, z, a) | 1 para todo o a T {}.
Se | (q, z, ) |= 1, ento | (q, z, a) |= 0 para todo o a T .
Propriedade Para um AP determinista e configuraes c, c0 , c00 :
c ` c0

c ` c00

c0 = c00 .

O AP seguinte reconhece a linguagem {ww1 | w {a, b} }. O seu princpio


de funcionamento semelhante ao do AP que reconhece a linguagem {wcw1 | w
{a, b} }. No entanto, como no existe o smbolo c a marcar o centro da palavra, o
autmato tem de decidir de forma no-determinista quande deve deixar de empilhar
para passar a comparar o contedo da pilha com e resto da palavra que falta ler.

Exemplo de AP no-determinista
A4 = (T, Q, Z, qI , zI , , F )
T = {a, b}, Q = {i, p, q, t}, Z = {a, b, z};
qI = i, zI = z, F = {i, t};
definida por:

12

?89:;
()*+
>=<
/ /.-,
i

b, b/bb
b, a/ba
a, b/ab
a, a/aa


?>=<
/ 89:;
p

a, z/az
b, z/bz

b, b/
a, a/
b, b/
a, a/


?>=<
/ 89:;
q

,z/z

89:;
?/ /.-,
()*+
>=<
t

A fonte do no-determinismo reside no estado p. Tm-se as regras de transio


a
a
(p, a) (p, aa) e (p, a) (p, ), logo |(p, a, a)| = |{(p, aa), (p, )}| = 2.
Note-se que a primeira regra de transio corresponde a continuar a empilhar, por se
assumir que o smbolo a lido ainda pertence primeira metade da palavra, enquanto
que a segunda corresponde a comear a desempilhar, porque o smbolo a pode ser
efectivamente o primeiro da segunda metade da palavra (que tem de ser igual ao ltimo
da primeira metade). Um raciocnio anlogo mostraria que tambm |(p, b, b)| = 2.

Continuao do exemplo
?89:;
()*+
>=<
/ /.-,
i

x,y/xy


?>=<
/ 89:;
p

x,z/xz

x,x/
x,x/


?>=<
/ 89:;
q

,z/z

89:;
?/ /.-,
()*+
>=<
t

(x {a, b}, y {a, b})


Reconhecimento de abba:
Estado Pilha Fita
i
z abba
p
az
bba
p
baz
ba
q
az
a
q
z

t
z

Aceita porque t F .
O seguinte autmato reconhece {an bn | n 0} pelo critrio da pilha vazia

Outro AP no-determinista
A02 = (T, Q, Z, qI , zI , , F )
T = {a, b};
Q = {p, q}, qI = p, F = ;
13

Z = {a, z}, zI = z;
dada por:
a, a/aa
a, z/az
, z/


?>=<
/ 89:;
p

b, a/
, z/
b,a/


?>=<
/ 89:;
q

A fonte do no-determinismo reside no estado p. Na verdade, h trs transies,


etiquetadas com a, z/az, com a, a/aa e com , z/. A primeira e a ltima mostram
que |(p, z, a)| = |{(p, az)}| = 1 e |(p, z, )| = |{(p, )}| = 1.

Relao entre os critrios de aceitao

Nesta seco v-se que toda a linguagem aceite segundo um dos dois critrios apresentados anteriormente tambm aceite segundo o outro. Deste modo, parece ser
indiferente qual o critrio que se usa. Mas no bem assim, o critrio dos estados de
aceitao mais robusto no que toca ao no-determinismo. Mostrar-se-, porm, que
adicionando a cada palavra um smbolo terminador especial (tipo fim-de-ficheiro,
que se representar pelo smbolo $), se consegue tornar o critrio da pilha vazia igualmente robusto.
O primeiro resultado mostra que dado um AP A que reconhece uma linguagem
pelo critrio da pilha vazia, existe um AP A0 que reconhece a mesma linguagem pelo
critrio dos estados de aceitao.

Teorema: A A0 L(A0 ) = N (A)


Dado
A = (T, Q, Z, qI , zI , , F )

(F = )

constri-se
A0 = (T, Q0 , Z 0 , qI0 , zI0 , 0 , F 0 ) :
A0
A
GFED
/ @ABC
q0
I

,zI0 /zI zI0

?>=<
89:;
?>=<
/ 89:;
qI
q

>>


>>

>>


>>

>
,zI0 /zI0
 ,zI0 /zI0
0
@ABC
GFED
89:;
?>=<
qF

14

A construo garante que se A for determinista, A0 determinista.


Assim, o autmato A0 tem o seguinte comportamento:
Inicialmente, A0 empilha zI , passa para o estado qI e comea a simular A.
Quando em A a pilha estivesse vazia, em A0 a pilha tem zI0 .
A0 transita ento para o estado de aceitao qF0 e termina.
Segue-se a definio formal de A0 .

Continuao da demonstrao
T
Q0 = Q {qI0 , qF0 }
Z 0 = Z {zI0 }

(qI0 , qF0 6 Q)
(zI0 6 Z)

qI0
zI0
F 0 = {qF0 }
0 constituda pelas regras de transio de juntamente com:

(qI0 , zI0 ) (qI , zI zI0 )

(q, zI0 ) (qF0 , zI0 ) para todo o q Q.


No exemplo seguinte mostra-se a tabela com as transies do autmato A, qual
se juntaram as transies do autmato A0 . Umas e outras encontram-se separadas por
dois traos horizontais.

Exemplo
A Reconhecimento por pilha vazia
A0 Reconhecimento por estados de aceitao

15

qI0 , zI0
qI , z I
qI , a
qI , b
q, a
q, b
q, zI
qI , zI0
q, zI0

qI , zI zI0

qI , azI
qI , aa
qI , ab
q,

qI , bzI
qI , ba
qI , bb

q, zI
q, a
q, b

q,
q,
qF0 , zI0
qF0 , zI0

No exemplo de reconhecimento seguinte clara a forma como A0 lana a simulao


de A e a completa com a passagem ao estado de aceitao.

Continuao do exemplo
a

qI , azI
qI , aa
qI , ab
q,

qI , bzI
qI , ba
qI , bb

q, zI
q, a
q, b

qI0 , zI0
qI , z I
qI , a
qI , b
q, a
q, b
q, zI
qI , zI0
q, zI0

qI , zI zI0

q,
q,

Estado Pilha Fita


qI0
zI0 aca
qI
zI zI0 aca
qI
azI zI0
ca
q
azI zI0
a
q
zI zI0

q
zI0

qF0
zI0

qF0 , zI0
qF0 , zI0

O resultado seguinte o inverso do anterior. Dado um AP A que reconhece uma


linguagem pelo critrio dos estados de aceitao, existe um AP A0 que reconhece a
mesma linguagem pelo critrio da pilha vazia.

Teorema: A A0 N (A0 ) = L(A)


Dado
A = (T, Q, Z, qI , zI , , F )
constri-se
A0 = (T, Q0 , Z 0 , qI0 , zI0 , 0 , F 0 )

16

(F 0 = ) :

A0
A
GFED
/ @ABC
q0

89:;
/ ?>=<
qI

,zI0 /zI zI0

F
89:;
?>=<
q

,z/z (z)

GFED
/ @ABC
q0
V

,z/ (z)

Mesmo que A seja determinista, A0 pode ser no-determinista.


Assim, A0 tem o seguinte comportamento:
Inicialmente, A0 empilha zI , passa para o estado qI e comea a simular A.
Quando A estivesse num estado de aceitao, A0 escolhe no deterministicamente:
continuar a simular A;
transitar para um novo estado qV0 que esvazia a pilha.
Ver-se- por meio de um exemplo que mesmo que A seja determinista, a construo
no garante que A0 tambm o seja.
Define-se a seguir A0 formalmente.

Continuao da demonstrao
T
Q0 = Q {qI0 , qV0 }
Z 0 = Z {zI0 }

(qI0 , qV0 6 Q).


(zI0 6 Z).

qI0
zI0
F 0 = .
0 constituda pelas regras de juntamente com:

(qI0 , zI0 ) (qI , zI zI0 ).

(q, z) (qV0 , z)

(qV0 , z) (qV0 , )

q F, z Z 0 .
z Z 0.

17

Na figura seguinte mostra-se a tabela de transies do autmato A0 que reconhece a


linguagem {an bn | n 1}+ por pilha vazia, a qual inclui a tabela do reconhecimento
por estados de aceitao do autmato A. Tal como no caso anterior, as linhas adicionais
esto separadas das outras por dois traos horizontais. Mas neste caso foi necessrio
preencher tambm uma casa da tabela de A, a saber, a casa da linha qF , zI e da coluna
. esta casa que faz com que A0 seja no-determinista, embora A seja determinista.

Exemplo
A Reconhecimento por estados de aceitao
A0 Reconhecimento por pilha vazia
a

qI , azI
qI , aa

q,

qI0 , zI0
qI , zI
qI , a
q, zI
q, a
qF , zI
qF , zI0
qF , a
qV0 , z

qI , zI zI0

qF , zI
q,

z {zI0 , zI , a}

qV0 , zI
qV0 , zI0
qV0 , a
qV0 ,

qI , azI

no-determinista.
O no-determinismo observado no exemplo anterior poderia ter sido evitado se se
soubesse de antemo se a palavra na fita de entrada tinha sido toda lida ou no. Para
se dispor dessa informao pode-se adicionar um smbolo terminador a cada palavra,
como se mostra a seguir.

Smbolo terminador
Acrescenta-se um smbolo terminador $ 6 T .
Q0 , Z 0 , F 0 so como no caso anterior.
Em 0 , a passagem para qV0 d-se apenas quando se encontra $:
$

(q, z) (qV0 , z)

q F, z Z 0 .

A linguagem reconhecida neste caso


N (A0 ) = L(A){$}.

18

Adaptando o exemplo anterior existncia de um smbolo terminador, verifica-se


que a casa da tabela de A que foi necessrio preencher se situa agora na coluna do $,
pelo que no se introduz no-determinismo.

Exemplo
a

qI , azI
qI , aa

q,

qI0 , zI0
qI , z I
qI , a
q, zI
q, a
qF , z I
qF , zI0
qF , a
qV0 , z

qI , zI zI0

qF , zI
q,
qV0 , zI
qV0 , zI0
qV0 , a

qI , azI

qV0 ,

z {zI0 , zI , a}

Autmato de pilha generalizado

Num autmato de pilha generalizado permitido consultar e desempilhar mais de um


smbolo na pilha durante uma transio (mas nunca efectuar uma transio com a pilha
vazia). Esta caracterstica ser posta a uso na anlise sintctica ascendente.

Autmato de pilha generalizado


Cada transio pode depender de um nmero arbitrrio 1 de smbolos no topo
da pilha:
: Q ZZ (T {}) Pf in (Q Z ).
As regras de transio tm a forma:
a

(q, z) (q 0 , 0 ).
Teorema
L aceite por APG = L aceite por AP.

19

Autmatos de pilha e gramticas

Autmatos de pilha e gramticas independentes do contexto definem as mesmas linguagens. Este facto estabelecido nesta seco. Comea-se por se enunciar que para
todo o AP existe uma GIC que define a mesma linguagem, mas no se apresenta a
demonstrao. Em seguida, para toda a GIC mostra-se como se pode construir um AP
que reconhece, pelo critrio da pilha vazia, a linguagem por ela gerada, e apresenta-se
um exemplo. Pode-se afirmar que a construo do AP estabelece que a anlise sintctica possvel para qualquer GIC. O analisador construdo, porm, no-determinista,
o que abre a questo de se saber como se podem construir analiadores deterministas.
Observa-se, para o exemplo apresentado, que se o analisador tivesse informao sobre
o prximo smbolo na fita de leitura, a anlise podia ser tornada determinista. O exemplo assim modificado abre o caminho para as gramticas LL(1), que so o objecto do
prximo captulo,
Autmatos de pilha e gramticas
Teorema A G L(G) = L(A)
Teorema G A N (A) = L(G) (An. sintctica)
Dada
G = (T, N, S, P )
constri-se
A = (T, Q, Z, qI , zI , , F ) :
Q = {q} (s um estado), qI = q, F = .
Z = V = T N , zI = S.
Regras de transio de :

(q, C) (q, )
a

(q, a) (q, )

C P.
a T.

O princpio do funcionamento do AP o seguinte. O AP procura reconstituir na pilha a derivao da palavra que se encontra na fita de leitura. Alterna para isso dois tipos
de operao. Quando no topo da pilha se encontra um smbolo no-terminal, ele desempilhado e empilha-se o corpo de uma produo que tenha esse smbolo na cabea.
Chamaremos a esta operao uma expanso do smbolo no-terminal, e corresponde a
uma derivao directa na gramtica. Quando no topo da pilha est um smbolo terminal, na fita de leitura tem de estar o mesmo smbolo, que ento simultaneamente lido
e desempilhado. Esta operao serve de teste para averiguar se as expanses efectuadas na pilha correspondem de facto s rescritas usadas para derivar a palavra que est
na fita de leitura. O processo termina quando todas as expanses e testes tiverem tido
lugar, o que deixa a pilha vazia no fim se o processo for bem sucedido.

20

Exemplo
Gramtica
S aSb | c
Autmato de pilha

q, S

q, a
q, b
q, c

q,

q, aSb
q, c

q,
q,

Observe-se a seguir como uma derivao se traduz nas correspondentes expanses


e comparaes de smbolos (os que esto na fita de leitura com os que surgem na pilha).

Continuao do exemplo
Derivao:
S aSb acb
Reconhecimento
Estado Pilha Fita
q
S acb
q
aSb acb
q
Sb
cb
q
cb
cb
q
b
b
q

Podemos agora, a propsito deste exemplo, ter um primeiro contacto com o funcionamento de um reconhecedor LL(1). O no-determinismo presente no autmato
anterior deve-se a que h duas expanses possveis para S. Mas o conhecimento de
qual o prximo smbolo na fita de leitura permite seleccionar a expanso apropriada:
se o smbolo for a, escolhe-se S/aSb, se for c, escolhe-se S/c. Assim, podemos modificar o aumato de modo a que ele primeiro leia o smbolo da fita de leitura, depois
o guarde em memria e finalmente utilize essa informao para escolher a expanso
apropriada.
O autmato passa a ter um estado de leitura qL e estados qa , qb e qc , um para cada
smbolo terminal. O estado de leitura, que tambm o estado inicial, tem como nica
funo ler o prximo smbolo x e transitar para o correspondente estado qx , sem alterar
o contedo da pilha. A expanso S/aSb efectuada no estado qa e a expanso S/c
no estado qc . Quando um smbolo terminal x ocupar o topo da pilha, o autmato deve
estar no estado qx ; ento desempilha x e transita para o estado qL , que l o smbolo
seguinte.
21

Nos dois acetatos seguintes mostra-se a tabela da funo de transio do autmato,


uma tabela que ilustra o reconhecimento da palavra acb, e finalmente o diagrama de
transies do autmato.

Um AP determinista para a mesma gramtica


Q = {qL } {qa | a T },
q I = qL .

a
b
c
Regras de leitura
qa , z qb , z qc , z

qL , z
(z Z)

Regras de reconhecimento
qa , a
qb , b
qc , c

qL ,
qL ,
qL ,
Regras de expanso

qa , S
qc , S

qa , aSb
qc , c

Est.
qL
qa
qa
qL
qc

Pilha
S
S
aSb
Sb
Sb

Fita
acb
cb
cb
cb
b

Est.
qc
qL
qb
qL

Pilha
cb
b
b

Fita
b
b

Continuao do exemplo
S/aSb


89:;
?>=<
qa
J

a/

GFED
/ @ABC
qL l
J

c/

89:;
?>=<
qc
I

, 89:;
?>=<
q
b

b/

S/c

z/
a

/
/

abrevia
abrevia

22

,z/

a,z/z (z)

6. Anlise sintctica descendente


Teoria da Computao

Lus Monteiro
DI-FCT/UNL

Lic. Eng. Informtica, 2008/09

LM (DI)

Gramticas LL(1)

TC 08/09

1 / 52

Tpicos
1

Objectivos da anlise sintctica

O que so gramticas LL(1)?

Autmatos para gramticas LL(1)

Exemplos de gramticas e autmatos

Papel do smbolo terminador

Clculo dos smbolos directores

Propriedades das gramticas LL(1)

Programao de reconhecedores LL(1)

LM (DI)

Gramticas LL(1)

TC 08/09

2 / 52

Prximo tpico
1

Objectivos da anlise sintctica

O que so gramticas LL(1)?

Autmatos para gramticas LL(1)

Exemplos de gramticas e autmatos

Papel do smbolo terminador

Clculo dos smbolos directores

Propriedades das gramticas LL(1)

Programao de reconhecedores LL(1)

LM (DI)

Gramticas LL(1)

TC 08/09

3 / 52

Anlise sintctica
Em que consiste?

Consiste em construir reconhecedores de linguagens autmatos de


pilha que sejam:
deterministas,
de terminao garantida (no entram em ciclo),
obtidos directamente a partir das gramticas.
Iremos considerar duas subclasses de gramticas independentes do
contexto que tm reconhecedores com as propriedades indicadas:
LL(k) anlise sintctica descendente.
LR(k) anlise sintctica ascendente.

LM (DI)

Gramticas LL(1)

TC 08/09

4 / 52

O requisito de no-ambiguidade
Essencial para a anlise determinista

Numa gramtica no-ambgua, uma palavra gerada:


Tem uma nica rvore de derivao.
Tem uma nica derivao esquerda e uma nica derivao direita.
Em cada passo de qualquer das derivaes, h uma nica
produo aplicvel.
Que tipo de informao permite determinar essa produo?
No reconhecimento a partir das gramticas LL(k) e LR(k), o
conhecimento dos prximos k smbolos na fita de leitura.

LM (DI)

Gramticas LL(1)

TC 08/09

5 / 52

Gramticas LL(k)
Principais caractersticas

O procedimento de reconhecimento tem as


seguintes caractersticas:
Determinista e de terminao garantida.
Smbolos de entrada processados a partir da esquerda (L)
conhecendo-se sempre os k smbolos seguintes.
A derivao produzida a esquerda (L).
Constri as rvores de derivao da raiz para as folhas (sentido
top-down, topo-base ou descendente).
Usa as produes da gramtica no sentido cabea corpo.
Sero estudadas apenas as gramticas LL(1).

LM (DI)

Gramticas LL(1)

TC 08/09

6 / 52

Gramticas LR(k)
Principais caractersticas

Procedimento de reconhecimento:
Determinista e de terminao garantida.
Processa a entrada a partir da esquerda (L) com conhecimento
dos k smbolos seguintes.
Produz a derivao direita (R).
Constri as rvores de derivao das folhas para a raiz (sentido
bottom-up, base-topo ou ascendente).
Usa as produes da gramtica no sentido corpo cabea.
Sero estudadas as gramticas LR(0), LR(1) e a variante LALR(1).
Generalidade das gramticas LR(k):
Toda a gramtica LL(1) LR(1).
Toda a linguagem que tem um reconhecedor determinista pode
ser gerada por uma gramtica LR(1).
LM (DI)

Gramticas LL(1)

TC 08/09

7 / 52

Prximo tpico
1

Objectivos da anlise sintctica

O que so gramticas LL(1)?

Autmatos para gramticas LL(1)

Exemplos de gramticas e autmatos

Papel do smbolo terminador

Clculo dos smbolos directores

Propriedades das gramticas LL(1)

Programao de reconhecedores LL(1)

LM (DI)

Gramticas LL(1)

TC 08/09

8 / 52

Um exemplo para comear


Derivao esquerda numa gramtica LL(1)

Uma gramtica no-LL(1)

Derivao esquerda de a + a;

S E;
E T |E +T
T a | (E)

Derivao
S
E;
TX ;
aX ;
a + TX ;
a + aX ;
a + a;

Eliminando a
recursividade esquerda
S
E
X
T

E;
TX
| +TX
a | (E)

uma gramtica LL(1)!


LM (DI)

Palavra
a + a;
a + a;
a + a;
a + a;
a + a;
a + a;
a + a;

As produes so determinadas
pelo prximo smbolo da palavra
ainda no produzido: smbolo
director da produo.
Gramticas LL(1)

TC 08/09

9 / 52

Reconhecimento com gramticas LL(1)


Princpio de funcionamento

Princpio de funcionamento
O AP tenta gerar na pilha a palavra inscrita na fita de leitura, smbolo a
smbolo:
L um smbolo de cada vez.
Tenta reproduzi-lo no topo da pilha, expandindo os smbolos
no-terminais que l estiverem com produes das quais o
smbolo lido smbolo director.
Quando consegue, desempilha e passa ao seguinte.
(Se no conseguir, pra, no aceitando a palavra.)

Critrio de reconhecimento
Ser usado o critrio da pilha vazia.

LM (DI)

Gramticas LL(1)

TC 08/09

10 / 52

Operaes principais durante o reconhecimento


Papel dos smbolos directores

Operaes principais
Expandir um smbolo no-terminal no topo da pilha.
A produo utilizada na expanso tem o smbolo lido como
smbolo director.
Desempilhar, se no topo estiver um smbolo terminal igual ao
smbolo lido, e ler novo smbolo.

Qual a funo de um smbolo director de uma produo?


Expandindo sempre com produes que tm a como smbolo
director, garante-se que se produz a no topo da pilha.
Se o no-terminal no topo da pilha no tem produes com
smbolo director a, o autmato pra sem reconhecer a palavra.

LM (DI)

Gramticas LL(1)

TC 08/09

11 / 52

Smbolos directores de uma produo


Como vo ser utilizados

Cada produo A tem associado o conjunto


Dir(A, ) T
dos seus smbolos directores.
Os smbolos directores so usados para seleccionar as
expanses:
Se o analisador sintctico tiver A no topo
da pilha e se o smbolo lido pertencer a
Dir(A, ), expande-se A em .
(Definio de Dir(A, ) mais adiante.)

LM (DI)

Gramticas LL(1)

TC 08/09

12 / 52

Definio de gramtica LL(1)


Pressupondo que se conhecem os conjuntos de smbolos directores

uma GIC reduzida tal que quaisquer produes distintas A e


A com a mesma cabea:
Tm conjuntos de smbolos directores disjuntos:
Dir(A, ) Dir(A, ) = .
No geram ambas a palavra vazia, isto , no se tem
e .

LM (DI)

Gramticas LL(1)

TC 08/09

13 / 52

Definio de Dir(A, )
Baseia-se nas noes de primeiros e seguintes

Primeiros de V :
Prim() = {a T | (V ) a}.
Seguintes de A N:
Seg(A) = {a T | (xT ,V ) S xAa}.
Smbolos directores de A :
(
Prim()
Dir(A, ) =
Prim() Seg(A)

se 6 ,
se .

Como se calculam?
Algoritmos apresentados mais adiante.
LM (DI)

Gramticas LL(1)

TC 08/09

14 / 52

Dois casos particulares


Muito frequentes na prtica

Definio geral
(
Dir(A, ) =

Prim()

se 6 ,

Prim() Seg(A)

se .

Primeiro caso:
Dir(A, ) = Seg(A)
Segundo caso: a TV
Dir(A, a) = {a}

LM (DI)

Gramticas LL(1)

TC 08/09

15 / 52

Prximo tpico
1

Objectivos da anlise sintctica

O que so gramticas LL(1)?

Autmatos para gramticas LL(1)

Exemplos de gramticas e autmatos

Papel do smbolo terminador

Clculo dos smbolos directores

Propriedades das gramticas LL(1)

Programao de reconhecedores LL(1)

LM (DI)

Gramticas LL(1)

TC 08/09

16 / 52

Autmato de pilha reconhecedor


Baseia-se no conhecimento dos smbolos directores

A = (T , Q, Z , qI , zI , , F )
Q = {qL } {qa | a T }, qI = qL , F = .
Z = V , zI = S.
define-se pelas seguintes regras:
Leitura:
a

(qL , z) (qa , z)

a T,z Z.

Reconhecimento:

(qa , a) (qL , )

a T.

Expanso:

(qa , A) (qa , )

a Dir(A, ).

determinista se a gramtica for LL(1).


LM (DI)

Gramticas LL(1)

TC 08/09

17 / 52

Exemplo
Gramtica S aSb | c
Simb. directores

Dir(S, aSb) = {a}


Dir(S, c)
= {c}

Regras de transio do AP

Regras de leitura

qL , z

qa , z qb , z qc , z

(z Z )
Regras de reconhecimento

qa , a
qb , b
qc , c

qL ,
qL ,
qL ,
Regras de expanso

qa , S
qc , S
LM (DI)

qa , aSb
qc , c
Gramticas LL(1)

TC 08/09

18 / 52

Tabela de anlise sintctica


O essencial para a construo do AP reconhecedor

Sintetiza a informao dos conjuntos directores e das regras de


expanso.
Tem a forma:
Terminais
a
.
No-terminais ..
A

..
.
Cada casa contm
V tal que A P e a Dir(A, )
ou est vazia.
Numa gramtica LL(1):
Cada casa da tabela contm no mximo um elemento.
LM (DI)

Gramticas LL(1)

TC 08/09

19 / 52

Prximo tpico
1

Objectivos da anlise sintctica

O que so gramticas LL(1)?

Autmatos para gramticas LL(1)

Exemplos de gramticas e autmatos

Papel do smbolo terminador

Clculo dos smbolos directores

Propriedades das gramticas LL(1)

Programao de reconhecedores LL(1)

LM (DI)

Gramticas LL(1)

TC 08/09

20 / 52

Pequenos exemplos (s com primeiros)


Gramtica S aSb | c
Tab. anlise sintctica

Simb. directores

Dir(S, aSb) = {a}


Dir(S, c)
= {c}

a
aSb

c
c

Gramtica S aSb | a
Dir(S, aSb) = {a}
Dir(S, a)
= {a}

Gramtica

S ASb | c
A a | cA

Dir(A, a)
= {a}
Dir(A, cA) = {c}
Dir(S, ASb) = {a, c}
Dir(S, c)
= {c}
LM (DI)

a
b c
aSb
a

S
A

Gramticas LL(1)

a
b
c
ASb
ASb
c
a
cA
TC 08/09

21 / 52

Exemplos de funcionamento do AP reconhecedor


Gramtica S aSb | c


Gramtica

a
aSb

c
c

Es. Pi. Fi.


qc cb
b
qL
b
b
qb
b

qL

S ASb | c
A a | cA

a
ASb

LM (DI)

Es.
Pi.
Fi.
qL
S acb
qa
S
cb
qa aSb
cb
qL
Sb
cb
qc
Sb
b

c
ASb
c
cA

Es.
Pi.
Fi.
qL
S acb
qa
S
cb
qa ASb
cb
qa aSb
cb
qL
Sb
cb
qc
Sb
b
qc
?
b
Gramticas LL(1)

acb ?
ou
acacbb ?
ou
...

TC 08/09

22 / 52

Pequenosexemplos (tb com seguintes)


S AB
Aa|
Gramtica

B bc

Dir(S, AB) = {a, b}


Dir(A, a) = {a}
Dir(A, ) = {b}
Dir(B, bc) = {b}

S
A
B

a
b c
AB AB
a

bc

S AB
Aa|
Gramtica

B ac
Dir(S, AB) = {a}
Dir(A, a) = {a}
Dir(A, ) = {a}
Dir(B, bc) = {a}
LM (DI)

Gramticas LL(1)

S
A
B

a c
AB
a

ac
TC 08/09

23 / 52

Funcionamento do AP reconhecedor

S AB
Aa|
Gramtica

B bc

S AB
Aa|
Gramtica

B ac

S
A
B

S
A
B

LM (DI)

a
AB
a

a
AB
a

ac

b
AB

bc

Gramticas LL(1)

Es. Pi. Fi.


qL
S bc
qb
S
c
qb AB
c
qb
B
c
qb
bc
c
qL
c
c
qc
c

qL

Es. Pi. Fi.


qL
S ac
qa
S
c
qa AB
c
qa
?
c

ac ?
ou
aac ?

TC 08/09

24 / 52

Prximo tpico
1

Objectivos da anlise sintctica

O que so gramticas LL(1)?

Autmatos para gramticas LL(1)

Exemplos de gramticas e autmatos

Papel do smbolo terminador

Clculo dos smbolos directores

Propriedades das gramticas LL(1)

Programao de reconhecedores LL(1)

LM (DI)

Gramticas LL(1)

TC 08/09

25 / 52

Propriedade
Com um smbolo terminador todas as produes tm smbolos directores

Seja G uma GIC reduzida, em que:


S no ocorre no corpo de nenhuma produo.
S tem uma nica produo S $ em que $ um smbolo
reservado que no ocorre em nenhuma outra produo (termina
todas as palavras geradas).
Ento:
Se G satisfizer a primeira condio da definio de gramtica LL(1), tambm satisfaz a
segunda.
NOTA: A partir de agora trabalharemos apenas com gramticas desta
forma.

LM (DI)

Gramticas LL(1)

TC 08/09

26 / 52

Prximo tpico
1

Objectivos da anlise sintctica

O que so gramticas LL(1)?

Autmatos para gramticas LL(1)

Exemplos de gramticas e autmatos

Papel do smbolo terminador

Clculo dos smbolos directores

Propriedades das gramticas LL(1)

Programao de reconhecedores LL(1)

LM (DI)

Gramticas LL(1)

TC 08/09

27 / 52

Propriedades dos primeiros


Nas quais se baseia o algoritmo apresentado a seguir

Pode ser visto como uma definio indutiva de Prim


Se A 1 | | n forem todas as produes de A ento
Prim(A) = Prim(1 ) Prim(n ).
Prim() = .
Prim(a) = {a}.
(
Prim(B)
se B 6 ,
Prim(B) =
Prim(B) Prim() se B .
Exemplo: Se B a | , ento Prim(Bb) = {a, b}.

LM (DI)

Gramticas LL(1)

TC 08/09

28 / 52

Determinao dos primeiros


Reduz-se ao clculo de descendentes num grafo

Constri-se o grafo dos primeiros:


Os vrtices do grafo so os smbolos de V .
Para cada produo A X1 X2 Xn traa-se um arco de A para
X1 .
Se X1 , traa-se tambm um arco de A para X2 .
Se X1 e X2 , traa-se um arco de A para X3 , e assim
sucessivamente.

Propriedade
Para a T e A N,
a Prim(A)

caminho de A para a.

Logo,
Prim(A) = {descendentes terminais de A}.
LM (DI)

Gramticas LL(1)

TC 08/09

29 / 52

Exemplo de clculo dos primeiros

S E$

E
TU

U +TU |
T FG

G FG |

F (E) | a

= {U, G}

Grafo dos primeiros:


S

- E

- T

- (

- F
?
a

Primeiros dos smbolos no-terminais:


N
Prim
LM (DI)

S
(, a

E
(, a

U
+

T
(, a

Gramticas LL(1)

F
(, a
TC 08/09

30 / 52

Propriedades dos seguintes


Nas quais se baseia o algoritmo apresentado a seguir

Seja A B. Tem-se:
Prim() Seg(B).
Se , ento Seg(A) Seg(B).
Exemplo

Gramtica
S
E
X
T

E;
TX
| +TX
a | (E)

LM (DI)

Derivao
S E;
TX ;
T + TX ;
T + T;

Gramticas LL(1)

TC 08/09

31 / 52

Determinao dos seguintes


Reduz-se ao clculo de descendentes num grafo

Constri-se o grafo dos seguintes:


Os vrtices do grafo so os smbolos de V .
Para cada produo A B com um no-terminal no corpo:
I
I

Traa-se um arco de B para cada b Prim().


Se , traa-se um arco de B para A.

Propriedade
Para a T e A N,
a Seg(A)

caminho de A para a.

Logo,
Seg(A) = {descendentes terminais de A}.

LM (DI)

Gramticas LL(1)

TC 08/09

32 / 52

Exemplo de clculo dos seguintes

S E$

E
TU

U +TU |
T FG

G FG |

F (E) | a

= {U, G}

Grafo dos seguintes:


-T
-E
F
@

@
 ?
?
?
RG
R U
@
+ @
$
6
6



- )
a

S
(

Seguintes dos smbolos no-terminais:


N
Seg
LM (DI)

E
U
T
G
F
), $ ), $ +, ), $ +, ), $ , +, ), $
Gramticas LL(1)

TC 08/09

33 / 52

Exemplo de clculo dos smbolos directores


N
Prim
Seg

S
E
U
T
G
F
(, a (, a +
(, a

(, a
), $ ), $ +, ), $ +, ), $ , +, ), $
Produes
S E$
E TU
U +TU
U
T FG
G FG
G
F (E)
F a

LM (DI)

Simb. directores
{(, a}
{(, a}
{+}
{), $}
{(, a}
{}
{+, ), $}
{(}
{a}

Gramticas LL(1)

TC 08/09

34 / 52

Exemplo de tabela de anlise sintctica

Smbolos directores

Produes
S E$
E TU
U +TU
U
T FG
G FG
G
F (E)
F a

LM (DI)

Simb. directores
{(, a}
{(, a}
{+}
{), $}
{(, a}
{}
{+, ), $}
{(}
{a}

Tab. de anlise sintctica

S
E
U
T
G
F

(
E$
TU

a
E$
TU

FG

FG

(E)

+TU

Gramticas LL(1)

FG

TC 08/09

35 / 52

Exemplo de reconhecimento
Tabela de
An. sintctica

Reconhecimento
de a + a$

LM (DI)

S
E
U
T
G
F

(
E$
TU

a
E$
TU

FG

FG

(E)

+TU

Est. Pilha
Fita
qL
S a + a$
qa
S
+a$
qa
E$
+a$
qa
TU$
+a$
qa FGU$
+a$
qa aGU$
+a$
qL
GU$
+a$
q+
GU$
a$
q+
U$
a$
q+ +TU$
a$
Gramticas LL(1)

FG

Est. Pilha Fita


qL
TU$
a$
qa
TU$
$
qa FGU$
$
qa aGU$
$
qL
GU$
$
q$
GU$

q$
U$

q$
$

qL

TC 08/09

36 / 52

Prximo tpico
1

Objectivos da anlise sintctica

O que so gramticas LL(1)?

Autmatos para gramticas LL(1)

Exemplos de gramticas e autmatos

Papel do smbolo terminador

Clculo dos smbolos directores

Propriedades das gramticas LL(1)

Programao de reconhecedores LL(1)

LM (DI)

Gramticas LL(1)

TC 08/09

37 / 52

No-ambiguidade e no-recursividade esquerda


Se uma gramtica no satisfizer um destas propriedades, no LL(1)

Propriedade
Toda a gramtica LL(1) no-ambgua.

Definio
Uma gramtica diz-se recursiva esquerda se existirem A N e
V tal que
A + A.

Propriedade
Uma gramtica LL(1) nunca recursiva esquerda.

LM (DI)

Gramticas LL(1)

TC 08/09

38 / 52

Eliminao de recursividade esquerda directa


Directa significa que A A (um passo)

Se as produes para A tiverem a forma


A A1 | | An | 1 | | k
em que A no ocorre esquerda de 1 , . . . , k , a troca das produes
por
A 1 B | | k B
B | 1 B | | n B
gera a mesma linguagem.
(Tambm existe um algoritmo para eliminar a recursividade
esquerda no caso geral que no ser visto aqui.)

LM (DI)

Gramticas LL(1)

TC 08/09

39 / 52

Exemplo
Neste exemplo aplicada a regra anterior com n = k = 1:
A A |

A B
B | B

Exemplo:

S
E
T
F

E$
E +T |T
T F |F
(E) | a

S E$
E TU
U | +TU
T FG
G | FG
F (E) | a

a gramtica dos exemplos anteriores!

LM (DI)

Gramticas LL(1)

TC 08/09

40 / 52

Factorizao esquerda
De um prefixo comum aos corpos de vrias produes do mesmo smbolo no-terminal

Se as produes para A tiverem a forma (o mesmo nas primeiras n


produes)
A P1 | | Pn | 1 | | k ,
a troca das produes por
A B | 1 | k
B P1 | | Pn
gera a mesma linguagem.

LM (DI)

Gramticas LL(1)

TC 08/09

41 / 52

Exemplo de factorizao (e substituio)


A Ba | Cb
B aB | bC
Ca|d

; A aBa | bCa | ab | db
(substituio de B e C)

; A aX | bCa | db
X Ba | b
;
(factorizao de a)

X aBa | bCa | b ; X aBa | bY


(substituio de b)
Y Ca |
(factorizao de b)

Gramtica final:

LM (DI)

A
X
Y
B
C

aX | bCa | db
aBa | bY
Ca |
aB | bC
a|d

Gramticas LL(1)

TC 08/09

42 / 52

Que fazer com uma gramtica que no LL(1)?


Tenta-se modific-la, mas no h garantias

Podem-se tentar aplicar as transformaes:


Reduzir (limpar) a gramtica.
Eliminar a ambiguidade.
Eliminar a recursividade esquerda.
Factorizar.
Verificar se a gramtica obtida LL(1) o que no garantido!

LM (DI)

Gramticas LL(1)

TC 08/09

43 / 52

Prximo tpico
1

Objectivos da anlise sintctica

O que so gramticas LL(1)?

Autmatos para gramticas LL(1)

Exemplos de gramticas e autmatos

Papel do smbolo terminador

Clculo dos smbolos directores

Propriedades das gramticas LL(1)

Programao de reconhecedores LL(1)

LM (DI)

Gramticas LL(1)

TC 08/09

44 / 52

Como se programam reconhecedores LL(1)?


Exemplo

Gramtica que gera produes de gramticas


hproductioni hnonterminali = hexpressioni.
hexpressioni hstringihcont expi
hcont expi |, hstringihcont expi
hstringi
| hsymbolihstringi
hsymboli
hnonterminali | hterminali
hnonterminali A | | Z
hterminali
a | | z
Por uma questo de espao, na tabela de anlise sintctica usa-se a
correspondncia:
hproductioni P
hexpressioni E
hcont expi X
hstringi
S
hsymboli
V
hnonterminali N
hterminali
T
LM (DI)

Gramticas LL(1)

TC 08/09

45 / 52

Tabela de anlise sintctica


Gramtica dada
P
E
X
S
V
N
T

N = E.
SX
|, SX
| VS
N|T
A | | Z
a | | z

Tabela
=
P
E
X
S
V
N
T

LM (DI)

, SX

A
N=E
SX
VS
N
A

SX
VS
T

Gramticas LL(1)

TC 08/09

46 / 52

Esquema do programa

Uma varivel global Sym que contm o prximo smbolo (do tipo
Char, neste exemplo).
Um procedimento de leitura do prximo smbolo GetSym.
Um procedimento para cada smbolo no terminal (Production,
Expression, etc). Os procedimentos chamam-se recursivamente
segundo as regras da gramtica.
Um procedimento de erro Error (que termina abruptamente o
programa; no ser mostrado).
Um procedimento Accept que aceita a palavra (por exemplo,
escrevendo uma mensagem; no ser mostrado).

LM (DI)

Gramticas LL(1)

TC 08/09

47 / 52

Leitura do prximo smbolo

(* Por simplicidade, assume-se que alem


dos simbolos expressamente indicados so
ocorrem espacos e mudancas de linha. *)
procedure GetSym;
begin
repeat
read(Sym)
until Sym in [A..Z,a..z,=,,,.]
end;

LM (DI)

Gramticas LL(1)

TC 08/09

48 / 52

Corpo do programa

begin
GetSym;
Production
end;

LM (DI)

(* primeiro simbolo na entrada *)


(* simbolo inicial da gramatica *)

Gramticas LL(1)

TC 08/09

49 / 52

Production
procedure Production;
(* ====================================
<production> -> <nonterminal>=<expression>.
=====================================*)
begin
if Sym in [A..Z] then
(* simbolos directores da producao *)
begin
NonTerminal;
if Sym = = then GetSym else Error;
(* reconhecimento e leitura *)
Expression;
if Sym = . then Accept else Error;
end
else
Error
end;
LM (DI)

Gramticas LL(1)

TC 08/09

50 / 52

String
procedure String;
(*================================
<string> -> (* vazia *) | <symbol><string>
================================*)
begin
if Sym in [,,.] then
(* seguintes de <string> *)
(* skip *)
else if Sym in [A..Z,a..z] then
(* primeiros de <symbol><string> *)
begin
Symbol;
String
end
else
Error
end;
LM (DI)

Gramticas LL(1)

TC 08/09

51 / 52

NonTerminal

procedure NonTerminal;
(*================================
<nonterminal> -> A | ... | Z
================================*)
begin
if Sym in [A..Z] then
GetSym
else
Error
end;

LM (DI)

Gramticas LL(1)

TC 08/09

52 / 52

6. Anlise sintctica descendente


Teoria da Computao

Lus Monteiro
Lic. Eng. Informtica, 2008/09

Contedo
1

Objectivos da anlise sintctica

O que so gramticas LL(1)?

Autmatos para gramticas LL(1)

Exemplos de gramticas e autmatos

Papel do smbolo terminador

Clculo dos smbolos directores

Propriedades das gramticas LL(1)

13

Programao de reconhecedores LL(1)

15

Nota prvia
Este texto contm os acetatos das aulas tericas, organizados por seces. No se
adicionaram ainda comentrios.

Objectivos da anlise sintctica

Anlise sintctica
Consiste em construir reconhecedores de linguagens autmatos de pilha que
sejam:
deterministas,
de terminao garantida (no entram em ciclo),
obtidos directamente a partir das gramticas.
Iremos considerar duas subclasses de gramticas independentes do contexto que
tm reconhecedores com as propriedades indicadas:
LL(k) anlise sintctica descendente.
LR(k) anlise sintctica ascendente.

O requisito de no-ambiguidade
Numa gramtica no-ambgua, uma palavra gerada:
Tem uma nica rvore de derivao.
Tem uma nica derivao esquerda e uma nica derivao direita.
Em cada passo de qualquer das derivaes, h uma nica produo aplicvel.
Que tipo de informao permite determinar essa produo?
No reconhecimento a partir das gramticas LL(k) e LR(k), o conhecimento dos
prximos k smbolos na fita de leitura.

Gramticas LL(k)
O procedimento de reconhecimento tem as seguintes caractersticas:
Determinista e de terminao garantida.
Smbolos de entrada processados a partir da esquerda (L) conhecendo-se sempre
os k smbolos seguintes.
A derivao produzida a esquerda (L).
Constri as rvores de derivao da raiz para as folhas (sentido top-down, topobase ou descendente).
Usa as produes da gramtica no sentido cabea corpo.
Sero estudadas apenas as gramticas LL(1).

Gramticas LR(k)
Procedimento de reconhecimento:
Determinista e de terminao garantida.
Processa a entrada a partir da esquerda (L) com conhecimento dos k smbolos
seguintes.
Produz a derivao direita (R).
Constri as rvores de derivao das folhas para a raiz (sentido bottom-up, basetopo ou ascendente).
Usa as produes da gramtica no sentido corpo cabea.
Sero estudadas as gramticas LR(0), LR(1) e a variante LALR(1).
Generalidade das gramticas LR(k):
Toda a gramtica LL(1) LR(1).
Toda a linguagem que tem um reconhecedor determinista pode ser gerada por
uma gramtica LR(1).
2

O que so gramticas LL(1)?

Um exemplo para comear


Uma gramtica no-LL(1)
S E;
E T |E+T
T a | (E)
Eliminando a recursividade esquerda
S
E
X
T

E;
TX
| +T X
a | (E)

uma gramtica LL(1)!


Derivao esquerda de a + a;
Derivao
S
E;
T X;
aX;
a + T X;
a + aX;
a + a;

Palavra
a + a;
a + a;
a + a;
a + a;
a + a;
a + a;
a + a;

As produes so determinadas pelo prximo smbolo da palavra ainda no produzido:


smbolo director da produo.

Reconhecimento com gramticas LL(1)


Princpio de funcionamento
O AP tenta gerar na pilha a palavra inscrita na fita de leitura, smbolo a smbolo:
L um smbolo de cada vez.
Tenta reproduzi-lo no topo da pilha, expandindo os smbolos no-terminais que
l estiverem com produes das quais o smbolo lido smbolo director.
Quando consegue, desempilha e passa ao seguinte.
(Se no conseguir, pra, no aceitando a palavra.)
Critrio de reconhecimento
Ser usado o critrio da pilha vazia.

Operaes principais durante o reconhecimento


Operaes principais
Expandir um smbolo no-terminal no topo da pilha.
A produo utilizada na expanso tem o smbolo lido como smbolo director.
Desempilhar, se no topo estiver um smbolo terminal igual ao smbolo lido, e ler
novo smbolo.
Qual a funo de um smbolo director de uma produo?
Expandindo sempre com produes que tm a como smbolo director, garantese que se produz a no topo da pilha.
Se o no-terminal no topo da pilha no tem produes com smbolo director a, o
autmato pra sem reconhecer a palavra.

Smbolos directores de uma produo


Cada produo A tem associado o conjunto
Dir(A, ) T
dos seus smbolos directores.
Os smbolos directores so usados para seleccionar as expanses:
Se o analisador sintctico tiver A no topo da pilha e se o smbolo lido pertencer a Dir(A, ),
expande-se A em .
(Definio de Dir(A, ) mais adiante.)

Definio de gramtica LL(1)


uma GIC reduzida tal que quaisquer produes distintas A e A com a
mesma cabea:
Tm conjuntos de smbolos directores disjuntos:
Dir(A, ) Dir(A, ) = .
No geram ambas a palavra vazia, isto , no se tem
e .

Definio de Dir(A, )
Primeiros de V :
Prim() = {a T | (V ) a}.
Seguintes de A N :
Seg(A) = {a T | (xT ,V ) S xAa}.
Smbolos directores de A :
(
Prim()
Dir(A, ) =
Prim() Seg(A)

se 6 ,
se .

Como se calculam?
Algoritmos apresentados mais adiante.

Dois casos particulares


Definio geral
(
Dir(A, ) =

Prim()

se 6 ,

Prim() Seg(A)

se .

Primeiro caso:
Dir(A, ) = Seg(A)
Segundo caso: a T V
Dir(A, a) = {a}

Autmatos para gramticas LL(1)

Autmato de pilha reconhecedor


A = (T, Q, Z, qI , zI , , F )
Q = {qL } {qa | a T }, qI = qL , F = .
Z = V , zI = S.
define-se pelas seguintes regras:

Leitura:
a

a T, z Z.

(qL , z) (qa , z)
Reconhecimento:

(qa , a) (qL , )

a T.

Expanso:

(qa , A) (qa , )

a Dir(A, ).

determinista se a gramtica for LL(1).

Exemplo
Gramtica S aSb | c
Dir(S, aSb) = {a}
Dir(S, c) = {c}
Regras de transio do AP

Simb. directores

qL , z

qa , z

Regras de leitura

qb , z

qc , z

(z Z)
Regras de reconhecimento

qa , a
qb , b
qc , c

qL ,
qL ,
qL ,
Regras de expanso

qa , S
qc , S

qa , aSb
qc , c

Tabela de anlise sintctica


Sintetiza a informao dos conjuntos directores e das regras de expanso.
Tem a forma:
Terminais
a
.
No-terminais ..
A

..
.
Cada casa contm
V tal que A P e a Dir(A, )
6

ou est vazia.
Numa gramtica LL(1):
Cada casa da tabela contm no mximo um elemento.

Exemplos de gramticas e autmatos

Pequenos exemplos (s com primeiros)


Gramtica S aSb | c
Tab. anlise sintctica

Simb. directores

Dir(S, aSb) = {a}


Dir(S, c) = {c}

a
aSb

c
c

Gramtica S aSb | a
Dir(S, aSb) = {a}
Dir(S, a) = {a}


a
aSb
a

S ASb | c
A a | cA

Gramtica

Dir(A, a) = {a}
Dir(A, cA) = {c}
Dir(S, ASb) = {a, c}
Dir(S, c)
= {c}

S
A

a
b
ASb
a

c
ASb
c
cA

Exemplos de funcionamento do AP reconhecedor


Gramtica S aSb | c


Gramtica

a
aSb

c
c

Es.
qL
qa
qa
qL
qc

Pi.
S
S
aSb
Sb
Sb

S ASb | c
A a | cA

Fi.
acb
cb
cb
cb
b

Es.
qc
qL
qb
qL

Pi.
cb
b
b

Fi.
b
b

a
ASb

Es.
qL
qa
qa
qa
qL
qc
qc

c
ASb
c
cA

Pi.
S
S
ASb
aSb
Sb
Sb
?

Fi.
acb
cb
cb
cb
cb
b
b

acb ?
ou
acacbb ?
ou
...

Pequenos exemplos
(tb com seguintes)
S AB
Aa|
Gramtica

B bc
Dir(S, AB) = {a, b}
Dir(A, a) = {a}
Dir(A, ) = {b}
Dir(B, bc) = {b}

a
AB
a

S
A
B

b
AB

bc

S AB
Aa|
Gramtica

B ac
Dir(S, AB) = {a}
Dir(A, a) = {a}
Dir(A, ) = {a}
Dir(B, bc) = {a}

a
AB
a

ac

S
A
B

Funcionamento do AP reconhecedor

8
< S AB
Aa|
Gramtica
:
B bc

8
< S AB
Aa|
Gramtica
:
B ac

S
A
B

S
A
B

a
AB
a

a
AB
a

ac

b
AB

bc

Es.
qL
qa
qa
qa

Es.
qL
qb
qb
qb
qb
qL
qc
qL
Pi.
S
S
AB
?

Pi.
S
S
AB
B
bc
c
c

Fi.
ac
c
c
c

Fi.
bc
c
c
c
c
c

ac ?
ou
aac ?

Papel do smbolo terminador

Propriedade
Seja G uma GIC reduzida, em que:
S no ocorre no corpo de nenhuma produo.
S tem uma nica produo S $ em que $ um smbolo reservado que no
ocorre em nenhuma outra produo (termina todas as palavras geradas).
Ento:
Se G satisfizer a primeira condio da definio de
gramtica LL(1), tambm satisfaz a segunda.
NOTA: A partir de agora trabalharemos apenas com gramticas desta forma.

Clculo dos smbolos directores

Propriedades dos primeiros


Pode ser visto como uma definio indutiva de Prim
Se A 1 | | n forem todas as produes de A ento
Prim(A) = Prim(1 ) Prim(n ).
Prim() = .
Prim(a) = {a}.
(
Prim(B)
se B
6 ,
Prim(B) =
Prim(B) Prim() se B .

Exemplo: Se B a | , ento Prim(Bb) = {a, b}.

Determinao dos primeiros


Constri-se o grafo dos primeiros:
Os vrtices do grafo so os smbolos de V .
Para cada produo A X1 X2 Xn traa-se um arco de A para X1 .
Se X1 , traa-se tambm um arco de A para X2 .

Se X1 e X2 , traa-se um arco de A para X3 , e assim sucessivamente.


Propriedade
Para a T e A N ,
a Prim(A)

caminho de A para a.

Logo,
Prim(A) = {descendentes terminais de A}.

Exemplo de clculo dos primeiros


8
S E$
>
>
>
>
E TU
>
>
<
U +T U |
T
FG
>
>
>
>
G
F G |
>
>
:
F (E) | a

= {U, G}

Grafo dos primeiros:


S

- E

- T

- F

- (

a
G

Primeiros dos smbolos no-terminais:


N
Prim

S
(, a

E
(, a

U
+

Propriedades dos seguintes


Seja A B. Tem-se:
Prim() Seg(B).
Se , ento Seg(A) Seg(B).
Exemplo
Gramtica
S E;
E TX
X | +T X
T a | (E)
10

T
(, a

F
(, a

Derivao
S E;
T X;
T + T X;
T + T;

Determinao dos seguintes


Constri-se o grafo dos seguintes:
Os vrtices do grafo so os smbolos de V .
Para cada produo A B com um no-terminal no corpo:
Traa-se um arco de B para cada b Prim().
Se , traa-se um arco de B para A.

Propriedade
Para a T e A N ,
a Seg(A)

caminho de A para a.

Logo,
Seg(A) = {descendentes terminais de A}.

Exemplo de clculo dos seguintes


8
S E$
>
>
>
>
E
TU
>
>
<
U +T U |
T FG
>
>
>
>
G
F G |
>
>
:
F (E) | a

= {U, G}

Grafo dos seguintes:

- T
-E
@
@
 ?
 ?
?
RG
R U
@
+ @
$
6
6



- )

S
(

Seguintes dos smbolos no-terminais:


N
Seg

E
), $

U
), $

T
+, ), $

11

G
+, ), $

F
, +, ), $

Exemplo de clculo dos smbolos directores


N
Prim
Seg

S
(, a

E
(, a
), $

U
T
G
F
+
(, a

(, a
), $ +, ), $ +, ), $ , +, ), $

Produes
S E$
E TU
U +T U
U
T FG
G F G
G
F (E)
F a

Simb. directores
{(, a}
{(, a}
{+}
{), $}
{(, a}
{}
{+, ), $}
{(}
{a}

Exemplo de tabela de anlise sintctica


Smbolos directores
Produes
S E$
E TU
U +T U
U
T FG
G F G
G
F (E)
F a

Simb. directores
{(, a}
{(, a}
{+}
{), $}
{(, a}
{}
{+, ), $}
{(}
{a}

Tab. de anlise sintctica

S
E
U
T
G
F

(
E$
TU

a
E$
TU

FG

FG

(E)

+T U

12

F G

Exemplo de reconhecimento
S
E
U
T
G
F

Tabela de
An. sintctica

Reconhecimento
de a + a$

Est.
qL
qa
qa
qa
qa
qa
qL
q+
q+
q+

(
E$
TU

a
E$
TU

FG

FG

(E)

+T U
F G

Pilha
S
S
E$
T U$
F GU $
aGU $
GU $
GU $
U$
+T U $

Fita
a + a$
+a$
+a$
+a$
+a$
+a$
+a$
a$
a$
a$

Est.
qL
qa
qa
qa
qL
q$
q$
q$
qL

Pilha
T U$
T U$
F GU $
aGU $
GU $
GU $
U$
$

Fita
a$
$
$
$
$

Propriedades das gramticas LL(1)

No-ambiguidade e no-recursividade esquerda


Propriedade
Toda a gramtica LL(1) no-ambgua.
Definio
Uma gramtica diz-se recursiva esquerda se existirem A N e V tal que
A + A.

Propriedade
Uma gramtica LL(1) nunca recursiva esquerda.

Eliminao de recursividade esquerda directa


Se as produes para A tiverem a forma
A A1 | | An | 1 | | k
em que A no ocorre esquerda de 1 , . . . , k , a troca das produes por
A 1 B | | k B
B | 1 B | | n B

13

gera a mesma linguagem.


(Tambm existe um algoritmo para eliminar a recursividade esquerda no caso
geral que no ser visto aqui.)

Exemplo
Neste exemplo aplicada a regra anterior com n = k = 1:
A A |

A B
B | B

Exemplo:

S
E
T
F

E$
E+T |T
T F |F
(E) | a

S E$
E TU
U | +T U
T FG
G | F G
F (E) | a

a gramtica dos exemplos anteriores!

Factorizao esquerda
Se as produes para A tiverem a forma (o mesmo nas primeiras n produes)
A P1 | | Pn | 1 | | k ,
a troca das produes por
A B | 1 | k
B P1 | | Pn
gera a mesma linguagem.

Exemplo de factorizao (e substituio)


A Ba | Cb
B aB | bC
Ca|d
;

A aBa | bCa | ab | db
(substituio de B e C)

A aX | bCa | db
X Ba | b
(factorizao de a)

X aBa | bCa | b
(substituio de b)

14

X aBa | bY
Y Ca |
(factorizao de b)

A
X
Y
B
C

Gramtica final:

aX | bCa | db
aBa | bY
Ca |
aB | bC
a|d

Que fazer com uma gramtica que no LL(1)?


Podem-se tentar aplicar as transformaes:
Reduzir (limpar) a gramtica.
Eliminar a ambiguidade.
Eliminar a recursividade esquerda.
Factorizar.
Verificar se a gramtica obtida LL(1) o que no garantido!

Programao de reconhecedores LL(1)

Como se programam reconhecedores LL(1)?


Gramtica que gera produes de gramticas
hproductioni hnonterminali = hexpressioni.
hexpressioni hstringihcont expi
hcont expi |, hstringihcont expi
hstringi
| hsymbolihstringi
hsymboli
hnonterminali | hterminali
hnonterminali A | | Z
hterminali
a | | z
Por uma questo de espao, na tabela de anlise sintctica usa-se a correspondncia:
hproductioni P
hexpressioni E
hcont expi X
hstringi
S
hsymboli
V
hnonterminali N
hterminali
T

15

Tabela de anlise sintctica


Gramtica dada
P
E
X
S
V
N
T

N = E.
SX
|, SX
|VS
N |T
A | | Z
a | | z

Tabela
=
P
E
X
S
V
N
T

A
N =E
SX

, SX

VS
N
A

SX
VS
T

Esquema do programa
Uma varivel global Sym que contm o prximo smbolo (do tipo Char, neste
exemplo).
Um procedimento de leitura do prximo smbolo GetSym.
Um procedimento para cada smbolo no terminal (Production, Expression,
etc). Os procedimentos chamam-se recursivamente segundo as regras da gramtica.
Um procedimento de erro Error (que termina abruptamente o programa; no
ser mostrado).
Um procedimento Accept que aceita a palavra (por exemplo, escrevendo uma
mensagem; no ser mostrado).

Leitura do prximo smbolo


(* Por simplicidade, assume-se que alem
dos simbolos expressamente indicados so
ocorrem espacos e mudancas de linha. *)
procedure GetSym;
begin
repeat
read(Sym)
until Sym in [A..Z,a..z,=,,,.]
end;
16

Corpo do programa
begin
GetSym;
Production
end;

(* primeiro simbolo na entrada *)


(* simbolo inicial da gramatica *)

Production
procedure Production;
(* ====================================
<production> -> <nonterminal>=<expression>.
=====================================*)
begin
if Sym in [A..Z] then
(* simbolos directores da producao *)
begin
NonTerminal;
if Sym = = then GetSym else Error;
(* reconhecimento e leitura *)
Expression;
if Sym = . then Accept else Error;
end
else
Error
end;

String

17

procedure String;
(*================================
<string> -> (* vazia *) | <symbol><string>
================================*)
begin
if Sym in [,,.] then
(* seguintes de <string> *)
(* skip *)
else if Sym in [A..Z,a..z] then
(* primeiros de <symbol><string> *)
begin
Symbol;
String
end
else
Error
end;

NonTerminal
procedure NonTerminal;
(*================================
<nonterminal> -> A | ... | Z
================================*)
begin
if Sym in [A..Z] then
GetSym
else
Error
end;

18

7. An
alise Sint
actica
Ascendente
Teoria da Computa
c
ao

Lus Monteiro
DI-FCT/UNL

Lic. Eng. Inform


atica, 2008/09

Em que consiste a an
alise ascendente?
Gram
atica:

S 0 S$
S SA | A
A aSb | ab

rvore de deriva
A
c
ao e deriva
c
ao direita:
S0
S
A
S




A <<

<<

a a b

A:::

S 0 S$
A$
aSb$
aSAb$
aSabb$
aAabb$
aababb$

a b b $

Princpio da an
alise ascendente
Construir a (
arvore de) deriva
c
ao direita do
fim para o princpio (da base para o topo).
Em cada passo, reduzir o corpo de uma
produ
c
ao (elemento redutor ) `
a sua cabe
ca.
2

Passos da constru
c
ao
Deriva
c
ao direita invertida
aababb$ ` a ababb$ ` aa babb$ ` aab abb$ ` aA abb$ `
aS abb$ ` aSa bb$ ` aSab b$ ` aSA b$ ` aS b$ `
aSb $ ` A $ ` S $ ` S$ ` S 0

Arvore
de deriva
c
ao
S
A >>>

A >>>
a a

a b b $

a a

>

a b b $

a a

>

a b b $

A
S

A >>>
a a

A ;;

>

a b b $

~
~~

S
S
A <<

A >>>
a a

<

>

a b b $

~
~~

A >>>
a a

A ;;

>

S0

~
~~

S
S

A >>>
a a

A ;;

>

a b b $

~
~~

A >>>
a a

A <<

<

>

a b b $
3

a b b $

Como se processa?
Comportamento informal desejado:
O
PILHA
FITA ACC
A

aababb$ Transferencia
a
ababb$ Transferencia
aa
babb$ Transferencia
aab
abb$ Reduc
ao A ab
aA
abb$ Reduc
ao S A
aS
abb$ Transferencia
aSa
bb$ Transferencia
aSab
b$ Reduc
ao A ab
aSA
b$ Reduc
ao S SA
aS
b$ Transferencia
aSb
$ Reduc
ao A aSb
A
$ Reduc
ao S A
S
$ Transferencia
S$
Reduc
ao S 0 S$
S0
Aceitac
ao
Concatenando as pilhas e a fita de leitura obt
emse as formas direitas na deriva
c
ao direita pela
ordem inversa.
4

Como se exprimem as ac
c
oes a executar?
Por meio de um aut
omato finito:
Na pilha alternam estados do AF e smbolos
da gram
atica.
O smbolo inicial da pilha
e o estado inicial
do AF.
AF das ac
c
oes (casas em branco deviam conter 9 omitido para simplificar a leitura)
O
ESTADO S A a b $ ACC
A
0
1 2 3
Tr
1
5 3
4 Tr
2
SA
3
6 2 3 7
Tr
4
Ac
5
S SA
6
5 3 8
Tr
7
A ab
8
A aSb
9
Erro
5

O AF das ac
c
oes em ac
c
ao
O
ESTADO S A a b $ ACC
A
0
1 2 3
Tr
1
5 3
4 Tr
2
SA
3
6 2 3 7
Tr
4
Ac
5
S SA
6
5 3 8
Tr
7
A ab
8
A aSb
9
Erro
Funcionamento da AP reconhecedor
Pilha

FL Ac
c
ao

0
ab$ T r
0a3
b$ T r
0a3b7
$ A ab
0A2
$ SA
0S1
$ Tr
0S1$4
Ac

Pilha

FL Ac
c
ao

0
aab$ T r
0a3
ab$ T r
0a3a3
b$ T r
0a3a3b7
$ A ab
0a3A2
$ SA
0a3S6
$ Tr
0a3S6$9
Erro
6

O AF das ac
c
oes sob forma gr
afica
(Omitiu-se o estado 9.)
HIJK
ONML
0

ONML
/HIJK

A
a

2 SA

4 Ac


ONML
HIJK
O

5 SSA

A
a 3

ONML
/HIJK


ONML
HIJK
O


ONMLu
HIJK
m
0

S
a

A
-HIJK
ONML

ONML
/HIJK

8 AaSb

b

ONML
HIJK

7 Aab

Funcionamento
Pilha

FL Ac
c
ao

0
ab$ T r
0a3
b$ T r
0a3b7
$ A ab
0A2
$ SA
0S1
$ Tr
0S1$4
Ac

Pilha

FL Ac
c
ao

0
aab$ T r
0a3
ab$ T r
0a3a3
b$ T r
0a3a3b7
$ A ab
0a3A2
$ SA
0a3S6
$ Tr
0a3S6$9
Erro
7

Pilha no reconhecimento de aababb$


AF das ac
c
oes
HIJK
ONML
0

ONML
/HIJK

2 SA
A

a 03

ONML
/HIJK

4 Ac


HIJK
ONML
O


v
HIJK
ONML


HIJK
ONML
O

5 SSA

-HIJK
ONML

ONML
/HIJK

8 AaSb


ONML
HIJK

7 Aab

Pilha
HIJK
ONML

NML a /HIJK
ONML b /HIJK
ONML
0 a /OHIJK
3
3
7

ONML
/HIJK

ONML
/HIJK

ONML
ONML b /HIJK
6 a /HIJK
7
3

NML
/OHIJK

NML
/OHIJK

ONML
/HIJK

ONML
/HIJK

ONML
/HIJK

ONML
6 b /HIJK
8

2
1

Prefixo vi
avel V
Existe uma deriva
c
ao direita S D x para algum x T .
Intui
c
ao
Ignorando os estados do aut
omato das ac
c
oes
na pilha:
Se o conte
udo da pilha for e o da fita de
leitura x , o aut
omato reconhecedor conclui
com
exito o reconhecimento:
Pilha Fita

No
c
ao informal: Um prefixo vi
avel
e um conte
udo
interm
edio da pilha num reconhecimento bem
sucedido.
9

Itens de uma gram


atica
T
em a forma A . onde A
e uma
produ
c
ao.
Informalmente: Um item
e uma produ
c
ao com
um ponto inserido no corpo.
Exemplo
Gram
atica
S A$
A Aa |

Itens
S .A$ | A.$ | A$.
A .Aa | A.a | Aa. | .

Item completo
Tem a forma A .
(ponto o mais `
a direita possvel).
Item inicial
Tem a forma A .
10

Validade
A .
e v
alido para o prefixo vi
avel
se A for um prefixo vi
avel.
e o conjunto dos itens v
alidos
Nota
c
ao: Iv()
para o prefixo vi
avel .
Intui
c
ao
A . indica uma possibilidade de redu
c
ao
futura quando a pilha
e : a pilha pode
evoluir para e ser reduzida a A .
Pilha Fita

wx

x
x

11

Como se determinam as ac
c
oes a aplicar?
A ac
c
ao a aplicar em cada configura
c
ao do
AP reconhecedor depende dos itens que s
ao
v
alidos para a pilha corrente:

c
ao de
Um item S . determina a ac
aceita
c
ao.

Um item A . com A 6= S indica a possibilidade de redu


c
ao por A : a pilha
deve ter o conte
udo e reduz-se a A .

Um item A .a indica a possibilidade


de se efectuar uma transfer
encia.

12

Conflitos entre ac
c
oes
Existem as seguintes possibilidades de conflito:

Conflito redu
c
ao-redu
c
ao:
Uma pilha interm
edia tem dois itens completos v
alidos.

Conflito redu
c
ao-transfer
encia:
Uma pilha interm
edia tem um item completo e um item com um terminal `
a direita
do ponto ambos v
alidos.

uma gram
Gram
atica LR(0): E
atica para a
qual estes conflitos n
ao existem.

13

Defini
c
ao de gram
atica LR(0)
As seguintes condi
c
oes t
em de ser satisfeitas:

S n
ao ocorre no corpo de nehuma produ
c
ao.

Condi
c
ao LR(0):
Para todo o prefixo vi
avel tal que Iv()
tem um item completo A . :
ao cont
em outro item completo.
Iv() n
Se Iv() cont
em um item n
ao completo B .X ent
ao X N .

14

Teste das condi


c
oes

preciso testar as condi


E
c
oes para todos os
prefixos vi
aveis?

N
ao, basta testar os conjuntos de itens
que s
ao v
alidos para algum prefixo vi
avel.

Como o conjunto total de itens


e finito, s
o
se testa um n
umero finito de conjuntos de
itens.

15

Conjunto de itens fechado


Um conjunto I de itens diz-se fechado se:
Cont
em pelo menos um item.
Sempre que contiver um item A .B
com B N ,
cont
em todos os itens iniciais
B . das produ
c
oes B de B.
Propriedade: Iv()
e fechado para todo o
prefixo vi
avel .
Intui
c
ao: Se a pilha corrente pode evoluir
para B , deve passar pelo valor interm
edio
B e o n
ao terminal B no topo deve ter
resultado da redu
c
ao por algum item completo
B . por isso o item B . indica essa
possibilidade futura.
16

Fecho F e(I) de um conjunto de itens I


o conjunto definido iterativamente por:
E
I F e(I) .
A .B
B

F e(I) implica B . F e(I) .


P

Exemplo
Gram
atica

Itens I

Fecho F e(I)

S 0 S$
S SA | A
A aSb | ab

S 0 .S$

S 0 .S$
S .SA
S .A
A .aSb
A .ab

17

Conjuntos de itens v
alidos para algum
prefixo vi
avel
1. Inicialmente a expectativa
e vir a reduzir
por meio de uma produ
c
ao S (aceitar).
alidos para o
O conjunto Iv() de itens v
prefixo vi
avel vazio
e o fecho dos itens da
forma S . .
2. Conhecidos os itens v
alidos Iv() , os itens
v
alidos de X para X V calculam-se do
seguinte modo:
ao
(a) Se A .X pertence a Iv() , ent
A X. deve pertencer a Iv(X) .
(b) Iv(X)
e o fecho dos itens obtidos deste
modo.
Este processo pode ser descrito como a constru
c
ao de um AF.
18

AF dos itens v
alidos (e das ac
c
oes)
Dada uma gram
atica G = (T, N, S, P )
define-se um AF M = (V, Q, qI , , Q {}) por

qI = F e(

{S . | S P }

)Q.

q Q, X V implica (q, X) Q onde

(q, X) = F e({A X. | A .X q}) .

Propriedade Os conjuntos de itens v


alidos dos
prefixos vi
aveis s
ao os estados do AF.
Logo, para testar a condi
c
ao LR(0) basta considerar os estados do AF.
19

S 0 S$
S SA | A
A aSb | ab

Exemplo de gram
atica LR(0):

?>

89

=<

S 0 .S$
S
S
A
A
?>
89

?>

.SA
S
.A
.aSb
.ab :; a
7

/
89

=<

?>

3


a
89

b


=<

S0
S
A
A
,
?>
389

S.$
S.A
$
.aSb
.ab :;
2

=<

=<
0
S S$.:;

*
?>
89

=<

S SA.:;

A a.Sb
A a.b
S
S .SA
o
S .A
a
A .aSb
A .ab :;

?>
89

S A.:;

A O ab.:;

=<

?>
/

89

=<

A aS.b
S S.A
b
A .aSb
A .ab :;

?>
/
89

=<

A aSb.:;

20

A pilha no reconhecimento de aababb$


O papel dos itens
?>

S0
S
S
A
89 A

0
.S$ =<
.SA
.A
.aSb
.ab :;

3
?> A a.Sb =<
A a.b
/ S .SA
S .A
A .aSb
89 A .ab :;

3
?> A a.Sb =<
A a.b
/ S .SA
S .A
A .aSb
89 A .ab :;
7/ 6
01
S

54 2
A.23

aS.b =<
/ S S.A
A .aSb
89 A .ab :;
6

A
?>
S

6
?>
A aS.b =<
/ S S.A
A .aSb
89 A .ab :;

7
23
ab.54

?>

?> A
S

/7016A

3
A a.Sb =<
A a.b
/ S .SA
S .A
A .aSb
89 A .ab :;

/7016S

23 5
SA.54

7/016
A

8
23
aSb.54

2
7/ 6
54
01
S A.23

S0
/ S
A
89 A

S.$ =<
S.A
.aSb
.ab :;

1
$

4
?> 0
=<
/89
S S$.:;

21

7/016
A

7
23
ab.54

Exemplo de gram
atica n
ao-LR(0)
S A$
A aA |
AF dos itens v
alidos


?>
/
89

=<

S .A$
A .aA
A.
:;

?>

a
/

89

=<

A a.A
A
A .aA
A.
:;
1
=<
S A.$:;

?>
.
89

4
=<
A aA.:;

?>
/
89

2
=<
S A$.:;

?>
/
89

Os estados 0 e 3 cont
em um item completo e
um item com um smbolo terminal `
a direita do
ponto a gram
atica n
ao
e LR(0).
22

Aut
omato de pilha de reconhecimento
Dados
G = (T, N, S, P ) Gram
atica LR(0)
M = (V, Q, qI , , Q {}) AF dos itens v
alidos
Defini
c
ao do AP (generalizado) reconhecedor
R = (T, K, Z, kI , zI , , F )
K = {k, kF } estados
Z = V Q smbolos da pilha
kI = k estado inicial
zI = qI smbolo inicial da pilha
regras de transi
c
ao (definidas a seguir)
F = {kF } estados de aceita
c
ao
23

Regras de transi
c
ao
Regras de aceita
c
ao

(k, q) (kF , q)
Para todo o q que cont
em um item completo
S . para o smbolo inicial S.
Regras de redu
c
ao

(k, q0X1q1 Xnqn) (k, q0Aq)


Para todo o percurso q0X1q1 Xnqn em M tal
que A X1 Xn. qn, A 6= S e (q0, A) = q.
Regras de transfer
encia
a

(k, q) (k, qaq 0)


Se q 6= n
ao tem itens completos e (q, a) =
q 0 6= .
24

AP para o exemplo anterior


(s
o regras de transi
c
ao)


e abreviado para .
Aceita
c
ao
(k, 4) (kF , 4)
Redu
c
ao
(k,
0A2) (k,0S1)
(k,
3A2) (k,3S6)
(k, 0S1A5) (k,0A2)
(k, 3S6A5) (k,3A6)
(k,0a3S6b8) (k,0A2)
(k,3a3S6b8) (k,3A2)

(k, 0a3b7) (k,0A2)


(k, 1a3b7) (k,1A5)
(k, 3a3b7) (k,3A2)
(k, 6a3b7) (k,6A5)
(k,1a3S6b8) (k,1A5)
(k,6a3S6b8) (k,6A5)

Transfer
encia
a

(k,0) (k,0a3) (k,3) (k,3a3)


(k,1) (k,1$4) (k,3) (k,3b7)
a
a
(k,1) (k,1a3) (k,6) (k,6a3)
b

(k,6) (k,6b8)
25

Exemplo de funcionamento

EST.
k
k
k
k
k
k
k
k
k
k
k
k
k
k
kF

PILHA
FITA TIPO REGRA
0
aababb$ Transferencia
0a3
ababb$ Transferencia
0a3a3
babb$ Transferencia
0a3a3b7
abb$ Reduc
ao A ab
0a3A2
abb$ Reduc
ao S A
0a3S6
abb$ Transferencia
0a3S6a3
bb$ Transferencia
0a3S6a3b7
b$ Reduc
ao A ab
0a3S6A5
b$ Reduc
ao S SA
0a3S6
b$ Transferencia
0a3S6b8
$ Reduc
ao A aSb
0A2
$ Reduc
ao S A
0S1
$ Transferencia
0S1$4
Aceitac
ao
0S1$4
(Aceita)

26

Item LR(1) A ., L
A .
e um item LR(0) n
ucleo.
L T {$} smb. de avan
co (lookahead
set).
A ., {a}
e v
alido para
Existe x T tal que:
S D Ax
a P rim(x$).
A ., L
e v
alido para
aL, A ., {a}
e v
alido para .
alidos para .
Iv1() Itens LR(1) v
27

Defini
c
ao de gram
atica LR(1)
As seguintes condi
c
oes t
em de ser satisfeitas:

S n
ao ocorre no corpo de nehuma produ
c
ao.

Condi
c
ao LR(1):
Para todo o prefixo vi
avel tal que Iv1()
tem um item completo A ., L :
Se Iv1() contiver outro item completo
ao L K = .
B ., K , ent
Se Iv1() contiver um item n
ao completo B .X, K, ent
ao X 6 L .

28

Fecho F e1(I) de um conjunto I de itens


LR(1)
o conjunto definido iterativamente por:
E

I F e1(I) .

A .B, L F e1(I)
(

K=

P rim()
se
6
P rim() L se

implica
B ., K F e1(I)
para todo o B P .

29

Exemplo de c
alculo de F e1(I)
S A
A AB | B
Ba|b
1
11
12
111
112
121
122
1111
1112
1121
1122

S .A , {$ }
A .AB, {$ }
A .B , {$ }
A .AB, {a, b}
A .B , {a, b}
B .a , {$ }
B .b , {$ }
A .AB, {a, b}
A .B , {a, b}
B .a , {a, b}
B .b , {a, b}

I
S .A, {$}

F e1(I)
S .A , {$
}
A .AB, {$, a, b}
A .B , {$, a, b}
B .a , {$, a, b}
B .b , {$, a, b}

30

AF dos itens v
alidos LR(1)
Dada uma gram
atica G = (T, N, S, P )
define-se um AF M = (V, Q, qI , , Q {}) por
qI = F e1(

{S ., {$} | S P }

)Q.

q Q, X V implica (q, X) Q onde

(q, X) = F e1({A X., L | A .X, L q}) .


Propriedade
e prefixo vi
avel se e s
o se (qI , ) 6=
, e nesse caso Iv1() = (qI , ).
Logo, para testar a condi
c
ao LR(1) basta considerar os estados do AF.
31

Tabela de an
alise sint
actica LR(1)
Mudan
ca de estado
Linhas Q, colunas V , transi
c
oes de M .
Ac
c
ao

Linhas Q, colunas T {$}.

Regras para a casa (q, a):


Reduzir por A se A ., L q,
a L, A 6= S.
Aceitar se S ., {$} q e a = $.
Transferir se A .a, L q.
Erro se nenhuma outra ac
c
ao for possvel.
32

Exemplo: S A
A BA |
B aB | b

?>
89
3

=<

B b. {a, b, $}:;k
O

b
?>

/
89

=<

S .A {
$}
A .BA {
$}
A .
{
$}
B .aB {a, b, $}
B .b {a, b, $}:;
?>
89

A


?>

a /

=<

B a.B {a, b, $}
B .aB {a, b, $} o
B .b {a, b, $}:;

89

a
6
89

?>
89

=<
:;

=<
:;

B aB. {a, b, $}

a b A B
3 4 1 2
3 4
3 4

S A. {$}

0
1
2
3
4
5
6

2
6



?>



a
T

b
T

T
T
Bb

T
T
Bb

B aB

B aB

2
?

=<

A B.A {
$}
A .BA {
$}
A .
{
$}
B .aB {a, b, $}
B .b {a, b, $}:;
?>
89

A


=<

A BA. {$}:;

$
A
Ac
A
Bb
A BA
B aB
33

Exemplo de funcionamento
0
1
2
3
4
5
6

a b A B
3 4 1 2
3 4
3 4

2
6

EST.
kL
ka
kL
kb
kL
k$
k$
k$
k$
k$
kF

a
T

b
T

T
T
Bb

T
T
Bb

B aB

B aB

$
A
Ac
A
Bb
A BA
B aB

PILHA FITA
0
ab$
0
b$
0a3
b$
0a3
$
0a3b4
$
0a3b4

0a3B6

0B2

0B2A5

0A1

0A1

34

Aut
omato de pilha de reconhecimento
Dados
G = (T, N, S, P ) Gram
atica LR(1)
M = (V, Q, qI , , Q {}) AF dos itens v
alidos
Defini
c
ao do AP reconhecedor
R = (T {$}, K, Z, kI , zI , , F )
K = {kL, kF } {ka | a T {$}} estados
Z = V Q smbolos da pilha
kI = kL estado inicial
zI = qI smbolo inicial da pilha
regras de transi
c
ao (definidas a seguir)
F = {kF } estados de aceita
c
ao
35

Regras de transi
c
ao
Leitura
a

(kL, q) (ka, q)

q Q,

a T {$}.

Aceita
c
ao

(k$, q) (kF , q)

S ., {$} q.

Redu
c
ao

(ka, q0X1q1 Xnqn) (ka, q0Aq)


A X1 Xn., L qn,

a L,

(q0, A) = q.

Transfer
encia

(ka, q) (kL, qaq 0)


A .a, L q,

(q, a) = q 0.
36

Alguns resultados gerais

LL(1)
LR(0)
G2

G1

G4

G3
LR(1)

G1 : S Ac
G3 : S T
G4 : S Ab
A Aa | b
T Aa | Bb
A aA |
Ac
G2 : S a
Bc

Teorema Toda a gram


atica LL(1)
e LR(1)
Teorema Toda a LIC determinista pode ser
gerada por uma gram
atica LR(1)

37

Uma gram
atica que n
ao
e LR(1)
A Bbd | aCbe
B ac
C c
Representa
c
ao parcial do AF dos itens v
alidos
?>
/
89

=<

A .Bbd , {$}
A .aCbe, {$}
B .ac , {b }:;

?>

a
/

89

=<

Aa.Cbe, {$}
Ba.c , {b }
C.c
, {b }:;
c
?>
89

=<

Bac., {b}
Cc. , {b}:;

Depois de ter lido ac o smbolo b de avan


co
n
ao permite distinguir entre acbd e acbe .

38

S0 S
S CC |
C cC | d

Gram
aticas LALR(1):


?>

6
?>
89

=<

C d. {$}:;o

?>

89

89

=<

S 0 .S

{ $}
S .CC { $}
C .cC {c, d}
C .d {c, d}:;

?>

C
/

89

%
?>

=<

C d. {c, d}:;o

?>
/
89

?>
/
89

=<

C cC. {$}:;

=<

S C.C {$}
C .cC {$}
C .d {$}:;
1

=<

S CC. {$}:;

=<

S S. {$}:;

?>
89

?>
,
0
89

=<

C c.C {$}
C .cC {$}
C .d {$}:;

89

=<

C c.C {c, d}
C .cC {c, d}
C .d {c, d}:;

?>
/
89

=<

C cC. {c, d}:;

6


39

Fus
ao de estados
Fundindo estados com o mesmo n
ucleo LR(0)
arrastando consigo as respectivas transi
c
oes
obtem-se o seguinte AF:
c



3,6
4,7
?>
89

?>

=<

C d. {c, d, $}:;o

?>

/
89

S 0 .S

C c.C {c, d, $}
C .cC {c, d, $}
C .d {c, d, $}:;

89

C
/

89

C /?>

=<

89

C cC. {c, d, $}:;

c
?>

{ $}
S .CC { $}
C .cC {c, d}
C .d {c, d}:;

8,9

=<

=<

=<

S C.C {$}
C .cC {$}
C .d {$}:;
?>
+
0
89

?>
/
89

=<

S CC. {$}:;

=<

S S. {$}:;

Este AF satisfaz as condi


c
oes LR(1) diz-se
que a gram
atica dada
e LALR(1).
40

Caracteriza
c
ao das gram
aticas LALR(1)

Partindo do AF dos itens v


alidos LR(1):
Fundir estados com os mesmos n
ucleos
LR(0) (isto
e, manter os n
ucleos e juntar os respectivos smbolos de avan
co).
Arrastar as respectivas transi
c
oes (isto

e, calcular as transi
c
oes determinadas
apenas pelos n
ucleos LR(0) ignorando
os smbolos de avan
co).

A gram
atica
e LALR(1) se o AF transformado satisfizer as condi
c
oes LR(1).

Nota: A fus
ao nunca introduz conflitos transfer
encia-redu
c
ao, apenas poder
a introduzir conflitos redu
c
ao-redu
c
ao.
41

Em que consiste a an
alise ascendente?
Gram
atica:

7. An
alise Sint
actica
Ascendente

S " S$
S SA | A
A aSb | ab

rvore de deriva
A
c
ao e deriva
c
ao direita:
S"
S

Teoria da Computa
c
ao

A
S

Lus Monteiro

%%
%%

A $$

DI-FCT/UNL

$$

a a b

Lic. Eng. Inform


atica, 2008/09

A&&&

S " S$
A$
aSb$
aSAb$
aSabb$
aAabb$
aababb$

&

a b b $

Princpio da an
alise ascendente
Construir a (
arvore de) deriva
c
ao direita do
fim para o princpio (da base para o topo).
Em cada passo, reduzir o corpo de uma
produ
c
ao (elemento redutor ) `
a sua cabe
ca.
2

Passos da constru
c
ao

Como se processa?

Deriva
c
ao direita invertida
aababb$ ! a ababb$ ! aa babb$ ! aab abb$ ! aA abb$ !
aS abb$ ! aSa bb$ ! aSab b$ ! aSA b$ ! aS b$ !
aSb $ ! A $ ! S $ ! S$ ! S "

Arvore
de deriva
c
ao

S
a a

a b b $

A !!!

a a

a b b $

A !!!

a a

a b b $

A
S

A !!!

a a

A ##
b

a b b $

"
""

S
S

A !!!

a a

A $$
b

a b b $

"
""

A !!!

a a

A ##
b

S"
S

S
A

A
S

"
""

S
S

A !!!

a a

A ##
b

a b b $

"
""

O
PILHA
FITA ACC
A

aababb$ Transferencia
a
ababb$ Transferencia
aa
babb$ Transferencia
aab
abb$ Reduc
ao A ab
aA
abb$ Reduc
ao S A
aS
abb$ Transferencia
aSa
bb$ Transferencia
aSab
b$ Reduc
ao A ab
aSA
b$ Reduc
ao S SA
aS
b$ Transferencia
aSb
$ Reduc
ao A aSb
A
$ Reduc
ao S A
S
$ Transferencia
S$
Reduc
ao S " S$
S"
Aceitac
ao

A !!!

a a

a b b $

Comportamento informal desejado:

Concatenando as pilhas e a fita de leitura obt


emse as formas direitas na deriva
c
ao direita pela
ordem inversa.

A $$
b

a b b $
3

Como se exprimem as ac
co
es a executar?

O AF das ac
c
oes em ac
c
ao
O
ESTADO S A a b $ ACC
A
0
1 2 3
Tr
1
5 3
4 Tr
2
SA
3
6 2 3 7
Tr
4
Ac
5
S SA
6
5 3 8
Tr
7
A ab
8
A aSb
9
Erro

Por meio de um aut


omato finito:
Na pilha alternam estados do AF e smbolos
da gram
atica.
O smbolo inicial da pilha
e o estado inicial
do AF.
AF das ac
c
oes (casas em branco deviam conter 9 omitido para simplificar a leitura)
O
ESTADO S A a b $ ACC
A
0
1 2 3
Tr
1
5 3
4 Tr
2
SA
3
6 2 3 7
Tr
4
Ac
5
S SA
6
5 3 8
Tr
7
A ab
8
A aSb
9
Erro

Funcionamento da AP reconhecedor
Pilha

Pilha

FL Ac
c
ao

FL Ac
c
ao

0
aab$ T r
0a3
ab$ T r
0a3a3
b$ T r
0a3a3b7
$ A ab
0a3A2
$ SA
0a3S6
$ Tr
0a3S6$9
Erro

0
ab$ T r
0a3
b$ T r
0a3b7
$ A ab
0A2
$ SA
0S1
$ Tr
0S1$4
Ac
5

O AF das ac
c
oes sob forma gr
afica

!"#$
#%&'(

!
%&'(
!"#$
&

2 SA
a

a %3

S
(

!
!"#$
%&'(
&

2 SA
A

"

8 AaSb

7 Aab

0
ab$ T r
0a3
b$ T r
0a3b7
$ A ab
0A2
$ SA
0S1
$ Tr
0S1$4
Ac

A
b

'%&'(
!"#$

8 AaSb

!"#$
#%&'(

!
!"#$
%&'(

7 Aab
!"#$ a #%&'(
!"#$ b #%&'(
!"#$
0 a #%&'(
3
3
7

%&'(
!"#$

Funcionamento
FL Ac
c
ao

5 SSA

Pilha

!
%&'(
!"#$

Pilha

!
!"#$
%&'(
&

!"#$
#%&'(

4 Ac

!"#$
#%&'(

%&'(
a %!"#$
3(

!"#$
#%&'(

!
%&'(
!"#$
&

'%&'(
!"#$

%&'(
!"#$
0

4 Ac

!"#$
#%&'(

5 SSA

A
)
%&'(*
!"#$

A
a

Pilha no reconhecimento de aababb$


AF das ac
c
oes

(Omitiu-se o estado 9.)


%&'(
!"#$
0

Pilha

FL Ac
c
ao

0
aab$ T r
0a3
ab$ T r
0a3a3
b$ T r
0a3a3b7
$ A ab
0a3A2
$ SA
0a3S6
$ Tr
0a3S6$9
Erro
7

!"#$
#%&'(

!"#$
#%&'(

S
A

!"#$
#%&'(

!"#$
#%&'(

!"#$ b #%&'(
!"#$
6 a #%&'(
3
7

!"#$
#%&'(

!"#$
#%&'(

!"#$
#%&'(

5
8

2
1

!"#$
#%&'(

Prefixo vi
avel V

Itens de uma gram


atica

Existe uma deriva


c
ao direita S D x para al
gum x T .

T
em a forma A . onde A
e uma
produ
c
ao.

Intui
c
ao

Informalmente: Um item
e uma produ
c
ao com
um ponto inserido no corpo.

Ignorando os estados do aut


omato das ac
c
oes
na pilha:

Exemplo

Se o conte
udo da pilha for e o da fita de
leitura x , o aut
omato reconhecedor conclui
com
exito o reconhecimento:

Gram
atica
S A$
A Aa |

Itens
S .A$ | A.$ | A$.
A .Aa | A.a | Aa. | .

Pilha Fita

Item completo

Tem a forma A .

(ponto o mais `
a direita possvel).

No
c
ao informal: Um prefixo vi
avel
e um conte
udo
interm
edio da pilha num reconhecimento bem
sucedido.
9

Item inicial
Tem a forma A .

10

Validade
e v
alido para o prefixo vi
avel
A .

Como se determinam as ac
c
oes a aplicar?

se A for um prefixo vi
avel.

e o conjunto dos itens v


alidos
Nota
c
ao: Iv()
para o prefixo vi
avel .
Intui
c
ao
c
ao
A . indica uma possibilidade de redu
futura quando a pilha
e : a pilha pode
evoluir para e ser reduzida a A .

c
ao de
Um item S . determina a ac
aceita
c
ao.

Um item A . com A (= S indica a possibilidade de redu


c
ao por A : a pilha
deve ter o conte
udo e reduz-se a A .

Pilha Fita

A ac
c
ao a aplicar em cada configura
c
ao do
AP reconhecedor depende dos itens que s
ao
v
alidos para a pilha corrente:

wx

x
x

Um item A .a indica a possibilidade


de se efectuar uma transfer
encia.

11

12

Conflitos entre ac
c
oes
Defini
c
ao de gram
atica LR(0)
Existem as seguintes possibilidades de conflito:
As seguintes condi
c
oes t
em de ser satisfeitas:
Conflito redu
c
ao-redu
c
ao:
Uma pilha interm
edia tem dois itens completos v
alidos.

S n
ao ocorre no corpo de nehuma produ
c
ao.
Condi
c
ao LR(0):
Para todo o prefixo vi
avel tal que Iv()

Conflito redu
c
ao-transfer
encia:
Uma pilha interm
edia tem um item completo e um item com um terminal `
a direita
do ponto ambos v
alidos.

tem um item completo A . :


ao cont
em outro item completo.
Iv() n
em um item n
ao com Se Iv() cont

uma gram
Gram
atica LR(0): E
atica para a
qual estes conflitos n
ao existem.

pleto B .X ent
ao X N .

14

13

Conjunto de itens fechado


Um conjunto I de itens diz-se fechado se:
Teste das condi
c
oes

Cont
em pelo menos um item.

preciso testar as condi


E
c
oes para todos os
prefixos vi
aveis?

Sempre que contiver um item A .B


com B N ,
cont
em todos os itens iniciais

N
ao, basta testar os conjuntos de itens
que s
ao v
alidos para algum prefixo vi
avel.

Como o conjunto total de itens


e finito, s
o
se testa um n
umero finito de conjuntos de
itens.

c
oes B de B.
B . das produ
Propriedade: Iv()
e fechado para todo o
prefixo vi
avel .
Intui
c
ao: Se a pilha corrente pode evoluir
edio
para B , deve passar pelo valor interm
ao terminal B no topo deve ter
B e o n
resultado da redu
c
ao por algum item completo
B . por isso o item B . indica essa
possibilidade futura.

15

16

Conjuntos de itens v
alidos para algum
prefixo vi
avel
Fecho F e(I) de um conjunto de itens I
o conjunto definido iterativamente por:
E

O conjunto Iv() de itens v


alidos para o
prefixo vi
avel vazio
e o fecho dos itens da
forma S . .

I F e(I) .
A .B
B

F e(I) implica B . F e(I) .


P

Exemplo
Gram
atica

Itens I

Fecho F e(I)

S " S$

S " .S$

S " .S$

S SA | A
A aSb | ab

1. Inicialmente a expectativa
e vir a reduzir
por meio de uma produ
c
ao S (aceitar).

S .SA
S .A
A .aSb
A .ab

2. Conhecidos os itens v
alidos Iv() , os itens
v
alidos de X para X V calculam-se do
seguinte modo:
ao
(a) Se A .X pertence a Iv() , ent
A X. deve pertencer a Iv(X) .

e o fecho dos itens obtidos deste


(b) Iv(X)
modo.
Este processo pode ser descrito como a constru
c
ao de um AF.
18

17

AF dos itens v
alidos (e das ac
c
oes)
S " S$
S SA | A
A aSb | ab

Exemplo de gram
atica LR(0):
Dada uma gram
atica G = (T, N, S, P )
define-se um AF M = (V, Q, qI , , Q {}) por
)*

qI = F e(

{S . | S P }

)Q.
#

-.

q Q, X V implica (q, X) Q onde

Propriedade Os conjuntos de itens v


alidos dos
prefixos vi
aveis s
ao os estados do AF.
Logo, para testar a condi
c
ao LR(0) basta considerar os estados do AF.
19

+,

a"
!
-.

-.

S"
S
A
A

+,

S.$
S.A
$
.aSb
.ab /0

+
)*
/-.

+,

A a.Sb
A a.b
S
S .SA
0
S .A
a
A .aSb
A .ab /0

+,
/0

S A.

4
#

)*
-.

+,

S " S$./0

+,
/0

A & ab.

1
)*

,)*

.S$
.SA
S
.A
.aSb
.ab /0 a

)*
-.

(q, X) = F e({A X. | A .X q}) .

S"
S
S
A
A

5
1

)*
-.

+,

S SA./0

6
)*

-.

+,

A aS.b
S S.A
b
A .aSb
A .ab /0

8
)*
#
-.

+,

A aSb./0

20

Exemplo de gram
atica n
ao-LR(0)
A pilha no reconhecimento de aababb$
O papel dos itens

)*

S"
S
S
A
-. A

0
.S$ +,
.SA
.A
.aSb
.ab /0

3
a.Sb +,
A a.b
# S .SA
S .A
A .aSb
-. A .ab /0

)* A

)* A

a.Sb +,
A a.b
# S .SA
S .A
A .aSb
-. A .ab /0

12
#56
S

6
A aS.b +,
# S S.A
A .aSb
-. A .ab /0

#1562S
)*

S"
S
A
-. A
#

2
78
A.34
S.$ +,
S.A
.aSb
.ab /0

1
$

#)*
-.
S"

AF dos itens v
alidos

7
78
ab.34

#$

34 2
A.78

6
)* A aS.b +,
# S S.A
A .aSb
-. A .ab /0

#1562A

3
)*
A a.Sb +,
A a.b
# S .SA
S .A
A .aSb
-. A .ab /0

#12S
56

34 5
SA.78

1# 2
56
A

8
34
aSb.78

)*

S A$
A aA |

0
)*
b

#12A
56

7
34
ab.78
#

-.

+,

)*

S .A$
A .aA
A.
/0

a
#

-.

"

+,

A a.A
A
A .aA
A.
/0
1
+,
S A.$/0

)*
2
-.

4
+,
S$./0

4
+,
A aA./0

)*
#
-.

2
+,
S A$./0

)*
-.
#

Os estados 0 e 3 cont
em um item completo e
um item com um smbolo terminal `
a direita do
ponto a gram
atica n
ao
e LR(0).
21

22

Aut
omato de pilha de reconhecimento
Dados

Regras de transi
c
ao
Regras de aceita
c
ao

G = (T, N, S, P ) Gram
atica LR(0)

(k, q) (kF , q)

M = (V, Q, qI , , Q {}) AF dos itens v


alidos
Defini
c
ao do AP (generalizado) reconhecedor
R = (T, K, Z, kI , zI , , F )

Para todo o q que cont


em um item completo
S . para o smbolo inicial S.
Regras de redu
c
ao

(k, q0X1q1 Xnqn) (k, q0Aq)

K = {k, kF } estados
Z = V Q smbolos da pilha

Para todo o percurso q0X1q1 Xnqn em M tal


que A X1 Xn. qn, A (= S e (q0, A) = q.

kI = k estado inicial

Regras de transfer
encia

zI = qI smbolo inicial da pilha

regras de transi
c
ao (definidas a seguir)
F = {kF } estados de aceita
c
ao

23

(k, q) (k, qaq ")


Se q (= n
ao tem itens completos e (q, a) =
q " (= .
24

AP para o exemplo anterior


(s
o regras de transi
c
ao)

Exemplo de funcionamento


e abreviado para .
Aceita
c
ao
(k, 4) (kF , 4)
Redu
c
ao
(k,
0A2) (k,0S1)
(k,
3A2) (k,3S6)
(k, 0S1A5) (k,0A2)
(k, 3S6A5) (k,3A6)
(k,0a3S6b8) (k,0A2)
(k,3a3S6b8) (k,3A2)

(k, 0a3b7) (k,0A2)


(k, 1a3b7) (k,1A5)
(k, 3a3b7) (k,3A2)
(k, 6a3b7) (k,6A5)
(k,1a3S6b8) (k,1A5)
(k,6a3S6b8) (k,6A5)

Transfer
encia
a

(k,0) (k,0a3) (k,3) (k,3a3)


(k,1) (k,1$4) (k,3) (k,3b7)
a
a
(k,1) (k,1a3) (k,6) (k,6a3)

EST.
k
k
k
k
k
k
k
k
k
k
k
k
k
k
kF

PILHA
FITA TIPO REGRA
0
aababb$ Transferencia
0a3
ababb$ Transferencia
0a3a3
babb$ Transferencia
0a3a3b7
abb$ Reduc
ao A ab
0a3A2
abb$ Reduc
ao S A
0a3S6
abb$ Transferencia
0a3S6a3
bb$ Transferencia
0a3S6a3b7
b$ Reduc
ao A ab
0a3S6A5
b$ Reduc
ao S SA
0a3S6
b$ Transferencia
0a3S6b8
$ Reduc
ao A aSb
0A2
$ Reduc
ao S A
0S1
$ Transferencia
0S1$4
Aceitac
ao
0S1$4
(Aceita)

(k,6) (k,6b8)

26

25

Item LR(1) A ., L
Defini
c
ao de gram
atica LR(1)
A .
e um item LR(0) n
ucleo.

As seguintes condi
c
oes t
em de ser satisfeitas:

L T {$} smb. de avan


co (lookahead
set).
A ., {a}
e v
alido para

S n
ao ocorre no corpo de nehuma produ
c
ao.
Condi
c
ao LR(1):

Existe x T tal que:

Para todo o prefixo vi


avel tal que Iv1()
tem um item completo A ., L :

S D Ax

Se Iv1() contiver outro item completo


a P rim(x$).

B ., K , ent
ao L K = .

A ., L
e v
alido para

Se Iv1() contiver um item n


ao completo B .X, K, ent
ao X ( L .

aL, A ., {a}
e v
alido para .
Iv1() Itens LR(1) v
alidos para .
27

28

Fecho F e1(I) de um conjunto I de itens


LR(1)
o conjunto definido iterativamente por:
E

I F e1(I) .

K=

S A
A AB | B
Ba|b
1
11
12
111
112
121
122
1111
1112
1121
1122

A .B, L F e1(I)
!

Exemplo de c
alculo de F e1(I)

P rim()
se (
P rim() L se

implica
B ., K F e1(I)
para todo o B P .

S .A , {$ }
A .AB, {$ }
A .B , {$ }
A .AB, {a, b}
A .B , {a, b}
B .a , {$ }
B .b , {$ }
A .AB, {a, b}
A .B , {a, b}
B .a , {a, b}
B .b , {a, b}

I
S .A, {$}

F e1(I)
S .A , {$
}
A .AB, {$, a, b}
A .B , {$, a, b}
B .a , {$, a, b}
B .b , {$, a, b}

29

30

Tabela de an
alise sint
actica LR(1)
AF dos itens v
alidos LR(1)
Mudan
ca de estado
Dada uma gram
atica G = (T, N, S, P )
Linhas Q, colunas V , transi
c
oes de M .
define-se um AF M = (V, Q, qI , , Q {}) por
qI = F e1(

)Q.

{S ., {$} | S P }

q Q, X V implica (q, X) Q onde

Ac
c
ao

Linhas Q, colunas T {$}.


Regras para a casa (q, a):

(q, X) = F e1({A X., L | A .X, L q}) .


Propriedade
e prefixo vi
avel se e s
o se (qI , ) (=
, e nesse caso Iv1() = (qI , ).
Logo, para testar a condi
c
ao LR(1) basta considerar os estados do AF.
31

Reduzir por A se A ., L q,
a L, A (= S.
Aceitar se S ., {$} q e a = $.
Transferir se A .a, L q.
Erro se nenhuma outra ac
c
ao for possvel.
32

Exemplo: S A

Exemplo de funcionamento

A BA |
B aB | b

4
)*
-.
/

+,

B b. {a, b, $}/04

&

)*

-.

!%

!%

0
+,

S .A {
$}
A .BA {
$}
A .
{
$}
B .aB {a, b, $}
B .b {a, b, $}/0
A
!

)*
-.

-.

)*
-.

3
-.

+,

2
6

a
T

b
T

T
T
Bb

T
T
Bb

B aB

B aB

2
+,

A B.A {
$}
A .BA {
$}
A .
{
$}
B .aB {a, b, $}
B .b {a, b, $}/0
!

)*
-.

B aB. {a, b, $}/0

a b A B
3 4 1 2
3 4
3 4

)*

+,

1
+,

"

B a.B {a, b, $}
B .aB {a, b, $} 0
B .b {a, b, $}/0

a #

S A. {$}/0

0
1
2
3
4
5
6

3
)*

"

0
1
2
3
4
5
6

a b A B
3 4 1 2
3 4
3 4

2
6

EST.
kL
ka
kL
kb
kL
k$
k$
k$
k$
k$
kF

5
+,

A BA. {$}/0

$
A
Ac
A
Bb
A BA
B aB

$
A
Ac
A

a
T

b
T

T
T
Bb

T
T
Bb

B aB

B aB

Bb
A BA
B aB

PILHA FITA
0
ab$
0
b$
0a3
b$
0a3
$
0a3b4
$
0a3b4

0a3B6

0B2

0B2A5

0A1

0A1

34

33

Aut
omato de pilha de reconhecimento

Regras de transi
c
ao

Dados

Leitura

G = (T, N, S, P ) Gram
atica LR(1)

(kL, q) (ka, q)

alidos
M = (V, Q, qI , , Q {}) AF dos itens v

Aceita
c
ao

Defini
c
ao do AP reconhecedor

q Q,

(k$, q) (kF , q)

R = (T {$}, K, Z, kI , zI , , F )

a T {$}.

S ., {$} q.

Redu
c
ao

K = {kL, kF } {ka | a T {$}} estados


Z = V Q smbolos da pilha

(ka, q0X1q1 Xnqn) (ka, q0Aq)


A X1 Xn., L qn,

kI = kL estado inicial

a L,

(q0, A) = q.

Transfer
encia

zI = qI smbolo inicial da pilha

regras de transi
c
ao (definidas a seguir)

(ka, q) (kL, qaq ")

F = {kF } estados de aceita


c
ao

A .a, L q,

35

(q, a) = q ".
36

Uma gram
atica que n
ao
e LR(1)

Alguns resultados gerais

A Bbd | aCbe
B ac
C c

LL(1)
LR(0)
G2

G4

Representa
c
ao parcial do AF dos itens v
alidos
G1

G3
)*

LR(1)
#

G1 : S Ac
G3 : S T
G4 : S Ab
A Aa | b
T Aa | Bb
A aA |
Ac
G2 : S a
Bc

-.

+,

A .Bbd , {$}
A .aCbe, {$}
B .ac , {b }/0

)*

a
#

-.

+,

Aa.Cbe, {$}
Ba.c , {b }
C.c
, {b }/0
c
)*

Teorema Toda a gram


atica LL(1)
e LR(1)

-.

Teorema Toda a LIC determinista pode ser


gerada por uma gram
atica LR(1)

+,

Bac., {b}
Cc. , {b}/0

Depois de ter lido ac o smbolo b de avan


co
n
ao permite distinguir entre acbd e acbe .

37

Gram
aticas LALR(1):

38

Fus
ao de estados

S" S
S CC |
C cC | d

!%

Fundindo estados com o mesmo n


ucleo LR(0)
arrastando consigo as respectivas transi
c
oes
obtem-se o seguinte AF:

6
)*

7
)*
-.

+,
0
/0
7

C d. {$}

-.

"

)*

#
-.

S " .S
S .CC
C .cC
C .d

+,

{ $}
{ $}
{c, d}
{c, d}/0

c
)*

C
#

-.

+,
/0

C cC. {$}

S C.C {$}
C .cC {$}
C .d {$}/0
)*
+
"
-.

)*
#
-.

+,

S CC. {$}/0

)*
-.

+,
0
/0

C d. {c, d}

d
-.

)*

-.

+,

&

+,

C c.C {c, d}
C .cC {c, d}
C .d {c, d}/0

S " .S
S .CC
C .cC
C .d

-.

2
)*

8
C

)*
#
-.

+,
/0

C cC. {c, d}

#
"&

+,

-.C cC. {c, d, $}/0

&

+,

{ $}
{ $}
{c, d}
{c, d}/0

8,9
C #)*

+,

C c.C {c, d, $}
C .cC {c, d, $}
C .d {c, d, $}/0

#
-.

+,

S C.C {$}
C .cC {$}
C .d {$}/0

3
8
)*

S S. {$}/0

+,
0
/0

C d. {c, d, $}

"

)*

4,7
)*
-.

S
d

3,6

2
+,

!%

9
)*
#
-.

&

+,

C c.C {$}
C .cC {$}
C .d {$}/0

5
C

)*
-.
#

+,

S CC. {$}/0

1
)*
5
"
-.

+,

S S. {$}/0

Este AF satisfaz as condi


c
oes LR(1) diz-se
que a gram
atica dada
e LALR(1).

39

40

Caracteriza
c
ao das gram
aticas LALR(1)

Partindo do AF dos itens v


alidos LR(1):
Fundir estados com os mesmos n
ucleos
LR(0) (isto
e, manter os n
ucleos e juntar os respectivos smbolos de avan
co).
Arrastar as respectivas transi
c
oes (isto

e, calcular as transi
c
oes determinadas
apenas pelos n
ucleos LR(0) ignorando
os smbolos de avan
co).

A gram
atica
e LALR(1) se o AF transformado satisfizer as condi
co
es LR(1).

Nota: A fus
ao nunca introduz conflitos transfer
encia-redu
c
ao, apenas poder
a introduzir conflitos redu
c
ao-redu
c
ao.
41

8. M
aquinas de Turing
Teoria da Computa
c
ao

Lus Monteiro
DI-FCT/UNL

Lic. Eng. Inform


atica, 2008/09

A m
aquina de Turing (MT)
Foi introduzida por Alan Turing em 1936
como modelo de computa
c
ao algortmica.
Antecipou os computadores actuais
ambito
geral, programa guardado em mem
oria.
Executa computa
c
oes arbitr
arias, n
ao se limita
ao reconhecimento de linguagens.
um modelo simples e abstracto,
Vantagens: E
n
ao se identifica com nenhum computador particular.
Componentes do modelo b
asico:
fita semi-infinita;
unidade de controlo finita;
cabe
ca de leitura e escrita.


Fita





Cabe
ca

Controlo

q
2

Defini
c
ao de MT
M = (T, Q, Z, qI , )
Q conjunto finito de estados.
Z alfabeto da fita, contendo B (branco).
T Z {B} alfabeto de entrada.
qI Q estado inicial.
fun
c
ao de transi
c
ao
e uma fun
c
ao parcial
de Q Z em Q Z {L, R}.
(q, x) = (p, y, D) significa:
No estado q lendo o smbolo x, a MT efectua uma transi
c
ao para o estado p, escreve o
smbolo y e movimenta a cabe
ca uma casa na
direc
c
ao D (L esquerda, R direita).
(q, x) e (q, x) significam que (q, x) est
a
definido ou indefinido.
3

Computa
c
ao
Configura
c
ao uqvB
uv
e o conte
udo da fita do incio at
e ao B;
`
a direita de B todas as casas est
ao em branco;
q
e o estado corrente;
a cabe
ca l
e o primeiro smbolo de vB.
Configura
c
ao inicial qI BvB
Transi
c
ao uqvB ` wpzB
A configura
c
ao wpzB resulta de uqvB por uma
transi
c
ao (q, x) = (p, y, D) da MT.
Sequ
encia finita de transi
c
oes uqvB ` wpzB
wpzB resulta de uqvB por um n
umero finito
0 de transi
c
oes.
A MT p
ara quando encontra um par (estado,
smbolo) para o qual n
ao est
a definida.
Termina anormalmente quando est
a no incio
da fita e tem de se mover para a esquerda.
4

Exemplo
A MT seguinte com T = {a, b} troca os as
com os bs (estado inicial q0).

q0
q1
q2

PQRS
/ WVUT

q0

B
q1, B, R
q2, B, L

q1, b, R
q2, a, L

q1, a, R
q2, b, L

a/b R
b/a R
B/B R


WVUT
/ PQRS

q1

a/a L
b/b L
B/B L


WVUT
/ PQRS

q2

q0BabB ` Bq1abB ` Bbq1bB ` Bbaq1B


` Bbq2aB ` Bq2baB ` q2BbaB

Exemplo: a m
aquina COPY
Transforma a fita BuB em BuBuB.

a/a R
b/b R

PQRS
WVUT
O

q2

a/a R
b/b R
B/B R

a/X R
PQRS
/ WVUT

B/B L

q3

B/a L

WVUT o
/ PQRS
{
{{
{{
{
{{
{{
{
{{
{{
{
{{
{{
{
{{
{{
{
{{
{{
{
{{
{{
{

}{
PQRS
WVUT
PQRS
WVUT
P
P

q0

B/B R


PQRS
WVUT
/

q1

X/X R
Y /Y R

b/Y R

q7

q5

X/a L
Y /b L

a/a R
b/b R

a/a L
q4 b/b L
B/B L


PQRS
WVUT
z
O

B/b L

B/B R

WVUT
/ PQRS
P

q6

a/a R
b/b R
6

MT com estados de aceita


c
ao
M = (T, Q, Z, qI , , F ) com F Q.
u T
e aceite por estados de aceita
c
ao se
a computa
c
ao com entrada u (isto
e, iniciada
em qI BuB) p
ara num estado de aceita
c
ao.
L(M ) linguagem das palavras aceites por M .
e uma
Linguagem recursivamente enumer
avel
linguagem aceite por uma MT.
Linguagem recursiva
e uma linguagem aceite
por uma MT que p
ara para todas as palavras
de entrada.

Exemplo

PQRS
/ WVUT

q0

b/b R
B/B R


WVUT
/ PQRS

q1

a/a R

PQRS
WVUT

q2

a/a R

WVUT
HIJK
ONML
/ PQRS

q3

b/b R

Aceita a linguagem (a + b)aa(a + b).


A computa
c
ao
q0BaabB ` Bq1aabB ` Baq2abB ` Baaq3bB
p
ara assim que encontra aa.
A linguagem
e recursiva.

Exemplo
MT que aceita {aibici | i 0}:

WVUT
/ PQRS

q0

a/a L
b/b L
Y /Y L
Z/Z L

WVUT
PQRS
O

q4

B/B R
Y /Y R
Z/Z R

X/X R

c/Z L
WVUT
PQRS o
P

q3

b/b R
Z/Z R



WVUT
WVUT
/ PQRS
/ PQRS
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
C! 

PQRS
WVUT
HIJK
ONML
PQRS
WVUT
P

q1

a/X R

b/Y R

q2

Y /Y R

B/B R

q5

B/B R

q6

a/a R
Y /Y R

Outro crit
erio de aceita
c
ao
O M aceita por paragem u T se
DEFINIC
A
a computa
c
ao de M com entrada u p
ara (normalmente).
TEOREMA S
ao equivalentes:
i) L
e aceite por uma MT por estados de
aceita
c
ao.
ii) L
e aceite por uma MT por paragem.
DEM. Se M = (T, Q, Z, qI , ) aceita L por paragem, M 0 = (T, Q, Z, qI , , Q) aceita por estados de aceita
c
ao.
Se M = (T, Q, Z, qI , , F ) aceita L por estados
de aceita
c
ao, M 0 = (T, Q {q}, Z, qI , 0) aceita
por paragem, com:
0(q, x) = (q, x) se (q, x) ;
0(q, x) = (q, x, R) se q Q F e (q, x) ;
0(q, x) = (q, x, R).
10

Exemplo
Aceita
c
ao de (a + b)aa(a + b) por paragem :

b/b R

a/a R



PQRS
WVUT
PQRS
WVUT
PQRS
/ WVUT
HH
m
w
HH
ww
HH
ww
w
HH
w
HH
ww
HH
ww
w
HH
ww
HH
ww
HH
w
w
HH
ww
HH
ww
HH
w
w
HH
ww
HH
ww
HH
w
H#  {www
_^]\
XYZ[
P

q0

B/B R

B/B R

a/a R
b/b R

q2

q1

PQRS
/ WVUT

a/a R

q3

b/b R

B/B R

a/a R
b/b R
B/B R

11

MT multipista
Fita dividida em n pistas, lidas em simult
aneo.

Pista 2
Pista 1
6

q
M = (Q, T, Z, qI , , F ) com 2 pistas:

e uma fun
c
ao parcial
de Q Z Z
em Q Z Z {L, R}
(q, (x, y)) = (p, (z, w), D)
Aceita
c
ao: por estados de aceita
c
ao
Configura
c
oes: (u, u0)q(vB, v 0B)
Configura
c
ao inicial: (, )qI (BvB, B)
12

MT b
asica e MT multipista
TEOREMA L
e aceite por uma MT de 2 pistas
sse for aceite por uma MT b
asica.
DEM. Se L e aceite por uma MT b
asica M ,
e
aceite por uma MT de 2 pistas M 0 que funciona
como M ignorando a segunda pista.
Se L
e aceite por uma MT de 2 pistas M ,
e
aceite por uma MT b
asica M 0 que representa
as posi
c
oes na fita de 2 pistas por smbolos
que codificam pares ordenados.

13

MT com fita bi-infinita


A fita estende-se indefinidamente em ambas
as direc
c
oes.
Define-se como a MT de base mas sem termina
c
ao anormal.
TEOREMA L
e aceite por uma MT de fita
bi-infinita sse for aceite por uma MT b
asica.

14

MT b
asica MT bi-infinita
A MT bi-infinita funciona exactamente como
a MT b
asica, excepto que:
O limite esquerdo da fita
e simulado por
uma casa com o smbolo #.
A termina
c
ao anormal
e simulada pela entrada na casa que cont
em #.
Exemplo com a linguagem (a+b)aa(a+b):


HIJK
ONML

B/B L

PQRS
WVUT

#/# R

qii
q0

#/# R

#/# R #/#
11 R

B/# R

WVUT
PQRS

WVUT j
4 PQRS
F 1X 1
11


11


11


11


1

qf

qi

B/B R









PQRS
/ WVUT
P m

a/a R

q1

b/b R

11
11
11
11
11
PQRS
WVUT

q2

PQRS
HIJK
ONML
/ WVUT

a/a R

q3

b/b R
15

MT bi-infinita MT de 2 pistas
A fita bi-infinita



-3 -2 -1

qI

e simulada por uma fita de 2 pistas:

-1 -2 -3
#
0

qI
16

MT multifita
M = (Q, T, Z, qI , , F )
Tem k 1 fitas e k cabe
cas independentes.
Entrada na fita 1 na posi
c
ao padr
ao.
Fita 3


Fita 2
Fita 1





I
@


6
@ 

@
@
@














Uma transi
c
ao
l
e um smbolo em cada fita,
muda o estado,
escreve um smbolo em cada fita,
reposiciona as cabe
cas independentemente.
(q, x1, x2) = (p; y1, D1; y2, D2)
(k = 2)
xi, yi Z, Di {L, R, S}, S cabe
ca estacion
aria.
Termina
c
ao anormal se ultrapassar margem
esquerda em qualquer fita.
17

MT b
asica e MT multifita
TEOREMA L
e aceite por uma MT multifita
sse for aceite por uma MT b
asica.
DEM. Uma MT b
asica
e uma MT multifita
com k = 1. Uma MT com k fitas
e simulada
por uma MT com 2k + 1 pistas, logo por uma
MT b
asica. A configura
c
ao
a b






b a c










6



e simulada por
5
4
3
2
1

#
X
a b b c c
X
b a c






















18

Exemplo: {uu | u {a, b}}


Copia a entrada para a fita 2.
Move as cabe
cas para a esquerda, 2 casas
na fita 1 por cada casa na fita 2.
Compara a 1.a metade da entrada com a 2.a
metade da c
opia.

x {a, b}
y {a, b, B}


WVUT
PQRS

q0

[B/B R,B/B R]


PQRS
WVUT
P

WVUT
q1 [B/B L,B/B L] / PQRS
q2 m

[x/x L,y/y L]
-

PQRS
WVUT

q3

[x/x L,y/y S]

[x/x R,B/x R]
[B/B R,y/y R]

PQRS
WVUT
P

q4

[y/y R,B/B R]

WVUT
HIJK
ONML
/ PQRS

q5

[x/x R,x/x R]
19

MT n
ao determinista
aplica Q Z
em subconjuntos de Q Z {L, R}.
EXEMPLO Linguagem de todas as palavras
contendo um c precedido ou seguido de ab.


WVUT
PQRS

q0

a/a R
b/b R
c/c R

PQRS
/ WVUT
q1

B/B R

WVUT
/ PQRS

c/c R

q2

WVUT
/ PQRS

a/a R

q3

WVUT
HIJK
ONML
/ PQRS

b/b R

q4

c/c L

WVUT
PQRS

q5

b/b L

WVUT
/ PQRS

q6

a/a L

WVUT
HIJK
ONML
/ PQRS

q7

TEOREMA As linguagens aceites pelas MT


n
ao deterministas por paragem s
ao as aceites
pelas MT b
asicas por paragem.
20

Problemas de decis
ao (PD)
Problema de decis
ao P
um conjunto de perguntas, cada uma com
E
O.
uma resposta SIM ou NA
(Tamb
em pode ser visto como um conjunto
de afirma
c
oes, cada uma VERDADEIRA ou
FALSA.)
Exemplo
PSQ
e o problema de decis
ao x
e um quadrado
perfeito?
PSQ
e o conjunto das perguntas
p0: 0
e um quadrado perfeito?
p1: 1
e um quadrado perfeito?
...
21

Solu
c
ao de um problema de decis
ao
um algoritmo que determina a resposta aproE
priada a cada pergunta p P .
O SEI, ou n
(N
ao
e permitida a resposta NA
ao
dar qualquer resposta; em todos os casos a
O.)
resposta tem de ser SIM ou NA
Algoritmo ou procedimento efectivo
Sequ
encia de instru
c
oes executadas de forma
determinista e mec
anica, n
ao requerendo criatividade ou a elabora
c
ao de palpites na sua
aplica
c
ao.
Solu
c
ao parcial de P
O algoritmo d
a a resposta SIM a todo a pergunta que tenha resposta afirmativa.
(Se a resposta for negativa, o algoritmo d
a a
O ou n
resposta NA
ao d
a resposta.)
22

Representa
c
ao de um PD por uma
linguagem
Representa
c
ao do problema P
Cada pergunta p P
e codificada por uma
palavra xp T para um alfabeto T apropriado.
P como uma linguagem LP
LP = {xp | p P tem resposta SIM}
Resposta a p P
a resposta `
E
a pergunta xp LP ?
Exemplo: n
e um quadrado perfeito? pode
ser representada por 1n+1 e a linguagem associada
e {1n+1 | n
e um quadrado perfeito}.

23

Resolu
c
ao de um PD por uma MT
A MT M resolve P se reconhece LP e p
ara
para todas as entradas.
A MT M resolve parcialmente P se reconhece LP .
P
e decidvel se tem uma representa
c
ao tal
que LP
e recursiva.
P
e indecidvel se n
ao
e decidvel.
P
e semi-decidvel se tem uma representa
c
ao
tal que LP
e recursivamente enumer
avel.

24

Tese de Church-Turing
Para problemas de decis
ao
Existe um procedimento efectivo para resolver
um problema de decis
ao P se e s
o se existe
uma MT que resolve P .
Tese de Church-Turing estendida
Um problema de decis
ao
e parcialmente resol
uvel
se e s
o se existe uma MT que resolve parcialmente P .

25

Problema da paragem para MTs


(Halting problem)
Dada uma MT M e w T , a computa
c
ao
de M com entrada w p
ara?
Como se representa o problema da paragem
por uma linguagem?
Vamos apenas considerar MTs com:

T = {0, 1}
Z = {0, 1, B}
Q = {q0, q1, . . . , qn}
q0 estado inicial
F

irrelevante.

26

Codifica
c
ao de uma MT
Smbolo 0

C
odigo 1 11 111

q0 q1
1

qn

11 1n+1 1 11

Seja en(z) o c
odigo de z.
A transi
c
ao (qi, x) = (qj , y, D)
e codificada
por
en(qi) 0 en(x) 0 en(qj ) 0 en(y) 0 en(D)
A representa
c
ao R(M ) de uma MT M consiste em:
Listar a representa
c
ao das transi
c
oes, separadas por 00.
Iniciar e terminar a listagem por 000.
O problema de saber se x {0, 1} representa
uma MT
e decidvel.
27

Exemplo
0/0 L

PQRS
HIJK
ONML
/ WVUT

q0

WVUT
HIJK
ONML
/ PQRS

B/B R

q1

1/1 R

WVUT
/ PQRS

q2

1/1 L

Aceita + 11(0 + 1). A computa


c
ao n
ao
termina para palavras come
cadas por 0.
Transi
c
ao

C
odigo

(q0, B) = (q1, B, R) 101110110111011


(q1, 0) = (q0, 0, L)

1101010101

(q1, 1) = (q2, 1, R)

110110111011011

(q2, 1) = (q0, 1, L)

1110110101101

C
odigo da MT:
00010111011011101100110101010100
110110111011011001110110101101000
28

Representa
c
ao do problema da paragem
por uma linguagem
LH = {R(M )w : M p
ara com a entrada w}
O problema da paragem reformulado
R(M )w LH ?
O problema da paragem
e decidvel?
A linguagem LH
e recursiva ?
Teorema
O problema da paragem
e indecidvel.

29

Interl
udio: conjuntos enumer
aveis
Naturais pares
0 1 2 3 n

0 2 4 6 2n
Inteiros
0 1 2 3 4 5

0 1 1 2 2 3
Pares ordenados de naturais
O
(2, 4)

(3, 4)

(4, 4)

(1, 3)fLL

(2, 3)

(3, 3)

(4, 3)

(0, 2)fLL

(1, 2)LL

(2, 2)fLL

(3, 2)

(4, 2)

(0,O 1)LL

(1, 1)fLL

(2, 1)LL

(3, 1)fLL

(4, 1)

(0, 0)

(1, 0)

(2, 0)

(3, 0)

(4, 0)

(0, 4)fLL

(1, 4)

(0,O 3)LL

LLL
LLL
LL

LLL
LLL
LL&

LLL
LLL
LL

LLL
LLL
LL&

LLL
LLL
LL
LLL
LLL
LL&

LLL
LLL
LL
/

LLL
LLL
LL
LLL
LLL
LL&

LLL
LLL
LL
/

30

Interl
udio: argumento diagonal de Cantor
O intervalo real [0, 1] n
ao
e enumer
avel.
Para toda a tentativa de enumera
c
ao:
0,
0,
0,
0,
0,
0,

2
9
4
3
7
8

7
1
5
1
8
9

1
6
9
4
3
1

7
8
2
7
8
7

5
1
2
1
5
5

4
3
6
6
7
4

h
a sempre pelo menos um n
umero:
0, 3 2 0 8 6 5
que n
ao foi enumerado:
N
ao pode ocupar a n-
esima posi
c
ao porque
difere do n-
esimo n
umero na n-
esima casa decimal.
31

Interl
udio: outro conjunto
n
ao-enumer
avel
O conjunto das fun
c
oes
f :NN
n
ao
e enumer
avel.
Para toda a tentativa de enumera
c
ao:
f0 ,

f1 ,

f2 ,

f3 ,

f4 ,

f5 ,

e possvel definir uma fun


c
ao f que n
ao est
a
na lista:
f (n) = fn(n) + 1.
Porqu
e ?
c
ao fn na
A fun
c
ao f difere de qualquer fun
lista pelo menos no seu valor para o argumento
n:
f (n) 6= fn(n).
32

Indecidibilidade do problema da paragem


TEOREMA O problema da paragem para MTs

e indecidvel.
DEM. (Por contradi
c
ao) Suponhamos que uma
MT H resolve o problema da paragem.
Uma palavra
e aceite por H se
a entrada tem a forma R(M )w para uma MT
M e w T ;
a computa
c
ao de M com entrada w p
ara.
Caso contr
ario, H rejeita a palavra.

R(M )w

MT de
paragem
H

M p
ara
com w
M n
ao p
ara
com w

aceita
/

rejeita

33

Indecidibilidade . . . (cont.)
Seja H 0 a MT modificada de modo que H 0 entra num ciclo infinito quando H p
ara num estado de aceita
c
ao, isto
e, quando M p
ara com
w.

M p
ara
c/ w
R(M )w

H0
M n p
ara
c/ w

p
ara

34

Indecidibilidade . . . (cont.)
c
ao,
Seja D a MT obtida pela seguinte combina
em que C cria uma c
opia da entrada:
M p
ara
c/ R(M )
R(M )

C
/

R(M )R(M )

H0
M n p
ara
c/ R(M )

35

p
ara

Indecidibilidade . . . (cont.)
Executando D com entrada R(D):
D p
ara
c/ R(D)
R(D)

C
/

R(D)R(D)

H0
D n p
ara
c/ R(D)

p
ara

D p
ara com R(D) sse D n
ao p
ara com R(D).
Como D foi definida com base na hip
otese de
que H existia, conclui-se que
H n
ao pode existir.
Assim,
o problema da paragem
e indecidvel.
36

A m
aquina universal U
Vamos considerar T = {0, 1} e Z = {0, 1, B}.
A m
aquina universal U simula o comportamento
de qualquer MT M com entrada w:
M p
ara com w U p
ara com R(M )w:

R(M )w

M
aquina
universal
U

M p
ara
com w
M n p
ara
com w

aceita
ciclo

37

Constru
c
ao de U
U tem 3 fitas, com o seguinte conte
udo:
Fita 1: R(M )w.
Fita 2: Representa
c
ao de um estado de M ,
inicialmente vazia.
Fita 3: Uma palavra de T , inicialmente
vazia.
As fitas 2 e 3 simulam uma computa
c
ao de M .
Uma computa
c
ao de U consiste em:
Se a entrada n
ao tiver a forma R(M )w, a
cabe
ca de U move-se indefinidamente para a
direita.
Caso contr
ario, copia w para a fita 3.
Escreve 1 (c
odigo de q0) na fita 2.
As transi
c
oes de U que simulam M s
ao determinadas por:
smbolo lido na fita 3;
estado codificado na fita 2;
transi
c
oes de M codificadas na fita 1.
38

Resultados
Seja
LH = {R(M )w | M p
ara com w} {0, 1}.
TEOREMA LH
e recursivamente enumer
avel.
reconhecida por U por paragem.
DEM. E
COROLARIO H
a linguagens recursivamente enumer
aveis que n
ao s
ao recursivas.
DEM. Um exemplo
e LH . Se LH fosse recursiva, o problema da paragem seria decidvel,
por defini
c
ao.
COROLARIO LH = {0, 1} LH n
ao
e recursivamente enumer
avel.
DEM. Se LH e LH fossem recursivamente enumer
aveis ent
ao LH seria recursiva.
39

Redu
c
ao
Um problema de decis
ao P
e redutvel a P 0 se
existe uma MT que transforma todo o p P
num p0 P 0 com a mesma resposta.
Se P 0 ,
e decidvel e P
e redutvel a P 0 ent
ao
P
e decidvel:

p
/

Redu
c
ao
P a P0

/ 0
p
/

MT que
resolve P 0

Sim
/

N
ao

Se P
e indecidvel e P
e redutvel a P 0 ent
ao
P0
e indecidvel.
T
ecnica para demonstrar a indecibilidade
de P 0:
Reduzir um problema indecidvel conhecido P
a P 0.
40

Indecidibilidade do problema da fita em


branco
TEOREMA N
ao existe nenhum algoritmo que
determina se uma MT arbitr
aria p
ara quando a
computa
c
ao se inicia com uma fita em branco.
DEM. (Por contradi
c
ao) Suponhamos que uma
MT B resolve o problema:
M p
ara
com
R(M )

aceita

M n p
ara
com

rejeita

Reduz-se o problema da paragem ao problema


da fita em branco por uma MT N . A entrada
de N tem a forma R(M )w e a sada
e R(M 0)
em que M 0:
1 escreve w numa fita em branco;
2 retorna a cabe
ca `
a posi
c
ao inicial e coloca-se no estado inicial de M ;
3 executa M .
41

Problemas indecidveis em gram


aticas
independentes do contexto
TEOREMA N
ao h
a nenhum algoritmo que determina se as linguagens de duas gram
aticas
independentes do contexto s
ao disjuntas.
DEM. Um tal algoritmo permitiria resolver o
problema da correspond
encia de Post.
TEOREMA N
ao h
a nenhum algoritmo que determina se a linguagem de uma gram
atica independente do contexto G = (T, N, S, P )
e T .
TEOREMA N
ao h
a nenhum algoritmo que determina se uma gram
atica independente do
contexto arbitr
aria
e ambgua.

42

A m
aquina de Turing (MT)
Foi introduzida por Alan Turing em 1936
como modelo de computa
c
ao algortmica.
Antecipou os computadores actuais
ambito
geral, programa guardado em mem
oria.

8. M
aquinas de Turing

Executa computa
c
oes arbitr
arias, n
ao se limita
ao reconhecimento de linguagens.

Teoria da Computa
c
ao

um modelo simples e abstracto,


Vantagens: E
n
ao se identifica com nenhum computador particular.

Lus Monteiro

Componentes do modelo b
asico:
fita semi-infinita;
unidade de controlo finita;
cabe
ca de leitura e escrita.

DI-FCT/UNL

Lic. Eng. Inform


atica, 2008/09

Fita

Cabe
ca

Controlo

!
"
"

Defini
c
ao de MT

Computa
c
ao
Configura
c
ao uqvB

M = (T, Q, Z, qI , )
Q conjunto finito de estados.
Z alfabeto da fita, contendo B (branco).
T Z {B} alfabeto de entrada.

uv
e o conte
udo da fita do incio at
e ao B;
`
a direita de B todas as casas est
ao em branco;
q
e o estado corrente;
a cabe
ca l
e o primeiro smbolo de vB.
Configura
c
ao inicial qI BvB

qI Q estado inicial.
fun
c
ao de transi
c
ao
e uma fun
c
ao parcial

Transi
c
ao uqvB ' wpzB

A configura
c
ao wpzB resulta de uqvB por uma
transi
c
ao (q, x) = (p, y, D) da MT.

de Q Z em Q Z {L, R}.
(q, x) = (p, y, D) significa:

Sequ
encia finita de transi
co
es uqvB ' wpzB

No estado q lendo o smbolo x, a MT efectua uma transi


c
ao para o estado p, escreve o
smbolo y e movimenta a cabe
ca uma casa na
direc
c
ao D (L esquerda, R direita).

wpzB resulta de uqvB por um n


umero finito
0 de transi
c
oes.

(q, x) e (q, x) significam que (q, x) est


a
definido ou indefinido.

Termina anormalmente quando est


a no incio
da fita e tem de se mover para a esquerda.

A MT p
ara quando encontra um par (estado,
smbolo) para o qual n
ao est
a definida.

Exemplo: a m
aquina COPY
Exemplo

Transforma a fita BuB em BuBuB.

A MT seguinte com T = {a, b} troca os as


com os bs (estado inicial q0).

q0
q1
q2

B
q1, B, R
q2, B, L

q1, b, R
q2, a, L

q1, a, R
q2, b, L

a/b R
b/a R

q0

%&'(
! !"#$

B/B R

"
%&'(
! !"#$

q1

"
!"#$
%&'(
%

q2

B/B R

a/X R

a/a L
b/b L
B/B L

a/a R
b/b R

a/a R
b/b R

"
%&'(
! !"#$

q2

q0BabB ' Bq1abB ' Bbq1bB ' Bbaq1B


' Bbq2aB ' Bq2baB ' q2BbaB

q0

%&'(
! !"#$

B/B R

q3

B/a L

q1

%&'( '
! !"#$
!
!!
!!
!
!!
!!
!!
!!
!!
!
!
!!
!!
!!
!!
!!
!
!!
!!
!!
#
$!!
%&'(
!"#$
%&'(
!"#$
(
(

B/B L

"
%&'(
! !"#$

X/X R
Y /Y R

q5

X/a L
Y /b L

a/a R
b/b R

a/a L

q4 b/b L
B/B L

B/b L

b/Y R

q7

#
!"#$
%&'(
&
%

B/B R

q6

%&'(
! !"#$
(

a/a R
b/b R

MT com estados de aceita


c
ao

Exemplo

M = (T, Q, Z, qI , , F ) com F Q.
u T
e aceite por estados de aceita
c
ao se
a computa
c
ao com entrada u (isto
e, iniciada
em qI BuB) p
ara num estado de aceita
c
ao.
L(M ) linguagem das palavras aceites por M .
Linguagem recursivamente enumer
avel
e uma
linguagem aceite por uma MT.
Linguagem recursiva
e uma linguagem aceite
por uma MT que p
ara para todas as palavras
de entrada.

b/b R

q0

%&'(
! !"#$

B/B R

"
%&'(
! !"#$

q1

a/a R
)

q2

!"#$
%&'(

a/a R

q3

%&'(
-./0
)*+,
! !"#$

b/b R

Aceita a linguagem (a + b)aa(a + b).


A computa
c
ao
q0BaabB ' Bq1aabB ' Baq2abB ' Baaq3bB
p
ara assim que encontra aa.
A linguagem
e recursiva.

Outro crit
erio de aceita
c
ao
Exemplo
O M aceita por paragem u T se
DEFINIC
A
a computa
c
ao de M com entrada u p
ara (normalmente).

MT que aceita {aibici | i 0}:

TEOREMA S
ao equivalentes:
i) L
e aceite por uma MT por estados de
aceita
c
ao.
ii) L
e aceite por uma MT por paragem.

q0

%&'(
! !"#$

a/a L
b/b L
Y /Y L
Z/Z L
"
!"#$
%&'(
%

q4

B/B R
Y /Y R
Z/Z R
X/X R

q1

c/Z L

q3

!"#$ '
%&'(
(

Y /Y R

a/X R

B/B R

q2

b/Y R

b/b R
Z/Z R

DEM. Se M = (T, Q, Z, qI , ) aceita L por paragem, M + = (T, Q, Z, qI , , Q) aceita por estados de aceita
c
ao.

#
"
%&'(
%&'(
! !"#$
! !"#$
$$
$$
$$
$$
$$
$$
$$
$$
$$
$$
$$
$$
$$
$$
$$
$$
$$
$$
$- #
#
%&'(
!"#$
%&'(
!"#$
-./0
)*+,
(

q5

B/B R

Se M = (T, Q, Z, qI , , F ) aceita L por estados


de aceita
c
ao, M + = (T, Q {q}, Z, qI , +) aceita
por paragem, com:
+(q, x) = (q, x) se (q, x) ;
+(q, x) = (q, x, R) se q Q F e (q, x) ;
+(q, x) = (q, x, R).

q6

a/a R
Y /Y R

10

MT multipista
Fita dividida em n pistas, lidas em simult
aneo.
Exemplo
Pista 2
Aceita
c
ao de (a + b)aa(a + b) por paragem :

Pista 1
!

#
#
$
#
$
#
$
$

q
b/b R
B/B R

a/a R

#
"
)
%&'(
!"#$
%&'(
%&'(
!"#$
! !"#$
""
*
##
""
#
""
##
#
""
##
""
##
""
##
""
##
""
##
""
##
""
#
""
##
""
##
""
##
""
##
""
##
"+ # ,###
5678
1234
(

q0

q1

B/B R

a/a R
b/b R

q2

a/a R

q3

%&'(
! !"#$

b/b R

M = (Q, T, Z, qI , , F ) com 2 pistas:



e uma fun
c
ao parcial
de Q Z Z

B/B R

em Q Z Z {L, R}

(q, (x, y)) = (p, (z, w), D)

a/a R
b/b R
B/B R

Aceita
c
ao: por estados de aceita
c
ao
Configura
co
es: (u, u+)q(vB, v +B)
11

Configura
c
ao inicial: (, )qI (BvB, B)

12

MT b
asica e MT multipista
TEOREMA L
e aceite por uma MT de 2 pistas
sse for aceite por uma MT b
asica.
DEM. Se L e aceite por uma MT b
asica M ,
e
aceite por uma MT de 2 pistas M + que funciona
como M ignorando a segunda pista.
Se L
e aceite por uma MT de 2 pistas M ,
e
aceite por uma MT b
asica M + que representa
as posi
co
es na fita de 2 pistas por smbolos
que codificam pares ordenados.

MT com fita bi-infinita


A fita estende-se indefinidamente em ambas
as direc
c
oes.
Define-se como a MT de base mas sem termina
c
ao anormal.
TEOREMA L
e aceite por uma MT de fita
bi-infinita sse for aceite por uma MT b
asica.

13

14

MT b
asica MT bi-infinita
A MT bi-infinita funciona exactamente como
a MT b
asica, excepto que:
O limite esquerdo da fita
e simulado por
uma casa com o smbolo #.
A termina
c
ao anormal
e simulada pela entrada na casa que cont
em #.

MT bi-infinita MT de 2 pistas
A fita bi-infinita
%
%
&
&

-3 -2 -1

#
#
$
$

qI

Exemplo com a linguagem (a+b)aa(a+b):

e simulada por uma fita de 2 pistas:


#
)*+,
-./0

qf

qi

B/B L
#
!"#$
%&'(

qii

#/# R

q0

-1 -2 -3
#

#/# R

#/# R #/#
&& R

B/# R
#
!"#$
%&'(

%&'( 1
. !"#$
%/ &0 &&
&&
%%
%
&&
%
&&
%%
%
&&
%
%
%

B/B R

%
%%
%%
%%
%
%%
%%

a/a R

q1

%&'(
! !"#$
( *

b/b R

&&
&&
&&
&&
&&
)
%&'(
!"#$

q2

a/a R

q3

%&'(
-./0
)*+,
! !"#$

#
#
$
#
$
#
$
$

qI

b/b R
15

16

MT multifita

MT b
asica e MT multifita

M = (Q, T, Z, qI , , F )
Tem k 1 fitas e k cabe
cas independentes.
Entrada na fita 1 na posi
c
ao padr
ao.
Fita 3
Fita 2
Fita 1

#
"

$
$
"
" !$
" $

"

$
$
$

%
$

'
'
(
(
'
'
(
(
'
'
(
(

TEOREMA L
e aceite por uma MT multifita
sse for aceite por uma MT b
asica.
DEM. Uma MT b
asica
e uma MT multifita
com k = 1. Uma MT com k fitas
e simulada
por uma MT com 2k + 1 pistas, logo por uma
MT b
asica. A configura
c
ao
a b

Uma transi
c
ao
l
e um smbolo em cada fita,
muda o estado,
escreve um smbolo em cada fita,
reposiciona as cabe
cas independentemente.

b
$

%
$

b a $$ c
!
$
$

'
'
(
(
'
(
'
(

e simulada por

(q, x1, x2) = (p; y1, D1; y2, D2)


(k = 2)
xi, yi Z, Di {L, R, S}, S cabe
ca estacion
aria.

5
4
3
2
1

Termina
c
ao anormal se ultrapassar margem
esquerda em qualquer fita.

'
'
(
'
(
'
(
'
(
'
(
'
(
'
(
(
'
'
(
(

#
X
b c c
X
b a c

a b

17

18

Exemplo: {uu | u {a, b}}

MT n
ao determinista

Copia a entrada para a fita 2.


Move as cabe
cas para a esquerda, 2 casas
na fita 1 por cada casa na fita 2.
Compara a 1.a metade da entrada com a 2.a
metade da c
opia.

x {a, b}
y {a, b, B}

#
!"#$
%&'(

q0

aplica Q Z
em subconjuntos de Q Z {L, R}.
EXEMPLO Linguagem de todas as palavras
contendo um c precedido ou seguido de ab.

#
!"#$
%&'(

q0

[B/B R,B/B R]

%&'(
q1 [B/B L,B/B L] ! !"#$
q2 *

#
!"#$
%&'(
(

[x/x L,y/y L]

q4

[y/y R,B/B R]

c/c R

q2

%&'(
! !"#$

a/a R

q3

%&'(
! !"#$

b/b R

q4

%&'(
-./0
)*+,
! !"#$

q3

!"#$
%&'(
#
!"#$
%&'(

q5

[B/B R,y/y R]
#
!"#$
%&'(
(

B/B R

c/c L
)

[x/x L,y/y S]

[x/x R,B/x R]

a/a R
b/b R
c/c R
2
%&'(
! !"#$
q1

q5

%&'(
-./0
)*+,
! !"#$

[x/x R,x/x R]
19

b/b L

q6

%&'(
! !"#$

a/a L

q7

%&'(
-./0
)*+,
! !"#$

TEOREMA As linguagens aceites pelas MT


n
ao deterministas por paragem s
ao as aceites
pelas MT b
asicas por paragem.
20

Problemas de decis
ao (PD)

Solu
c
ao de um problema de decis
ao

Problema de decis
ao P
um conjunto de perguntas, cada uma com
E
O.
uma resposta SIM ou NA
(Tamb
em pode ser visto como um conjunto
de afirma
co
es, cada uma VERDADEIRA ou
FALSA.)
Exemplo
PSQ
e o problema de decis
ao x
e um quadrado
perfeito?

um algoritmo que determina a resposta aproE


priada a cada pergunta p P .
O SEI, ou n
(N
ao
e permitida a resposta NA
ao
dar qualquer resposta; em todos os casos a
O.)
resposta tem de ser SIM ou NA
Algoritmo ou procedimento efectivo
Sequ
encia de instru
c
oes executadas de forma
determinista e mec
anica, n
ao requerendo criatividade ou a elabora
c
ao de palpites na sua
aplica
c
ao.
Solu
c
ao parcial de P

PSQ
e o conjunto das perguntas

O algoritmo d
a a resposta SIM a todo a pergunta que tenha resposta afirmativa.

p0: 0
e um quadrado perfeito?
p1: 1
e um quadrado perfeito?

(Se a resposta for negativa, o algoritmo d


a a
O ou n
resposta NA
ao d
a resposta.)

...
21

Representa
c
ao de um PD por uma
linguagem
Representa
c
ao do problema P
Cada pergunta p P
e codificada por uma
palavra xp T para um alfabeto T apropriado.
P como uma linguagem LP
LP = {xp | p P tem resposta SIM}

22

Resolu
c
ao de um PD por uma MT
A MT M resolve P se reconhece LP e p
ara
para todas as entradas.
A MT M resolve parcialmente P se reconhece LP .
P
e decidvel se tem uma representa
c
ao tal
que LP
e recursiva.

Resposta a p P
a resposta `
E
a pergunta xp LP ?

P
e indecidvel se n
ao
e decidvel.

Exemplo: n
e um quadrado perfeito? pode
ser representada por 1n+1 e a linguagem associada
e {1n+1 | n
e um quadrado perfeito}.

P
e semi-decidvel se tem uma representa
c
ao
tal que LP
e recursivamente enumer
avel.

23

24

Problema da paragem para MTs


(Halting problem)
Dada uma MT M e w T , a computa
c
ao
de M com entrada w p
ara?

Tese de Church-Turing
Para problemas de decis
ao
Existe um procedimento efectivo para resolver
um problema de decis
ao P se e s
o se existe
uma MT que resolve P .

Como se representa o problema da paragem


por uma linguagem?
Vamos apenas considerar MTs com:

Tese de Church-Turing estendida


T = {0, 1}

Um problema de decis
ao
e parcialmente resol
uvel
se e s
o se existe uma MT que resolve parcialmente P .

Z = {0, 1, B}
Q = {q0, q1, . . . , qn}
q0 estado inicial
F

irrelevante.

25

26

Codifica
c
ao de uma MT
Smbolo 0

C
odigo 1 11 111

q0 q1
1

qn

Exemplo
L

0/0 L

R
3
%&'(
-./0
)*+,
! !"#$

11 1n+1 1 11

Seja en(z) o c
odigo de z.
A transi
c
ao (qi, x) = (qj , y, D)
e codificada
por

q0

B/B R

q1

%&'(
-./0
)*+,
! !"#$

1/1 R

q2

%&'(
! !"#$

1/1 L

Aceita + 11(0 + 1). A computa


c
ao n
ao
termina para palavras come
cadas por 0.
Transi
c
ao

C
odigo

en(qi) 0 en(x) 0 en(qj ) 0 en(y) 0 en(D)


(q0, B) = (q1, B, R) 101110110111011
A representa
c
ao R(M ) de uma MT M consiste em:
Listar a representa
c
ao das transi
c
oes, separadas por 00.
Iniciar e terminar a listagem por 000.
O problema de saber se x {0, 1} representa
uma MT
e decidvel.

27

(q1, 0) = (q0, 0, L)

1101010101

(q1, 1) = (q2, 1, R)

110110111011011

(q2, 1) = (q0, 1, L)

1110110101101

C
odigo da MT:
00010111011011101100110101010100
110110111011011001110110101101000
28

Interl
udio: conjuntos enumer
aveis
Representa
c
ao do problema da paragem
por uma linguagem
LH = {R(M )w : M p
ara com a entrada w}

Naturais pares
0 1 2 3 n

0 2 4 6 2n

Inteiros

0 1 2 3 4 5

0 1 1 2 2 3

O problema da paragem reformulado


R(M )w LH ?

Pares ordenados de naturais


%

O problema da paragem
e decidvel?

(0, 4)6''

(1, 4)

(0,% 3)''

(2, 4)

(3, 4)

(4, 4)

(1, 3)6''

(2, 3)

(3, 3)

(4, 3)

(0, 2)6''

(1, 2)''

(2, 2)6''

(3, 2)

(4, 2)

(0,% 1)''

(1, 1)6''

(2, 1)''

(3, 1)6''

(4, 1)

(0, 0)

(1, 0)

(2, 0)

(3, 0)

'''
'''
''

A linguagem LH
e recursiva ?
Teorema
O problema da paragem
e indecidvel.

'''
'''
''5

'''
'''
''

'''
'''
''

'''
'''
''5

'''
'''
''

'''
'''
''5

'''
'''
''

'''
'''
''5

'''
'''
''
!

(4, 0)

29

30

Interl
udio: outro conjunto
n
ao-enumer
avel

Interl
udio: argumento diagonal de Cantor
O intervalo real [0, 1] n
ao
e enumer
avel.

O conjunto das fun


c
oes
f :NN

Para toda a tentativa de enumera


c
ao:
0,
0,
0,
0,
0,
0,

2
9
4
3
7
8

7
1
5
1
8
9

1
6
9
4
3
1

7
8
2
7
8
7

5
1
2
1
5
5

4
3
6
6
7
4

n
ao
e enumer
avel.

Para toda a tentativa de enumera


c
ao:
f0 ,

f1 ,

f2 ,

f3 ,

f4 ,

f5 ,

e possvel definir uma fun


c
ao f que n
ao est
a
na lista:

h
a sempre pelo menos um n
umero:

f (n) = fn(n) + 1.
Porqu
e ?

0, 3 2 0 8 6 5
que n
ao foi enumerado:
N
ao pode ocupar a n-
esima posi
c
ao porque
difere do n-
esimo n
umero na n-
esima casa decimal.
31

A fun
c
ao f difere de qualquer fun
c
ao fn na
lista pelo menos no seu valor para o argumento
n:
f (n) .= fn(n).
32

Indecidibilidade do problema da paragem


TEOREMA O problema da paragem para MTs

e indecidvel.

Indecidibilidade . . . (cont.)

DEM. (Por contradi


c
ao) Suponhamos que uma
MT H resolve o problema da paragem.

Seja H + a MT modificada de modo que H + entra num ciclo infinito quando H p


ara num estado de aceita
c
ao, isto
e, quando M p
ara com
w.

Uma palavra
e aceite por H se
a entrada tem a forma R(M )w para uma MT
M e w T ;
a computa
c
ao de M com entrada w p
ara.
Caso contr
ario, H rejeita a palavra.

R(M )w
!

MT de
paragem
H

M p
ara
com w
M n
ao p
ara
com w

M p
ara
c/ w
R(M )w

p
ara

H+
M n p
ara
c/ w

aceita
!

!
rejeita

33

34

Indecidibilidade . . . (cont.)
Executando D com entrada R(D):
D p
ara
c/ R(D)

Indecidibilidade . . . (cont.)

R(D)

C
!

R(M )R(M )
!

H+
M n p
ara
c/ R(M )

R(D)R(D)
!

p
ara

H+

ao p
ara com R(D).
D p
ara com R(D) sse D n

M p
ara
c/ R(M )
!

D n p
ara
c/ R(D)

Seja D a MT obtida pela seguinte combina


c
ao,
em que C cria uma c
opia da entrada:

R(M )

p
ara

Como D foi definida com base na hip


otese de
que H existia, conclui-se que
H n
ao pode existir.
Assim,
o problema da paragem
e indecidvel.

35

36

Constru
c
ao de U
U tem 3 fitas, com o seguinte conte
udo:
A m
aquina universal U
Vamos considerar T = {0, 1} e Z = {0, 1, B}.
A m
aquina universal U simula o comportamento
de qualquer MT M com entrada w:
M p
ara com w U p
ara com R(M )w:

R(M )w
!

M
aquina
universal
U

M p
ara
com w
M n p
ara
com w

aceita
ciclo

Fita 1: R(M )w.


Fita 2: Representa
c
ao de um estado de M ,
inicialmente vazia.
Fita 3: Uma palavra de T , inicialmente
vazia.
As fitas 2 e 3 simulam uma computa
c
ao de M .
Uma computa
c
ao de U consiste em:
Se a entrada n
ao tiver a forma R(M )w, a
cabe
ca de U move-se indefinidamente para a
direita.
Caso contr
ario, copia w para a fita 3.
Escreve 1 (c
odigo de q0) na fita 2.
As transi
c
oes de U que simulam M s
ao determinadas por:
smbolo lido na fita 3;
estado codificado na fita 2;
transi
c
oes de M codificadas na fita 1.

37

38

Resultados

Redu
c
ao

LH = {R(M )w | M p
ara com w} {0, 1}.

Um problema de decis
ao P
e redutvel a P + se
existe uma MT que transforma todo o p P
num p+ P + com a mesma resposta.

Seja

TEOREMA LH
e recursivamente enumer
avel.
reconhecida por U por paragem.
DEM. E
COROLARIO H
a linguagens recursivamente enumer
aveis que n
ao s
ao recursivas.

Se P + ,
e decidvel e P
e redutvel a P + ent
ao
P
e decidvel:

p
!

Redu
c
ao
P a P+
!

p+
!

MT que
resolve P +

Sim
!

N
ao
!

DEM. Um exemplo
e LH . Se LH fosse recursiva, o problema da paragem seria decidvel,
por defini
c
ao.

Se P
e indecidvel e P
e redutvel a P + ent
ao
+
P
e indecidvel.

COROLARIO LH = {0, 1} LH n
ao
e recursivamente enumer
avel.

T
ecnica para demonstrar a indecibilidade
de P +:

DEM. Se LH e LH fossem recursivamente enumer


aveis ent
ao LH seria recursiva.

Reduzir um problema indecidvel conhecido P


a P +.

39

40

Indecidibilidade do problema da fita em


branco
TEOREMA N
ao existe nenhum algoritmo que
determina se uma MT arbitr
aria p
ara quando a
computa
c
ao se inicia com uma fita em branco.
DEM. (Por contradi
c
ao) Suponhamos que uma
MT B resolve o problema:
M p
ara
com
R(M )
!

B
M n p
ara
com

TEOREMA N
ao h
a nenhum algoritmo que determina se as linguagens de duas gram
aticas
independentes do contexto s
ao disjuntas.
DEM. Um tal algoritmo permitiria resolver o
problema da correspond
encia de Post.

aceita
!

Problemas indecidveis em gram


aticas
independentes do contexto

rejeita
!

Reduz-se o problema da paragem ao problema


da fita em branco por uma MT N . A entrada
de N tem a forma R(M )w e a sada
e R(M +)
em que M +:
1 escreve w numa fita em branco;
2 retorna a cabe
ca `
a posi
c
ao inicial e coloca-se no estado inicial de M ;
3 executa M .
41

TEOREMA N
ao h
a nenhum algoritmo que determina se a linguagem de uma gram
atica independente do contexto G = (T, N, S, P )
e T .
TEOREMA N
ao h
a nenhum algoritmo que determina se uma gram
atica independente do
contexto arbitr
aria
e ambgua.

42

9. M
aquinas de Estados e
Programas
Teoria da Computa
c
ao

Lus Monteiro
DI-FCT/UNL

Lic. Eng. Inform


atica, 2008/09

Modelos de computa
c
ao baseados em
m
aquinas de estados

M
aquina M
+
Programa P
+
Execu
c
ao de P em M

Objectivos
ao apeProgramas como objectos de estudo e n
nas como ferramentas para executar certas
tarefas:
O que
e um programa?
O que
e uma m
aquina na qual um programa
pode ser executado?
Em que consiste uma execu
c
ao de um programa?
Qual
e o significado de um programa? Como
se pode extrair esse significado a partir das
suas execu
c
oes?
Como se especifica o que se deseja que um
programa fa
ca?
Como se garante que os programas se comportam de acordo com a sua especifica
c
ao?
3

Tipo de programas que se ir


ao considerar
{x = n n 0}
z := 1;
while x > 0 do
z := x z;
x := x 1
od
{z = n!}


ONML_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
HIJK

{x = n n 0}

z:=1

x:=x1

GF

ONML
HIJK
O

z:=xz @A


HIJK
/ONML

x0

O@ABC
GFED
NML_ _ _ _ _ _ _ _
/HIJK

{z = n!}

x>0

ONML
HIJK

Id
eia principal que se pretende captar
A execu
c
ao de um programa gera uma sucess
ao,
finita ou infinita, de estados
1 2 n1 n
Quando
e finita, vai desde

um estado inicial 1 , que cont


em os dados
do problema, at
e

um estado final m , que cont


em o resultado .

Como se formaliza esta id


eia?

No
c
oes fundamentais

oria) de uma m
aquina.
Estados (de mem
c
oes que realizam as mudan
cas de
Opera
estado.

Testes que s
ao condi
c
oes booleanas que
permitem seleccionar um ou outro curso de
ac
c
ao.

Instru
c
oes que materializam essas opera
c
oes
e selec
c
oes baseadas em testes.

Programas como agregados estruturados


de instru
c
oes.

Execu
c
oes de programas.
6

Modelo de m
aquina de estados
Uma m
aquina M
e constituda por:
Um conjunto , dos estados (de mem
oria)
de M .
Um conjunto Op , das opera
c
oes de M .
Uma opera
c
ao de M
e uma fun
c
ao de
em .
Um conjunto Cn , das condi
c
oes ou testes
de M .
Um condi
c
ao
e uma fun
c
ao de no conjunto dos valores de verdade {T, F}.
A m
aquina M representa-se assim:
M = (, Op, Cn)
7

Exemplo: m
aquina de registos ilimitados

R = (R, OpR, CnR)


Mem
oria
constituda por uma infinidade de registos
E
endere
cados por P = {1, 2, . . .}.
Cada registo pode conter um n
umero natural
arbitr
ario de N = {0, 1, . . .}.
O conjunto dos estados de mem
oria
e:
R = { | : P N}.
(i)
e o conte
udo do registo i no estado :
:

9 13 5 4 0 1 5 1
1 2 3 4 5 6 7 8
8

Exemplo: m
aquina R (cont.)
Opera
c
oes
OpR
e o conjunto das opera
c
oes:
zn coloca o valor zero no registo n (n P).
sn substitui o valor do registo n pelo seu
sucessor (n P).
tm,n transfere o conte
udo do registo m para
o registo n (m, n P).
Testes
CnR
e o conjunto dos testes:
em,n testa se os conte
udos dos registos m e
n s
ao iguais (m, n P).
9

Exemplos de aplica
c
ao das opera
c
oes
Opera
c
ao z7:
:

9 13 5 4 0 1 5 1
1 2 3 4 5 6 7 8

0 :

9 13 5 4 0 1 0 1
1 2 3 4 5 6 7 8

z7


Opera
c
ao s3:
0 :

9 13 5 4 0 1 0 1
1 2 3 4 5 6 7 8

00 :

9 13 6 4 0 1 0 1
1 2 3 4 5 6 7 8

s3


Opera
c
ao t3,5:
00 :

9 13 6 4 0 1 0 1
1 2 3 4 5 6 7 8

000 :

9 13 6 4 6 1 0 1
1 2 3 4 5 6 7 8

t3,5


10

Exemplo: m
aquina R (cont.)
Actualiza
c
ao do conte
udo de um registo
[i 7 n] estado igual a , excepto que
o conte
udo do registo i
e n.

0 :

v1

vi1

vi

vi+1

i1

i+1

v1

vi1

vi+1

i1

i+1

O estado 0 = [i 7 n] define-se por:


(

0(i) = n,
0(j) = (j) se j 6= i.

11

Exemplo: m
aquina R (cont.)
Defini
c
ao das opera
c
oes e dos testes:

zn() = [n 7 0],
sn() = [n 7 (n) + 1],
tm,n() = [n 7 (m)],
(

em,n() =

T se (m) = (n),
F se (m) 6= (n).

Para todo o m P, em,m = T.

12

Programa para uma m


aquina M
uma sucess
E
ao finita
P = I1I2 In

(n 0)

de instru
c
oes da m
aquina M .
Nos exemplos escreve-se:
1
2
...
n

I1
I2
...
In

O comprimento do programa
e |P | = n.
O programa nulo (n = 0) denota-se 1.
O que s
ao as instru
c
oes da m
aquina M ?
Definem-se a partir das opera
c
oes e condi
c
oes
da m
aquina M .
13

Instru
c
oes da m
aquina M
S
ao de um dos seguintes tipos:

DO op com op Op (instru
c
ao de ac
c
ao).

JUMPIF c k com c Cn, k P (instru


c
ao de
salto condicional).

JUMP k com k P (instru


c
ao de salto)
abrevia JUMPIF c k quando c
e o teste que
vale sempre T.

Sem
antica das instru
c
oes
S
ao fun
c
oes que transformam configura
c
oes
em configura
c
oes.
14

Configura
c
ao
Intui
c
ao
uma descri
E
c
ao instant
anea de um momento da execu
c
ao de um programa.
Cont
em informa
c
ao sobre o estado corrente
e sobre a pr
oxima instru
c
ao a ser executada.
Defini
c
ao
Uma configura
c
ao
e um par
(i, ) P
onde:
i
e o n
umero da instru
c
ao a executar a seguir,

e o estado corrente da mem
oria.
P
oe-se Conf = P .
15

Sem
antica das instru
c
oes
As instru
c
oes I definem fun
c
oes:
[[I]] : Conf Conf
I

Em vez de [[I]](c) = c0 escrever-se-


a c c0 .
Instru
c
ao de ac
c
ao
(i, )

DO op
/

(i + 1, op())

Instru
c
ao de salto
(i, ) JUMP k
/

(k, )

Instru
c
ao de salto condicional
(i, )

JUMPIF c k
/

(k, )

(i, ) JUMPIF c k / (i + 1, )

se c() = T,
se c() = F.
16

Exemplo para a m
aquina R
Abreviaturas

Z(n) S(n) T (m, n)


DO zn DO sn

DO tm,n

J(m, n, k)

J(k)

JUMPIF em,n k JUMPIF e1,1 k

Programa
1
2
3
4
5

Z(3)
J(2, 3, 6)
S(1)
S(3)
J(2)

Significado
No final da computa
c
ao, deixa no registo 1 a
soma dos valores iniciais dos registos 1 e 2.
17

Representa
c
ao por diagramas
Programa
1
2
3
4
5

Z(3)
J(2, 3, 6)
S(1)
S(3)
J(2)

Diagrama

ONML
HIJK

Z(3)

GF


HIJK
/ONML

ONML
HIJK
O

e2,3

O@ABC
GFED
NML
/HIJK

e2,3


ONML
HIJK

S(3)
ONML
HIJK
O

@A

S(1)
BC

18

Exemplo de computa
c
ao
Programa
1
2
3
4
5

Z(3)
J(2, 3, 6)
S(1)
S(3)
J(2)

Computa
c
ao sucess
ao de configura
c
oes
Instru
c
ao
1
2
3
4
5
2
3
4
5
2
6

Estado
h4, 2, . . .i
h4, 2, 0, . . .i
h4, 2, 0, . . .i
h5, 2, 0, . . .i
h5, 2, 1, . . .i
h5, 2, 1, . . .i
h5, 2, 1, . . .i
h6, 2, 1, . . .i
h6, 2, 2, . . .i
h6, 2, 2, . . .i
h6, 2, 2, . . .i
19

Defini
c
ao de computa
c
ao de P = I1I2 In
uma sucess
E
ao finita ou infinita de configura
c
oes
(i0, 0)

(i0 = 1)

Ii0


(i1, 1)
Ii1


(i2, 2)
Ii2


(i3, 3)
Ii3


...
20

Computa
c
oes finitas e infinitas de
P = I1I2 In
Computa
c
ao finita
A
ultima configura
c
ao (im, m) satisfaz im > n ,
mas n
ao as anteriores.
A computa
c
ao de P a partir de 0 converge
para m:
P

0 m

ou

0 P

Computa
c
ao infinita
Tem-se 1 im n para todo o m 0.
A computa
c
ao de P a partir de 0 diverge:
0 P
21

Sem
antica operacional de P
Sem
antica de P : significado de P .
Sem
antica operacional: definida com base
na computa
c
ao de P .
a fun
E
c
ao parcial [[P ]] : * em que

[[P ]]() =

se ,

indefinida

se P.

Dom([[P ]]) = { | P }.

22

Exemplo para a m
aquina R
Programa P
1
2
3
4
5

Z(3)
J(2, 3, 6)
S(1)
S(3)
J(2)

Sem
antica
P

[1 (1) + (2), 3 (2)]


ou
[[P ]]() = [1 (1) + (2), 3 (2)] .
Nota
c
ao
Escrever-se-
a indiferentemente
P


ou
[[P ]]() = .
23

Programa P em forma padr


ao
Defini
c
ao
Para toda a instru
c
ao de salto JUMPIF c k ou
JUMP k em P tem-se
1 k |P | + 1 .
Qual a inten
c
ao
Quando a execu
c
ao termina, a instru
c
ao seguinte
teria a ordem |P | + 1.
Suposi
c
ao
Todos os programas est
ao na forma padr
ao.

24

Composi
c
ao sequencial de programas
Translac
c
ao P [m]
Substitui-se cada JUMPIF c k por JUMPIF c k + m .
Substitui-se cada JUMP k por JUMP k + m .
Em geral, P [m] n
ao est
a na forma padr
ao.
Composi
c
ao sequencial
P Q = P Q[n] onde n = |P |.
Proposi
c
ao Se R = P Q ent
ao
R

25

Composi
c
ao condicional
Seja |P | = n, |Q| = m.
c P | Q = JUMPIF c m + 3
Q[1]
JUMP m + n + 3
P [m + 2]
c P | Q l
e-se IF c THEN P ELSE Q .
Proposi
c
ao Seja R = c P | Q.
R

c() = T

ou
c() = F

26

Variantes da composi
c
ao condicional

c P | Q = c Q | P,
c d P | Q = c (d P | Q) | Q,
c d P | Q = c P | (d P | Q),
c P = c P | 1.
c P l
e-se IF c THEN P .

27

Exemplos para a m
aquina R
P = e1,2 Z(1) S(1)
= J(1, 2, 5) Z(1) S(1) J(5)

[[P ]]() =

se (1) = (2),
[1 7 1] se (1) 6= (2).

Q = e1,2 Z(1) | Z(1) S(1)


= J(1, 2, 5) Z(1) S(1) J(6) Z(1)

[[Q]]() =

[1 7 0] se (1) = (2),
[1 7 1] se (1) 6= (2).

28

Composi
c
ao iterativa
Seja |P | = n.

c P = JUMPIF c 3
JUMP n + 4
P [2]
JUMP 1

c P = JUMPIF c n + 3
P [1]
JUMP 1.

c P l
e-se WHILE c DO P .

Proposi
c
ao Seja R = c P .
R

= 0 1 p =
onde p 0,
c(0) = . . . = c(p1) = T,
c(p) = F.
29

Exemplos para a m
aquina R
Programa anterior:

Z(3) e2,3 S(1) S(3)


=
Z(3)J(2, 3, 6) S(1) S(3) J(2).
Outro programa (P ):

Z(2)Z(3) e1,2 [S(3) [e1,3 S(2) S(3)] T (2, 1)]


=
Z(2)Z(3)J(1, 2, 11) S(3) J(1, 3, 9) S(2) S(3) J(5) T (2, 1)J(11)

(1) =

(1) 1 se (1) > 0,


0
se (1) = 0.

30

Outro exemplo
Programa Q:

1
2
3
Z(3)
4
Z(5)
5

e2,5 [ S(5).
6
Z(4).
7

e1,4 S(3) S(4) ]. 8


T (3, 1)
9
10
11

Z(3)
Z(5)
J(2, 5, 11)
S(5)
Z(4)
J(1, 4, 10)
S(3)
S(4)
J(6)
J(3)
T (3, 1)

Fun
c
ao calculada:

[[Q]]() =

tal que

(1) = (1) (2).


31

Linguagem estruturada para a m


aquina R
S

|
|
|
|

skip
V := E
if C then S else S fi
while C do S od
S; S

vazia
afecta
c
ao
condicional
itera
c
ao
sequencia
c
ao

E 0
| V +1
| V

zero
sucessor
vari
avel

C
|
|
|

igualdade
nega
c
ao
conjun
c
ao
disjun
c
ao

(V = V )
(C)
(C C)
(C C)

identificador

Observa
c
oes
1. Mesma vari
avel em V := V + 1.
2. S
o (V = V ) ou ((V = V )) numa itera
c
ao.
3. (V = V ) abrevia-se para V 6= V .
4. Removem-se par
enteses em C como usual.
32

Exemplo
% Calcula o produto de x por y
% e deixa o resultado em x
% Calculo de P rod := x y
P rod := 0;
ContP rod := 0;
while y 6= ContP rod do
% soma x a P rod y vezes
ContP rod := ContP rod + 1;
% Calculo de P rod := P rod + x
ContSoma := 0;
while x 6= ContSoma do
% soma 1 a P rod x vezes
P rod := P rod + 1;
ContSoma := ContSoma + 1
od
od;
% Transferencia do resultado para x
x := P rod
33

Compila
c
ao para a linguagem-m
aquina
Ordenar as vari
aveis por uma ordem arbitr
aria.
Renome
a-las em x1, x2, x3, . . .
Substituir:
xn := 0 por Z(n),
xn := xn + 1 por S(n),
xn := xm por T (m, n),
xm = xn por em,n e xm 6= xn por em,n.
Skip por 1 e as restantes instru
c
oes pelas
correspondentes opera
c
oes sobre programas.
Efectuar as opera
c
oes sobre programas.
34

Exemplo de compila
c
ao
x

P rod

ContSoma

ContP rod

x3 := 0;
x5 := 0;
while x2 6= x5 do
x5 := x5 + 1;
x4 := 0;
while x1 6= x4 do
x3 := x3 + 1;
x4 := x4 + 1
od
od;
x1 := x3
Z(3)
Z(5)

e2,5 [ S(5).
Z(4).

e1,4 S(3) S(4) ].


T (3, 1)
35

9. M
aquinas de Estados e
Programas

Modelos de computa
c
ao baseados em
m
aquinas de estados

Teoria da Computa
c
ao
M
aquina M
+

Lus Monteiro

Programa P

DI-FCT/UNL

+
Lic. Eng. Inform
atica, 2008/09

Execu
c
ao de P em M

Tipo de programas que se ir


ao considerar

Objectivos

{x = n n 0}
z := 1;
while x > 0 do
z := x z;
x := x 1
od
{z = n!}

Programas como objectos de estudo e n


ao apenas como ferramentas para executar certas
tarefas:
O que
e um programa?
O que
e uma m
aquina na qual um programa
pode ser executado?
Em que consiste uma execu
c
ao de um programa?

!
!"#$! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
%&'(

Qual
e o significado de um programa? Como
se pode extrair esse significado a partir das
suas execu
c
oes?
Como se especifica o que se deseja que um
programa fa
ca?
Como se garante que os programas se comportam de acordo com a sua especifica
c
ao?
3

{x = n n 0}

z:=1

x:=x1

)*

!"#$
%&'(
#

z:=xz -.

!
%&'(
"!"#$

x0

!)*+,
-./0
"#$! ! ! ! ! ! ! !
"%&'(

{z = n!}

x>0
!
!"#$
%&'(

No
co
es fundamentais
Id
eia principal que se pretende captar
ao,
A execu
c
ao de um programa gera uma sucess
finita ou infinita, de estados
1 2 n1 n

Estados (de mem


oria) de uma m
aquina.
co
es que realizam as mudan
Opera
cas de
estado.
ao condi
c
oes booleanas que
Testes que s
permitem seleccionar um ou outro curso de
ac
c
ao.

Quando
e finita, vai desde

um estado inicial 1 , que cont


em os dados
do problema, at
e

um estado final m , que cont


em o resultado .

Instru
c
oes que materializam essas opera
c
oes
e selec
c
oes baseadas em testes.
Programas como agregados estruturados
de instru
co
es.

Como se formaliza esta id


eia?
Execu
co
es de programas.
6

Modelo de m
aquina de estados

Exemplo: m
aquina de registos ilimitados

Uma m
aquina M
e constituda por:
R = (R, OpR, CnR)
Um conjunto , dos estados (de mem
oria)
de M .
Um conjunto Op , das opera
c
oes de M .
Uma opera
c
ao de M
e uma fun
c
ao de
em .
Um conjunto Cn , das condi
c
oes ou testes
de M .
Um condi
c
ao
e uma fun
c
ao de no conjunto dos valores de verdade {T, F}.

Mem
oria
constituda por uma infinidade de registos
E
endere
cados por P = {1, 2, . . .}.
Cada registo pode conter um n
umero natural
arbitr
ario de N = {0, 1, . . .}.
O conjunto dos estados de mem
oria
e:
R = { | : P N}.
(i)
e o conte
udo do registo i no estado :

A m
aquina M representa-se assim:

M = (, Op, Cn)
7

9 13 5 4 0 1 5 1
1 2 3 4 5 6 7 8
8

Exemplos de aplica
c
ao das opera
co
es
Exemplo: m
aquina R (cont.)

Opera
c
ao z7:

Opera
co
es

9 13 5 4 0 1 5 1
1 2 3 4 5 6 7 8

* :

9 13 5 4 0 1 0 1
1 2 3 4 5 6 7 8

z7

OpR
e o conjunto das opera
c
oes:

zn coloca o valor zero no registo n (n P).


sn substitui o valor do registo n pelo seu
sucessor (n P).
udo do registo m para
tm,n transfere o conte
o registo n (m, n P).

Opera
c
ao s3:
* :

9 13 5 4 0 1 0 1
1 2 3 4 5 6 7 8

** :

9 13 6 4 0 1 0 1
1 2 3 4 5 6 7 8

s3
!

Testes
Opera
c
ao t3,5:

CnR
e o conjunto dos testes:
em,n testa se os conte
udos dos registos m e
n s
ao iguais (m, n P).
9

** :

9 13 6 4 0 1 0 1
1 2 3 4 5 6 7 8

*** :

9 13 6 4 6 1 0 1
1 2 3 4 5 6 7 8

t3,5
!

10

Exemplo: m
aquina R (cont.)
Exemplo: m
aquina R (cont.)

Actualiza
c
ao do conte
udo de um registo
[i ' n] estado igual a , excepto que
o conte
udo do registo i
e n.

v1
1

* :

v1
1

vi1

vi

vi+1

i1

i+1

vi1

vi+1

i1

i+1

zn() = [n ' 0],

sn() = [n ' (n) + 1],

tm,n() = [n ' (m)],

em,n() =

O estado * = [i ' n] define-se por:


!

Defini
c
ao das opera
c
oes e dos testes:

T se (m) = (n),
F se (m) (= (n).

Para todo o m P, em,m = T.

*(i) = n,
*(j) = (j) se j (= i.

11

12

Programa para uma m


aquina M

Instru
c
oes da m
aquina M

uma sucess
E
ao finita
P = I1I2 In

S
ao de um dos seguintes tipos:
(n 0)
DO op com op Op (instru
c
ao de ac
c
ao).

de instru
co
es da m
aquina M .
Nos exemplos escreve-se:
1
2
...
n

c
ao de
JUMPIF c k com c Cn, k P (instru
salto condicional).

I1
I2
...
In

O comprimento do programa
e |P | = n.
O programa nulo (n = 0) denota-se 1.

c
ao de salto)
JUMP k com k P (instru
abrevia JUMPIF c k quando c
e o teste que
vale sempre T.

Sem
antica das instru
co
es

O que s
ao as instru
c
oes da m
aquina M ?
Definem-se a partir das opera
co
es e condi
c
oes
da m
aquina M .

S
ao fun
c
oes que transformam configura
c
oes
em configura
c
oes.
14

13

Configura
c
ao

Sem
antica das instru
c
oes
As instru
c
oes I definem fun
c
oes:

Intui
c
ao

[[I]] : Conf Conf

uma descri
E
c
ao instant
anea de um momento da execu
c
ao de um programa.

Cont
em informa
c
ao sobre o estado corrente
e sobre a pr
oxima instru
c
ao a ser executada.

Em vez de [[I]](c) = c* escrever-se-


a c c* .
Instru
c
ao de ac
c
ao

Defini
c
ao

(i, )

Uma configura
c
ao
e um par

onde:

DO op
"

(i + 1, op())

Instru
c
ao de salto

(i, ) P

(i, ) JUMP k

i
e o n
umero da instru
c
ao a executar a seguir,

(k, )

Instru
c
ao de salto condicional
JUMPIF c k


e o estado corrente da mem
oria.

(i, )

P
oe-se Conf = P .

(i, ) JUMPIF c k " (i + 1, )


15

"

"

(k, )

se c() = T,
se c() = F.
16

Representa
c
ao por diagramas
Exemplo para a m
aquina R

Programa
1
2
3
4
5

Abreviaturas

Z(n) S(n) T (m, n)


DO zn DO sn

DO tm,n

J(m, n, k)

J(k)

JUMPIF em,n k JUMPIF e1,1 k

Z(3)
J(2, 3, 6)
S(1)
S(3)
J(2)

Diagrama

Programa
1
2
3
4
5

!
!"#$
%&'(

Z(3)
J(2, 3, 6)
S(1)
S(3)
J(2)

Z(3)

!
%&'(
"!"#$

)*

Significado

!
!"#$
%&'(

S(3)

S(1)

!"#$
%&'(
#
/0

-.

17

Exemplo de computa
c
ao

!)*+,
-./0
"#$
"%&'(

e2,3

!"#$
%&'(
#

No final da computa
c
ao, deixa no registo 1 a
soma dos valores iniciais dos registos 1 e 2.

e2,3

18

Defini
c
ao de computa
c
ao de P = I1I2 In

Programa

uma sucess
E
ao finita ou infinita de configura
c
oes
1
2
3
4
5

Z(3)
J(2, 3, 6)
S(1)
S(3)
J(2)

(i0, 0)

(i0 = 1)

Ii0
!

(i1, 1)
Computa
c
ao sucess
ao de configura
co
es
Instru
c
ao
1
2
3
4
5
2
3
4
5
2
6

Ii1

Estado
,4, 2, . . .,4, 2, 0, . . .,4, 2, 0, . . .,5, 2, 0, . . .,5, 2, 1, . . .,5, 2, 1, . . .,5, 2, 1, . . .,6, 2, 1, . . .,6, 2, 2, . . .,6, 2, 2, . . .,6, 2, 2, . . .-

(i2, 2)
Ii2
!

(i3, 3)
Ii3

...
!

19

20

Computa
co
es finitas e infinitas de
P = I1I2 In
Sem
antica operacional de P

Computa
c
ao finita
A
ultima configura
c
ao (im, m) satisfaz im > n ,
mas n
ao as anteriores.
A computa
c
ao de P a partir de 0 converge
para m:
P

ou

0 m

0 P

Computa
c
ao infinita

Sem
antica de P : significado de P .
Sem
antica operacional: definida com base
na computa
c
ao de P .
a fun
E
c
ao parcial [[P ]] : " em que

[[P ]]() =

Tem-se 1 im n para todo o m 0.


A computa
c
ao de P a partir de 0 diverge:

indefinida

se ,
se P.

Dom([[P ]]) = { | P }.

0 P
22

21

Exemplo para a m
aquina R
Programa P
1
2
3
4
5

Programa P em forma padr


ao

Z(3)
J(2, 3, 6)
S(1)
S(3)
J(2)

Defini
c
ao
Para toda a instru
c
ao de salto JUMPIF c k ou
JUMP k em P tem-se

Sem
antica
1 k |P | + 1 .

ou

[1 (1) + (2), 3 (2)]

Qual a inten
c
ao
[[P ]]() = [1 (1) + (2), 3 (2)] .

Nota
c
ao
Escrever-se-
a indiferentemente

Suposi
c
ao

ou

Quando a execu
c
ao termina, a instru
c
ao seguinte
teria a ordem |P | + 1.

Todos os programas est


ao na forma padr
ao.

[[P ]]() = .
23

24

Composi
c
ao condicional

Composi
c
ao sequencial de programas

Seja |P | = n, |Q| = m.

Translac
c
ao P [m]
Substitui-se cada JUMPIF c k por JUMPIF c k + m .

c P | Q = JUMPIF c m + 3
Q[1]
JUMP m + n + 3
P [m + 2]

Substitui-se cada JUMP k por JUMP k + m .


Em geral, P [m] n
ao est
a na forma padr
ao.
Composi
c
ao sequencial

e-se IF c THEN P ELSE Q .


c P | Q l

P Q = P Q[n] onde n = |P |.

Proposi
c
ao Seja R = c P | Q.

Proposi
c
ao Se R = P Q ent
ao

c() = T

ou
R

c() = F

25

26

Exemplos para a m
aquina R
P = e1,2 Z(1) S(1)
Variantes da composi
c
ao condicional

c P | Q = c Q | P,

= J(1, 2, 5) Z(1) S(1) J(5)

[[P ]]() =

c d P | Q = c (d P | Q) | Q,

se (1) = (2),
[1 ' 1] se (1) (= (2).

c d P | Q = c P | (d P | Q),
Q = e1,2 Z(1) | Z(1) S(1)

c P = c P | 1.

= J(1, 2, 5) Z(1) S(1) J(6) Z(1)

c P l
e-se IF c THEN P .
[[Q]]() =

27

[1 ' 0] se (1) = (2),


[1 ' 1] se (1) (= (2).
28

Composi
c
ao iterativa
Exemplos para a m
aquina R
Seja |P | = n.

Programa anterior:

c P = JUMPIF c 3
JUMP n + 4
P [2]
JUMP 1

c P = JUMPIF c n + 3
P [1]
JUMP 1.

Z(3) e2,3 S(1) S(3)


=
Z(3)J(2, 3, 6) S(1) S(3) J(2).
Outro programa (P ):

e-se WHILE c DO P .
c P l

Z(2)Z(3) e1,2 [S(3) [e1,3 S(2) S(3)] T (2, 1)]

Proposi
c
ao Seja R = c P .
R

=
P

= 0 1 p =
onde p 0,
c(0) = . . . = c(p1) = T,

Z(2)Z(3)J(1, 2, 11) S(3) J(1, 3, 9) S(2) S(3) J(5) T (2, 1)J(11)

(1) =

(1) 1 se (1) > 0,


0
se (1) = 0.

c(p) = F.
29

Outro exemplo

Linguagem estruturada para a m


aquina R

Programa Q:

1
2
3
Z(3)
4
Z(5)
5

e2,5 [ S(5).
6
Z(4).
7

e1,4 S(3) S(4) ]. 8


T (3, 1)
9
10
11

Z(3)
Z(5)
J(2, 5, 11)
S(5)
Z(4)
J(1, 4, 10)
S(3)
S(4)
J(6)
J(3)
T (3, 1)

Fun
c
ao calculada:

[[Q]]() =

30

tal que

(1) = (1) (2).


31

|
|
|
|

skip
V := E
if C then S else S fi
while C do S od
S; S

E 0
| V +1
| V
C
|
|
|
V

(V = V )
(C)
(C C)
(C C)

vazia
afecta
c
ao
condicional
itera
c
ao
sequencia
c
ao
zero
sucessor
vari
avel
igualdade
nega
c
ao
conjun
c
ao
disjun
c
ao
identificador

Observa
c
oes
1. Mesma vari
avel em V := V + 1.
2. S
o (V = V ) ou ((V = V )) numa itera
c
ao.
3. (V = V ) abrevia-se para V (= V .
4. Removem-se par
enteses em C como usual.
32

Exemplo

Compila
c
ao para a linguagem-m
aquina

% Calcula o produto de x por y


% e deixa o resultado em x

Ordenar as vari
aveis por uma ordem arbitr
aria.

% Calculo de P rod := x y
P rod := 0;
ContP rod := 0;

Renome
a-las em x1, x2, x3, . . .
Substituir:

while y (= ContP rod do


% soma x a P rod y vezes
ContP rod := ContP rod + 1;

xn := 0 por Z(n),

% Calculo de P rod := P rod + x


ContSoma := 0;
while x (= ContSoma do
% soma 1 a P rod x vezes
P rod := P rod + 1;
ContSoma := ContSoma + 1
od

xn := xm por T (m, n),


xm = xn por em,n e xm (= xn por em,n.
Skip por 1 e as restantes instru
c
oes pelas
correspondentes opera
c
oes sobre programas.

od;
% Transferencia do resultado para x
x := P rod

Efectuar as opera
co
es sobre programas.
33

Exemplo de compila
c
ao
x

xn := xn + 1 por S(n),

P rod

ContSoma

ContP rod

x3 := 0;
x5 := 0;
while x2 (= x5 do
x5 := x5 + 1;
x4 := 0;
while x1 (= x4 do
x3 := x3 + 1;
x4 := x4 + 1
od
od;
x1 := x3
Z(3)
Z(5)

e2,5 [ S(5).
Z(4).

e1,4 S(3) S(4) ].


T (3, 1)
35

34

Você também pode gostar