SlideShare uma empresa Scribd logo
1 de 20
Faculdade de Engenharia de Computação
Teoria da Computação:
Linguagens Formais e Autômatos
Aula 9 – Conversão de AF para
gramática regular
Professor Ronaldo Luiz Alonso
Problema
Construa uma gramática regular G gere a linguagem L:
L = { w | w contém um número par de 0’s ou um número par de de 1’s }
Solução:
Para resolver esse problema, iremos construir um autômato finito que
reconheça cadeias com essa propriedade.
Em seguida, a partir deste autômato, iremos criar uma linguagem
regular que gera o mesmo tipo de cadeias que o autômato reconhece.
Solução
Podemos dividir as cadeias em quatro categorias:
A – número par de zeros e número par de uns.
B – número par de zeros e número ímpar de uns.
C – número ímpar de zeros e numero par de uns.
D – número ímpar de zeros e numero ímpar de uns.
Para cada uma destas categorias, criamos um estado no AF que
estamos construindo.
Notamos inicialmente que a cadeia vazia tem um número par de zeros
e um número par de uns.
Solução
A
B
C
D
A – número par de zeros e número par de uns.
B – número par de zeros e número ímpar de uns.
C – número ímpar de zeros e numero par de uns.
D – número ímpar de zeros e numero ímpar de uns.
1
1
0
0
0
0
1
1
δ (A,0) = C
δ (A,1) = B
δ (B,0) = D
δ (B,1) = A
δ (C,0) = A
δ (C,1) = D
δ (D,0) = B
δ (D,1) = C
M = { {A,B,C,D}, {A}, A, Σ, δ }
Σ ={0,1}
Solução
Para criar uma gramática G que gere as mesmas cadeias que o
autômato M reconhece, primeiramente, fazemos:
1) Com que o símbolo inicial de G seja o estado inicial de M.
2) Para cada estado Ai de M crie um não terminal Ai em G.
3) Para cada transição δ (Ai,x) = Aj adicionamos a regra de
produção Ai → xAj
4) Para cada estado final Ai adicionamos a produção Ai → ε
Solução
Aplicando as regras anteriores no
autômato M construído, temos que
a gramática G é dada por:
δ (A,0) = C
δ (A,1) = B
δ (B,0) = D
δ (B,1) = A
δ (C,0) = A
δ (C,1) = D
δ (D,0) = B
δ (D,1) = C
Σ ={0,1}
M = { {A,B,C,D}, {A}, A, Σ, δ }
G = { {A,B,C,D}, Σ, A, P}
P = { A → 0C,
A → 1B,
B → 0D,
B → 1A,
C → 0A,
C → 1D,
D → 0B,
D → 1C,
A →ε }
Para ver por que este mapeamento é feito desta maneira,
vamos gerar a cadeia 010010 pela gramática e reconhece-
la também pelo autômato. Essa cadeia pode ser gerada
pela gramática reconhecida pelo autômato, porque tem 4
zeros e 2 uns.
Geração e reconhecimento de cadeias
A
B
C
D
1
1
0
0
0
0
1
1
0 1 0 0 1 0
A
δ (A,0) = C
δ (A,1) = B
δ (B,0) = D
δ (B,1) = A
δ (C,0) = A
δ (C,1) = D
δ (D,0) = B
δ (D,1) = C
P = { A → 0C,
A → 1B,
B → 0D,
B → 1A,
C → 0A,
C → 1D,
D → 0B,
D → 1C,
A →ε }
A
B
C
D
1
1
0
0
0
0
1
1
0 1 0 0 1 0
A
δ (A,0) = C
δ (A,1) = B
δ (B,0) = D
δ (B,1) = A
δ (C,0) = A
δ (C,1) = D
δ (D,0) = B
δ (D,1) = C
P = { A → 0C,
A → 1B,
B → 0D,
B → 1A,
C → 0A,
C → 1D,
D → 0B,
D → 1C,
A →ε }
A 
A
B
C
D
1
1
0
0
0
0
1
1
0 1 0 0 1 0
C
δ (A,0) = C
δ (A,1) = B
δ (B,0) = D
δ (B,1) = A
δ (C,0) = A
δ (C,1) = D
δ (D,0) = B
δ (D,1) = C
P = { A → 0C,
A → 1B,
B → 0D,
B → 1A,
C → 0A,
C → 1D,
D → 0B,
D → 1C,
A →ε }
A  0C
A
B
C
D
1
1
0
0
0
0
1
1
0 1 0 0 1 0
D
δ (A,0) = C
δ (A,1) = B
δ (B,0) = D
δ (B,1) = A
δ (C,0) = A
δ (C,1) = D
δ (D,0) = B
δ (D,1) = C
P = { A → 0C,
A → 1B,
B → 0D,
B → 1A,
C → 0A,
C → 1D,
D → 0B,
D → 1C,
A →ε }
A  0C  01D
A
B
C
D
1
1
0
0
0
0
1
1
0 1 0 0 1 0
B
δ (A,0) = C
δ (A,1) = B
δ (B,0) = D
δ (B,1) = A
δ (C,0) = A
δ (C,1) = D
δ (D,0) = B
δ (D,1) = C
P = { A → 0C,
A → 1B,
B → 0D,
B → 1A,
C → 0A,
C → 1D,
D → 0B,
D → 1C,
A →ε }
A  0C  01D 010B
A
B
C
D
1
1
0
0
0
0
1
1
0 1 0 0 1 0
D
δ (A,0) = C
δ (A,1) = B
δ (B,0) = D
δ (B,1) = A
δ (C,0) = A
δ (C,1) = D
δ (D,0) = B
δ (D,1) = C
P = { A → 0C,
A → 1B,
B → 0D,
B → 1A,
C → 0A,
C → 1D,
D → 0B,
D → 1C,
A →ε }
A  0C  01D 010B  0100D
A
B
C
D
1
1
0
0
0
0
1
1
0 1 0 0 1 0
C
δ (A,0) = C
δ (A,1) = B
δ (B,0) = D
δ (B,1) = A
δ (C,0) = A
δ (C,1) = D
δ (D,0) = B
δ (D,1) = C
P = { A → 0C,
A → 1B,
B → 0D,
B → 1A,
C → 0A,
C → 1D,
D → 0B,
D → 1C,
A →ε }
A  0C  01D 010B  0100D
 01001C 
A
B
C
D
1
1
0
0
0
0
1
1
0 1 0 0 1 0
A
δ (A,0) = C
δ (A,1) = B
δ (B,0) = D
δ (B,1) = A
δ (C,0) = A
δ (C,1) = D
δ (D,0) = B
δ (D,1) = C
P = { A → 0C,
A → 1B,
B → 0D,
B → 1A,
C → 0A,
C → 1D,
D → 0B,
D → 1C,
A →ε }
A  0C  01D 010B  0100D
 01001C  010010A
A
B
C
D
1
1
0
0
0
0
1
1
δ (A,0) = C
δ (A,1) = B
δ (B,0) = D
δ (B,1) = A
δ (C,0) = A
δ (C,1) = D
δ (D,0) = B
δ (D,1) = C
P = { A → 0C,
A → 1B,
B → 0D,
B → 1A,
C → 0A,
C → 1D,
D → 0B,
D → 1C,
A →ε }
0 1 0 0 1 0
A
A  0C  01D 010B  0100D
 01001C  010010A 010010
Verificando uma Gramática
• A prova que uma gramática G gera uma linguagem L tem duas partes:
• Mostrar que toda cadeia gerada por G está em L.
• Mostrar que toda cadeia em L pode ser de fato gerada por G.
Exemplo
• Considere a seguinte gramática:
S → ( S ) S | ɛ
Pode não ser aparente, mas esta gramática simples gera todas as
cadeias de parênteses balanceados e apenas tais cadeias.
Para ver isso devemos inicialmente mostrar que toda sentença derivável de S
é balanceada, e então que toda cadeia balanceada é derivável de S.
Prova: Usando Indução
Base: A base é n=1. A única string de terminais derivável
de S em um único passo é a cadeia vazia, que é
trivialmente balanceada.
Indução: Assumimos que todas as derivações com menos
que n passos produzem sentenças balanceadas e
consideramos uma derivação mais à esquerda de
exatamente n passos. Tal derivação precisa ser da
forma:
S lm ( S ) S *
lm (x) S *
lm (x) y
As derivações de x e y a partir de S tiveram menos que n
passos, então pela hipótese indutiva x e y estão
balanceados. No último passo o S presente em x e em y
será trocado por ɛ que é balanceado.
Prova: (cont)
• Devemos agora provar que toda string balanceada é derivável de S. Usamos agora
indução no tamanho da string:
Base: Se a cadeia tiver tamanho 0 ela precisa ser ɛ, a qual é balanceada.
Indução: Inicialmente observe que toda cadeia balanceada de tamanho menor que
2n é derivável de S e considere uma cadeia balanceada w de tamanho 2n, n≥1.
Claramente w começa com um parêntese esquerdo. Seja (x) o prefixo mais curto
de w tendo um número igual de parênteses à direita e à esquerda. Então w pode
ser escrito como w = (x)y onde ambos x e y são balanceados. Desde que x e y são
de tamanho menor que 2n, eles são deriváveis de S por hipótese indutiva. Assim
podemos encontrar uma derivação da forma:
S lm ( S ) S *
lm (x) S *
lm (x) y
Provando que w = (x)y é também derivável de S.

Mais conteúdo relacionado

Semelhante a Teoria_da_Computacao_Eng_LFA_Aula09.pptx

Mat angulos retas exerc resolvidos
Mat angulos   retas exerc resolvidosMat angulos   retas exerc resolvidos
Mat angulos retas exerc resolvidostrigono_metria
 
Cesgranrio petrobras engenheiro petroleo 2018
Cesgranrio petrobras engenheiro petroleo 2018Cesgranrio petrobras engenheiro petroleo 2018
Cesgranrio petrobras engenheiro petroleo 2018Arthur Lima
 
Lista de exercícios 1 - Cálculo
Lista de exercícios 1 - CálculoLista de exercícios 1 - Cálculo
Lista de exercícios 1 - CálculoCarlos Campani
 
616a9aa93f9554aa9a9550f5bd9a16147866a87d
616a9aa93f9554aa9a9550f5bd9a16147866a87d616a9aa93f9554aa9a9550f5bd9a16147866a87d
616a9aa93f9554aa9a9550f5bd9a16147866a87dMariza Roberto
 
Matemática Discreta - Parte IV teoria dos-conjuntos
Matemática Discreta - Parte IV teoria dos-conjuntosMatemática Discreta - Parte IV teoria dos-conjuntos
Matemática Discreta - Parte IV teoria dos-conjuntosUlrich Schiel
 
Algebra linear exercicios_resolvidos
Algebra linear exercicios_resolvidosAlgebra linear exercicios_resolvidos
Algebra linear exercicios_resolvidosRodolfo Sena da Penha
 
Lista de exercícios para a prova sub-stitutiva - trigonometria e números com...
Lista de  exercícios para a prova sub-stitutiva - trigonometria e números com...Lista de  exercícios para a prova sub-stitutiva - trigonometria e números com...
Lista de exercícios para a prova sub-stitutiva - trigonometria e números com...Jhow Almeida
 
Exercitandoaula2
Exercitandoaula2Exercitandoaula2
Exercitandoaula2AlexGrift
 
Simave proeb 2011 para 3º ano
Simave proeb 2011 para 3º anoSimave proeb 2011 para 3º ano
Simave proeb 2011 para 3º anoIdelma
 
As equações do segundo grau são abordadas na história da matemática desde a é...
As equações do segundo grau são abordadas na história da matemática desde a é...As equações do segundo grau são abordadas na história da matemática desde a é...
As equações do segundo grau são abordadas na história da matemática desde a é...leosilveira
 
Testes 5 + 5.pdf
Testes 5 + 5.pdfTestes 5 + 5.pdf
Testes 5 + 5.pdfTniaLopes50
 
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6Bowman Guimaraes
 

Semelhante a Teoria_da_Computacao_Eng_LFA_Aula09.pptx (20)

Mat angulos retas exerc resolvidos
Mat angulos   retas exerc resolvidosMat angulos   retas exerc resolvidos
Mat angulos retas exerc resolvidos
 
Cesgranrio petrobras engenheiro petroleo 2018
Cesgranrio petrobras engenheiro petroleo 2018Cesgranrio petrobras engenheiro petroleo 2018
Cesgranrio petrobras engenheiro petroleo 2018
 
Trabalho de eletromag
Trabalho de eletromagTrabalho de eletromag
Trabalho de eletromag
 
Lista de exercícios 1 - Cálculo
Lista de exercícios 1 - CálculoLista de exercícios 1 - Cálculo
Lista de exercícios 1 - Cálculo
 
Trigonometria
TrigonometriaTrigonometria
Trigonometria
 
616a9aa93f9554aa9a9550f5bd9a16147866a87d
616a9aa93f9554aa9a9550f5bd9a16147866a87d616a9aa93f9554aa9a9550f5bd9a16147866a87d
616a9aa93f9554aa9a9550f5bd9a16147866a87d
 
Matemática Discreta - Parte IV teoria dos-conjuntos
Matemática Discreta - Parte IV teoria dos-conjuntosMatemática Discreta - Parte IV teoria dos-conjuntos
Matemática Discreta - Parte IV teoria dos-conjuntos
 
17052014
1705201417052014
17052014
 
Conjuntos numericos
Conjuntos numericosConjuntos numericos
Conjuntos numericos
 
Gv economia 1fase_2010
Gv economia 1fase_2010Gv economia 1fase_2010
Gv economia 1fase_2010
 
Algebra linear exercicios_resolvidos
Algebra linear exercicios_resolvidosAlgebra linear exercicios_resolvidos
Algebra linear exercicios_resolvidos
 
Lista de exercícios para a prova sub-stitutiva - trigonometria e números com...
Lista de  exercícios para a prova sub-stitutiva - trigonometria e números com...Lista de  exercícios para a prova sub-stitutiva - trigonometria e números com...
Lista de exercícios para a prova sub-stitutiva - trigonometria e números com...
 
Apostila de Algebra Linear.pdf
Apostila de Algebra Linear.pdfApostila de Algebra Linear.pdf
Apostila de Algebra Linear.pdf
 
Exercitandoaula2
Exercitandoaula2Exercitandoaula2
Exercitandoaula2
 
Matemática discreta cap. 1
Matemática discreta   cap. 1Matemática discreta   cap. 1
Matemática discreta cap. 1
 
conjuntos.pdf
conjuntos.pdfconjuntos.pdf
conjuntos.pdf
 
Simave proeb 2011 para 3º ano
Simave proeb 2011 para 3º anoSimave proeb 2011 para 3º ano
Simave proeb 2011 para 3º ano
 
As equações do segundo grau são abordadas na história da matemática desde a é...
As equações do segundo grau são abordadas na história da matemática desde a é...As equações do segundo grau são abordadas na história da matemática desde a é...
As equações do segundo grau são abordadas na história da matemática desde a é...
 
Testes 5 + 5.pdf
Testes 5 + 5.pdfTestes 5 + 5.pdf
Testes 5 + 5.pdf
 
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6
 

Teoria_da_Computacao_Eng_LFA_Aula09.pptx

  • 1. Faculdade de Engenharia de Computação Teoria da Computação: Linguagens Formais e Autômatos Aula 9 – Conversão de AF para gramática regular Professor Ronaldo Luiz Alonso
  • 2. Problema Construa uma gramática regular G gere a linguagem L: L = { w | w contém um número par de 0’s ou um número par de de 1’s } Solução: Para resolver esse problema, iremos construir um autômato finito que reconheça cadeias com essa propriedade. Em seguida, a partir deste autômato, iremos criar uma linguagem regular que gera o mesmo tipo de cadeias que o autômato reconhece.
  • 3. Solução Podemos dividir as cadeias em quatro categorias: A – número par de zeros e número par de uns. B – número par de zeros e número ímpar de uns. C – número ímpar de zeros e numero par de uns. D – número ímpar de zeros e numero ímpar de uns. Para cada uma destas categorias, criamos um estado no AF que estamos construindo. Notamos inicialmente que a cadeia vazia tem um número par de zeros e um número par de uns.
  • 4. Solução A B C D A – número par de zeros e número par de uns. B – número par de zeros e número ímpar de uns. C – número ímpar de zeros e numero par de uns. D – número ímpar de zeros e numero ímpar de uns. 1 1 0 0 0 0 1 1 δ (A,0) = C δ (A,1) = B δ (B,0) = D δ (B,1) = A δ (C,0) = A δ (C,1) = D δ (D,0) = B δ (D,1) = C M = { {A,B,C,D}, {A}, A, Σ, δ } Σ ={0,1}
  • 5. Solução Para criar uma gramática G que gere as mesmas cadeias que o autômato M reconhece, primeiramente, fazemos: 1) Com que o símbolo inicial de G seja o estado inicial de M. 2) Para cada estado Ai de M crie um não terminal Ai em G. 3) Para cada transição δ (Ai,x) = Aj adicionamos a regra de produção Ai → xAj 4) Para cada estado final Ai adicionamos a produção Ai → ε
  • 6. Solução Aplicando as regras anteriores no autômato M construído, temos que a gramática G é dada por: δ (A,0) = C δ (A,1) = B δ (B,0) = D δ (B,1) = A δ (C,0) = A δ (C,1) = D δ (D,0) = B δ (D,1) = C Σ ={0,1} M = { {A,B,C,D}, {A}, A, Σ, δ } G = { {A,B,C,D}, Σ, A, P} P = { A → 0C, A → 1B, B → 0D, B → 1A, C → 0A, C → 1D, D → 0B, D → 1C, A →ε }
  • 7. Para ver por que este mapeamento é feito desta maneira, vamos gerar a cadeia 010010 pela gramática e reconhece- la também pelo autômato. Essa cadeia pode ser gerada pela gramática reconhecida pelo autômato, porque tem 4 zeros e 2 uns. Geração e reconhecimento de cadeias
  • 8. A B C D 1 1 0 0 0 0 1 1 0 1 0 0 1 0 A δ (A,0) = C δ (A,1) = B δ (B,0) = D δ (B,1) = A δ (C,0) = A δ (C,1) = D δ (D,0) = B δ (D,1) = C P = { A → 0C, A → 1B, B → 0D, B → 1A, C → 0A, C → 1D, D → 0B, D → 1C, A →ε }
  • 9. A B C D 1 1 0 0 0 0 1 1 0 1 0 0 1 0 A δ (A,0) = C δ (A,1) = B δ (B,0) = D δ (B,1) = A δ (C,0) = A δ (C,1) = D δ (D,0) = B δ (D,1) = C P = { A → 0C, A → 1B, B → 0D, B → 1A, C → 0A, C → 1D, D → 0B, D → 1C, A →ε } A 
  • 10. A B C D 1 1 0 0 0 0 1 1 0 1 0 0 1 0 C δ (A,0) = C δ (A,1) = B δ (B,0) = D δ (B,1) = A δ (C,0) = A δ (C,1) = D δ (D,0) = B δ (D,1) = C P = { A → 0C, A → 1B, B → 0D, B → 1A, C → 0A, C → 1D, D → 0B, D → 1C, A →ε } A  0C
  • 11. A B C D 1 1 0 0 0 0 1 1 0 1 0 0 1 0 D δ (A,0) = C δ (A,1) = B δ (B,0) = D δ (B,1) = A δ (C,0) = A δ (C,1) = D δ (D,0) = B δ (D,1) = C P = { A → 0C, A → 1B, B → 0D, B → 1A, C → 0A, C → 1D, D → 0B, D → 1C, A →ε } A  0C  01D
  • 12. A B C D 1 1 0 0 0 0 1 1 0 1 0 0 1 0 B δ (A,0) = C δ (A,1) = B δ (B,0) = D δ (B,1) = A δ (C,0) = A δ (C,1) = D δ (D,0) = B δ (D,1) = C P = { A → 0C, A → 1B, B → 0D, B → 1A, C → 0A, C → 1D, D → 0B, D → 1C, A →ε } A  0C  01D 010B
  • 13. A B C D 1 1 0 0 0 0 1 1 0 1 0 0 1 0 D δ (A,0) = C δ (A,1) = B δ (B,0) = D δ (B,1) = A δ (C,0) = A δ (C,1) = D δ (D,0) = B δ (D,1) = C P = { A → 0C, A → 1B, B → 0D, B → 1A, C → 0A, C → 1D, D → 0B, D → 1C, A →ε } A  0C  01D 010B  0100D
  • 14. A B C D 1 1 0 0 0 0 1 1 0 1 0 0 1 0 C δ (A,0) = C δ (A,1) = B δ (B,0) = D δ (B,1) = A δ (C,0) = A δ (C,1) = D δ (D,0) = B δ (D,1) = C P = { A → 0C, A → 1B, B → 0D, B → 1A, C → 0A, C → 1D, D → 0B, D → 1C, A →ε } A  0C  01D 010B  0100D  01001C 
  • 15. A B C D 1 1 0 0 0 0 1 1 0 1 0 0 1 0 A δ (A,0) = C δ (A,1) = B δ (B,0) = D δ (B,1) = A δ (C,0) = A δ (C,1) = D δ (D,0) = B δ (D,1) = C P = { A → 0C, A → 1B, B → 0D, B → 1A, C → 0A, C → 1D, D → 0B, D → 1C, A →ε } A  0C  01D 010B  0100D  01001C  010010A
  • 16. A B C D 1 1 0 0 0 0 1 1 δ (A,0) = C δ (A,1) = B δ (B,0) = D δ (B,1) = A δ (C,0) = A δ (C,1) = D δ (D,0) = B δ (D,1) = C P = { A → 0C, A → 1B, B → 0D, B → 1A, C → 0A, C → 1D, D → 0B, D → 1C, A →ε } 0 1 0 0 1 0 A A  0C  01D 010B  0100D  01001C  010010A 010010
  • 17. Verificando uma Gramática • A prova que uma gramática G gera uma linguagem L tem duas partes: • Mostrar que toda cadeia gerada por G está em L. • Mostrar que toda cadeia em L pode ser de fato gerada por G.
  • 18. Exemplo • Considere a seguinte gramática: S → ( S ) S | ɛ Pode não ser aparente, mas esta gramática simples gera todas as cadeias de parênteses balanceados e apenas tais cadeias. Para ver isso devemos inicialmente mostrar que toda sentença derivável de S é balanceada, e então que toda cadeia balanceada é derivável de S.
  • 19. Prova: Usando Indução Base: A base é n=1. A única string de terminais derivável de S em um único passo é a cadeia vazia, que é trivialmente balanceada. Indução: Assumimos que todas as derivações com menos que n passos produzem sentenças balanceadas e consideramos uma derivação mais à esquerda de exatamente n passos. Tal derivação precisa ser da forma: S lm ( S ) S * lm (x) S * lm (x) y As derivações de x e y a partir de S tiveram menos que n passos, então pela hipótese indutiva x e y estão balanceados. No último passo o S presente em x e em y será trocado por ɛ que é balanceado.
  • 20. Prova: (cont) • Devemos agora provar que toda string balanceada é derivável de S. Usamos agora indução no tamanho da string: Base: Se a cadeia tiver tamanho 0 ela precisa ser ɛ, a qual é balanceada. Indução: Inicialmente observe que toda cadeia balanceada de tamanho menor que 2n é derivável de S e considere uma cadeia balanceada w de tamanho 2n, n≥1. Claramente w começa com um parêntese esquerdo. Seja (x) o prefixo mais curto de w tendo um número igual de parênteses à direita e à esquerda. Então w pode ser escrito como w = (x)y onde ambos x e y são balanceados. Desde que x e y são de tamanho menor que 2n, eles são deriváveis de S por hipótese indutiva. Assim podemos encontrar uma derivação da forma: S lm ( S ) S * lm (x) S * lm (x) y Provando que w = (x)y é também derivável de S.