Post on 22-Apr-2015
1
Formas Normaisde
Gramáticas Livres de Contexto
2
Forma Normal de Chomsky
Todas as produções têm a forma:
BCA
variável variável
aA e
terminal
3
Exemplos:
bA
SAA
aS
ASS
Não Forma Normalde Chomsky
aaA
SAA
AASS
ASS
Forma Normalde Chomsky
4
Conversão para Forma Normal de Chomsky
Exemplo:
AcB
aabA
ABaS
NãoForma Normalde Chomsky
5
AcB
aabA
ABaS
Introduza variáveis para terminais:
cT
bT
aT
ATB
TTTA
ABTS
c
b
a
c
baa
a
cba TTT ,,
6
Introduza variável intermediária:
cT
bT
aT
ATB
TTTA
ABTS
c
b
a
c
baa
a
cT
bT
aT
ATB
TTTA
BTV
AVS
c
b
a
c
baa
a
1
1
1V
7
Introduza variável intermediária:
cT
bT
aT
ATB
TTV
VTA
BTV
AVS
c
b
a
c
ba
a
a
2
2
1
1
2V
cT
bT
aT
ATB
TTTA
BTV
AVS
c
b
a
c
baa
a
1
1
8
Gramática Final na Forma Normal de Chomsky:
cT
bT
aT
ATB
TTV
VTA
BTV
AVS
c
b
a
c
ba
a
a
2
2
1
1
AcB
aabA
ABaS
Gramática inicial
9
De qualquer gramática livre de contextoque não esteja na Forma Normal de Chomsky
podemos obter: Uma gramática equivalente na Forma Normal de Chomsky
Em geral:
10
O Procedimento
Primeiro remova:
Variáveis nulas
Produções Unitárias
11
Para cada símbolo : a
Nas produções: substitua por a aT
Adicione a produção aTa
Nova variável: aT
12
Substitua toda produção nCCCA 21
por
nnn CCV
VCV
VCA
12
221
11
Novas variáveis intermediárias:
221 ,,, nVVV
13
Teorema:
Para toda gramática livre de contextoexiste uma gramática equivalentena Forma Normal de Chomsky
14
Observações
• Formas normais de Chomsky são boas para parsing e para a prova de teoremas
• É muito fácil encontrar a Forma Normal de Chomsky para qualquer gramática livre de contexto
15
Forma Normal de Greinbach
Todas as produções têm a forma:
kVVVaA 21
terminal variáveis
0k
16
Exemplos:
bB
bbBaAA
cABS
||
Forma Normal de Greinbach
aaS
abSbS
Não Forma Normal de Greinbach
17
aaS
abSbS
Conversão para a Forma Normal de Greinbach:
bT
aT
aTS
STaTS
b
a
a
bb
Forma Normalde Greinbach
18
Teorema:
Para qualquer gramática livre de contextoexiste uma gramática equivalentena Forma Normal de Greinbach
19
Observações
• Formas normais de Greinbach são muito boas para parsing
• É difícil obter a Forma Normal de Greinbach para qualquer gramática livre de contexto
20
Uma Aplicação de
Forma Normal de Chomsky
21
O Algoritmo CYK
Entrada:
• Gramática na Forma Normal de ChomskyG
• String
Saída:
ou não )(GLw
w
se
22
Algoritmo CKY
• Gramática :G
bB
ABB
aA
BBA
ABS
• String : w aabbb
Exemplo de entrada:
23
a a b b b
aa ab bb bb
aab abb bbb
aabb abbb
aabbb
aabbb
24
aA
aA
bB
bB
bB
aa ab bb bb
aab abb bbb
aabb abbb
aabbb
bB
ABB
aA
BBA
ABS
25
aA
aA
bB
bB
bB
aa abS,B
bbA
bbA
aab abb bbb
aabb abbb
aabbb
bB
ABB
aA
BBA
ABS
26
aA
aA
bB
bB
bB
aa abS,B
bbA
bbA
aabS,B
abbA
bbbS,B
aabbA
abbbS,B
aabbbS,B
bB
ABB
aA
BBA
ABS
27
Portanto: )(GLaabbb
Complexidade deTempo :3||w
O algoritmo CYK pode ser facilmente convertido em um parser
Observação:
28
Autômatos de PilhaPDAs
29
Autômato de Pilha -- PDA
String de entrada
Pilha
Estados
30
Símbolo Marcador de Fundo de Pilha
Pilha Pilha
fundo de pilhasímbolo especial
31
Os Estates
Símbolona entrada
Símbolodesempilhado
Símboloempilhado
32
topo
entrada
pilha
Substitua
$ $
c
33
Push
$ $
c
topo
entrada
pilha
34
Pop
$ $
topo
entrada
pilha
35
Não Muda
$ $
btopo
entrada
pilha
36
Não Determinismo
37
NPDA: PDA Não Determinista
Exemplo:
38
0q
Exemplo de Execução:
Entrada
estadocorrente
Instante 0
Pilha
39
Entrada
Instante 1
Pilha
40
Entrada
Pilha
Instante 2
41
Input
Pilha
Instante 3
42
Entrada
Pilha
Time 4
43
Entrada
Pilha
Instante 5
44
Entrada
Pilha
Instante 6
45
Entrada
Pilha
Instante 7
46
Entrada
Instante 8
aceita
Pilha
47
Um string é aceito se:
• Toda a entrada é consumida
• O último estado é um estado final
A pilha está vazia no final
48
O string de entradaé aceito pelo NPDA:
aaabbb
49
}0:{ nbaL nn
é a linguagem aceita pelo NPDA:
Em geral,
50
Autômato de Pilha - convenções• Adotamos a convenção de que um autômato
de pilha M aceita um string w se algum caminho de computação de w em M, iniciando no estado inicial, com a pilha vazia, termina em um estado final, com a pilha vazia.
• Assim, todo autômato começa emplilhando o marcador de fundo de pilha e toda transição que leva a um estado final desempliha esse marcador de fundo de pilha.
• Para simplificar, daqui em diante vamos supor que a pilha já começa tendo o marcador no fundo e que um string é aceito se a computação termina em um estado final, tendo a pilha apenas este marcador.
51
Outro Exemplo de NPDA
bb
aa
,
,
bb
aa
,
,
NPDA M
}{)( RwwML
52
Exemplo de Execução:
Entrada
Instante 0
Pilha
bb
aa
,
,
bb
aa
,
,
53
Entrada
Instante 1
Pilha
bb
aa
,
,
bb
aa
,
,
54
Entrada
Instante 2
Pilha
bb
aa
,
,
bb
aa
,
,
55
Entrada
Instante 3
Pilha
bb
aa
,
,
bb
aa
,
,
56
Entrada
Instante 4
Stack
bb
aa
,
,
bb
aa
,
,
57
Entrada
Instante 5
Pilha
1q
bb
aa
,
,
bb
aa
,
,
58
Entrada
Instante 6
Pilha
bb
aa
,
,
bb
aa
,
,
aceita