Escolar Documentos
Profissional Documentos
Cultura Documentos
Notas de Aula
Contedo
1 Introduo 2 Conceitos Bsicos 3 Gramticas 3.1 Linguagem Gerada por uma Gramtica . . . . . . . . . . . . . . . . . 3.2 Tipos de Gramticas . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Classicao de Linguagens . . . . . . . . . . . . . . . . . . . . . . 4 Autmatos Finitos 4.1 Autmatos Finitos Determinsticos . . . . . . . . 4.2 Palavra aceita por um AFD . . . . . . . . . . . . 4.3 Autmatos Finitos No-Determinsticos . . . . . 4.4 Palavra aceita por um AFN . . . . . . . . . . . . 4.5 Equivalncia de AFNs e AFDs . . . . . . . . . . 4.6 Autmatos Finitos com Transies Vazias - AFN 4.7 Equivalncia entre AFN e AFD . . . . . . . . . 4.8 Equivalncia entre AFN e GR . . . . . . . . . . 4.9 Minimizao de Autmatos Finitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2 4 5 5 6 8 8 10 12 13 16 19 21 24 28 31 32 34
5 Expresses Regulares 5.1 Leis Algbricas para ERs . . . . . . . . . . . . . . . . . . . . . . . 5.2 Equivalncia de ERs e AFNs . . . . . . . . . . . . . . . . . . . . .
1 Introduo
Linguagem um meio de comunicao usado por indivduos de uma comunidade. composta por: palavras e regras gramaticais. Um linguagem dita formal quando pode ser representada por um sistema matemtico. denida por: sintaxe (estrutura) e semntica (signicado)
2 Conceitos Bsicos
Alfabeto (ou vocabulrio): conjunto nito de smbolos Exemplos: 1 = {a, b, c, . . . , z} 2 = {0, 1} 3 = {x|x N x 9} Palavra (ou string ou sentena): sequncia nita de smbolos provenientes de um alfabeto. Exemplos: palavras sobre o alfabeto 2 : 001 e 10001. Tamanho (ou comprimento) de uma palavra: nmero de smbolos que compem a palavra. Exemplo: palavra w = abb tem tamanho |w| = 3 Palavra vazia - : palavra que no contm nenhum smbolo. Tamanho || = 0 Potncias de um alfabeto: k o conjunto de palavras de tamanho k sobre o vocabulrio Exemplos: considere o vocabulrio = {0, 1}: 0 = {} 1 = {0, 1} 2 = {00, 01, 10, 11} Quantas palavras tem o conjunto 3 ? o conjunto de todas as palavras compostas por smbolos de , isto , = 0 1 2 . . .. Exemplo: = {, 0, 1, 00, 11, 01, 10, 000, . . .} + = {} Concatenao: se v e w so palavras, vw a concatenao de v e w. Exemplos: considere v = abc e w = xyz vw = abcxyz wv = xyzabc w = w = w
Prexo: sequncia inicial de smbolos de uma palavra. Exemplos: considere a palavra abcb. So prexos desta palavra: , a, ab, abc, abcb Suxo: sequncia nal de smbolos de uma palavra. Exemplos: considere a palavra abcb. So suxos desta palavra: , b, cb, bcb, abcb Subpalavra: qualquer sequncia contnua de smbolos de uma palavra. Exemplos: considere a palavra abcb. So subpalavras palavra: todos os prexos e suxos, bc, c Reverso de uma palavra: se u Sigma , uR o reverso de u, denido por: { , se u = ; uR = awR , se u = wa, onde w e a . Exemplos: considere a palavra v = abcbb, ento v R = bbcba. Linguagem: qualquer conjunto de palavras sobre um alfabeto, ou seja, L uma linguagem sobre um alfabeto V , se L V . Podem ser nitas, innitas ou vazia. Exemplos: Conjunto das palavras da Lngua Portuguesa; Conjunto dos programas vlidos em C; Conjunto das palavras formadas por n 0s, seguidos por n 1s: {, 01, 0011, . . .}; Conjunto das palavras com o mesmo nmero de 0s e 1s: {, 0101, 01, 0110, 1100, . . .}. Linguagem vazia: (no possui nenhuma palavra). Linguagem contendo somente a palavra vazia: {}. OBS.: = {} Representao: Listar as palavras (para linguagens nitas); Descrio algbrica. Ex.: {an bn cn |n 1}; Denir um algoritmo que determine se uma palavra pertence ou no a uma linguagem (reconhecedor). Ex.: autmatos nitos; Denir um mecanismo que gera todas as palavras da linguagem (gerao). Ex.: gramticas
3 Gramticas
um formalismo usado para gerar o subconjunto de palavras sobre um alfabeto que faz parte de uma linguagem. Permitem descrever linguagens innitas de forma nita. Denio 3.1 (Gramticas) Uma gramtica G denida por: G = (N, T, P, S), onde - N o conjunto de variveis; - T o conjunto de smbolos terminais, tal que N T = ; - P = { | V + V } o conjunto de regras de produo, onde V = N T; - S N a varivel inicial da gramtica. Exemplo: gramtica que gera os nmeros inteiros no negativos: G = (N, T, P, I), onde N = {I, D}; T = {0, 1, . . . , 9}; P = {I D|DI, D 0|1| . . . |9}. Esta gramtica gera sentenas do tipo 00, 0012, . . . Como podemos alter-la para evitar 0s esquerda? Como usar essas regras para produzir o natural 150? I DX 1X 1BX 1DX 15X 15B 150 Cada aplicao de regra realizada para produzir o nmero 150 denominada derivao. Denio 3.2 (Derivaes) Uma derivao, denotada por , a operao de substituio realizada de acordo com as regras da gramtica. Sequncias de zero ou mais derivaes so denotadas por e sequncias de uma ou mais derivaes so denotadas por + . Exemplos: considerando a sequncia de derivaes acima (para gerar o numeral 150), temos: S 150, S S, S + 150, S + S. Exerccios 3.1
1. Considere a seguinte gramtica: ({S, A, B}, {0, 1}, {S AB, A 0|AB, B 1|1B}, S) (a) Que linguagem descrita por essa gramtica? (b) Descreva duas derivaes diferentes para produzir a seguinte palavra: 0111
Palavra de uma linguagem: sequncia de terminais obtida a partir do smbolo inicial da gramtica que gera tal linguagem, atravs de derivaes sucessivas. Exemplos: considerando a gramtica G, denida acima, temos as seguintes palavras na linguagem gerada por G: 0, 1, 10, 120, . . . Forma sentencial: sequncia de terminais e variveis obtida a partir do smbolo inicial da gramtica, atravs de derivaes sucessivas. Exemplos: considerando a gramtica G, denida acima, temos as seguintes formas sentenciais: DX, 1BX, 15B, . . .
Exerccios 3.2 1. Qual a linguagem gerada pela gramtica a seguir? G = ({S}, {0, 1}, S 0S1|01, S)
Sensveis ao Contexto - GSC (tipo 1): regras do tipo , tal que || ||. OBS.: No so possveis regras do tipo S ; Livre de Contexto - GLC (tipo 2): regras do tipo , tal que N e V ; Regulares - GR (tipo 3): regras do tipo v, tal que N , N {} e v T . Pode-se estender uma gramtica incluindo regras do tipo S , porm a varivel S no poder aparecer do lado direito de nenhuma regra. Exemplo: Considere a gramtica a seguir: G = ({S, C, B}, {a, b, c}, P, S), onde P = {S aSBC|aBC, CB BC, aB ab, bB bb, bC bc, cC cc} L(G) = {abc, aabbcc, aaabbbccc, . . .} Podemos estend-la para incluir a palavra vazia como segue: G = ({S , S, C, B}, {a, b, c}, P {S |S}, S ) L(G ) = {, abc, aabbcc, aaabbbccc, . . .}
Figura 1: Hierarquia de Chomsky. Exerccios 3.3 1. Construa uma gramtica G tal que: (a) L(G) = {an bm |n 0 m 1} (b) L(G) = {ai bj ci |i 0 j 1} 2. Construa uma GR tal que: L(G) = {w|w {0, 1}+ e no possui 1 s consecutivos} a 3. Construa uma GLC tal que: L(G) = {w|w {0, 1, 2}+ e todos os 0 s sejam consecutivos} 4. Seja G = ({S, B, C}, {a, b, c}, P, S), com P = {S aS|bB, B cB|cC, C cS|c}. Pede-se: (a) determine L(G) (b) construa G , tal que L(G ) = L(G) {} (c) verique se as palavras abaixo pertencem a L(G): abccc accabcc bcccabcc abccbbc
4 Autmatos Finitos
So mquinas de estados nitos que reconhecem linguagens regulares. So compostas de trs componentes: Fita: dividida em clulas e armazena a informao a ser processada Unidade de Controle: registra o estado da mquina. A cabea de leitura l um smbolo de cada vez da ta e movimenta-se somente para a direita. Funo de Transio: Baseada no smbolo lido e o estado corrente da mquina, determina um novo estado. Restries: A ta nita para os dois lados e a entrada ocupa toda a ta; Pode-se apenas realizar leituras na ta; Existe um nmero nito e pr-denido de estados; A cabea de leitura comea na clula mais a esquerda da ta.
Figura 2: Autmato nito determinstico que reconhece palavras contendo aa ou bb como subpalavras.
Denio 4.1 (Autmato Finito Determinstico - AFD) Um autmato nito determinstico denido por: A = (Q, , , q0 , F ), onde Q um conjunto nito de estados; um alfabeto (smbolos de entrada); : Q Q uma funo parcial (funo de transio); q0 Q o estado inicial; F Q o conjunto de estados nais. Exemplo: denio formal do autmato ilustrado na gura 2. A = ({q0 , q1 , q2 , q3 }, {a, b}, , q0 , {q3 }), onde (q0 , a) = q1 (q1 , a) = q3 (q2 , a) = q1 (q3 , a) = q3 (q0 , b) = q2 (q1 , b) = q2 (q2 , b) = q3 (q3 , b) = q3
Outra representao: atravs de matrizes de transies. O estado inicial marcado com e os estados nais so marcados com . Exemplo: a matriz de transies correspondente ao ADF da gura 2 mostrada a seguir: q0 q1 q2 q3 a q1 q3 q1 q3 b q2 q2 q3 q3
Exerccios 4.1 1. Construa o diagrama de transies de um AFD que reconhece a linguagem {an b|n 1}. 2. Represente o AFD denido no exerccio anterior formalmente e atravs da matriz de transies.
Este autmato aceita a palavra 01101 pois possui o caminho q0 q1 q2 q2 q2 q2 que satisfaz as restries citadas acima. Denio 4.2 Dado um AFD A = (Q, , , q0 , F ), a extenso da funo de transio para o domnio Q a funo : Q Q denida por: Base: (q, ) = q Induo: (q, wa) = ((q, w), a) Exemplo: considerando o AFD anterior, vamos calcular (q0 , 0110). (q0 , 0110) = (q0 , 011) = 0 , 01) (q = (q0 , 0) = (q0 , ) = Portanto, (q0 , 0110) = q2 Se (q, v) = p, ento signica que o autmato chega no estado p quando reconhece a palavra v a partir do estado q. Assim podemos dizer que a palavra v aceita pelo AFD se q e p so, respectivamente, o estado inicial e um estado nal deste autmato. Denio 4.3 (Linguagem aceita por um AFD) Dado um AFD A = (Q, , , q0 , F ), a linguagem aceita por A denida por: L(A) = {w|w (q0 , w) F } 10 ((q0 , 011), 0) = (q2 , 0) = q2 ((q0 , 01), 1) = (q2 , 1) = q2 ((q0 , 0), 1) = (q1 , 1) = q2 ((q0 , ), 0) = (q0 , 0) = q1 q0
0 1 1 0 1
Exerccios 4.2 Dena um AFD que reconhea datas vlidas (no considerando anos bissextos) no formato ms/dia, onde o ms e o dia devem ser representados por dois dgitos.
11
Figura 3: Autmato nito no-determinstico que aceita palavras sobre o vocabulrio {0, 1}, terminadas em 01. Denio 4.4 (Autmato Finito No-Determinstico - AFN) Um autmato nito no-determinstico denido por: N = (Q, , , q0 , F ), onde Q um conjunto nito de estados; um alfabeto (smbolos de entrada); : Q P(Q) a funo de transio; q0 Q o estado inicial; F Q o conjunto de estados nais. Exemplo: A denio formal do AFN denido na gura 3 dada por: N = ({q0 , q1 , q2 }, {0, 1}, , q0 , {q2 }), onde (q0 , 0) = {q0 , q1 } (q1 , 0) = (q2 , 0) = E a matriz de transies: q0 q1 q2 0 {q0 , q1 } 12 1 {q0 } {q2 } (q0 , 1) = {q0 } (q1 , 1) = {q2 } (q2 , 1) =
q1 q0 q0
q1 q0
q2 q0
q0
q0
Porm a nica que que satisfaz as restries citadas acima a terceira. Denio 4.5 Dado um AFN N = (Q, , , q0 , F ), a extenso da funo de transio para o domnio Q a funo : Q P(Q) denida por: Base: (q, ) = {q} Induo: (q, wa) = p(q,w) (p, a) Exemplo: considerando o AFN da gura 3, vamos calcular (q0 , 0101). (q0 , 0101) (q0 , 010) (q0 , 01) (q0 , 0) (q0 , ) = = = = = (p, 1) = (q0 , 1) (q1 , 1) = {q0 , q2 } p(q0 ,010) (p, 0) = (q0 , 0) (q2 , 0) = {q0 , q1 } p(q0 ,01) (p, 1) = (q0 , 1) (q1 , 1) = {q0 , q2 } p(q0 ,0) p(q0 ,) (p, 0) = (q0 , 0) = {q0 , q1 } {q0 }
Portanto, (q0 , 0101) = {q0 , q2 } Se (q, v) = {p1 , . . . , pn }, ento signica que o autmato chega aos estados p1 , . . . , pn quando reconhece a palavra v a partir do estado q. Assim podemos dizer que a palavra v aceita pelo AFN se q o estado inicial e se existe pelo menos um 1 i n, tal que pi um estado nal deste autmato. Denio 4.6 (Linguagem aceita por um AFN) Dado um AFN N = (Q, , , q0 , F ), a linguagem aceita por N denida por: L(N ) = {w|w (q0 , w) F = }
13
Exerccios 4.3 1. Dena um AFD para cada uma das seguintes linguagens: (a) {w|w {a, b, c, d} e w tem um nmero par de smbolos b}. (b) {w|w {a, b, c, d} e w contm a sequncia aab }. (c) {w|w {0, 1} e w possui um nmero par de 0s e um nmero mpar de 1s. 2. Considere os seguintes AFD com = {0, 1}: A = ({s0 , s1 }, , A , s0 , {s1 }) e B = ({s0 , s1 , s2 }, , B , s0 , {s1 , s2 }) com as funes de transies dadas por: A (s0 , 0) = s0 A (s0 , 1) = s1 A (s1 , 0) = s0 A (s1 , 1) = s1 B (s0 , 0) = s1 B (s0 , 1) = s2 B (s1 , 1) = s2 B (s2 , 0) = s1
(a) Represente cada um dos autmatos por um diagrama de transies. (b) Diga quais das seguintes palavras so aceitas pelos autmatos: 101 111 11001 01010 00011
(c) Determine B (s0 , 0101) mostrando a sequncia de passos para encontrar o resultado. (d) Quais as linguagens denidas pelos autmatos (descreva informalmente)? 3. Dena AFNs que reconheam as seguintes linguagens: (a) conjunto de palavras sobre o alfabeto {a, b, c} tal que o suxo seja abc ou bca. (b) conjunto de palavras sobre o alfabeto {0, 1, 2} tal que o digito nal tenha aparecido antes. (c) conjunto de palavras sobre o alfabeto {x, y} tal que possuam xx ou yy como subpalavra. 4. Considere o seguinte AFN com = {a, b}: X = ({A, B, C, D, E}, , , A, {A, D, E})
14
com a funo de transies dada por: (A, a) = {B, D} (B, a) = (C, a) = {B, D} (D, a) = (E, a) = (A, b) = (B, b) = {C} (C, b) = (D, b) = {E} (E, b) = {E}
(a) Represente o autmato por um diagrama de transies. (b) Diga quais das seguintes palavras so aceitas por X: ababab abba abaab abbb (c) Determine (A, abab) mostrando a sequncia de passos para encontrar o resultado. (d) Qual a linguagem denida por X (descreva informalmente)?
15
Se uma linguagem L aceita por um Autnomo Finito No-determinstico ento existe um Autnomo Finito Determinstico que aceita L e vice-versa.
Construo dos Subconjuntos Construo de todos os subconjuntos do espao de estados de um AFN. Exemplo:
Para reduzir o tempo de construo, pode-se considerar apenas os estados alcanveis a partir do estado inicial. Assim, o AFD obtido a partir do AFN ilustrado acima, seria como segue:
Denio 4.7 (Construo AF N AF D) Seja N = (QN , N , N , q0 N , FN ) um AFN. Denimos o AFD equivalente D = (QD , D , D , q0 D , FD ) da seguinte forma: QD = P(QN ) D = N q0 D = {q0 N } FD = {S QD |S FN = }
16
N (p, a)
Exerccios 4.4 Construa um AFD a partir do AFN a seguir, eliminando os estados inalcanveis:
Teorema 1 Se D = (QD , , D , q0 D , FD ) um AFD obtido do AFN N = (QN , , N , q0 N , FN ) atravs da construo dos subconjuntos, ento L(D) = L(N ). Prova: por induo em |v| que: D ({q0 }, v) = N (q0 , v) Base: |v| = 0, v = D ({q0 }, ) = {q0 } pela def. de para AFDs N (q0 , ) = {q0 } pela def. de para AFNs Portanto, D ({q0 }, ) = N (q0 , ) Hiptese: |v| = n, v = w D ({q0 }, w) = N (q0 , w) = {p1 , . . . , pk } Passo: |v| = n + 1, v = wa (1) D ({q0 }, wa) = = = (2) N (q0 , wa) = = = D (D ({q0 }, w), a) D ({p1 , . . . , pk }, a) N (p1 , a) . . . N (pk , a) (p, a) pN (q0 ,w) N p{p1 ,...,pk } N (p, a) N (p1 , a) . . . N (pk , a) pela def. de para AFDs pela hiptese pela construo dos subconjuntos pela def. de para AFNs pela hiptese
Alm disso, temos que v aceita por N sempre que S FN = e aceita por D sempre que S FD . Pela construo dos subconjuntos temos que: S FN = S FD Com isso temos que v aceita por ambos D e N se S possuir algum elemento de FN , consequentemente L(D) = L(N ). Teorema 2 Uma linguagem L aceita por um AFD se e somente se ela aceita por um AFN. Prova: (se) L L(AF N ) L L(AF D) verdadeiro pelo Teorema 1. (somente se) L L(AF D) L L(AF N ) 1. Converte-se um AFD em um AFN idntico: Dado um AFD D = (Q, , D , q0 , F ) podemos obter um AFN equivalente N = (Q, , N , q0 , F ), onde N denido por D (q, a) = p N (q, a) = {p} 2. Prova-se por induo em |v| que: D (qo , v) = p N (q0 , v) = {p}. Esta prova anloga a do Teorema 1. Com isso temos que L(D) = L(N ).
18
Denio 4.8 (Autmatos Finitos com Transies Vazias - AFN) Um AFN uma quntupla E = (Q, , , q0 , F ), onde Q o conjunto de estados o alfabeto : Q ( {}) P(Q) a funo de transio q0 Q o estado inicial F Q o conjunto de estados nais Denio 4.9 (Funo fecho vazio de um estado ou conjunto de estados) A funo F echo: Q P(Q) denida recursivamente por: Base: q F echo-(q) Induo: se p F echo-(q), ento (p, ) F echo-(q) F echo-({p1 , . . . , pk }) = F echo-(p1 ) . . . F echo-(pk ). Exemplo: Considere o AFN a seguir:
19
F echo-(q1 ) = {q1 , q2 , q3 , q4 , q6 } F echo-(q4 ) = {q4 } F echo-(q5 ) = {q5 , q7 } Denio 4.10 Dado um AFN E = (Q, , , q0 , F ), a extenso da funo de transi o para o domnio Q a funo : Q P(Q), denida por: Base: (q, ) = F echo-(q) Induo: (q, wa) = F echo-(S), onde S = p(q,w) (p, a) Denio 4.11 (Linguagem aceita por um AFN) Dado um AFN E = (Q, , , q0 , F ), a linguagem aceita por E denida por: L(E) = {w|w (q0 , w) F = }
1. Compute o F echo- para cada estado. 2. Determine (p, abbc), mostrando a sequncia de passos para encontrar o resultado.
20
Construo AF N AF D Dado um AFN E = (QE , , E , q0 E , FE ). O AFD equivalente a E denido por: D = (QD , , D , q0 D , FD ), onde QD = {S|S P(QE ) S = F echo-(S)} q0 D = F echo-(q0 E ) FD = {S|S FE = S QD } Para todo S = {p1 , . . . , pk } QD e todo a : (S, a) = F echo-({r1 , . . . , rn }), onde {r1 , . . . , rn } = E (p1 , a) . . . E (pk , a) Exemplo: Considere o AFN:
(AFD equivalente)
(a) Calcule o F echo- para cada estado. (b) Calcule (p, caab). (c) Converta o AFN para um AFD. 3. Dena AFNs para as linguagens a seguir. Tente usar transies para simplicar as denies. (a) Conjunto de todas as palavras contendo zero ou mais 0s seguidos por zero ou mais 1s seguidos por zero ou mais 2s. (b) Conjunto de todas as palavras contendo ab repetido uma ou mais vezes ou contendo aba repetido uma ou mais vezes.
Teorema 3 Uma linguagem L aceita por um AFN se e somente se L aceita por um AFD. Prova (esquema): (se) L L(AF D) L L(AF N ) 1. Construir o AFN E a partir do AFD D: o automato D idntico ao E, alterando-se a funo de transio da seguinte forma: D (q, a) = p E (q, a) = {p} 22
e acrescenta-se para todo estado q E (q, ) = ; 2. Provar que L(E) = L(D) por induo. (somente se) L L(AF N ) L L(AF D) 1. Construir o AFD D a partir do AFN E atravs da construo apresentada acima; 2. Provar que L(E) = L(D) por induo.
23
Se uma linguagem L gerada por uma Gramtica Regular ento existe um Autnomo Finito com Transies Vazias que aceita L e vice-versa.
Construo GR AF N Considere a GR a seguir: G = ({S, A, B}, {0, 1}, {S A|, A 0B, B 0B|1A|0}, S) Observe que todas as regras da gramtica possuem no mximo um terminal. Esta gramtica pode ser chamada de gramtica linear a direita. Qualquer GR pode ser transformada em uma gramtica linear (unitria) direita. Por exemplo: se uma gramtica regular possui a regra X abcX, podemos substituir esta regra pelas regras a seguir, mantendo no mximo um terminal por regra: X aX1 X1 bX2 X2 cX Denio 4.12 Dada uma GR linear (unitria) direita G(N, T, P, S), podemos construir um AFN equivalente da seguinte forma: E = (Q, , , qo , F ), onde Q = N {X}, onde X N =T q0 = S F = {X} Para B N e a : (B, a) = {C|B aC P } {X|B a P } (B, ) = {C|B C P } {X|B P } (X, a) = (X, ) = AFN equivalente a gramtica G denida anteriormente:
24
A gramtica regular equivalente dada a seguir: G = ({Q0 , Q1 , Q2 , Q3 }, {+, , , 0, . . . , 9}, P, Q0 ), onde P = {Q0 Q1 Q2 Q3 Q1 | + Q1 | Q1 , 0Q1 | . . . |9Q1 |0Q2 | . . . |9Q2 , Q3 | Q3 , 0Q3 | . . . |9Q3 |}.
Denio 4.13 Dado um AFN E = (Q, , , qo , F ) podemos construir uma GR equivalente da seguinte forma: G(Q, , P, q0 ), onde P denido por: se C (B, a), ento B aC P se C F , ento C P se C (B, ), ento B C P Exerccios 4.7 1. Construir o AFN equivalente gramtica a seguir: G = ({S, A, B, C}, {a, b, c}, P, S), onde P = {S |A, A aA|bB, B cB|cC, C cA|c}. 25
Teorema 4 Uma linguagem L reconhecida por um AFN se e somente se L gerada por uma GR. Prova (esquema): (se) L L(GR) L L(AF N ) 1. Dada uma GR G = (N, T, P, S), constri-se E = (N {X}, T, , S, F ) 2. Provar que L(G) = L(E): Se v L(G) ento E aceita x Sev = a1 a2 . . . an L(G), ento S + v. Como G uma GR, a derivao S + v da forma: S a1 A1 a1 a2 A2 . . . a1 a2 . . . an1 An1 a1 a2 . . . an Logo, S a1 A1 , A1 a2 A2 , . . . An1 an so produes de G. Assim sendo, por denio de E: A1 (S, a1 ), A2 (A1 , a2 ), . . . X (An1 , an ) Portanto, como v = a1 a2 . . . an , X (S, v) e X F , concluise que v L(E). Se v = L(G), ento S + e portanto S P . Neste caso, por denio, X (S, ) e X F , conclui-se que L(E). 26
Se v L(E) ento G gera v. Se v = a1 a2 . . . an L(E), ento existe uma sequncia de estados S, A1 , A2 , ..., An1 , X tal que A1 (S, a1 ), A2 (A1 , a2 ), . . . X (An1 , an ), onde S o estado inicial e X um estado nal. Por denio, para que essas transies existam, G dever possuir as seguintes produes: S a1 A1 , A1 a2 A2 , . . . An1 an e, se essas produes existem, ento S a1 A1 a1 a2 A2 . . . a1 a2 . . . an1 An1 a1 a2 . . . an uma derivao em G; logo, como v = a1 a2 . . . an e S + v, conclui-se que L(G) contm v. Se v = L(E). Neste caso, existe a seguinte transio: X (S, ) Por denio, para que essa transio exista, G dever possuir a seguinte produo: S . Assim, existe a derivao S + . Logo L(G). (somente se) L L(AF N ) L L(GR) 1. Dado um AFN E = (Q, , , q0 , F ), constri-se G = (Q, , P, q0 ); 2. Provar que L(E) = L(G) por induo. Isto pode ser feito de maneira anloga a demonstrao do se
27
28
[A, B, C, D, E, F, G, H] WWWW fff WWWW fffff WWWWW fffff WWWW fffff WWWW fffff
[A, D, G]
[B, F ]
[B, F ]
[C, E]
[H]
[A, G]
[D]
Construo de um AFD Mnimo: Dado um AFD, sem estados inacessveis ou mortos, A = (Q, , , q0 , F ), pode-se obter um autmato mnimo equivalente como segue:
M = (Q , , , q0 , F ), onde
Q o conjunto de CE de A;
q0 a CE que contm q0 ;
F o conjunto das CE que contenham pelo menos um elemento de F ; ([p], a) = [q] (p1 , a) = q1 uma transio de A e p1 e q1 so elementos de [p] e [q], respectivamente. Exemplo: Autmato mnimo equivalente ao AFD denido a cima. OBS.: Os estados D e H so eliminados pois so estados inacesssveis. M = (Q, {a, b}, , [A, G], {[A, G]}), onde ([B, F ], a) = [B, F ] ([C, E], a) = [C, E] ([A, G], a) = [A, G] ([B, F ], b) = [C, E] ([C, E], b) = [A, G] ([A, G], b) = [B, F ]
29
30
5 Expresses Regulares
Uma maneira declarativa de descrever linguagens regulares, isto , um esquema que descreva as palavras contidas em um linguagem regular. Exemplo: 01 + 10 , Esta expresso descreve todas as palavras que iniciam por 0 e tm uma sequncia de zero ou mais 1s e todas as palavras que iniciam por 1 e tm uma sequncia de zero ou mais 0s. Denio 5.1 (Expresso Regular - ER) Uma expresso regular sobre um alfabeto indutivamente denida como se segue: 1. uma ER que denota a linguagem vazia; 2. uma ER que denota a linguagem contendo exclusivamente a palavra vazia, ou seja {}; 3. Qualquer smbolo x pertencente ao alfabeto uma ER e denota a linguagem contendo a palavra unitria x, ou seja {x}; 4. Se r e s so ERs e denotam, respectivamente, as linguagens R e S, ento: (a) (r + s) uma ER e denota a linguagem R S; (b) (rs) uma ER e denota a linguagem {uv|u R v S}; (c) (r ) uma ER e denota a linguagem R . Observaes: 1. Os parnteses podem ser omitidos, respeitando-se as seguintes prioridades de operaes: Prioridade 1 2 3 Operao Fecho Concatenao Unio
2. Uma linguagem gerada por um expresso regular r representada por L(r). Exemplos: (a) = a = {, a, aa, aaa, . . .} a+ = {a, aa, aaa, . . .} (a + b) = {, a, b, aa, ab, ba, bb, aaa, . . .} a + b = {, a, b, bb, bbb, . . .} a(a + b) = {a, ab, aa, aaa, aab, aba, abb, aaaa, . . .} (a(a + b)) = {, aa, ab, aaaa, abaa, aaab, . . .} 31
Identicadores de uma linguagem de programao: l(l + d) Inteiro com sinal: (+ + -)d+ Inteiro com/sem sinal: (+ + - + )d+ Linguagem contendo somente a palavra aa: aa. Linguagem contendo todas as palavras que iniciam por b, seguido de zero ou mais as: ba . Linguagem contendo todas as palavras sobre o alfabeto a, b: (a + b) . Linguagem contendo todas as palavras contendo aa como subpalavra: (a + b) aa(a + b) . Linguagem contendo todas as palavras contendo exatamente dois bs: a ba ba . Linguagem contendo todas as palavras que terminam com aa ou bb: (a + b) (aa + bb). Linguagem contendo todas as palavras que no possuem dois a consecutivos: (a + )(b + ba) ou (b + ab) (a + ).
r = r+ + Exerccios 5.1 1. Determine um ER que denote o conjunto das palavras sobre {a, b, c} nos quais cada b seguido por pelo menos um c. 2. Desenvolva expresses regulares que gerem as seguintes linguagens sobre = {a, b}: (a) {w|w tem um nmero par de a s} u (b) {w|w tem um nmero de a s que divisivel por 3} u e (c) {w|w no possui aba como subpalavra} a 3. Descreva, em portugus, os conjuntos denotados pelas seguintes ERs: (a) (1 + 01 + 001) ( + 0 + 00) (b) (00 + 11 + (01 + 10)(00 + 11) (01 + 10))
33
(a)
(b)
(c) Denio 5.2 (Construo ER AF N ) Dada uma expresso regular R sobre o alfabeto , podemos denir um AF N indutivamente como segue: Base Se R = o autmato equivalente 34
Se R = o autmato equivalente
Se R = rs o autmato equivalente
Se R = r o autmato equivalente
Construo AF ER Constri-se um Autmato Finito Genrico (AFG) a partir do AF. Um AFG um autmato nito que possui expresses regulares como rtulos para as transies, ao invs de smbolos.
35
Um AFG deve possuir algumas caractersticas: 1. devem haver apenas setas partindo do estado inicial; 2. deve haver apenas um estado nal e podem somente chegar setas neste estado; 3. no devem haver multiplos rtulos ou mltiplas setas com mesma origem e destino. Para atender a essas caractersticas, pode-se: 1. incluir um estado inicial com uma seta partindo dele e chegando no antigo estado inicial. O rtulo dessa seta ; 2. incluir um estado nal com setas partindo dos antigos estados nais e chegando nele. O rtulo dessas setas ; 3. uma seta com rtulos mltiplos ou mltiplas setas com a mesma origem e destino substituda por uma seta com a unio dos rtulos anteriores como rtulo. Determinar a ER eliminando estados: 1. Se o nmero de estados k > 2 constri-se um AFG equivalente com k 1 estados, at k = 2: (a) seleciona-se um estado (exceto o inicial e o nal) para eliminar; (b) reorganiza-se as setas e os rtulos para manter os todos os caminhos possveis anteriormente. O esquema abaixo mostra como reorganizar os rtulos:
2. Se k = 2 e h uma nica seta do estado inicial ao nal, o rtulo a expresso regular equivalente ao AF. Exemplo: determinar a ER equivalente ao AF a seguir:
36
Teorema 5 Uma linguagem L aceita por um ER se e somente se ela aceita por um AF. Prova (esquema): (se) L L(ER) L L(AF ). Considera-se o AF A construdo a partir da ER R e prova-se por induo, no nmero de operadores da ER, que L(R) = L(A). (somente se) L L(AF ) L L(ER). Considera-se a ER R obtida a partir do AF A e prova-se por induo, no comprimento dos caminhos do AF, que L(R) = L(A).
37
(a)
(b) 3. Aplique as construes conhecidas para obter a GR equivalente a expresso regular (b + )(a + bb) . ATENO: a gramtica obtida deve ser o mais simplicada possvel.
38