Formas Normais de Gramáticas Livres de Contexto

58
1 Formas Normais de Gramáticas Livres de Contexto

description

Formas Normais de Gramáticas Livres de Contexto. Forma Normal de Chomsky. Todas as produções têm a forma:. e. variável. variável. terminal. Exemplos :. Forma Normal de Chomsky. Não Forma Normal de Chomsky. Conversão para Forma Normal de Chomsky. Exemplo :. Não Forma Normal - PowerPoint PPT Presentation

Transcript of Formas Normais de Gramáticas Livres de Contexto

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

Variáveis inatingíveis

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 Estados

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

Neste exemplo, 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 (possivelmente com a pilha vazia).

• Todo autômato começa com a pilha contendo apenas o marcador de fundo de pilha. Se toda transição que leva a um estado final desempilha esse marcador, garante-se que a computação termina c/ pilha vazia.

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