Aula 7 expressão regular

10,022 views
9,809 views

Published on

Published in: Education
1 Comment
3 Likes
Statistics
Notes
No Downloads
Views
Total views
10,022
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
217
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide

Aula 7 expressão regular

  1. 1. Curso: Ciência da Computação Turma: 7ª Série Linguagens Formais e Autômatos Aula 7Aspectos Teóricos da Computação
  2. 2. Notas de AulaAvaliação 15 de Abril. Aspectos Teóricos da Computação 2/26
  3. 3. Linguagens Regulares● O estudo das linguagens regulares é abordado usando os seguintes formalismos: ➔ Autômato Finito. Trata-se de um formalismo operacional ou reconhecedor, sendo basicamente, um sistema de estados finitos; ➔ Expressão Regular. Trata-se de um formalismo denotacional, também considerado gerador, o qual é definido a partir de conjuntos (linguagens) básicos e das operações de concatenação e de união; ➔ Gramática Regular. Trata-se de um formalismo axiomático ou gerador o que, como o nome indica, é uma gramática, mas com restrições de forma das regras de produção. Aspectos Teóricos da Computação 3/26
  4. 4. Expressão Regular● Toda linguagem regular pode ser descrita por uma expressão denominada Expressão Regular.● Uma expressão regular é definida a partir de conjuntos básicos (linguagens) e operações de concatenação e de união.● As expressões regulares são consideradas adequadas para a comunicação humano x humano e, principalmente, para a comunicação humano x máquina.● A expressão regular é a maneira mais compacta e mais simples de descrever conjuntos regulares, e é usada com essa finalidade em construção de compiladores, editores, sistemas operacionais, protocolos, etc. Aspectos Teóricos da Computação 4/26
  5. 5. Expressão Regular, Linguagem GeradaUma Expressão Regular (frequentemente abreviada por ER) sobre um alfabeto ∑ é indutivamentedefinida como segue:a) Base de Indução. a.1) A expressão : Ø é expressão regular e denota a linguagem vazia. a.2) A expressão: ε é uma expressão regular e denota a linguagem que contémexclusivamente a palavra vazia: {ε} a.3) Para qualquer símbolo x Є ∑, a expressão: X é uma expressão regular e denota a linguagem que contémexclusivamente a palavra constituída pelo símbolo x: {x}b) Passo de Indução. Se r e s são expressões regulares e denotam a linguagem R e S,respectivamente, então: b.1) União. A expressão (r+s) é expressão regular e denota a linguagem R U S b.2) Concatenação. A expressão (rs) é expressão regular e denota a linguagem: R S = {uv | u Є R e v Є S} b.3) Concatenação sucessiva. A expressão (r*) é expressão regular e denota a linguagem R*Se r é uma expressão regular, a correspondente linguagem denotada é dita a Linguagem Geradapor r, sendo representada por: L(r) ou GERA(R) Aspectos Teóricos da Computação 5/26
  6. 6. Expressão Regular, Linguagem GeradaA omissão de parênteses em uma ER é usual, respeitandoas seguintes convenções:● A concatenação sucessiva tem precedência sobre a concatenação e a união;● A concatenação tem precedência sobre a união. Aspectos Teóricos da Computação 6/26
  7. 7. Expressão RegularDetalhando a linguagem gerada pela expressão (a+b)*(aa+bb),vale que: ● a e b denotam {a} e {b}, respectivamente ● a + b denota {a} U {b} = {a,b} (Lembre-se que o elemento vazio também está aqui.) ● (a+b)* denota {a,b}* ● aa e bb denotam {a}{a} = {aa} e {b}{b} = {bb}, respectivamente ● (aa + bb) denota {aa} U {bb} = {aa,bb} ● (a+b)*(aa+bb) denota {a,b}*{aa,bb}Portanto, GERA((a+b)*(aa+bb)) correponde à seguinte linguagem:{aa,bb,aaa,abb,baa,bbb,aaaa,aabb,abaa,abbb,baaa,babb,bbaa,bbbb,...} Aspectos Teóricos da Computação 7/26
  8. 8. Exemplo: Expressão RegularExpressão Regular Linguagem Geradaaa Somente a palavra aaba* Todas as palavras que iniciam por b, seguido por zero ou mais as(a+b)* Todas as palavras sobre {a,b}(a+b)*aa(a+b)* Todas as palavras contendo aa como subpalavraa*ba*ba* Todas as palavras contendo exatamente dois bs(a+b)*(aa+bb) Todas as palavras que terminam com aa ou bb.(a+ε)(b+ba)* Todas as palavras que não possuem dois a consecutivos. Aspectos Teóricos da Computação 8/26
  9. 9. Expressão Regular → Linguagem RegularPor definição, uma linguagem regular é regularse, e somente se, é possível construir umautômato finito (determinístico, não determinísticoou de movimentos vazios) que reconheça essalinguagem. Assim, dada uma expressão regular rqualquer é possível construir um autômato finito. Aspectos Teóricos da Computação 9/26
  10. 10. Expressão Regular Autômato Finito Correspondentea ab ba* ε ε a ε εaa a ε abb Єε b ε baa+bb a ε a ε ε ε ε b ε b Aspectos Teóricos da Computação 10/26
  11. 11. ER convertida para Autômato a*(aa+bb) a ε a ε ε εε a ε ε ε ε b ε b Aspectos Teóricos da Computação 11/26
  12. 12. Gramática RegularGramáticas LinearesSeja G={V,T,P,S} uma gramática. Sejam A e B elementos de V e w uma palavra de T*.Então G é uma Gramática Linear se todas as suas produções encontram-se em uma eem somente uma das seguintes formas:a) Gramática Linear à Direita (abreviada por GLD). Todas as regras de produção são daforma: A → wB ou A→wb) Gramática Linear à Esquerda (abreviada por GLE). Todas as regras de produção sãoda forma: A → Bw ou A→wc) Gramática Linear Unitária à Direita (abreviada por GLUD). Todas as regras deprodução são como na gramática linear à direita e, adicionalmente: |w| <= 1d) Gramática Linear Unitária à Esquerda (abreviada por GLUE). Todas as regras deprodução são como na gramática linear à esquerda e, adicionalmente: |w| <=1 Aspectos Teóricos da Computação 12/26
  13. 13. Gramática RegularNote-se que, nas gramáticas lineares, o lado direito de uma produção é constituído por,no máximo, uma variável. Adicionalmente, esta variável, se existir, sempre antecede(linear à esquerda) ou sucede (linear à direita) qualquer sub-palavra (eventualmentevazia) de terminais. Aspectos Teóricos da Computação 13/26
  14. 14. Equivalência das Gramáticas RegularesSeja L uma linguagem. Então: L é gerada por uma GLD se, e somente se, L é gerada por uma GLE se, e somente se, L é gerada por uma GLUD se, e somente se, L é gerada por uma GLUE● Ou seja, as diversas formas das gramáticas lineares são formalismos equivalentes. Aspectos Teóricos da Computação 14/26
  15. 15. Gramática RegularUma gramática G é dita uma Gramática Regular,eventualmente abreviada GR, se G é umagramática linear. Aspectos Teóricos da Computação 15/26
  16. 16. Linguagem GeradaSeja G=(V, T, P, S) uma gramática. A LinguagemGerada pela gramática G, denotada por: L(G) ou GERA(G)É tal que: L(G) = {w є T* | S → +w} Aspectos Teóricos da Computação 16/26
  17. 17. Exemplo: Gramática Regular: a(ba)*A linguagem a(ba)* é gerada pelas seguintes gramáticas regulares: (a) Linear à Direita. G=({S,A}, {a,b}, P, S), e P possui as seguintes regras de produção S → aA A → baA | ε (b) Linear à Esquerda. G=({S}, {a,b}, P, S), e P possui as seguintes regras de produção S → Sba | a (c)Linear Unitária à Direita. G=({S,A,B}, {a,b}, P, S), e P possui as seguintes regras de produção S → aA A → bB | ε B → aA (d)Linear Unitária à Esquerda. G=({S,A}, {a,b}, P, S), e P possui as seguintes regras de produção S → Aa | a A → Sb Aspectos Teóricos da Computação 17/26
  18. 18. Gramática Regular: (a+b)*(aa+bb)A linguagem (a+b)*(aa+bb) é gerada pelasseguintes gramáticas regulares:(a) Linear à Direita. G=({S,A}, {a,b}, P, S), e P possui as seguintes regras de produção S → aS | bS | A A → aa | bb(b) Linear à Esquerda. G=({S}, {a,b}, P, S), e P possui as seguintes regras de produção S → Aaa | Abb A → Aa | Ab | ε Aspectos Teóricos da Computação 18/26
  19. 19. Gramática Linear à Esquerda e Linear à DireitaSuponha |w| >= 1. Se uma gramática tiversimultaneamente produções do tipo A → wB(linear à direita) e do tipo A → Bw (linear aesquerda), então a correspondente linguagemgerada poderá não ser regular, ou seja, esta nãoé uma gramática regular.Por exemplo, a linguagem a seguir não é regular: { anbn | n є N }Entretanto, é possível desenvolver umagramática, com produções lineares à direita e àesquerda, que gera esta linguagem. Aspectos Teóricos da Computação 19/26
  20. 20. Gramática Regular → Linguagem RegularSe L é uma linguagem gerada por uma gramática regular, então L é uma linguagemregular.Prova: Por induçãoPara mostrar que uma linguagem é regular, é suficiente construir um autômato finito quea reconheça.Suponha G=(V,T,P,S) uma gramática linear unitária à direita. Tipo da TransiçãoEntão o AFNε : M=( ∑, Q,δ,q0, F) Produção GeradaTal que: (suponha qf não pertence a V): A→ε δ(A,ε) = qf∑=T A→a δ(A,a) = qfQ = V U {qf}F = {qf} A→B δ(A,ε) = Bq0 = S A → aB δ(A,a) = Bδ é construída como ilustrado na tabela (Suponha A e B variáveis e a terminal) simula asderivações de G, ou seja: ACEITA(M) = GERA(G)A demonstração que, de fato, ACEITA(M) = GERA(G) é por indução no número dederivações. (Vamos omitir essa demonstração mas ela pode ser vista na página 77 dolivro texto.) Aspectos Teóricos da Computação 20/26
  21. 21. Exemplo: Construção de um AFNε a partir de uma gramática regularConsidere a seguinte gramática linear unitária à direita, G=({S,A,B},{a,b},P,S) onde P é tal que: S → aA A → bB | ε B → aAO AFNε que reconhece a linguagem gerada pela gramática G é:5 minutos para fazer. Aspectos Teóricos da Computação 21/26
  22. 22. Exemplo: Construção de um AFNε a partir de uma gramática regularConsidere a seguinte gramática linear unitária à direita, G=({S,A,B},{a,b},P,S) onde P é tal que: S → aA A → bB | ε B → aAO AFNε que reconhece a linguagem gerada pela gramática G é: M = ({a,b}, {S,A,B,qf},δ,S,{qf}) Produção Transição S → aA δ(S,a) = A S a A ε qf A → bB δ(A,b) = B A→ε δ(A,ε) = qf b a B → aA δ(B,a) = A B Aspectos Teóricos da Computação 22/26
  23. 23. Construção de uma Gramática Regular a partir de um AFDConsidere o autômato finito determinístico: M = ({a,b,c}, {q0,q1,q2},δ,q0,{q0,q1,q2}) q0 b q1 c q2 a b cA gramática correspondente regular construída é?5 minutos. Aspectos Teóricos da Computação 23/26
  24. 24. Construção de uma Gramática Regular a partir de um AFDConsidere o autômato finitodeterminístico: M = ({a,b,c}, {q0,q1,q2},δ,q0,{q0,q1,q2}) Transição Produção q0 b q1 c q2 - S → q0 a b c - q0 → ε - q1 → εA gramática correspondente - q2 → εregular construída é? δ(q0,a)=q0 q0 → aq0 δ(q0,b)=q1 q0 → bq1G = ({q0,q1,q2,S}, {a,b,c}, P,S) δ(q1,b)=q1 q1 → bq1onde P é dado pela tabela: δ(q1,c)=q2 q1 → cq2 δ(q2,c)=q2 q2 → cq2 Aspectos Teóricos da Computação 24/26
  25. 25. Ler● Seçao 3.6 do livro. Aspectos Teóricos da Computação 25/26
  26. 26. Exercícios1. (Exercício 3.7 do livro) Desenvolva expressões regulares que gerem as seguintes linguagens sobre ∑ = {a,b}: (a) {w | w tem no máximo um par de a como subpalavra e no máximo um par de b como subpalavra. (b) {w | qualquer para de a antecede qualquer par de b} (c) {w | w não possui aba como subpalavra}2. Descreva em palavras as linguagens geradas pelas seguintes expressões regulares: (a) (aa+b)*(a+bb) (b) (b+ab)*(ε +a) (c) (aa +bb + (aa+bb) (ab+ba)(aa+bb))* Aspectos Teóricos da Computação 26/26

×