Você está na página 1de 38

Linguagens Formais

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, . . .

3.1 Linguagem Gerada por uma Gramtica


o conjunto de todas as palavras de uma linguagem obtidas de uma gramtica por derivaes sucessivas a partir do smbolo inicial. Denio 3.3 (Linguagem gerada por uma gramtica) Dada uma gramtica G = (N, T, P, S), a linguagem gerada por G denida por: L(G) = {w|w T S w}

Exerccios 3.2 1. Qual a linguagem gerada pela gramtica a seguir? G = ({S}, {0, 1}, S 0S1|01, S)

3.2 Tipos de Gramticas


As gramticas podem ser classicadas de acordo com caractersticas de suas regras de produo: Irrestritas - GI (tipo 0): regras do tipo , tal que V + e V ;

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, . . .}

3.3 Classicao de Linguagens


As linguagens podem ser classicadas de acordo com as gramticas que as geram. Recursivamente Enumerveis - LRE: linguagens geradas por GIs; Sensveis ao Contexto - LSC: linguagens geradas por GSCs adicionando-se a palavra vazia. Para isso estende-se as gramticas incluindo regras do tipo S ; Livre de Contexto - LLC: linguagens geradas por GLCs; Regulares - LR: linguagens geradas por GRs. Chomsky organizou essas linguagens em uma hierarquia ilustrada na Figura 1.

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.

4.1 Autmatos Finitos Determinsticos


Exemplo: Um autmato nito que reconhece palavras sobre o vocabulrio {a, b} que contenham aa ou bb como subpalavras. Toda informao necessria para o processamento da entrada deve ser codicada atravs dos estados. Assim, comearemos com o estado inicial q0 , onde nenhum smbolo ainda foi lido. O estado q1 sinalizar que j foi lido um a e caso outro seja lido, a palavra poder terminar. O estado q2 tem o mesmo papel que q1 , porm para o smbolo b. E nalmente o estado q3 sinaliza o estado em que j foram encontradas as subpalavras aa ou bb e neste ponto a palavra pode terminar ou ainda ter qualquer sequncia de as ou bs. A gura 2 mostra o diagrama de transio do autmato descrito acima.

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.

4.2 Palavra aceita por um AFD


Um autmato nito determinstico aceita uma palavra w = a1 a2 . . . an quando existe um caminho no diagrama de transies, tal que: Comea no estado inicial; Termina em um estado nal; Tem a sequncia de rtulos a1 a2 . . . an . Exemplo: considere o autmato nito a seguir:

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

4.3 Autmatos Finitos No-Determinsticos


Um autmato nito dito no-determinstico quando para um mesmo estado e um mesmo smbolo h diferentes transies, isto , o autmato pode assumir mais de um estado simultaneamente. Exemplo: A gura 3 ilustra um autmato nito no-determinstico que reconhece palavras sobre o vocabulrio {0, 1} e terminam com a sentena 01.

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) =

4.4 Palavra aceita por um AFN


Um autmato nito no-determinstico aceita uma palavra quando existe pelo menos um caminho w = a1 a2 . . . an quando existe pelo menos um caminho no diagrama de transies, tal que: Comea no estado inicial; Termina em um estado nal; Tem a sequncia de rtulos a1 a2 . . . an . Exemplo: considere o AFN da gura 3. Para processar a palavra 00101 temos diversos caminhos: q0 q0 q0 0 0
0

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

4.5 Equivalncia de AFNs e AFDs

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:

(autmato nito no-determinstico)

(autmato nito determinstico equivalente)

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

Para cada S QD e a D , tem-se: D (S, a) =


pS

N (p, a)

Exerccios 4.4 Construa um AFD a partir do AFN a seguir, eliminando os estados inalcanveis:

(autmato nito no-determinstico)

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

Por (1) e (2) temos que D ({q0 }, v) = N (q0 , v) = S 17

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

4.6 Autmatos Finitos com Transies Vazias - AFN


No aumentam o poder de expresso dos autmatos nitos, apenas proporcionam convenincias de programao. So teis para estabelecer a equivalncia entre autmatos nitos e expresses regulares. Exemplo: AFN que reconhece nmeros com parte decimal composto da forma a seguir: 1. Sinal + ou , opcional 2. w1 {0, 1, . . . , 9}+ 3. . (ponto), opcional 4. w2 {0, 1, . . . , 9}

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 = }

Exerccios 4.5 Considere o AFN a seguir:

1. Compute o F echo- para cada estado. 2. Determine (p, abbc), mostrando a sequncia de passos para encontrar o resultado.

20

4.7 Equivalncia entre AFN e AFD


Se uma linguagem L aceita por um Autnomo Finito com Transies Vazias ento existe um Autnomo Finito Determinstico que aceita L e vice-versa.

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:

O AFD equivalente como segue:

(AFD equivalente com estados inalcanveis) 21

(AFD equivalente)

Exerccios 4.6 1. Converta o AFN a seguir em um AFD:

(AFN) 2. Considere o AFN a seguir:

(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

4.8 Equivalncia entre AFN e GR

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

Construo AF N GR Exemplo: Considere o AFN a seguir:

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

2. Construir a GR equivalente ao autmato a seguir:

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

4.9 Minimizao de Autmatos Finitos


Um AFD A = (Q, , , qo, F ) mnimo se: 1. No possui estados inacessveis; 2. No possui estados mortos; 3. No possui estados equivalentes. Estados Inacessveis: Um estado q Q inacessvel (ou inalcanvel) quando no existe w tal que (q0 , w) = q, onde w uma palavra ou parte dela. Estados mortos: Um estado q Q morto se q F e no existe w, tal que (q, w) F = , ou seja, q morto se ele no nal e a partir dele nenhum estado nal pode ser alcanado. Estados Equivalentes: Um conjunto de estados {q1 , . . . , qk } so equivalentes entre si, se eles pertencem a uma mesma classe de equivalncia. Classes de Equivalncia (CE): Um conjunto de estados {q1 , . . . , qk } est em uma mesma CE [q], se (q1 , a) = p1 , . . . , (qk , a) = pk , para cada a , e p1 , . . . , pk , pertencem a uma mesma CE [p]. Denio 4.14 (Construo das Classes de Equivalncia) 1. Divida Q em duas CE, uma contendo F e outra contendo Q F ; 2. Divida as CE existentes, formando novas CE (de acordo com a denio de CE), at que nenhuma nova CE seja formada. Exemplo: Construa o conjunto de classes de equivalncia do AFD a seguir:

28

[B, C, E, F, H] OOO OOO ppp OOO ppp OO ppp pp [B, F ] [C, E, H]

[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]

[C, E, H] RRR RRR ooo RRR ooo RRR ooo RRR oo

[A, D, G] HH t HH tt HH tt HH tt H tt [D] [A, G]

[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

Exerccios 4.8 Minimizar os autmatos a seguir:

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 + ).

5.1 Leis Algbricas para ERs


Unio: Comutatividade: r + s = s + r Associatividade: (r + s) + t = r + (s + t) Identidade: r + = + r = r Idenpotncia: r + r = r Concatenao: Associatividade: (rs)t = r(st) Identidade: r = r = r Anulao: r = r = Distributividade sobre unio: r(s + t) = rs + rt e (s + t)r = sr + tr Fecho: (r ) = r = = r+ = rr = r r 32

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

5.2 Equivalncia de ERs e AFNs


Se uma linguagem L aceita por uma Expresso Regular ento existe um Autnomo Finito que aceita L e vice-versa.

Construo ER AF N Exemplo: construir um AF para a expresso regular (0 + 1) 1(0 + 1)

(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 = a, tal que a o autmato equivalente

Induo Se R = r + s 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

(a) Autmato Finito Genrico

(b) Eliminado o estado A

(c) Eliminado o estado B

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).

Exerccios 5.2 1. Determine os AFs equivalentes as ERs a seguir: (a) (0 + 1)01

37

(b) 00(0 + 1) 2. Determine a ERs equivalente aos AFs a seguir:

(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

Você também pode gostar