• Nenhum resultado encontrado

Linguagens Formais e Autômatos

N/A
N/A
Protected

Academic year: 2019

Share "Linguagens Formais e Autômatos"

Copied!
31
0
0

Texto

(1)

DCC063

Linguagens Formais

e Autômatos

(2)

Formas Normais

 As formas normais estabelecem restrições rígidas na definição das produções, sem reduzir o poder de geração das GLC.

 Uma forma normal descreve um conjunto de condições que todas as regras da gramática deve satisfazer

GLC

(3)

Formas Normais

 São usadas principalmente no desenvolvimento

de algoritmos (com destaque para

reconhecedores de linguagens) e na prova de teoremas. As formas normais estudadas serão:

 Forma Normal de Chomsky

 Forma Normal de Greibach

GLC

(4)

Forma Normal de Chomsky

 Uma GLC G = (N, T, P, S) é dita na Forma Normal de Chomsky (FNC) se todas as suas produções são da forma:

 A → BC ou

 A → a

onde A, B e C  N e a  T

 Linguagem não aceita palavra vazia

GLC

(5)

FNC (algoritmo GLCFNC)

 Etapa 1 – Simplificação da Gramática :  Eliminação das -produções

 Eliminação das produções da forma A → B (produções unitárias)

 Eliminação dos símbolos inúteis (não geradores e inalcançáveis)

 Gramática resultante: G1 = (N1, T1, P1, S)

GLC

(6)

FNC (algoritmo GLCFNC)

 Etapa 2 – Transformação do lado direito das produções de comprimento maior ou igual a dois:

 Garante que o lado direito das produções com comprimento  2 é composto exclusivamente por variáveis.

 exclusão de um terminal pode ser realizada colocando-se um não terminal intermediário. Por exemplo, é possível substituir a por Ca e incluir a produção Ca → a

GLC

(7)

FNC (algoritmo GLCFNC)

 Etapa 2 – Transformação do lado direito das produções de comprimento maior ou igual a dois:

 Para todo terminal a que aparecer em uma forma sentencial de comprimento 2 ou mais, crie uma nova variável, digamos A. Essa variável terá apenas uma produção Aa. Agora usamos A no lugar de a

em todo lugar em que a aparecer em uma forma sentencial de comprimento 2 ou mais.

GLC

(8)

FNC (algoritmo GLCFNC)

 Etapa 3: Transformação do lado direito das produções de comprimento maior ou igual a três em produções com exatamente duas variaveis:

 O lado direito da produção com comprimento > 1 é composto por exatamente duas variáveis.

 Desmembrar as formas sentenciais de comprimento 3 ou mais em uma cascata de produções, cada uma com uma forma sentencial consistindo em 2 variáveis:

GLC

(9)

GLC

(10)

FNC (algoritmo GLCFNC)

 Exemplo 1. Transforme a gramática abaixo na Forma Normal de Chomsky

E → E+E | E*E | [E] | a

GLC

(11)

GLC

FNC (algoritmo GLCFNC)

 Exemplo 1.

1) a gramática já está simplificada

2)exceto a produção E → a, as demais produções devem ser substituídas:

E → EC+E | EC*E | C[EC] | a C+ → +

C* → * C[→ [ C] →]

(12)

GLC

FNC (algoritmo GLCFNC)

 Exemplo 1.

3) As produções de comprimento  3 devem ser substitudas por:

E → ED1 | ED2 | C[D3 D1 → C+E

D2 → C*E D3 → EC[

(13)

GLC

E → ED1 | ED2 | C[D3 | a D1 → C+E

D2 → C*E D3 → EC[

C+ → + C* → * C[→ [ C] →]

FNC (algoritmo GLCFNC). Exemplo 1. GLC final na FNC:

(14)

FNC (algoritmo GLCFNC)

 Exemplo 2. Transforme a gramática abaixo na Forma Normal de Chomsky

S → SS | (S) | 

GLC

(15)

GLC

FNC (algoritmo GLCFNC)

 Exemplo 2.

1) Simplificando a gramática

1.1 – Eliminação das -produções S → SS | (S) | S | ()

1.2 – Eliminação das produções unitárias S → SS | (S) | ()

(16)

GLC

FNC (algoritmo GLCFNC)

 Exemplo 2.

2) Subistituição dos terminais nas produções com comprimento  2:

S → SS | ASF | AF A → (

F → )

(17)

GLC

FNC (algoritmo GLCFNC)

 Exemplo 2.

3) Produção com comprimento  3:

S → SS | ASF | AF A → (

F → )

S → SS | AB | AF

B → SF A → ( F → )

(18)

Forma Normal de Greibach

 Uma GLC G = (N, T, P, S) obedece a Forma Normal de Greibach (FNG) se todas as suas produções são da forma:

A → a

onde AN, aT e N* (palavra de variáveis).

 O algoritmo de transformação é composto por 6 etapas, sendo que a primeira corresponde a primeira etapa da FNC (simplicação da GLC).

GLC

(19)

Forma Normal de Greibach

 Algoritmo para transformar GLC → FNG.

 Simplificação da gramática (-produção, unitárias e símbolos inúteis – não geradores e inalcançáveis).

 Renomeação (reordenação) das variáveis em uma ordem crescente qualquer.

 Transformação das produções para a forma

ArAs onde: rs e (NT)*.

 Remoção da recursão a esquerda.

GLC

(20)

Forma Normal de Greibach

 Algoritmo para transformar GLC → FNG.

 Um terminal no início do lado direito de cada produção:

◼ Após a etapa anterior, todas as produções são da forma ArAs com r < s.

◼ Consequentemente, as produções da maior variável An só podem iniciar por um terminal no lado direito.

◼ Assim, se substituir An em An-1An por suas correspondentes produções, o lado direito de An-1 também começarão por um terminal.

◼ Repetindo-se esse passo para An-2, An-3, ... A1, todas as produções começarão por um terminal.

GLC

(21)

Forma Normal de Greibach

 Algoritmo para transformar GLC → FNG.

 Converter as produções para a forma A → a onde  é composta por variáveis.

◼ Análogo a correspondente da FNC (substituir os terminais, se existirem, em  por novas variáveis).

GLC

(22)

GLC

GLC → FNG.

Exemplo 1. Tranformar pra FNG a seguinte gramática:

S → AA | a A → SS | b

(23)

GLC

FNG (algoritmo GLCFNG)

 Exemplo 1.

1) Simplificação. Já está simplificada

2) Renomeação (reordenação) das variáveis. Convencionaremos a mesma ordem na qual elas aparecem na gramática (de cima p/ baixo):

(1) S → AA | a (2) A → SS | b

(24)

GLC

FNG (algoritmo GLCFNG)

 Exemplo 1.

3) Tornar Ar → As tal que r  s e retirar a RE.

(1) S → AA | a (2) A → SS | b

Resultado

(1) S → AA | a

(2) A → AAS | aS | b

(25)

GLC

FNG (algoritmo GLCFNG)

 Exemplo 1.

3) Tornar Ar → As tal que r  s e retirar a RE. Retirar a RE

(1) S → AA | a

(2) AAAS | aS | b

Resultado

(1) S → AA | a

(2) A → aS | b | aSB | bB B → AS | ASB

(26)

GLC

FNG (algoritmo GLCFNG)

 Exemplo 1.

4) Terminal no início de cada lado direito.

(1) S → AA | a

(2) A → aS | b | aSB | bB B → AS | ASB

Substituindo as producões de A em S → AA (1) S → aSA | bA | aSBA | bBA | a (2) A → aS | b | aSB | bB

B → AS | ASB

(27)

GLC

FNG (algoritmo GLCFNG)

 Exemplo 1.

Substituindo as producões de A em B → AS | ASB (1) S → aSA | bA | aSBA | bBA | a

(2) A → aS | b | aSB | bB

B → aSS | bS | aSBS | bBS | aSSB | bSB | aSBSB | bBSB

5) A → a, onde aT e N*. As produções já estão nesta forma.

(28)

GLC

Exercícios

Transformar as seguintes GLC para a FNC e FNG.

1) E → E + T | T T → T * F | F

F → (E) | id

2) S → SS | a

3) S → aSa | bSb | c 4) S → aSb | aSc | d

5) S → aSbS | bSaS | ab | ba

(29)

GLC

Propriedades de fechamento

Teorema: As linguagens livres de contexto são

fechadas em relação as operações de:

 União:

Se L1 e L2 são LLCL1L2 também é uma LLC.

 Concatenação:

Se L1 e L2 são LLCL1L2 também é uma LLC.

 Estrela de Kleene (*):

Se L é uma LLCL* também é uma LLC.

(30)

GLC

Propriedades de fechamento

Teorema: A classe de LLC não é fechada para as

operações de interseção ou complementação.

 Demonstração. Sejam:

 L1 = {anbncm | m, n  0} uma LLC  L2 = {ambncn | m, n  0} uma LLC

 Portanto, L1  L2

L = {anbncn | n  0}.

L não é uma LLC (fato que não foi provado. Deve-se usar o LB para LLC para provar que L não é uma LLC).

(31)

GLC

Propriedades de fechamento

Teorema: A interseção de LLC com uma LR é uma

LLC.

 Exemplo. Sejam:

 L1 = a*b* uma LR

 L2 = {w | w {a, b}* e |w|a = |w|b} uma LLC

 Portanto, L1  L2 é

L = {anbn| n0}

Como se sabe, L é uma LLC (foi provado que L não é regular e foi desenvolvido um AP para L).

Referências

Documentos relacionados

13 Além dos monômeros resinosos e dos fotoiniciadores, as partículas de carga também são fundamentais às propriedades mecânicas dos cimentos resinosos, pois

Todavia, nos substratos de ambos os solos sem adição de matéria orgânica (Figura 4 A e 5 A), constatou-se a presença do herbicida na maior profundidade da coluna

O trabalho de migrantes de Fagundes- PB nas usinas Maravilha e Santa Tereza, em Pernambuco aborda as mudanças estruturais do Sistema Capitalista, que atingem a questão do mercado

A combinação dessas dimensões resulta em quatro classes de abordagem comunicativa, que podem ser exemplificadas da seguinte forma: interativo/dialógico: professor e

modo favorável; porem uma contusão mais forte pode terminar-se não só pela resolução da infiltração ou do derramamento sanguíneo no meio dos. tecidos orgânicos, como até

Na primeira, pesquisa teórica, apresentamos de modo sistematizado a teoria e normas sobre os meios não adversarias de solução de conflitos enfocados pela pesquisa, as características

Outro ponto importante referente à inserção dos jovens no mercado de trabalho é a possibilidade de conciliar estudo e trabalho. Os dados demonstram as