Escolar Documentos
Profissional Documentos
Cultura Documentos
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
Apresentao
TC 2008/09
4 / 14
Nesta disciplina
Trs grandes temas
Computabilidade e decidibilidade
(mquinas de Turing)
LM (DI)
Apresentao
TC 2008/09
5 / 14
Principais conceitos
Autmatos e gramticas
?>
=<
89pra:;
K
g
anoitece
vermelho
?>
=<
89
noite:;
b
"
?>
89dia=<
:;
verde
verde
?>
89avana=<
:;
laranja
%
?>
89abranda=<
:;
I
laranja
vermelho
LM (DI)
Apresentao
TC 2008/09
6 / 14
Outros exemplos
Na definio de linguagens de programao
/.-,
/()*+
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
|
|
|
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)
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
@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
?>=<
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
descendente (top-down),
ascendente (bottom-up).
semntica operacional,
verificao de programas.
LM (DI)
Apresentao
TC 2008/09
11 / 14
Plano da Disciplina
Nas suas grandes reas temticas
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
LM (DI)
Apresentao
TC 2008/09
14 / 14
1. Linguagens
Teoria da Computao
Lus Monteiro
DI-FCT/UNL
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
Definio
Uma palavra sobre um alfabeto T uma sequncia finita
a1 a2 an1 an
(n 0)
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
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
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 .
T 6=
T infinito.
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
..
.
..
.
..
.
..
.
..
.
..
.
..
.
..
.
..
.
corresponde
LM (DI)
Linguagens
TC 2008/09
6/9
Concatenao
def
def
xy = x.y = a1 a2 an b1 b2 bk
| {z } | {z }
x
Potncias
n def
x = xx
x}
| {z
Por induo:
x0
def
def
x n+1 = x n x
LM (DI)
Linguagens
TC 2008/09
7/9
Propriedades
As mais elementares
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
Exemplos de linguagens
1
{ Reais } {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, E, ., +, } .
T (linguagem vazia).
T T (todas as palavras).
LM (DI)
Linguagens
TC 2008/09
9/9
2. Linguagens regulares
Teoria da Computao
Lus Monteiro
DI-FCT/UNL
LM (DI)
Linguagens regulares
TC 2008/09
1 / 35
Operaes
L1 L2 (unio).
L1 L2 (interseco).
L1 L2 (diferena).
def
def
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
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
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}
LM (DI)
Linguagens regulares
TC 2008/09
4 / 35
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
= {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
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
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
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
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)
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
Linguagens regulares
TC 2008/09
16 / 35
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
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
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
R = (sb) sb
R = s(bs) b
LM (DI)
Linguagens regulares
TC 2008/09
19 / 35
= + 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
A B soluo.
A B a menor soluo.
( um subconjunto de todas as outras.)
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
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.
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
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
LM (DI)
Linguagens regulares
TC 2008/09
25 / 35
X = XA + B
Soluo mnima:
X = BA
Exemplo:
X
X
= Xab + c
= c(ab)
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
()
(()())
()()(())
LM (DI)
Linguagens regulares
TC 2008/09
27 / 35
Exemplo
X = aXb +
A soluo a linguagem {an bn | n 0}.
No regular.
LM (DI)
Linguagens regulares
TC 2008/09
28 / 35
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
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
!"#
Ns de aceitao '&%$
Ns simples
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
'&%$
!"#
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
Linguagens regulares
TC 2008/09
33 / 35
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
'&%$
!"#
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
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
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
1
2
3
4
s
2
4
4
4
b
4
3
4
4
b
4
1
4
4
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 ).
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
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
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
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
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
AFND
: Q T Q : Q (T {}) P(Q)
(q, a) = q 0
(q, a) = {q 0}
(q, ) =
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 )
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
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),
A = (T, Q, qI , , F),
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
e reconhecida por um AF
e reconhecida por
{}
e reconhecida por
()*+
//.-,
.
/.-,
/()*+
{a} (a T )
e reconhecida por
/()*+
/ .-,
()*+
//.-,
31
()*+
//.-,
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
/.-,
/.-,
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)
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:
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.
- 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
AFD acessvel
x T
(qI , x) = q
x
- i
...
- i
i
- i
qI
(qI , x) = q}.
Exemplo:
=
/.-,?
()*+
G ??
??
??
??
??
??
??
??
?
()*+?_
/.-,
()*+
/.-,
??
?
??
??
??
??
??
??
??
?
()*+
/.-,
()*+
/.-,
/.-,?
()*+
G ??
??
??
??
??
??
??
??
?
()*+
/.-,
41
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
(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
= x T
= (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
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
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
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.
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
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
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
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
Unidade de
controlo
q
4
Extens
ao de a : Q T Q
(q, ) = q;
(q, ax) = ((q, a), x)
(a T, x T ).
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
Linguagem reconhecida
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
+
!"#$
%&'(
Este
!"#$
!%&'(
,
-
Sul
Este
Aut
omato:
%&'(
! !"#$
%&'(
!!"#$
ChGra
100$
ChP eq
%&'(
!"#$
Este
,
Oeste
%&'(
!"#$
Este
!)*+,
-./0
"#$
! %&'(
Linguagem:
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
+
+
#
%&'( $
%&'(
!"#$
! !"#$
:. :
::
::
::
::
::
::
::
::
::
::
::
::
::
::
: &
# %&'(
%&'(
!"#$
!)*+,
-./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}
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
!"#$
!%&'(
!"#$
!%&'(
!"#$
!%&'(
%&'(
!"#$
%&'(
!"#$
%&'(
!"#$
!"#$
!%&'(
!"#$
!%&'(
!"#$
!%&'(
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
!"#$
!%&'(
!)*+,
-./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
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:
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 )
(q, a) = {q )}
= (T, Q,
qI , , F).
A
(q, ) =
Cada q Q
e um conjunto q Q.
Defini
c
ao de A:
q = q ) (AFND).
.
qI = {q Q | qI = q} Q
Propriedade
e a T , ent
Se P Q
ao
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
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}
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
O aut
omato A tal que L(A) = L1 L2 tem a
forma:
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
-./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 }
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),
A = (T, Q, qI , , F),
em que:
Q = Q1 Q2.
Intersec
c
ao
qI = (q1I , q2I ).
29
e reconhecida por um AF
e reconhecida por
{}
e reconhecida por
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
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
,
M
234
EFGH E
ABCD
!15678
C G
1234
5678
34
33
A linguagem reconhecida
por um AF
e regular
Exemplos
AFD:
)
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)
Sistema:
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)
CASO x = :
Lq
leva de q a F
qF
(q)
(q) aT aL(q,a).
CASO x = ay:
ay Lq
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.
x, y .= , z
...
0
1
" #
-
&
38
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
" #
qI
(qI , x) = q
x
" #
/
.
...
" #
(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
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 }
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
= x T
= (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:
([(q, a)], y)
= R
= [ (q, ay)]
&
!"#$
%&'(
TT
TT
Y
TT
TT
TT
TT
TT
TT
U
%&'(
!"#$
)*+,
-./0
b
X
%&'(
!"#$
HI
HI
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
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 ).
a
7
7
6
7
6
7
7
b
5
7
7
7
7
3
7
c
2
7
7
7
7
4
7
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
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
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}
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:
Designa
c
oes particulares:
L3:
Linguagens regulares,
L2:
L0:
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
(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
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
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
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
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
17
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
19
hnoun-phraseihverb-phrasei
hnoun-phrasei
hnoun-phrasei hproper-nouni
|
hdeterminerihcommon-nouni
hverbihadverbi
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
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
A ambiguidade
e decidvel?
S
ao indecidveis:
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
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
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
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
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
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
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
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
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 .)
...
a1A1
a2A2
an B
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)
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
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 )
= 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
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
Por exemplo:
ha
hanbni a hanbni b |
k
hc i c hck i |
{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
AP
A==
A10
00
00
00
00
0
...
==
==
==
==
==
An0
00
00
00
00
0
47
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=
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
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
---
-
-
..
..
..
..
.
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)
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
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
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
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
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
_
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
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
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
E +A
A BAB
A =
+B B+
B 1
Se P ent
ao .
V
e implicam .
E +A +BAB +B 2AB 2
+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
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 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
Li:
Abreviatura
Designa
c
oes particulares:
L3:
Linguagens regulares,
L2:
L0:
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
(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
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
4. Gram
atica para
arvores etiquetadas
ana$$
###
###
##
morada
###
###
###
###
###
$$
$$
$$
$$
$$
$$
$$
$$
$$
$
m
ae
joana$
caparica
%%
%%
%%
%%
profiss
a%%o
%%
%
%%
%%
%%
%%
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
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.
-verb.-adverb.
18
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.
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+aa
23
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
3,
F
5,
,
2,
F +T |T
(E) | 0 | 1 | 2 | | 9
25
***+
.
+
***
+++
*** . . .
+ +
+++
***
.
+++ + + +
***
+++
*** . . .
+
+
+
+
+
,
,
,
,
,
,
. .
///)
)
) //
. .
)))
///
))
)))
. .
///
)))
))
///
. .
))) ) )
//
.
)))
)
,
,
,
,
,
,
5,
,
EF |F
10
3,
2,
13
***+
* *
)))
+ ****
* *
)))
***
++
* *
***
)))
++
***
)))
* *
+
)
)
**
+
))
+
***. .
,
- ****
--. .
***
,
***
-. .
--***
,
---. .
**
--
Em 3 + 2 5 avalia-se + antes de .
26
25
Ambiguidade
Gram
atica ambgua
A ambiguidade
e decidvel?
arvores de deriva
c
ao (ou deriva
c
oes esquerdas,
ou deriva
co
es direitas).
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
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
Ordem de avalia
c
ao
A a | AbA
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
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
E E + E | E E | (E) | a
E F |E+F |EF
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
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:
%
%%
%%
%%
%%
%%
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
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 =
logo
= 0 1 n =
S | AS
Aa
35
36
Propriedade recproca
Propriedade das gram
aticas lineares
direitas (GLD)
Sejam x, y T e , V .
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
An1
...
S aS | cc | A
A bcA |
onde B
e um novo smbolo n
ao terminal.
A
A1
Exemplo
a1A1
a2A2
an B
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 A = (T, Q, qI , , F ).
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 }.
S aS | T
T bT |
1234 &
! 5678
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
41
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 )
(N N / = )
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
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 /)
-anbn. a -anbn. b |
k
-c . c -ck . |
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})
46
e o menor subconjunto de N tal que:
AP
AP
:= ;
:= {A};
repetir
A<<
;
;;
;;
;;
;;
;
;;
A1
>
== >>>
>>
==
>>
==
>>
== =
=
...
<<
<<
<<
<<
<<
:= {A}
at
e n
ao se modificar
An
>
== >>>
>>
==
>>
== =
>>
=
==
47
48
Smbolos produtivos
A N produtivo
Exemplo
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
| 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)
?? ///
?? ///
///
??
///
??
///
??
///
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
Gram
atica modificada
)
))) F
))) FF
))) FFF
F
)))
)
F
)
))
FF
)))
FF
)))
= {X, Y }
| F
B XY
A T XY | T X | T Y
B XY
| X
| Y
| T
56
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 :
C1
...
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 .
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
Exemplo
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
------.& --
aAT B
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)
|z| > k
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 +=
e
uv nwxny L(G)
para todo o n 0.
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 .
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
!"
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(
|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
S!" YYY
!"
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
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
LM (DI)
Autmatos de Pilha
TC 2008/09
1 / 49
Tpicos
1
Linguagem reconhecida
LM (DI)
Autmatos de Pilha
TC 2008/09
2 / 49
Prximo tpico
1
Linguagem reconhecida
LM (DI)
Autmatos de Pilha
TC 2008/09
3 / 49
O problema
Nem sempre basta um nmero finito de estados
open
%
e
close
()*+
/.-,
put
%
e
()*+
/.-,
put
%
e
get
()*+
/.-,
get
Autmatos de Pilha
TC 2008/09
4 / 49
Uma soluo
Utilizao de uma pilha
bottom/
bottom
(
h
()*+
/.-,
g
close,
bottom/
bottom
LM (DI)
Autmatos de Pilha
TC 2008/09
5 / 49
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 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
Autmatos de Pilha
TC 2008/09
8 / 49
LM (DI)
Autmatos de Pilha
TC 2008/09
9 / 49
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
Linguagem reconhecida
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
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
(p, z, b) = ,
etc.
LM (DI)
Autmatos de Pilha
TC 2008/09
15 / 49
Continuao do exemplo
Diagrama de transies
Autmato
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, ):
Autmatos de Pilha
TC 2008/09
16 / 49
Prximo tpico
1
Linguagem reconhecida
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
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})
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:
LM (DI)
Autmatos de Pilha
TC 2008/09
21 / 49
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}
a,a/aa
a,z/az
89:;
/ ?>=<
p
b,a/
b,a/
89:;
/ ?>=<
q
,z/z
?/.-,
()*+
>=<
/89:;
t
Autmatos de Pilha
TC 2008/09
23 / 49
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
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
Linguagem reconhecida
LM (DI)
Autmatos de Pilha
TC 2008/09
27 / 49
AP determinista
So permitidas transies com
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
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
Linguagem reconhecida
LM (DI)
Autmatos de Pilha
TC 2008/09
32 / 49
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
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:
LM (DI)
Autmatos de Pilha
TC 2008/09
34 / 49
Exemplo
A linguagem {wcw 1 | w {a, b} }
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
q
zI0
0
0
qF
zI
TC 2008/09
36 / 49
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
FED
/ G@ABC
qI
89:;
?>=<
q
,z/z (z)
ONML
/ HIJK
q0
V
,z/ (z)
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
zI0
F 0 = .
0 constituda pelas regras de juntamente com:
(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}+
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
(q, z) (qV0 , z)
q F , z Z 0.
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
Linguagem reconhecida
LM (DI)
Autmatos de Pilha
TC 2008/09
42 / 49
(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
Linguagem reconhecida
LM (DI)
Autmatos de Pilha
TC 2008/09
44 / 49
(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
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
Linguagem reconhecida
12
14
19
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.
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
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
close,
bottom/
bottom
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
estado seguinte
contedo seguinte da pilha
estado corrente
smbolo na fita de leitura (ou )
smbolo no topo da pilha
H um nico tipo de operao que pode ser executado sobre a pilha. Como veremos, esse tipo suficientemente geral para cobrir as operaes usuais.
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)
Mostra-se a seguir uma figura que exemplifica a aplicao de uma regra de transio
no caso em que consumido um smbolo de entrada.
... a b ...
... a b ...
q0
q
?
zk ... z1 z0 ...
z z0 ...
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
(p, z, b) = ,
etc.
Tal como para os AF, til representar os AP por diagramas de transies. Estes
a,z/
Continuao do exemplo
Autmato
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, ):
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 )
se
(q, z) (q 0 , 0 ),
em que
q, q 0 Q,
z Z,
, 0 Z ,
a T {},
x T .
existem n 0 e configuraes
c0 , c1 , . . . , cn tal que
c = c0 ` c1 ` ` cn = c0 .
Primeiro exemplo
a,x/ax
>=<
/ ?89:;
p
b,a/
b,a/
?>=<
/ 89:;
q
,z/z
89:;
?/ /.-,
()*+
>=<
t
(x {a, 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:
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/
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
>=<
/ ?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
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
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 .
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
Continuao do exemplo
?89:;
()*+
>=<
/ /.-,
i
x,y/xy
?>=<
/ 89:;
p
x,z/xz
x,x/
x,x/
?>=<
/ 89:;
q
,z/z
89:;
?/ /.-,
()*+
>=<
t
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
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.
(F = )
constri-se
A0 = (T, Q0 , Z 0 , qI0 , zI0 , 0 , F 0 ) :
A0
A
GFED
/ @ABC
q0
I
?>=<
89:;
?>=<
/ 89:;
qI
q
>>
>>
>>
>>
>
,zI0 /zI0
,zI0 /zI0
0
@ABC
GFED
89:;
?>=<
qF
14
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:
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
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,
q
zI0
qF0
zI0
qF0 , zI0
qF0 , zI0
16
(F 0 = ) :
A0
A
GFED
/ @ABC
q0
89:;
/ ?>=<
qI
F
89:;
?>=<
q
,z/z (z)
GFED
/ @ABC
q0
V
,z/ (z)
Continuao da demonstrao
T
Q0 = Q {qI0 , qV0 }
Z 0 = Z {zI0 }
qI0
zI0
F 0 = .
0 constituda pelas regras de juntamente com:
(q, z) (qV0 , z)
(qV0 , z) (qV0 , )
q F, z Z 0 .
z Z 0.
17
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 .
18
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}
(q, z) (q 0 , 0 ).
Teorema
L aceite por APG = L aceite por AP.
19
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,
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
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)
Lus Monteiro
DI-FCT/UNL
LM (DI)
Gramticas LL(1)
TC 08/09
1 / 52
Tpicos
1
LM (DI)
Gramticas LL(1)
TC 08/09
2 / 52
Prximo tpico
1
LM (DI)
Gramticas LL(1)
TC 08/09
3 / 52
Anlise sintctica
Em que consiste?
LM (DI)
Gramticas LL(1)
TC 08/09
4 / 52
O requisito de no-ambiguidade
Essencial para a anlise determinista
LM (DI)
Gramticas LL(1)
TC 08/09
5 / 52
Gramticas LL(k)
Principais caractersticas
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
LM (DI)
Gramticas LL(1)
TC 08/09
8 / 52
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)
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
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
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.
LM (DI)
Gramticas LL(1)
TC 08/09
11 / 52
LM (DI)
Gramticas LL(1)
TC 08/09
12 / 52
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
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
LM (DI)
Gramticas LL(1)
TC 08/09
16 / 52
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, ).
Gramticas LL(1)
TC 08/09
17 / 52
Exemplo
Gramtica S aSb | c
Simb. directores
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
..
.
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
LM (DI)
Gramticas LL(1)
TC 08/09
20 / 52
Simb. directores
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
Gramtica
a
aSb
c
c
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
B bc
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)
qL
ac ?
ou
aac ?
TC 08/09
24 / 52
Prximo tpico
1
LM (DI)
Gramticas LL(1)
TC 08/09
25 / 52
Propriedade
Com um smbolo terminador todas as produes tm smbolos directores
LM (DI)
Gramticas LL(1)
TC 08/09
26 / 52
Prximo tpico
1
LM (DI)
Gramticas LL(1)
TC 08/09
27 / 52
LM (DI)
Gramticas LL(1)
TC 08/09
28 / 52
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
S E$
E
TU
U +TU |
T FG
G FG |
F (E) | a
= {U, G}
- E
- T
- (
- F
?
a
S
(, a
E
(, a
U
+
T
(, a
Gramticas LL(1)
F
(, a
TC 08/09
30 / 52
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
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
S E$
E
TU
U +TU |
T FG
G FG |
F (E) | a
= {U, G}
- )
a
S
(
E
U
T
G
F
), $ ), $ +, ), $ +, ), $ , +, ), $
Gramticas LL(1)
TC 08/09
33 / 52
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
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}
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
q$
U$
q$
$
qL
TC 08/09
36 / 52
Prximo tpico
1
LM (DI)
Gramticas LL(1)
TC 08/09
37 / 52
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
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
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
LM (DI)
Gramticas LL(1)
TC 08/09
41 / 52
; A aBa | bCa | ab | db
(substituio de B e C)
; A aX | bCa | db
X Ba | b
;
(factorizao de a)
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
LM (DI)
Gramticas LL(1)
TC 08/09
43 / 52
Prximo tpico
1
LM (DI)
Gramticas LL(1)
TC 08/09
44 / 52
Gramticas LL(1)
TC 08/09
45 / 52
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
LM (DI)
Gramticas LL(1)
TC 08/09
48 / 52
Corpo do programa
begin
GetSym;
Production
end;
LM (DI)
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
Lus Monteiro
Lic. Eng. Informtica, 2008/09
Contedo
1
13
15
Nota prvia
Este texto contm os acetatos das aulas tericas, organizados por seces. No se
adicionaram ainda comentrios.
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
E;
TX
| +T X
a | (E)
Palavra
a + a;
a + a;
a + a;
a + a;
a + a;
a + a;
a + a;
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.
Prim()
se 6 ,
Prim() Seg(A)
se .
Primeiro caso:
Dir(A, ) = Seg(A)
Segundo caso: a T V
Dir(A, a) = {a}
Leitura:
a
a T, z Z.
(qL , z) (qa , z)
Reconhecimento:
(qa , a) (qL , )
a T.
Expanso:
(qa , A) (qa , )
a Dir(A, ).
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
..
.
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.
Simb. directores
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
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 ?
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.
caminho de A para a.
Logo,
Prim(A) = {descendentes terminais de A}.
= {U, G}
- E
- T
- F
- (
a
G
S
(, a
E
(, a
U
+
T
(, a
F
(, a
Derivao
S E;
T X;
T + T X;
T + T;
Propriedade
Para a T e A N ,
a Seg(A)
caminho de A para a.
Logo,
Seg(A) = {descendentes terminais de A}.
= {U, G}
- T
-E
@
@
?
?
?
RG
R U
@
+ @
$
6
6
- )
S
(
E
), $
U
), $
T
+, ), $
11
G
+, ), $
F
, +, ), $
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}
Simb. directores
{(, a}
{(, a}
{+}
{), $}
{(, a}
{}
{+, ), $}
{(}
{a}
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$
$
$
$
$
Propriedade
Uma gramtica LL(1) nunca recursiva esquerda.
13
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
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.
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
15
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).
Corpo do programa
begin
GetSym;
Production
end;
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
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
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
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.
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
N
ao, basta testar os conjuntos de itens
que s
ao v
alidos para algum prefixo vi
avel.
15
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.
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
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
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)
Transfer
encia
a
(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
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.
Tabela de an
alise sint
actica LR(1)
Mudan
ca de estado
Linhas Q, colunas V , transi
c
oes de M .
Ac
c
ao
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
a L,
(q0, A) = q.
Transfer
encia
(q, a) = q 0.
36
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
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}:;
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
=<
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
?>
{ $}
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. {$}:;
Caracteriza
c
ao das gram
aticas LALR(1)
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
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 $
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
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
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
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.
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.
c
ao de
Um item S . determina a ac
aceita
c
ao.
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
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.
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
Cont
em pelo menos um item.
N
ao, basta testar os conjuntos de itens
que s
ao v
alidos para algum prefixo vi
avel.
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
I F e(I) .
A .B
B
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) .
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.
#
-.
+,
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
)*
-.
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)
K = {k, kF } estados
Z = V Q smbolos da pilha
kI = k estado inicial
Regras de transfer
encia
regras de transi
c
ao (definidas a seguir)
F = {kF } estados de aceita
c
ao
23
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)
Transfer
encia
a
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:
S n
ao ocorre no corpo de nehuma produ
c
ao.
Condi
c
ao LR(1):
S D Ax
B ., K , ent
ao L K = .
A ., L
e v
alido para
aL, A ., {a}
e v
alido para .
Iv1() Itens LR(1) v
alidos para .
27
28
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 }
Ac
c
ao
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
!
)*
-.
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
kI = kL estado inicial
a L,
(q0, A) = q.
Transfer
encia
regras de transi
c
ao (definidas a seguir)
A .a, L q,
35
(q, a) = q ".
36
Uma gram
atica que n
ao
e LR(1)
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
)*
-.
+,
Bac., {b}
Cc. , {b}/0
37
Gram
aticas LALR(1):
38
Fus
ao de estados
S" S
S CC |
C cC | d
!%
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, 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
39
40
Caracteriza
c
ao das gram
aticas LALR(1)
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
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
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
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
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
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
-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
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
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
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
C
odigo
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 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
aceita
M n p
ara
com
rejeita
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
Lus Monteiro
Componentes do modelo b
asico:
fita semi-infinita;
unidade de controlo finita;
cabe
ca de leitura e escrita.
DI-FCT/UNL
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
A MT p
ara quando encontra um par (estado,
smbolo) para o qual n
ao est
a definida.
Exemplo: a m
aquina COPY
Exemplo
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
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
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
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).
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
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
B/B R
em Q Z Z {L, R}
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.
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
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
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
MT n
ao determinista
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
)*+,
! !"#$
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?
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?
...
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
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 .
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
C
odigo
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
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.
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.
f1 ,
f2 ,
f3 ,
f4 ,
f5 ,
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
e indecidvel.
Indecidibilidade . . . (cont.)
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)
R(M )
p
ara
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
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 +:
39
40
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
!
rejeita
!
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
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
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
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.
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
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
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).
12
(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).
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
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
DO tm,n
J(m, n, k)
J(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
ou
[[P ]]() = .
23
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]]() =
[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:
(1) =
30
Outro exemplo
Programa Q:
1
2
3
Z(3)
4
Z(5)
5
e2,5 [ S(5).
6
Z(4).
7
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
|
|
|
|
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).
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
Objectivos
{x = n n 0}
z := 1;
while x > 0 do
z := x z;
x := x 1
od
{z = n!}
!
!"#$! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
%&'(
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
Quando
e finita, vai desde
Instru
c
oes que materializam essas opera
c
oes
e selec
c
oes baseadas em testes.
Programas como agregados estruturados
de instru
co
es.
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:
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
em,n() =
Defini
c
ao das opera
c
oes e dos testes:
T se (m) = (n),
F se (m) (= (n).
*(i) = n,
*(j) = (j) se j (= i.
11
12
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
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
(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 .
"
"
(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
DO tm,n
J(m, n, k)
J(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 ]]() =
indefinida
se ,
se P.
Dom([[P ]]) = { | P }.
0 P
22
21
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)
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
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.
[[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]
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,
[[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.
c P l
e-se IF c THEN P .
[[Q]]() =
27
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.
e-se WHILE c DO P .
c P l
Proposi
c
ao Seja R = c P .
R
=
P
= 0 1 p =
onde p 0,
c(0) = . . . = c(p1) = T,
(1) =
c(p) = F.
29
Outro exemplo
Programa Q:
1
2
3
Z(3)
4
Z(5)
5
e2,5 [ S(5).
6
Z(4).
7
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
|
|
|
|
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
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:
xn := 0 por Z(n),
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).
34