A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Identificando Linguagens Não Regulares Linguagens regulares podem ser finitas; Uma linguagem é regular sss, em processando qualquer cadeia, a informação.

Apresentações semelhantes


Apresentação em tema: "Identificando Linguagens Não Regulares Linguagens regulares podem ser finitas; Uma linguagem é regular sss, em processando qualquer cadeia, a informação."— Transcrição da apresentação:

1 Identificando Linguagens Não Regulares Linguagens regulares podem ser finitas; Uma linguagem é regular sss, em processando qualquer cadeia, a informação a ser armazenada em qualquer estágio é estritamente limitada.

2 Exemplo: A linguagem L={ a n b n |n 0} não é regular. Suponha que L é regular. Então existe um AFD M=(Q, {a,b},S,q 0, F) que a reconhe-ce. Seja k o número de estados de M. Consideremos o funcionamento de M na entrada a n b n, onde n k

3 aaaaaaaaaabbbbbbbbbb q 0 n n r Como n k, deve existir algum estado p tal que M está em p mais de uma vez enquanto percorrendo a parte inicial da sequência de as (princípio da casa dos pombos).

4 Quebre a n b n em 3 pedaços u, v, w onde v é a cadeia de as percorrida entre duas ocorrências de p. aaaaaa aaaa bbbbbbbbbb q 0 u p v p w r

5 Seja j=|v|>0 (j=4, no exemplo) * (q 0,u) = p * (p,v) = p * (p,w) = r F Logo podemos remover v o que resultaria numa cadeia ser erroneamente aceita:

6 *(q 0,uw) = *( *(q 0,u),w) = *(p,w) = r F aaaaaa bbbbbbbbbb q 0 p r u w

7 Lema do Bombeamento (Pumping Lemma) TEOREMA: Seja L uma linguagem regular. Então existe um inteiro positivo m, tal que w L com |w| m pode ser decomposta como w= xyz com |xz| m e |y| 1 tal que w i =xy i z está também em L para todo i = 0,1,2,...

8 Prova Sejam q 0, q 1,…, q n os estados do AFD que reconhece L. Agora tome uma cadeia w L tal que |w|=k m=n+1. Seja q 0,q i,q j, …,q f o conjunto de estados do autômato no reconhe- cimento de w. Como esta cadeia tem no mínimo n+1 entradas, pelo menos um estado deve ser repetido, e tal repetição não deve começar após o n-ésimo movimento.

9 Portanto, a sequência deve ter a seguinte forma q 0,q i,q j, …,q r, …,q r, …, q f indicando que devem existir subcadeias x, y, z de w tal que *(q 0,x)=q r, *(q r,y)=q r, *(q r, z)=q f com |xz| n+1 = m e |y| 1. Donde segue imediatamente que *(q 0,xz)=q f, *(q 0, xy 2 z)=q f, *(q 0,xy 3 z)=q f... q.e.d

10 Gramáticas Gramática uma ferramenta comum e poderosa para definir linguagens. Definição: Uma gramática G é uma quádrupla G=(V, T, S, P) onde: –V é um conjto finito de variáveis ou símbolos não-terminais; –T é um conjunto finito de símbolos terminais; –S V é um símbolo especial chamado de símbolo inicial ou variável de início; –P é um conjunto finito de produções

11 As regras de produção são da forma x y, onde x é um elemento de (V T) + e y está em (V T)*. As produções são aplicadas como segue: –dada uma cadeia w da forma w=uxv, dizemos que a produção é aplicável a esta cadeia e podemos usá-la para trocar x por y, obtendo assim uma nova cadeia z=uyv Isto é escrito por w z (w deriva z ou z é derivada de w ou z deriva de w).

12 Se w1 w2... wn, dizemos que w1 deriva wn e escrevemos w1 *wn * indica que foi tomado um número não-especificado de etapas (inclu- indo zero) para derivar wn de w1. Logo w *w sempre se dá. Para indicar que pelo menos uma produção foi aplicada, escreve- mos w + v

13 Aplicando as regras de produção em ordens diferentes, uma gramática pode gerar muitas cadeias. O conjunto de todas tais cadeias é a linguagem definida ou gerada pela gramática.

14 Linguagem Gerada Definição: Seja G = (V, T, S, P) uma gramática. Então o conjun- to L(G) = {w T* | S *w} é a linguagem gerada por G. Se w L (G), então a sequência S w1 w2 … wn w é uma derivação da sentença (ou palavra) w.

15 Exemplo G = onde P é dado por S aSb e S Então S aSb aaSbb aabb Logo podemos escrever S *aabb Uma gramática define completamen- te L(G), porém pode não ser fácil obter uma descrição explícita da linguagem a partir da gramática. Neste exemplo, no entanto, não é difícil conjecturar que L(G)={a n b n |n 0}

16 Gramáticas Regulares Uma gramática G = diz-se linear à direita se todas as produções são da forma A xB ou A x onde A, B V, e x T*. e linear à esquerda se todas as produções são da forma A xB A x

17 Uma gramática regular é uma que é ou linear à direita ou linear à esquerda. Observe que numa gramática regular no máximo aparece uma variável no lado direito de qualquer produção. Além disso, essa variável está mais à esquerda ou mais a direita de qualquer produção.

18 Exemplos G 1 = ({s},{a,b},S,P 1 ), P 1 : S abS|a é linear à direita. S abS ababS ababa L (G 1 ) é a linguagem L((ab)*a) G 2 = ({S,S 1,S 2 },{a,b},S,P 2 ), com produções S S 1 ab, S 1 S 1 ab|S 2, S 2 a é linear à esquerda. S S 1 ab S 1 abab S 2 abab aabab L(G 2 ) é a linguagem L(a(ab)*)

19 Cuidado! A gramática G=({S,A,B},{a,b},S,P) com produções S A A aB| B Ab não é regular!

20 Gramáticas Lineares À Direita Geram Linguagens Regulares Construir um AFND que simula as derivações de uma gramática linear à direita. Ab…cD Ab…cdE por D dE O AFND vai do estado D para o estado E quando o símbolo d for encontrado.

21 Teorema. Seja G = (V, T, S, P) uma gramática linear à direita. Então L(G) é uma linguagem regular. Prova. Assumir V={V 0,V 1,…,V p }, com S=V 0 e que temos produ- ções da forma V 0 v 1 V i, V i v 2 V j, …, ou V n v l, …

22 Se w é uma cadeia em L(G), então por causa das formas das produções em G, a derivação deve ter a forma da equação acima. V 0 v 1 V i v 1 v 2 V j * v 1 v 2 … v k V n v 1 v 2 … v k v e = w

23 O autômato a ser construído repro- duzirá a derivação, consumindo cada um desses vs. O estado inicial do autômato será ro- tulado V 0, e para cada V i existirá um estado não final rotulado V i. Para cada V i a 1 a 2 …a m V j definire- mos tal que *(V i,a 1 a 2 …a m )=V j Para cada V i a 1 a 2 …a m, *(V i,a 1 a 2 …a m )=V f, onde V f é um estado final. Os estados intermedi- ários não são de interesse e podem ser dados rótulos arbitrários.

24 vivi vjvj vfvf vivi a 1 a 2 a m... representa V i a 1 a 2 …a m V j a 1 a 2 a m … representa V i a 1 a 2 …a m

25 Suponha agora que w L (G). No AFND existe uma aresta de V 0 a V i rotulada v 1, de V i a V j rotulada v 2, etc., tal que V f *(V 0, w), e w é aceita por M. Inversamente, suponha que w é aceita por M. Para aceitar w o autômato tem de passar pela sequência de estados V 0, V i,…,V f usando caminhos rotulados v 1,v 2,…,v l

26 Portanto, w deve ter a forma w=v 1 v 2 …v k v l e a derivação V 0 v 1 V i v 1 v 2 V j *v 1 v 2 …v k V k v 1 v 2 …v k v l é possível. Logo W está em L(G), e assim o teorema está provado.

27 Exemplo Construir um autômato que aceita a linguagem gerada pela gramática V 0 aV 1 V 1 abV 0 |b começamos do grafo de transição com vértices V 0, V 1 e V f.

28 A primeira regra de produção cria uma aresta rotulada a entre V 0 e V 1. Para segunda regra, precisamos introduzir um vértice adicional tal que existe um caminho rotulado ab entre V 1 e V 0.

29 v0v0 v1v1 vfvf b b a a v2v2 Finalmente, precisamos adicionar uma aresta rotulada b entre V 1 e V f A linguagem gerada pela gramática e reconhecida pelo autômato é a linguagem regular L ((aab)*ab)

30 Gramáticas Lineares À Direita Para Linguagens Regulares Começamos agora do AFD para a linguagem e invertemos a construção do teorema anterior Os estados do AFD tornam-se as variáveis da gramática, e Os símbolos que causam as transições tornam-se os terminais nas produções

31 Teorema: Se L é uma linguagem regular sobre o alfabeto, então existe uma gramática linear à direita G = (V,,S,P) tal que L = L(G).

32 Prova: Seja M = (Q,,,q 0, F) um AFD que aceita L. Assumiremos que Q = {q 0,q 1,…, q n ) e = {a 1, a 2,…a m }. Vamos construir uma gramática linear à direita G = (V,, S, P) com V = {q 0, q 1,…,q n } e S = q 0. Para cada transição (q i, a j ) = q k de M, colocamos em P a produção q i a j q k. Além disso, se q k está em F, acrescentamos a P a produção q.

33 Primeiro mostramos que G defini- da dessa maneira pode gerar toda cadeia em L. Considere w L da forma w = a i a j …a k a l. Para M aceitar essa cadeia ele deve se movimentar via (q 0, a i ) = q p, (q p, a j ) = q r,... (q s, a k ) = q t, (q t, a l ) = q f F

34 Por construção, a gramática terá uma produção para cada um desses s. Portanto, podemos fazer a derivação q 0 a i q p a i a j q r *a i a j …a k q t a i a j …a k a l q f a i a j …a k a l com a gramática G, e w L(G).

35 Inversamente, se w L(G), então sua derivação deve ter a forma da equação acima, mas isto implica que (q 0, a i, a j …a k a l ) = q f, completando a prova. q.e.d.

36 Equivalência Entre Linguagens Regulares E Gramáticas Regulares Os resultados anteriores estabele- cem a conexão entre linguagens regulares e gramáticas lineares à direita. Podemos fazer uma conexão análo- ga entre linguagens regulares e gramáticas lineares à esquerda, mostrando assim, a equivalência de gramáticas e linguagens regulares.

37 Teorema. Uma linguagem é regular se e somente se existe uma gramáti- ca regular G tal que L = L(G).


Carregar ppt "Identificando Linguagens Não Regulares Linguagens regulares podem ser finitas; Uma linguagem é regular sss, em processando qualquer cadeia, a informação."

Apresentações semelhantes


Anúncios Google