Académique Documents
Professionnel Documents
Culture Documents
Ricardo Terra
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 1 / 423
CV
Ph.D. (UFMG/UWaterloo),
Post-Ph.D. (INRIA/Université Lille 1)
Background
Acadêmico : UFLA (desde 2014), UFSJ (1 ano ), FUMEC (3 anos ), UNIPAC (1 ano ), FAMINAS (3 anos )
Profissional : DBA Eng. (1 ano ), Synos (2 anos ), Stefanini (1 ano )
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 2 / 423
1. Revisão – Conteúdo
1 Revisão 3
Conjuntos, relações e funções 4
Definições Recursivas 8
Indução Matemática 13
Linguagens Formais e Autômatos (LFA) 17
Lemas, Teoremas, Corolários, etc. 56
2 Introdução 59
3 Linguagens Regulares 74
Autômatos Finitos Determinísticos
Autômatos Finitos Não-Determinísticos
Autômatos Finitos Não-Determinísticos com Transições-λ
Máquina de Moore
Máquinas de Mealy
Algoritmos de Transformação
Transformação AFND-λ para AFD
Minimização de AFD
Transformação de ER para AFND-λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 4 / 423
Revisão – Conjuntos, relações e funções (1–34)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 5 / 423
Revisão – Conjuntos, relações e funções (1–9)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 6 / 423
Revisão – Conjuntos, relações e funções (1–7)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 7 / 423
Revisão
Definições Recursivas
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 8 / 423
Revisão – Definições Recursivas
Definições Recursivas
Conjuntos enumeráveis podem ser definidos por meio de
uma definição recursiva
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 9 / 423
Revisão – Definições Recursivas
Definições Recursivas
Uma definição recursiva de um conjunto A consta de três
partes:
(i) base: especificação de um conjunto base B ⊂ A
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 10 / 423
Revisão – Definições Recursivas
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 11 / 423
Revisão – Definições Recursivas
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 12 / 423
Revisão – Definições Recursivas
Mais formalmente
(i) base: {(0, 1)} ⊂ fat
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 12 / 423
Revisão
Indução Matemática
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 13 / 423
Revisão – Indução Matemática
Indução Matemática
Técnica usada para provar que uma propriedade é válida
para todos elementos de um conjunto definido
recursivamente (Veja Sudkamp [?], Seção 1.7)
Assim, P é válido ∀x ∈ X
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 14 / 423
Revisão – Indução Matemática
Pn n(n+1)
Exemplo #1: Provar que i=1 i = 2
P1 1(1+1)
Base: P(1) é verdadeiro, i.e., i=1 i = 2 =1
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 16 / 423
Revisão
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 17 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Hierarquia de Chomsky
Tipo Linguagem Gramática Máquina de aceitação
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 18 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Definições Básicas
Linguagem: conjunto de palavras sobre um alfabeto
Alfabeto (Σ): conjunto de símbolos de uma linguagem
Palavra: sequência finita de símbolos de um alfabeto Σ
|w| = no de símbolos da palavra w
Σ+ = Σ∗ − {λ}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 19 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 20 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 21 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 22 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 23 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 23 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 23 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Regras: µ → ν
µ∈V (i.e., µ é um elemento de V )
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 24 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
GR(L):
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 25 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
GR(L):
S → aA
A → aA | bB
B → aB | bB | a
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 25 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
GR(L):
S → aA
A → aA | bB
B → aB | bB | a
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 25 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Derivação
Aplicação consecutiva de regras
Portanto:
Uma palavra w ∈ (V ∪ Σ)∗ é uma forma sentencial se S ⇒∗ w
L(G) = {w ∈ Σ∗ | S ⇒∗ w}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 26 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 27 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 27 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
E abbabb ∈ L(G)?
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 27 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Autômato Finito
Máquina Aceitadora de LR
Podem ser determinísticos (AFD)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 28 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo
L = palavras sobre {a, b} que começam e terminam com a
e possuem pelo menos um b
AFD:
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 30 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo
L = palavras sobre {a, b} que começam e terminam com a
e possuem pelo menos um b
AFD:
a b a
a
a b
q0 q1 q2 q3
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 30 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo
L = palavras sobre {a, b} que começam e terminam com a
e possuem pelo menos um b
AFD:
a b a
a
a b
q0 q1 q2 q3
b
Sim, na verdade, é um AFD incompleto, por quê?
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 30 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo
L = palavras sobre {a, b} que começam e terminam com a
e possuem pelo menos um b
AFD:
a b a
a
a b
q0 q1 q2 q3
b
Sim, na verdade, é um AFD incompleto, por quê?
Exercício de Fixação
1 L = palavras sobre {a, b} que contém aaa
2 L = palavras sobre {a, b} com número par de a e ímpar de b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 30 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 31 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo
L = palavras sobre {a, b} que começam e terminam com a
e possuem pelo menos um b
AFND:
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 32 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo
L = palavras sobre {a, b} que começam e terminam com a
e possuem pelo menos um b
AFND:
a a,b
a b a
q0 q1 q2 q3
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 32 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo
L = palavras sobre {a, b} que começam e terminam com a
e possuem pelo menos um b
AFND:
a a,b
a b a
q0 q1 q2 q3
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 32 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo
L = palavras sobre {a, b} que começam e terminam com a
e possuem pelo menos um b
AFND:
a a,b
a b a
q0 q1 q2 q3
Exercício de Fixação
1 L = palavras sobre {a, b} que contém aa ou bb
2 L = (a ∪ b)∗ bb
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 32 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 33 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo
L = palavras sobre {a, b} com tamanho par
AFND-λ:
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 34 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo
L = palavras sobre {a, b} com tamanho par
AFND-λ:
λ
a,b a,b
q0 q1 q3
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 34 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Hierarquia de Chomsky
Tipo Linguagem Gramática Máquina de aceitação
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 35 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Regras: µ → ν
µ∈V (i.e., um não-terminal)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 36 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo Clássico
L(G) = {a i bi | i > 0}
GLC(L):
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 37 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo Clássico
L(G) = {a i bi | i > 0}
GLC(L):
S → aSb | ab
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 37 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo Clássico 2
L(G) = {w ∈ {a, b}∗ | w = w R }
GLC(L):
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 38 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo Clássico 2
L(G) = {w ∈ {a, b}∗ | w = w R }
GLC(L):
S → aSa | bSb | a | b | λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 38 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exercício de Fixação
1 L = {a n bm a n |n > 0, m > 0}
2 L = {a n bm c m d 2n |n ≥ 0, m > 0}
3 L = palavras sobre {a, b} com número par de a
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 39 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 40 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo Clássico
L(G) = {a i bi | i > 0}
APD:
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 42 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo Clássico
L(G) = {a i bi | i > 0}
APD:
a λ/X b X/λ
b X/λ
q0 q1
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 42 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo Clássico 2
L(G) = {w ∈ {a, b}∗ | w = w R }
APND:
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 44 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo Clássico 2
L(G) = {w ∈ {a, b}∗ | w = w R }
APND:
a λ/A a A/λ
b λ/B a λ/λ b B/λ
b λ/λ
λ λ/λ
q0 q1
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 44 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Hierarquia de Chomsky
Tipo Linguagem Gramática Máquina de aceitação
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 45 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Regras: µ → ν
µ ∈ (V ∪ Σ)+ (i.e., palavra formada por elementos de V e Σ)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 46 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo Clássico
L = {a i bi c i | i > 0}
GSC(L):
S → aAbc | abc
A → aAbC | abC
Cb → bC
Cc → cc
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 47 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 48 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 49 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo Clássico
L = {a i bi c i | i > 0}
c/c, E
Z /Z , E
b/b, E
Y /Y , D Z /Z , D Y /Y , E
a/a, D b/b, D c/c D a/a, E
Y/Y D X/X D
>/>E Z /Z , E
q6 q7 Y /Y , E
X /X , E
Y /Y , D
Z /Z , D
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 50 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Hierarquia de Chomsky
Tipo Linguagem Gramática Máquina de aceitação
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 51 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Regras: µ → ν
µ ∈ (V ∪ Σ)+ (i.e., palavra formada por elementos de V e Σ)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 52 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo Clássico
L = {u[u] | u ∈ {a, b}∗ }
GI(L):
S → aT [a] | bT [b] | []
T [→ aT [A | bT [B | [
Aa → aA
Ab → bA
Ba → aB
Bb → bB
A] → a]
B] → b]
Toda GI é recursivamente enumerável, logo:
existe uma MT que reconhece LI, mas não necessariamente
para para qualquer entrada w ∈ Σ∗
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 53 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Memória ilimitada
Seja w uma palavra de entrada
Configuração inicial da fita: BwBBBBBBBB...
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 54 / 423
Revisão – Linguagens Formais e Autômatos (LFA)
Exemplo Clássico
L = {u[u] | u ∈ {a, b}∗ }
a/a D X /X D
b/b D Y /Y D
[/[ D
q2 q3
D a
a/a E /X
/X b/b E E
a
X /X D
B/B D Y /Y D [/[ E X /X E
q0 q1 q5 q4
Y /Y E
[/[ D E
b/
Y
Y
b/
D
X /X D [/[ D
q8 q6 q7
Y /Y D
a/a D X /X D
]/] D b/b D Y /Y D
X /a E
B/B E Y /b E
q9 q10
[/[E
]/]E
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 55 / 423
Revisão
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 56 / 423
Revisão – Lemas, Teoremas, Corolários, etc.
Definições
Definem objetos e noções que são úteis em um
determinado estudo
Lema e Teorema
Lema: É um pré-teorema, i.e., um resultado que leva a um
teorema ou que é usado na prova de um teorema
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 57 / 423
Revisão – Lemas, Teoremas, Corolários, etc.
Corolário
Consequência imediata de um teorema
Proposição
Uma observação que pode ser facilmente comprovada
não associada a um teorema em particular
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 58 / 423
2. Introdução – Conteúdo
1 Revisão 3
2 Introdução 59
Hierarquia de Chomsky 60
Conceitos Básicos 63
3 Linguagens Regulares 74
Autômatos Finitos Determinísticos
Autômatos Finitos Não-Determinísticos
Autômatos Finitos Não-Determinísticos com Transições-λ
Máquina de Moore
Máquinas de Mealy
Algoritmos de Transformação
Transformação AFND-λ para AFD
Minimização de AFD
Transformação de ER para AFND-λ
Ricardo
7 Terra (rterrabh
Considerações Finais[at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 59
415/ 423
Introdução
Hierarquia de Chomsky
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 60 / 423
Introdução – Hierarquia de Chomsky
Hierarquia de Chomsky
Noam Chomsky (1927-presente): poeta, filósofo, linguista,
professor do MIT, e crítico do capitalismo e da política
externa americana
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 61 / 423
Introdução – Hierarquia de Chomsky
Hierarquia de Chomsky
Tipo Linguagem Gramática Máquina de aceitação
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 62 / 423
Introdução
Conceitos Básicos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 63 / 423
Introdução – Conceitos Básicos
Definições
Linguagem: conjunto de palavras sobre um alfabeto
Convenções:
a, b, c, . . . representam elementos de um alfabeto
p, q, u, v, w, x, y, z representam palavras
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 64 / 423
Introdução – Conceitos Básicos
Definições
Σ∗ é o conjunto de todas as palavras geradas por Σ
∗ (estrela): operador de Kleene
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 65 / 423
Introdução – Conceitos Básicos
Exemplo
Se Σ = {a, b, c}, então Σ∗ inclui:
Tamanho zero: λ
Tamanho dois: aa ab ac ba bb bc ca cb cc
etc.
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 66 / 423
Introdução – Conceitos Básicos
Definições
Tamanho de uma palavra w: número de aplicações do
passo recursivo para se obter w
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 67 / 423
Introdução – Conceitos Básicos
Concatenação
Seja u, v ∈ Σ. A concatenação de u e v, escrita uv, é uma
operação binária em Σ∗ definida assim:
base: se tam(v) = 0, então v = λ e uv = u
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 68 / 423
Introdução – Conceitos Básicos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 70 / 423
Introdução – Conceitos Básicos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 71 / 423
Introdução – Conceitos Básicos
Concatenação de Linguagens
Uma linguagem L é um subconjunto de Σ* (L ⊆ Σ*)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 72 / 423
Introdução – Conceitos Básicos
X∗ (definição formal)
∞
[
X =∗
Xi
i=0
X+ (definição formal)
∞
[
X+ = Xi
i=1
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 73 / 423
3. Linguagens Regulares – Conteúdo
1 Revisão 3
2 Introdução 59
3 Linguagens Regulares 74
Conjuntos Regulares 76
Expressões Regulares 80
Gramáticas Regulares 85
Autômatos Finitos 92
Autômatos Finitos Determinísticos
Autômatos Finitos Não-Determinísticos
Autômatos Finitos Não-Determinísticos com Transições-λ
Autômatos com Saída 115
Máquina de Moore
Máquinas de Mealy
Algoritmos de Transformação
Algoritmos 133
Transformação AFND-λ para AFD
Minimização de AFD
Transformação de ER para AFND-λ
Propriedades 155
Lema do Bombeamento 162
Hierarquia de Chomsky
Tipo Linguagem Gramática Máquina de aceitação
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 75 / 423
Linguagens Regulares
Conjuntos Regulares
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 76 / 423
Linguagens Regulares – Conjuntos Regulares
Exemplo #2 (Σ = {b})
L1 = {bb} e L2 = {λ, bb, bbbb}
Palavras com número par de b: L1 ∗ e L2 ∗
L1 ∗ = {λ, bb, bbbb, bbbbbb, ...}
L2 ∗ = {λ, bb, bbbb, bbbbbb, ...}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 77 / 423
Linguagens Regulares – Conjuntos Regulares
Conjuntos Regulares
Uma linguagem regular é aquela que pode ser definida por
um conjunto regular
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 78 / 423
Linguagens Regulares – Conjuntos Regulares
Exemplo
Palavras sobre {a, b} que começam e terminam com a e
contêm pelo menos um b
{a}{a, b}∗ {b}{a, b}∗ {a}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 79 / 423
Linguagens Regulares
Expressões Regulares
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 80 / 423
Linguagens Regulares – Expressões Regulares
Expressões Regulares
Abreviação para conjuntos regulares
PS: x + denota xx ∗
Exemplos
{a}{a, b}∗ {b}{a, b}∗ {a} = a(a ∪ b)∗ b(a ∪ b)∗ a
Exercícios
1 Considerando Σ = {a, b}, crie expressões regulares para as
seguintes linguagens:
L1 = {bawab | w ∈ {a, b}∗ }
L2 = palavras contendo aa ou bb
L3 = palavras contendo aa e bb
Identidades
1 ∅w = w∅ = ∅ 10 w ∗ w = ww ∗ = w +
2 λw = wλ = w 11 w(x ∪ y) = wx ∪ wy
3 ∅∗ = λ 12 (x ∪ y)w = xw ∪ yw
4 λ∗ = λ 13 (wy)∗ w = w(yw)∗
5 w ∪u =u∪w 14 (w ∪ y)∗ = (w ∗ ∪ y ∗ )
= w ∗ (w ∪ y)∗
6 w ∪∅=w
= (w ∪ yw ∗ )∗
7 w ∪w =w = (w ∗ y ∗ )∗
= w ∗ (yw ∗ )∗
8 w ∗w ∗ = w ∗ = (w ∗ y)∗ w ∗
9 (w ∗ )∗ = w ∗
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 83 / 423
Linguagens Regulares – Expressões Regulares
Exercícios
Mostre que:
b∗ (ab+ )∗ ∪ b∗ (ab+ )∗ a = (b ∪ ab)∗ (λ ∪ a)
a ∗ (a ∗ ba ∗ ba ∗ )∗ = a ∗ (ba ∗ ba ∗ )∗
PS
Existem linguagens que não podem definidas por
expressões regulares
Por exemplo, {a n bn | n ≥ 0}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 84 / 423
Linguagens Regulares
Gramáticas Regulares
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 85 / 423
Linguagens Regulares – Gramáticas Regulares
Regras: µ → ν
µ∈V (i.e., µ é um elemento de V )
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 86 / 423
Linguagens Regulares – Gramáticas Regulares
GR(L):
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 87 / 423
Linguagens Regulares – Gramáticas Regulares
GR(L):
S → aA
A → aA | bB
B → aB | bB | a
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 87 / 423
Linguagens Regulares – Gramáticas Regulares
GR(L):
S → aA
A → aA | bB
B → aB | bB | a
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 88 / 423
Linguagens Regulares – Gramáticas Regulares
Derivação
Aplicação consecutiva de regras
Portanto:
Uma palavra w ∈ (V ∪ Σ)∗ é uma forma sentencial se S ⇒∗ w
L(G) = {w ∈ Σ∗ | S ⇒∗ w}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 89 / 423
Linguagens Regulares – Gramáticas Regulares
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 90 / 423
Linguagens Regulares – Gramáticas Regulares
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 90 / 423
Linguagens Regulares – Gramáticas Regulares
E abbabb ∈ L(G)?
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 90 / 423
Linguagens Regulares – Gramáticas Regulares
Enfim
Uma linguagem é regular se pode ser gerada por alguma
gramática regular (ou CR ou ER)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 91 / 423
Linguagens Regulares
Autômatos Finitos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 92 / 423
Linguagens Regulares – Autômatos Finitos
Autômato Finito
Máquina Aceitadora de LR
Podem ser determinísticos (AFD)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 93 / 423
Linguagens Regulares
Autômatos Finitos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 94 / 423
Linguagens Regulares – Autômatos Finitos – AFD
Exemplo
L = palavras sobre {a, b} que começam e terminam com a
e possuem pelo menos um b
AFD:
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 96 / 423
Linguagens Regulares – Autômatos Finitos – AFD
Exemplo
L = palavras sobre {a, b} que começam e terminam com a
e possuem pelo menos um b
AFD:
a b a
a
δD a b
a b
q0 q1 q2 q3 q0 q1 −
q1 q1 q2
b q2 q3 q2
q3 q3 q2
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 96 / 423
Linguagens Regulares – Autômatos Finitos – AFD
Exemplo
L = palavras sobre {a, b} que começam e terminam com a
e possuem pelo menos um b
AFD:
a b a
a
δD a b
a b
q0 q1 q2 q3 q0 q1 −
q1 q1 q2
b q2 q3 q2
q3 q3 q2
Sim, na verdade, é um AFD incompleto, por quê?
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 96 / 423
Linguagens Regulares – Autômatos Finitos – AFD
Exercícios de Fixação
1 L = palavras sobre {a, b} que contém aa ou bb
2 L = palavras sobre {a, b} que contém aaa
3 L = palavras sobre {a, b} com número par de a e ímpar de b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 97 / 423
Linguagens Regulares – Autômatos Finitos – AFD
se total, então
em todos os estados (Q), existe transições para todos os
símbolos (Σ)
AFD é completo
AFD nunca trava
se parcial, então
em algum estado (Q), pode não existir transição para algum
símbolo (Σ)
AFD é incompleto
AFD pode travar
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 98 / 423
Linguagens Regulares – Autômatos Finitos – AFD
Aceitação / Rejeição
Um AF aceita a entrada quando
após processar o último símbolo, assume um estado final (F)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 99 / 423
Linguagens Regulares – Autômatos Finitos – AFD
δ̂D : Q x Σ∗ → Q
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 100 / 423
Linguagens Regulares – Autômatos Finitos – AFD
Outros Exercícios
1 L = Σ∗
2 L=∅
Pergunta-se
Qual a principal diferença?
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 101 / 423
Linguagens Regulares – Autômatos Finitos – AFD
Questões importantes
1 Pode um AF entrar em loop?
2 Dado dois AFs M1 e M2 , pergunta-se:
Quando os dois AFs são equivalentes?
ACEITA(M) ∩ REJEITA(M) =
ACEITA(M) ∪ REJEITA(M) =
∼ACEITA(M) =
∼REJEITA(M) =
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 102 / 423
Linguagens Regulares – Autômatos Finitos – AFD
Questões importantes
1 Pode um AF entrar em loop?
2 Dado dois AFs M1 e M2 , pergunta-se:
Quando os dois AFs são equivalentes? L(M1 ) = L(M2 )
ACEITA(M) ∩ REJEITA(M) = ∅
ACEITA(M) ∪ REJEITA(M) = U
∼ACEITA(M) = REJEITA(M)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 102 / 423
Linguagens Regulares
Autômatos Finitos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 103 / 423
Linguagens Regulares – Autômatos Finitos – AFND
Composição
A construção de sistemas é composicional, geralmente
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 104 / 423
Linguagens Regulares – Autômatos Finitos – AFND
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 105 / 423
Linguagens Regulares – Autômatos Finitos – AFND
Exemplo
L = palavras sobre {a, b} que começam e terminam com a
e possuem pelo menos um b
AFND:
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 106 / 423
Linguagens Regulares – Autômatos Finitos – AFND
Exemplo
L = palavras sobre {a, b} que começam e terminam com a
e possuem pelo menos um b
AFND: δND a b
a a,b q0 {q1 } ∅
q1 {q1 } {q2 }
a b a q2 {q2 , q3 } {q2 }
q0 q1 q2 q3 q3 ∅ ∅
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 106 / 423
Linguagens Regulares – Autômatos Finitos – AFND
Exemplo
L = palavras sobre {a, b} que começam e terminam com a
e possuem pelo menos um b
AFND: δND a b
a a,b q0 {q1 } ∅
q1 {q1 } {q2 }
a b a q2 {q2 , q3 } {q2 }
q0 q1 q2 q3 q3 ∅ ∅
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 106 / 423
Linguagens Regulares – Autômatos Finitos – AFND
Exercício de Fixação
1 L = palavras sobre {a, b} que contém aa ou bb
2 L = (a ∪ b)∗ bb
3 L = palavras que terminam com aaa
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 107 / 423
Linguagens Regulares – Autômatos Finitos – AFND
Aceitação / Rejeição
Um AF aceita a entrada quando
após processar o último símbolo, em alguma das possíveis
computações, assume um estado final (F)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 108 / 423
Linguagens Regulares – Autômatos Finitos – AFND
δ̂ND : Q x Σ∗ → P(Q)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 109 / 423
Linguagens Regulares – Autômatos Finitos – AFD
Pontos Importantes
Muitas vezes, é muito mais fácil desenvolver um AFND do
que um AFD
Por exemplo:
L = palavras sobre {a, b} cujo quinto último símbolo é a
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 110 / 423
Linguagens Regulares
Autômatos Finitos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 111 / 423
Linguagens Regulares – Autômatos Finitos – AFND-λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 112 / 423
Linguagens Regulares – Autômatos Finitos – AFND-λ
Exemplo
L = {0k | k é múltiplo de 2 ou 3}
AFND-λ:
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 113 / 423
Linguagens Regulares – Autômatos Finitos – AFND-λ
Exemplo
L = {0k | k é múltiplo de 2 ou 3}
AFND-λ:
0 δND−λ 0 λ
q1 q2 q0 ∅ {q1 , q3 }
λ q1 {q2 } ∅
0 q2 {q1 } ∅
q0 q3 {q4 } ∅
q4 {q5 } ∅
λ
q5 {q3 } ∅
0
q3 q4
0 0
q5
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 113 / 423
Linguagens Regulares – Autômatos Finitos – AFND-λ
Exercício de Fixação
1 L = (a ∪ b)∗ bb ou aa(a ∪ b)∗
2 L = palavras sobre {a, b, c} que terminam com a ou bb ou
ccc
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 114 / 423
Linguagens Regulares
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 115 / 423
Linguagens Regulares
Máquina de Moore
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 116 / 423
Linguagens Regulares – Autômatos com Saída – Moore
Máquina de Moore
Um AFD é uma sêxtupla (Q, Σ, Γ, δD , σ, q0 ):
Q = conjunto finito de estados
Σ = alfabeto de entrada
Γ = alfabeto da saída
δD : Q x Σ → Q = função (total) de transições de estados
σ : Q → Γ = função (total) de saída
qo ∈ Q = estado inicial
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 117 / 423
Linguagens Regulares – Autômatos com Saída – Moore
q3 /2
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 118 / 423
Linguagens Regulares – Autômatos com Saída – Moore
Exemplo #1
Máquina de Moore que determina o número de a
presentes nos dois últimos símbolos da palavra de entrada
ba/1
b a
a a
bb/0 a b aa/2
b b
ab/1
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 119 / 423
Linguagens Regulares – Autômatos com Saída – Moore
Formalização:
r(Q, λ) = σ(Q)
Saída Computada:
A saída de uma máquina de Moore M = (Q, Σ, Γ, δD , σ, q0 )
para a palavra w ∈ Σ∗ é r(q0 , w)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 120 / 423
Linguagens Regulares – Autômatos com Saída – Moore
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 121 / 423
Linguagens Regulares – Autômatos com Saída – Moore
Exemplo #2
Máquina de Moore que simula um AFD que reconhece as
palavras que terminam com aa
ba/0
b a
a a
bb/0 a b aa/1
b b
ab/0
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 122 / 423
Linguagens Regulares – Autômatos com Saída – Exercícios
Exercício
1 Projetar uma AFD que cuja soma dos símbolos da palavra
seja divisível por 4, considerando Σ = {0, 1, 2, 3}
Dica1 : A máquina deve aceitar “13”, “1111”, “202”, . . .
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 123 / 423
Linguagens Regulares
Máquinas de Mealy
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 124 / 423
Linguagens Regulares – Autômatos com Saída – Mealy
Máquina de Mealy
Um AFD é uma sêxtupla (Q, Σ, Γ, δD , σ, q0 ):
Q = conjunto finito de estados
Σ = alfabeto de entrada
Γ = alfabeto da saída
δD : Q x Σ → Q = função (total) de transições de estados
σ : Q × Σ → Γ = função (total) de saída
qo ∈ Q = estado inicial
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 125 / 423
Linguagens Regulares – Autômatos com Saída – Mealy
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 126 / 423
Linguagens Regulares – Autômatos com Saída – Mealy
Exemplo #3
Máquina de Mealy que determina o quociente da divisão
de um número binário por 6
0/0
1/1
1/0 0/1
q2 q5 q4
1/0
q1 q3
1/0 1/1
0/0
q0 0/1
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 127 / 423
Linguagens Regulares – Autômatos com Saída – Mealy
Exemplo #4
Modificação 2 em 1
Mealy: quociente da divisão por 6 (transições)
Moore: resto da divisão por 6 (estados)
0/0
1/1
1/0 0/1
q2 /2 q5 /5 q4 /4
q1 /1 q3 /3
q0 /0 0/1
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 128 / 423
Linguagens Regulares – Autômatos com Saída – Mealy
Formalização:
s(Q, λ) = λ
Saída Computada:
A saída de uma máquina de Mealy M = (Q, Σ, Γ, δD , σ, q0 )
para a palavra w ∈ Σ∗ é s(q0 , w)
Exercício
1 Projetar uma Máquina de Mealy que troque a por b e
vice-versa, considerando Σ = {a, b}
Dica: Não complique o que é simples
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 130 / 423
Linguagens Regulares
Algoritmos de Transformação
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 131 / 423
Algoritmos de Transformação
Algoritmos de Transformação
Existem algoritmos de transformação de uma Máquina de
Moore para uma Máquina de Mealy e vice-versa, com
certas ressalvas
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 132 / 423
Linguagens Regulares
Algoritmos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 133 / 423
Linguagens Regulares
Algoritmos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 134 / 423
Linguagens Regulares – Algoritmos – AFND-λ para AFND
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 135 / 423
Linguagens Regulares – Algoritmos – AFND-λ para AFND
AFND-λ
a b
a
q0 q1
a λ
q2
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 136 / 423
Linguagens Regulares – Algoritmos – AFND-λ para AFND
AFND-λ
a b
q0
a
q1 δND−λ a b c λ
q0 {q0 , q1 , q2 } ∅ ∅ ∅
a λ
q1 ∅ {q1 } ∅ ∅
q2 q2 ∅ ∅ {q2 } {q1 }
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 136 / 423
Linguagens Regulares – Algoritmos – AFND-λ para AFND
AFND-λ
a b
q0
a
q1 δND−λ a b c λ
q0 {q0 , q1 , q2 } ∅ ∅ ∅
a λ
q1 ∅ {q1 } ∅ ∅
q2 q2 ∅ ∅ {q2 } {q1 }
1 δND−λ → δND
i. São estados iniciais: fecho−λ(q0 )
Se um estado inicial alcança um δND a b c
estado final, tal inicial será final
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 136 / 423
Linguagens Regulares – Algoritmos – AFND-λ para AFND
AFND-λ
a b
q0
a
q1 δND−λ a b c λ
q0 {q0 , q1 , q2 } ∅ ∅ ∅
a λ
q1 ∅ {q1 } ∅ ∅
q2 q2 ∅ ∅ {q2 } {q1 }
1 δND−λ → δND
i. São estados iniciais: fecho−λ(q0 )
Se um estado inicial alcança um δND a b c
estado final, tal inicial será final q0 {q0 , q1 , q2 } ∅ ∅
q1 ∅ {q1 } ∅
q2 ∅
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 136 / 423
Linguagens Regulares – Algoritmos – AFND-λ para AFND
AFND-λ
a b
q0
a
q1 δND−λ a b c λ
q0 {q0 , q1 , q2 } ∅ ∅ ∅
a λ
q1 ∅ {q1 } ∅ ∅
q2 q2 ∅ ∅ {q2 } {q1 }
1 δND−λ → δND
i. São estados iniciais: fecho−λ(q0 )
Se um estado inicial alcança um δND a b c
estado final, tal inicial será final q0 {q0 , q1 , q2 } ∅ ∅
ii. Para os outros estados qi : q1 ∅ {q1 } ∅
q2 ∅
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 136 / 423
Linguagens Regulares – Algoritmos – AFND-λ para AFND
AFND-λ
a b
q0
a
q1 δND−λ a b c λ
q0 {q0 , q1 , q2 } ∅ ∅ ∅
a λ
q1 ∅ {q1 } ∅ ∅
q2 q2 ∅ ∅ {q2 } {q1 }
1 δND−λ → δND
i. São estados iniciais: fecho−λ(q0 )
Se um estado inicial alcança um δND a b c
estado final, tal inicial será final q0 {q0 , q1 , q2 } ∅ ∅
ii. Para os outros estados qi : q1 ∅ {q1 } ∅
considera todo estado em fecho−λ(qi ) q2 ∅ {q 1 }
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 136 / 423
Linguagens Regulares – Algoritmos – AFND-λ para AFND
AFND-λ
a b
q0
a
q1 δND−λ a b c λ
q0 {q0 , q1 , q2 } ∅ ∅ ∅
a λ
q1 ∅ {q1 } ∅ ∅
q2 q2 ∅ ∅ {q2 } {q1 }
1 δND−λ → δND
i. São estados iniciais: fecho−λ(q0 )
Se um estado inicial alcança um δND a b c
estado final, tal inicial será final q0 {q0 , q1 , q2 } ∅ ∅
ii. Para os outros estados qi : q1 ∅ {q1 } ∅
considera todo estado em fecho−λ(qi ) q2 ∅ {q 1 } {q 1 , q 2 }
consome, para em um estado qj e então
adiciona fecho−λ(qj )
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 136 / 423
Linguagens Regulares – Algoritmos – AFND-λ para AFND
AFND (agora)
δND a b c
q0 {q0 , q1 , q2 } ∅ ∅
q1 ∅ {q1 } ∅
q2 ∅ {q 1 } {q 1 , q 2 }
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 137 / 423
Linguagens Regulares – Algoritmos – AFND-λ para AFND
AFND (agora)
a b
q0
a
q1 δND a b c
q0 {q0 , q1 , q2 } ∅ ∅
a b,c
q1 ∅ {q1 } ∅
q2 q2 ∅ {q 1 } {q 1 , q 2 }
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 137 / 423
Linguagens Regulares – Algoritmos – AFND-λ para AFND
AFND (agora)
a b
q0
a
q1 δND a b c
q0 {q0 , q1 , q2 } ∅ ∅
a b,c
q1 ∅ {q1 } ∅
q2 q2 ∅ {q 1 } {q 1 , q 2 }
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 137 / 423
Linguagens Regulares – Algoritmos – AFND-λ para AFND
AFND (agora)
a b
q0
a
q1 δND a b c
q0 {q0 , q1 , q2 } ∅ ∅
a b,c
q1 ∅ {q1 } ∅
q2 q2 ∅ {q 1 } {q 1 , q 2 }
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 137 / 423
Linguagens Regulares – Algoritmos – AFND-λ para AFND
AFND (agora)
a b
q0
a
q1 δND a b c
q0 {q0 , q1 , q2 } ∅ ∅
a b,c
q1 ∅ {q1 } ∅
q2 q2 ∅ {q 1 } {q 1 , q 2 }
AFD (enfim)
a
c
δD a b c
hq0 i
a
hq0 , q1 , q2 i
c
hq1 , q2 i hq0 i hq0 , q1 , q2 i ∅ ∅
hq0 , q1 , q2 i hq0 , q1 , q2 i hq1 i hq1 , q2 i
b b hq1 i ∅ hq1 i ∅
hq1 , q2 i ∅ hq1 i hq1 , q2 i
b hq1 i
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 138 / 423
Linguagens Regulares – Algoritmos – AFND-λ para AFND
Exercício de Fixação #1
a
q1 q2
λ b
q0
λ a
q3
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 139 / 423
Linguagens Regulares – Algoritmos – AFND-λ para AFND
Exercício de Fixação #2
0,1
1 0,1 0,1
q0 q1 q2 q3
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 140 / 423
Linguagens Regulares – Algoritmos – AFND-λ para AFND
Exercício de Fixação #3
a,b
a
q3 q4
λ
a b
q0 q1 q2
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 141 / 423
Linguagens Regulares
Algoritmos
Minimização de AFD
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 142 / 423
Linguagens Regulares – Algoritmos – Minimização de AFD
Minimização de um AFD
1 Todos os estados são equivalentes
2 Se um é estado final e o outro não, logo não são
equivalentes
3 Conferir, estado por estado, se são "equivalentes"
Procedimento a ser detalhado
c a
q1
c a,b q4
q0 b b q3
q2 q5
b c c
a a,b,c
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 143 / 423
Linguagens Regulares – Algoritmos – Minimização de AFD
Algoritmo
Entrada: AFD M = (Q, Σ, δ, q0 , F)
2 Para cada par [i, j], i < j, se um é estado final e o outro não, faça D[i, j] = 1
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 144 / 423
Linguagens Regulares – Algoritmos – Minimização de AFD
Exemplo
a,b
b b b
q0 q1 q2 q3
a a a
q4 q5 q6
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 145 / 423
Linguagens Regulares – Algoritmos – Minimização de AFD
a,b
b b b
q0 q1 q2 q3
a a a
q4 q5 q6
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 146 / 423
Linguagens Regulares – Algoritmos – Minimização de AFD
a,b
b b b
q0 q1 q2 q3
a a a
q4 q5 q6
2 Para cada par [i, j], i < j, se um é estado final e o outro não, faça D[i, j] = 1 (aqui, x)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 147 / 423
Linguagens Regulares – Algoritmos – Minimização de AFD
a,b
b b b
q0 q1 q2 q3
a a a
q4 q5 q6
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 148 / 423
Linguagens Regulares – Algoritmos – Minimização de AFD
a,b
b b b
q0 q1 q2 q3
a a a
q4 q5 q6
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 148 / 423
Linguagens Regulares – Algoritmos – Minimização de AFD
a,b
b b b
q0 q1 q2 q3
a a a
q4 q5 q6
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 148 / 423
Linguagens Regulares – Algoritmos – Minimização de AFD
a,b
b b b
q0 q1 q2 q3
a a a
q4 q5 q6
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 148 / 423
Linguagens Regulares – Algoritmos – Minimização de AFD
a,b
b b b
q0 q1 q2 q3
a a a
q4 q5 q6
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 148 / 423
Linguagens Regulares – Algoritmos – Minimização de AFD
a,b
b b b
q0 q1 q2 q3
a a a
q4 q5 q6
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 148 / 423
Linguagens Regulares – Algoritmos – Minimização de AFD
a,b
b b b
q0 q1 q2 q3
a a a
q4 q5 q6
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 148 / 423
Linguagens Regulares – Algoritmos – Minimização de AFD
a,b
b b b
q0 q1 q2 q3
a a a
q4 q5 q6
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 148 / 423
Linguagens Regulares – Algoritmos – Minimização de AFD
a,b
b b b
q0 q1 q2 q3
a a a
q4 q5 q6
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 148 / 423
Linguagens Regulares – Algoritmos – Minimização de AFD
a,b
b b b
q0 q1 q2 q3
a a a
q4 q5 q6
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 148 / 423
Linguagens Regulares – Algoritmos – Minimização de AFD
a,b
b b b
q0 q1 q2 q3
a a a
q4 q5 q6
a,b
b b b
q0 q1 q2 q3
a a
a
{q4 , q5 , q6 }
a,b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 149 / 423
Linguagens Regulares – Algoritmos – Minimização de AFD
Exercício de Fixação
b
b
q1 q3
a
a a
q2 a,b
q0 q7
q5 a,b
b a a,b
a b
b
q4 q6
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 150 / 423
Linguagens Regulares
Algoritmos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 151 / 423
Linguagens Regulares – Algoritmos – ER-λ para AFND-λ
Algoritmo de Thompson
a b
a b
ab
a b
a ∪ b (ou a | b)
a
λ λ
λ b λ
a∗
λ
λ a λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 152 / 423
Linguagens Regulares – Algoritmos – ER-λ para AFND-λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 153 / 423
Linguagens Regulares – Algoritmos – ER-λ para AFND-λ
a
q2 q3
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 153 / 423
Linguagens Regulares – Algoritmos – ER-λ para AFND-λ
a
q2 q3
b
q4 q5
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 153 / 423
Linguagens Regulares – Algoritmos – ER-λ para AFND-λ
a
q2 q3
λ λ
q1 q6
λ b λ
q4 q5
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 153 / 423
Linguagens Regulares – Algoritmos – ER-λ para AFND-λ
a
q2 q3
λ λ
c
q1 q6 q7 q8
λ b λ
q4 q5
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 153 / 423
Linguagens Regulares – Algoritmos – ER-λ para AFND-λ
λ
a
q2 q3
λ λ
λ c λ
q1 qq660 q7 q8 q9
λ b λ
q4 q5
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 153 / 423
Linguagens Regulares – Algoritmos – ER-λ para AFND-λ
λ
a
q2 q3
λ λ
λ c λ
q1 q6 q7 q8 q9
λ b λ
q4 q5
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 153 / 423
Linguagens Regulares – Algoritmos – ER-λ para AFND-λ
λ
a
q2 q3
λ λ
λ λ c λ λ
q0 q1 q6 q7 q8 q9 q10
λ b λ
q4 q5
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 153 / 423
Linguagens Regulares – Algoritmos – ER-λ para AFND-λ
Exercícios de Fixação
1 (a ∪ b)∗
2 (a ∪ b)∗ abb
3 ((λ ∪ a)b∗ )∗
4 (a ∪ b)∗ abb(a ∪ b)∗
5 letra (letra ∪ digito)∗
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 154 / 423
Linguagens Regulares
Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 155 / 423
Linguagens Regulares – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 156 / 423
Linguagens Regulares – Propriedades
Propriedades de Fechamento
Se L1 e L2 são regulares, então também são regulares:
L1 ∪ L2
L1 L2
L1∗
Objetivos:
Originar novas LRs a partir de existentes
Provar (ou refutar) que alguma linguagem é regular
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 157 / 423
Linguagens Regulares – Propriedades
Propriedades de Fechamento
Se L1 e L2 são regulares, então também são regulares:
L1 ∪ L2
L1 L2
L1∗
Objetivos:
Originar novas LRs a partir de existentes
Provar (ou refutar) que alguma linguagem é regular
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 157 / 423
Linguagens Regulares – Propriedades
Propriedades de Fechamento
Se L1 e L2 são regulares, então também são regulares:
L1 ∪ L2
L1 L2
L1∗
Objetivos:
Originar novas LRs a partir de existentes
Provar (ou refutar) que alguma linguagem é regular
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 157 / 423
Linguagens Regulares – Propriedades
Propriedades de Fechamento
Prove que a linguagem formada por palavras sobre {a,b}
que tenham aa e não tenham bb é regular (Exemplo 6.4.1, Sudkamp [?])
L1 = palavras com aa = (a ∪ b)∗ aa(a ∪ b)∗ é regular
L2 também é regular
Logo, L1 ∩ L2 é regular
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 158 / 423
Linguagens Regulares – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 159 / 423
Linguagens Regulares – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 160 / 423
Linguagens Regulares – Propriedades
Prova
Suponha os AFs M1 e M2 onde L(M1 ) = L1 e L(M2 ) = L2
L3 = (L1 ∩ L2 ) ∪ (L1 ∩ L2 )
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 161 / 423
Linguagens Regulares
Lema do Bombeamento
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 162 / 423
Linguagens Regulares – Lema do Bombeamento
b b
a
q0 q1
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 163 / 423
Linguagens Regulares – Lema do Bombeamento
q0 q1
Caminhos de aceitação
O caminho de aceitação de qualquer palavra z tal que
|z| ≥ k e z ∈ L contém um ciclo
e.g., aa, baa, bb, . . .
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 164 / 423
Linguagens Regulares – Lema do Bombeamento
Decomposição
Suponha uma palavra z ∈ L tal que |z| > k
u w
q0 Q(s) qf
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 165 / 423
Linguagens Regulares – Lema do Bombeamento
Exemplo
a a
a
q0 q1
b
a b
q2 q3
a, b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 167 / 423
Linguagens Regulares – Lema do Bombeamento
Exemplo #1: L = {a i bi | i ≥ 0}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 168 / 423
Linguagens Regulares – Lema do Bombeamento
Exemplo #1: L = {a i bi | i ≥ 0}
Assuma que L é regular e seja k a constante especificada pelo Lema.
Seja z = a k bk . Qualquer decomposição de z = uvw satisfazendo as
precondições do lema terão a seguinte forma:
u v w
ai aj a k−i−j bk
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 168 / 423
Linguagens Regulares – Lema do Bombeamento
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 169 / 423
Linguagens Regulares – Lema do Bombeamento
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 169 / 423
Linguagens Regulares – Lema do Bombeamento
Exercício de Fixação
1 L1 = {0m 1n | m > n}
2 L2 = {0n 12n | n > 0}
3 L3 = {a i bm c n | 0 < i, 0 < m < n}
4 L4 = {0m 1n 2m+n | m > 0 e n > 0}
5 L5 = {0n | n é um número primo }
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 170 / 423
4. Linguagens Livres de Contexto – Conteúdo
1 Revisão 3
2 Introdução 59
3 Linguagens Regulares 74
Autômatos Finitos Determinísticos
Autômatos Finitos Não-Determinísticos
Autômatos Finitos Não-Determinísticos com Transições-λ
Máquina de Moore
Máquinas de Mealy
Algoritmos de Transformação
Transformação AFND-λ para AFD
Minimização de AFD
Transformação de ER para AFND-λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 171 / 423
5
Linguagens Livres de Contexto
Hierarquia de Chomsky
Tipo Linguagem Gramática Máquina de aceitação
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 172 / 423
Linguagens Livres de Contexto
GR:
S → bS | aA
A → aA | bS | λ
AF:
b a
a
S A
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 173 / 423
Linguagens Livres de Contexto
LR x LLC
LR descrevem linguagens simples
Geradas por GR
Reconhecidas por AF
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 174 / 423
Linguagens Livres de Contexto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 175 / 423
Linguagens Livres de Contexto
Aplicabilidade
Como já vimos, LR são fundamentais no projeto de um
analisador léxico
Padrões são descritos por ER
Diagramas de Transição (AF estendidos) são usados no
reconhecimento de tokens
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 176 / 423
Linguagens Livres de Contexto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 177 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Regras: µ → ν
µ∈V (i.e., um não-terminal)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 178 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Regras
Mecânica: A → w
o não-terminal A pode ser trocado por w
Livre de contexto:
A sempre pode ser trocado por w (independentemente do
“contexto” u e v onde A ocorrer)
Característica Intrínseca
GLC permitem produzir duplo balanceamento
Derivação
Aplicação consecutiva de regras
Portanto:
Uma palavra w ∈ (V ∪ Σ)∗ é uma forma sentencial se S ⇒∗ w
L(G) = {w ∈ Σ∗ | S ⇒∗ w}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 180 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Exemplos
Definir GLCs para as seguintes linguagens:
1 Palíndromas sobre {a, b}, i.e., L = {w ∈ {a, b}∗ | w = w R }
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 181 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Exemplos
Definir GLCs para as seguintes linguagens:
1 Palíndromas sobre {a, b}, i.e., L = {w ∈ {a, b}∗ | w = w R }
S → aSa | bSb | a | b | λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 181 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Exemplos
Definir GLCs para as seguintes linguagens:
1 Palíndromas sobre {a, b}, i.e., L = {w ∈ {a, b}∗ | w = w R }
S → aSa | bSb | a | b | λ
S→A|a|b
A → aaS | abS | baS | bbS
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 181 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Exercícios
Definir GLCs para as seguintes linguagens:
1 L = {a n bm a n | m > 0 e n > 0}
2 L = {a n bm c m d 2n | m > 0 e n ≥ 0}
3 L = {a n bm | 0 ≤ n ≤ m ≤ 2n}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 182 / 423
Linguagens Livres de Contexto
Recursividade
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 183 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Recursividade
Uma regra A → uAv é dita ser recursiva
Tipo de Derivações
Derivações mais à esquerda (usada por analisadores sintáticos descendentes)
Sempre trocam o V mais à esquerda da forma sentencial
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 184 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Exemplo
Assuma a seguinte GLC:
S → AA
A → AAA | bA | Ab | a
Exemplo
Assuma a seguinte GLC:
S → AA
A → AAA | bA | Ab | a
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 185 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Exemplo
Assuma a seguinte GLC:
S → AA
A → AAA | bA | Ab | a
Teorema
Seja G uma GLC. Uma palavra w pertence a L(G) sse existe
uma derivação mais à esquerda para w a partir de S
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 186 / 423
Linguagens Livres de Contexto
Árvore de Derivação
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 187 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Processadores de texto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 188 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 189 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Exemplo #1
GLC: S → aSb | λ
Palavra: aabb
a S b
a S b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 190 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Exemplo #2
GLC: E → E + E | E ∗ E | (E) | id
Palavra: id + id * id
E + E
id E ∗ E
id id
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 191 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Exemplo #2
GLC: E → E + E | E ∗ E | (E) | id
Palavra: id + id * id
E + E
Algum problema com a
GLC ou com a árvore?
id E ∗ E
id id
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 191 / 423
Linguagens Livres de Contexto
Ambiguidade
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 192 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Ambiguidade
Uma GLC G é ambígua se existir uma palavra w em L(G)
que possua duas derivações mais à esquerda diferentes
o que significa duas árvores de derivação diferentes
Exemplo: L(G) = a +
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 193 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Ambiguidade
Uma GLC G é ambígua se existir uma palavra w em L(G)
que possua duas derivações mais à esquerda diferentes
o que significa duas árvores de derivação diferentes
Exemplo: L(G) = a +
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 193 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Ambiguidade
Uma GLC G é ambígua se existir uma palavra w em L(G)
que possua duas derivações mais à esquerda diferentes
o que significa duas árvores de derivação diferentes
Exemplo: L(G) = a +
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 193 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Ambiguidade – Exemplo #1
Assuma a seguinte GLC G:
S → aSb | aSbb | λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 194 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Ambiguidade – Exemplo #1
Assuma a seguinte GLC G:
S → aSb | aSbb | λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 194 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Ambiguidade – Exemplo #1
Assuma a seguinte GLC G:
S → aSb | aSbb | λ
Ambiguidade – Exemplo #2
Assuma a seguinte GLC G usada reconhecer expressões
aritméticas em um analisador sintático
E → E + E | E ∗ E | (E) | id
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 195 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Ambiguidade – Exemplo #2
Assuma a seguinte GLC G usada reconhecer expressões
aritméticas em um analisador sintático
E → E + E | E ∗ E | (E) | id
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 195 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Derivações:
E ⇒ E + E ⇒ id + E ⇒ id + E ∗ E ⇒ id + id ∗ E ⇒ id + id ∗ id
E ⇒ E ∗ E ⇒ E + E ∗ E ⇒ id + E ∗ E ⇒ id + id ∗ E ⇒ id + id ∗ id
E E
E + E E ∗ E
id E ∗ E E + E id
id id id id
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 196 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Ambiguidade – Indecibilidade
O problema de determinar se uma GLC arbitrária é
ambígua é indecidível
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 197 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Para refletir!
Seja a seguinte GLC que gere {λ} ∪ {ab}{ab}∗ {a}∗ :
S → abSA | λ
A → Aa | λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 198 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Para refletir!
Seja a seguinte GLC que gere {λ} ∪ {ab}{ab}∗ {a}∗ :
S → abSA | λ
A → Aa | λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 198 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Para refletir!
Seja a seguinte GLC que gere {λ} ∪ {ab}{ab}∗ {a}∗ :
S → abSA | λ
A → Aa | λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 198 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Ambiguidade
Maioria das LLC podem ser geradas por uma GLC não
ambígua
No entanto...
Nem toda LLC pode ser gerada por uma GLC não ambígua
Tais LLC são inerentemente ambíguas
Exemplo clássico:
L= {a n bm c m d n ou a n bn c m d m | m ≥ 1 e n ≥ 1}
Crie uma GLC para L
Mostre a derivação de, e.g., aabbccdd
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 199 / 423
Linguagens Livres de Contexto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 200 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
Notação BNF:
“→” é substituído por “::=” (ou apenas “:”)
Não se usa λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 201 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
BNF de Java
The Java Language Specification (http://java.sun.com/docs/books/jls/)
Fragmento de exemplo:
IfThenStatement:
if ( Expression ) Statement
IfThenElseStatement:
if ( Expression ) StatementNoShortIf else Statement
BasicForStatement:
for ( [ForInit] ; [Expression] ; [ForUpdate] ) Statement
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 202 / 423
Linguagens Livres de Contexto – Gramática Livre de Contexto
7 DCDecl ::=
only RefMod can-Type { , can-Type} RefMod [ DCDecl ] |
9 RefMod cannot-Type {, cannot-Type} RefMod [DCDecl] |
RefMod can-Type-only {, can-Type-only} RefMod [DCDecl] |
11 RefMod must-MustType { , must-MustType } RefMod [ DCDecl ]
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 203 / 423
Linguagens Livres de Contexto
Formas Normais
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 204 / 423
Linguagens Livres de Contexto – Formas Normais
Problema
GLCs são muito flexíveis
Não existem restrições na forma do lado direito das regras
Isso facilita a construção das gramáticas
Embora dificulte a construção de analisadores sintáticos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 205 / 423
Linguagens Livres de Contexto – Formas Normais
FN de Greibach
Uma GLC G = (V , Σ, P, S) está na FN de Greibach se suas
regras têm uma das seguintes formas:
A → aA1 A2 A3 . . . An onde a ∈ Σ e A1..n ∈ V − {S}
A→a
S→λ
1o passo:
Transformar GLC para FN de Chomsky
2o passo:
Em um futuro próximo...
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 206 / 423
Linguagens Livres de Contexto – Formas Normais
FN de Greibach
Uma GLC G = (V , Σ, P, S) está na FN de Greibach se suas
regras têm uma das seguintes formas:
A → aA1 A2 A3 . . . An onde a ∈ Σ e A1..n ∈ V − {S}
A→a
S→λ
1o passo:
Transformar GLC para FN de Chomsky ?
2o passo:
Em um futuro próximo...
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 206 / 423
Linguagens Livres de Contexto – Formas Normais
FN de Chomsky
Uma GLC G = (V , Σ, P, S) está na FN de Chomsky se suas
regras têm uma das seguintes formas:
A → BC onde B, C ∈ V − {S}
A→a onde a ∈ Σ
S→λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 207 / 423
Linguagens Livres de Contexto – Formas Normais
FN de Chomsky
Uma GLC G = (V , Σ, P, S) está na FN de Chomsky se suas
regras têm uma das seguintes formas:
A → BC onde B, C ∈ V − {S}
A→a onde a ∈ Σ
S→λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 207 / 423
Linguagens Livres de Contexto
Transformações de Gramática
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 208 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Transformações de Gramática
Para alcançar uma FN, é importante que transformações
sejam realizadas na GLC
As quais adicionam, modificam ou eliminam regras
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 209 / 423
Linguagens Livres de Contexto
Transformações de Gramática
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 210 / 423
Linguagens Livres de Contexto – Transformações de Gramática
L(G0 ) = L(G)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 211 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → aS | AB | AC
A → aA | λ
B → bB | bS
C → cC | λ
⇓
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 212 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → aS | AB | AC
A → aA | λ
B → bB | bS
C → cC | λ
⇓
S0 → S
S → aS | AB | AC
A → aA | λ
B → bB | bS
C → cC | λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 212 / 423
Linguagens Livres de Contexto
Transformações de Gramática
Eliminação de regras λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 213 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Eliminação de regras λ
Variável anulável: V que pode derivar λ
Se A é anulável, então: A ⇒∗ λ
Gramática não-contrátil:
Não possui variáveis anuláveis, i.e., ¬∃A ∈ V (A → λ)
Assim, não diminuem tamanho forma sentencial, i.e., |µ| ≤ |ν|
Exemplo:
S → aAb
A → aA | B
B → bB | λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 214 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Eliminação de regras λ
Variável anulável: V que pode derivar λ
Se A é anulável, então: A ⇒∗ λ
Gramática não-contrátil:
Não possui variáveis anuláveis, i.e., ¬∃A ∈ V (A → λ)
Assim, não diminuem tamanho forma sentencial, i.e., |µ| ≤ |ν|
Exemplo:
S → aAb
A → aA | B Variáveis anuláveis?
B → bB | λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 214 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Eliminação de regras λ
Variável anulável: V que pode derivar λ
Se A é anulável, então: A ⇒∗ λ
Gramática não-contrátil:
Não possui variáveis anuláveis, i.e., ¬∃A ∈ V (A → λ)
Assim, não diminuem tamanho forma sentencial, i.e., |µ| ≤ |ν|
Exemplo:
S → aAb
A → aA | B Variáveis anuláveis? B e A
B → bB | λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 214 / 423
Linguagens Livres de Contexto – Transformações de Gramática
NULL = {A | {A → λ} ∈ P}
repita
PREV = NULL
para cada A ∈ V fa ća
se A → w e w ∈ PREV ∗ fa ća
NULL = NULL ∪ {A}
até NULL == PREV
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 215 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → ACA NULL = {A | {A → λ} ∈ P}
repita
PREV = NULL
A → aAa | B | C para cada A ∈ V fa ća
se A → w e w ∈ PREV ∗ fa ća
B → bB | b NULL = NULL ∪ {A}
até NULL == PREV
C → cC | λ
NULLABLE
NULL PREV
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 216 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → ACA NULL = {A | {A → λ} ∈ P}
repita
PREV = NULL
A → aAa | B | C para cada A ∈ V fa ća
se A → w e w ∈ PREV ∗ fa ća
B → bB | b NULL = NULL ∪ {A}
até NULL == PREV
C → cC | λ
NULLABLE
NULL PREV
(0) {C} ∅
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 216 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → ACA NULL = {A | {A → λ} ∈ P}
repita
PREV = NULL
A → aAa | B | C para cada A ∈ V fa ća
se A → w e w ∈ PREV ∗ fa ća
B → bB | b NULL = NULL ∪ {A}
até NULL == PREV
C → cC | λ
NULLABLE
NULL PREV
(0) {C} ∅
(1) {C, A} {C}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 216 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → ACA NULL = {A | {A → λ} ∈ P}
repita
PREV = NULL
A → aAa | B | C para cada A ∈ V fa ća
se A → w e w ∈ PREV ∗ fa ća
B → bB | b NULL = NULL ∪ {A}
até NULL == PREV
C → cC | λ
NULLABLE
NULL PREV
(0) {C} ∅
(1) {C, A} {C}
(2) {C, A, S} {C, A}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 216 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → ACA NULL = {A | {A → λ} ∈ P}
repita
PREV = NULL
A → aAa | B | C para cada A ∈ V fa ća
se A → w e w ∈ PREV ∗ fa ća
B → bB | b NULL = NULL ∪ {A}
até NULL == PREV
C → cC | λ
NULLABLE
NULL PREV
(0) {C} ∅
(1) {C, A} {C}
(2) {C, A, S} {C, A}
(3) {C, A, S} {C, A, S}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 216 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 217 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo #1
S → ACA
A → aAa | B | C
B → bB | b
C → cC | λ
⇓ variáveis anuláveis: S, A e C
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 218 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo #1
S → ACA
A → aAa | B | C
B → bB | b
C → cC | λ
⇓ variáveis anuláveis: S, A e C
S → ACA | AC | AA | CA | A | C | λ
A → aAa | B | C | aa
B → bB | b
C → cC | c
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 218 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo #2
L(G) = a ∗ b∗ c ∗
G : S → ABC
A → aA | λ
B → bB | λ
C → cC | λ
⇓ variáveis anuláveis: A, B e C
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 219 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo #2
L(G) = a ∗ b∗ c ∗
G : S → ABC
A → aA | λ
B → bB | λ
C → cC | λ
⇓ variáveis anuláveis: A, B e C
S → ABC | AB | BC | AC | A | B | C | λ
A → aA | a
B → bB | b
C → cC | c
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 219 / 423
Linguagens Livres de Contexto
Transformações de Gramática
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 220 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 221 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Eliminando a cadeia A → B:
A → aA | a | bB | b | C
B → bB | b | C
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 222 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Algoritmo CHAIN
Entrada: Uma GLC essencialmente não contrátil G = (V , Σ, P, S) e
uma variável qualquer A ∈ V
Saída: Conjunto de variáveis deriváveis a partir de A
aplicando-se apenas regras de cadeia
CHAIN(A) = {A}
PREV = ∅
repita
NEW = CHAIN(A) − PREV
PREV = CHAIN(A)
para cada B ∈ NEW fa ća
para cada B → C fa ća
CHAIN(A) = CHAIN(A) ∪ {C}
até CHAIN(A) == PREV
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 223 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → ACA | CA | AA | AC | A | C | λ
A → aAa | aa | B | C
B → bB | b
C → cC | c
CHAIN(S)
CHAIN(S) PREV NEW
(0) {S} ∅
(1)
(2)
(3)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 224 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → ACA | CA | AA | AC | A | C | λ
A → aAa | aa | B | C
B → bB | b
C → cC | c
CHAIN(S)
CHAIN(S) PREV NEW
(0) {S} ∅ {S}
(1)
(2)
(3)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 224 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → ACA | CA | AA | AC | A | C | λ
A → aAa | aa | B | C
B → bB | b
C → cC | c
CHAIN(S)
CHAIN(S) PREV NEW
(0) {S} ∅ {S}
(1) {S, A, C} {S}
(2)
(3)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 224 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → ACA | CA | AA | AC | A | C | λ
A → aAa | aa | B | C
B → bB | b
C → cC | c
CHAIN(S)
CHAIN(S) PREV NEW
(0) {S} ∅ {S}
(1) {S, A, C} {S} {A, C}
(2)
(3)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 224 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → ACA | CA | AA | AC | A | C | λ
A → aAa | aa | B | C
B → bB | b
C → cC | c
CHAIN(S)
CHAIN(S) PREV NEW
(0) {S} ∅ {S}
(1) {S, A, C} {S} {A, C}
(2) {S, A, C, B} {S, A, C}
(3)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 224 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → ACA | CA | AA | AC | A | C | λ
A → aAa | aa | B | C
B → bB | b
C → cC | c
CHAIN(S)
CHAIN(S) PREV NEW
(0) {S} ∅ {S}
(1) {S, A, C} {S} {A, C}
(2) {S, A, C, B} {S, A, C} {B}
(3)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 224 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → ACA | CA | AA | AC | A | C | λ
A → aAa | aa | B | C
B → bB | b
C → cC | c
CHAIN(S)
CHAIN(S) PREV NEW
(0) {S} ∅ {S}
(1) {S, A, C} {S} {A, C}
(2) {S, A, C, B} {S, A, C} {B}
(3) {S, A, C, B} {S, A, C, B}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 224 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → ACA | CA | AA | AC | A | C | λ
A → aAa | aa | B | C
B → bB | b
C → cC | c
CHAIN(S)
CHAIN(S) PREV NEW
(0) {S} ∅ {S}
(1) {S, A, C} {S} {A, C}
(2) {S, A, C, B} {S, A, C} {B}
(3) {S, A, C, B} {S, A, C, B} –
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 224 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Gramática Original
S → ACA | CA | AA | AC | A | C | λ
A → aAa | aa | B | C
B → bB | b
C → cC | c
CHAIN(A) = {A, B, C}
CHAIN(B) = {B}
CHAIN(C) = {C}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 225 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Gramática Original
S → ACA | CA | AA | AC | A | C | λ CHAIN(S) = {S, A, C, B}
CHAIN(A) = {A, B, C}
A → aAa | aa | B | C
CHAIN(B) = {B}
B → bB | b CHAIN(C) = {C}
C → cC | c
Novas Regras
A → w, onde B ∈ CHAIN(A), B → w ∈ P, w 6∈ V
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 226 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Gramática Original
S → ACA | CA | AA | AC | A | C | λ CHAIN(S) = {S, A, C, B}
CHAIN(A) = {A, B, C}
A → aAa | aa | B | C
CHAIN(B) = {B}
B → bB | b CHAIN(C) = {C}
C → cC | c
Novas Regras
A → w, onde B ∈ CHAIN(A), B → w ∈ P, w 6∈ V
Resumo
GLCs essencialmente não-contráteis e sem regras de
cadeia tem uma das seguintes formas:
S→λ
A→a
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 227 / 423
Linguagens Livres de Contexto
Transformações de Gramática
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 228 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 229 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Símbolos Inúteis
Um símbolo x ∈ (V ∪ Σ) é útil se:
S ⇒∗ uxv ⇒∗ w, onde u, v ∈ (V ∪ Σ)∗ e w ∈ Σ∗
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 230 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Algoritmo TERM
Entrada: Uma GLC G = (V , Σ, P, S)
Saída: Conjunto de variáveis que geram terminais (TERM)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 231 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → AC | BS | B D → aD | BD | C
A → aA | aF E → aA | BSA
B → CF | b F → bB | b
C → cC | D
TERM
TERM PREV
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 232 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → AC | BS | B D → aD | BD | C
A → aA | aF E → aA | BSA
B → CF | b F → bB | b
C → cC | D
TERM
TERM PREV
(0) {B, F} ∅
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 232 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → AC | BS | B D → aD | BD | C
A → aA | aF E → aA | BSA
B → CF | b F → bB | b
C → cC | D
TERM
TERM PREV
(0) {B, F} ∅
(1) {B, F, A, S} {B, F}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 232 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → AC | BS | B D → aD | BD | C
A → aA | aF E → aA | BSA
B → CF | b F → bB | b
C → cC | D
TERM
TERM PREV
(0) {B, F} ∅
(1) {B, F, A, S} {B, F}
(2) {B, F, A, S, E} {B, F, A, S}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 232 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → AC | BS | B D → aD | BD | C
A → aA | aF E → aA | BSA
B → CF | b F → bB | b
C → cC | D
TERM
TERM PREV
(0) {B, F} ∅
(1) {B, F, A, S} {B, F}
(2) {B, F, A, S, E} {B, F, A, S}
(3) {B, F, A, S, E} {B, F, A, S, E}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 232 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Gramática Original
S → AC | BS | B D → aD | BD | C
A → aA | aF E → aA | BSA
B → CF | b F → bB | b
C → cC | D
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 233 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Gramática Original
S → AC | BS | B D → aD | BD | C
A → aA | aF E → aA | BSA
B → CF | b F → bB | b
C → cC | D
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 233 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Gramática Original
S → AC | BS | B D → aD | BD | C
A → aA | aF E → aA | BSA
B → CF | b F → bB | b
C → cC | D
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 233 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Algoritmo REACH
Entrada: Uma GLC G = (V , Σ, P, S)
Saída: Conjunto de variáveis alcançáveis a partir de S (REACH)
REACH = {S}
PREV = ∅
repita
NEW = REACH − PREV
PREV = REACH
para cada A ∈ NEW fa ća
para cada A → w fa ća
adicione todas as v a r iáv e i s de w em REACH
até REACH == PREV
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 234 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → BS | B E → aA | BSA
A → aA | aF F → bB | b
B→b
REACH
REACH PREV NEW
(0) {S} ∅
(1)
(2)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 235 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → BS | B E → aA | BSA
A → aA | aF F → bB | b
B→b
REACH
REACH PREV NEW
(0) {S} ∅ {S}
(1)
(2)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 235 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → BS | B E → aA | BSA
A → aA | aF F → bB | b
B→b
REACH
REACH PREV NEW
(0) {S} ∅ {S}
(1) {S, B} {S}
(2)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 235 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → BS | B E → aA | BSA
A → aA | aF F → bB | b
B→b
REACH
REACH PREV NEW
(0) {S} ∅ {S}
(1) {S, B} {S} {B}
(2)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 235 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → BS | B E → aA | BSA
A → aA | aF F → bB | b
B→b
REACH
REACH PREV NEW
(0) {S} ∅ {S}
(1) {S, B} {S} {B}
(2) {S, B} {S, B}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 235 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Exemplo
S → BS | B E → aA | BSA
A → aA | aF F → bB | b
B→b
REACH
REACH PREV NEW
(0) {S} ∅ {S}
(1) {S, B} {S} {B}
(2) {S, B} {S, B} –
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 235 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Gramática Original
S → BS | B E → aA | BSA
A → aA | aF F → bB | b
B→b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 236 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Gramática Original
S → BS | B E → aA | BSA
A → aA | aF F → bB | b
B→b
Variáveis inalcançáveis:
V − {S, B} = {A, E, F}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 236 / 423
Linguagens Livres de Contexto – Transformações de Gramática
Gramática Original
S → BS | B E → aA | BSA
A → aA | aF F → bB | b
B→b
Variáveis inalcançáveis:
V − {S, B} = {A, E, F}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 236 / 423
Linguagens Livres de Contexto – Transformações de Gramática
GT : S → a
A→b
REACH = {S}
GU : S → a
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 237 / 423
Linguagens Livres de Contexto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 238 / 423
Linguagens Livres de Contexto – Forma Normal de Chomsky
FN de Chomsky
Uma GLC G = (V , Σ, P, S) está na FN de Chomsky se suas
regras têm uma das seguintes formas:
A → BC onde B, C ∈ V − {S}
A→a onde a ∈ Σ
S→λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 239 / 423
Linguagens Livres de Contexto – Forma Normal de Chomsky
Exemplo #1
A → bDcF
FN de Chomsky:
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 240 / 423
Linguagens Livres de Contexto – Forma Normal de Chomsky
Exemplo #1
A → bDcF
FN de Chomsky:
Primeira transformação:
A → B 0 DC 0 F
B0 → b
C0 → c
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 240 / 423
Linguagens Livres de Contexto – Forma Normal de Chomsky
Exemplo #1
A → bDcF
FN de Chomsky:
Primeira transformação:
A → B 0 DC 0 F
B0 → b
C0 → c
Segunda transformação:
A → B 0 T1
B0 → b
C0 → c
T1 → DT2
T2 → C 0 F
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 240 / 423
Linguagens Livres de Contexto – Forma Normal de Chomsky
Exemplo #2
S → aABC | a
A → aA | a
B → bcB | bc
C → cC | c
FN de Chomsky:
Já satisfaz pré-condições:
Símbolo inicial não é recursivo (S 6→ αSβ)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 241 / 423
Linguagens Livres de Contexto – Forma Normal de Chomsky
Exemplo #2
S → aABC | a
A → aA | a
B → bcB | bc
C → cC | c
FN de Chomsky:
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 242 / 423
Linguagens Livres de Contexto – Forma Normal de Chomsky
Exemplo #2
S → aABC | a
A → aA | a
B → bcB | bc
C → cC | c
FN de Chomsky:
S → A0 T1 | a B → B 0 T3 | B 0 C 0
A0 → a T3 → C 0 B
T1 → AT2 C → C0C | c
T2 → BC B0 → b
A → A0 A | a C0 → c
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 242 / 423
Linguagens Livres de Contexto – Forma Normal de Chomsky
Exemplo #3
S → aXb | ab
X → aXb | ab
FN de Chomsky:
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 243 / 423
Linguagens Livres de Contexto – Forma Normal de Chomsky
Exemplo #3
S → aXb | ab
X → aXb | ab
FN de Chomsky:
S → AT | AB
T → XB
X → AT | AB
A→a
B→b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 243 / 423
Linguagens Livres de Contexto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 244 / 423
Linguagens Livres de Contexto – Remoção de rec. à esquerda
Exemplo:
S → Aa
A → Aa | b
S ⇒ Aa ⇒ Aaa ⇒ Aaaa ⇒ . . .
Exemplo #1
A → Aa | b
Exemplo #2
A → Aa | Ab | b | c
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 246 / 423
Linguagens Livres de Contexto – Remoção de rec. à esquerda
Exemplo #1
A → Aa | b
A → bZ | b
Z → aZ | a
Exemplo #2
A → Aa | Ab | b | c
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 246 / 423
Linguagens Livres de Contexto – Remoção de rec. à esquerda
Exemplo #1
A → Aa | b
A → bZ | b
Z → aZ | a
Exemplo #2
A → Aa | Ab | b | c
A → bZ | cZ | b | c
Z → aZ | bZ | a | b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 246 / 423
Linguagens Livres de Contexto – Remoção de rec. à esquerda
Exemplo #3
A → AB | BA | a
B→b|c
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 247 / 423
Linguagens Livres de Contexto – Remoção de rec. à esquerda
Exemplo #3
A → AB | BA | a
B→b|c
A → BAZ | aZ | BA | a
B→b|c
Z → BZ | B
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 247 / 423
Linguagens Livres de Contexto – Remoção de rec. à esquerda
Exemplo #4
A → Aa | Aab | bb | b – gera (b ∪ bb)(a ∪ ab)∗
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 248 / 423
Linguagens Livres de Contexto – Remoção de rec. à esquerda
Exemplo #4
A → Aa | Aab | bb | b – gera (b ∪ bb)(a ∪ ab)∗
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 248 / 423
Linguagens Livres de Contexto – Remoção de rec. à esquerda
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 249 / 423
Linguagens Livres de Contexto – Remoção de rec. à esquerda
Observação Relevante
Removemos recursividade como a seguir:
G:
A → Aµ1 | Aµ2 | . . . | Aµm | ν1 | ν2 | . . . | νn
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 251 / 423
Linguagens Livres de Contexto – Forma Normal de Greibach
FN de Greibach
Uma GLC G = (V , Σ, P, S) está na FN de Greibach se suas
regras têm uma das seguintes formas:
A → aA1 A2 A3 . . . An onde a ∈ Σ e A1..n ∈ V − {S}]
A→a
S→λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 252 / 423
Linguagens Livres de Contexto – Forma Normal de Greibach
FN de Greibach
1o passo:
Transformar GLC para FN de Chomsky
2o passo:
Ordenar variáveis (i.e., cada variável ganha um número)
S = 1, A = 2, B = 3, . . .
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 253 / 423
Linguagens Livres de Contexto – Forma Normal de Greibach
Exemplo
S → AB | λ
A → AB | CB | a
B → AB | b
C → AC | c
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 254 / 423
Linguagens Livres de Contexto – Forma Normal de Greibach
FN de Greibach[1] (S = 1; A = 2; B = 3; C = 4)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 255 / 423
Linguagens Livres de Contexto – Forma Normal de Greibach
FN de Greibach[2] (S = 1; A = 2; B = 3; C = 4)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 256 / 423
Linguagens Livres de Contexto – Forma Normal de Greibach
FN de Greibach[3] (S = 1; A = 2; B = 3; C = 4)
PS
C já está na FN de Greibach
Mas e B?
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 257 / 423
Linguagens Livres de Contexto – Forma Normal de Greibach
FN de Greibach[4] (S = 1; A = 2; B = 3; C = 4)
PS
B agora também está na FN de Greibach
Comentários Finais
FN de Greibach:
Gramáticas grandes (i.e., diversas regras)
Gramáticas sem a simplicidade original
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 259 / 423
Linguagens Livres de Contexto
Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 260 / 423
Linguagens Livres de Contexto – Propriedades
LLCs
Mais geral que LRs
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 261 / 423
Linguagens Livres de Contexto – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 262 / 423
Linguagens Livres de Contexto – Propriedades
Linguagens de Programação
LPs normalmente são LLC
Não confunda!
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 263 / 423
Linguagens Livres de Contexto – Propriedades
Como verificar...
... se uma LLC é fechada para operações
união?
interseção?
concatenação?
complemento?
finita?
vazia?
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 264 / 423
Linguagens Livres de Contexto – Propriedades
Propriedades de fechamento
Fechamento é importante para
construir novas linguagens a partir de operações sobre
linguagens conhecidas
provar propriedades
construir algoritmos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 265 / 423
Linguagens Livres de Contexto – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 266 / 423
Linguagens Livres de Contexto – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 267 / 423
Linguagens Livres de Contexto – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 268 / 423
Linguagens Livres de Contexto – Propriedades
Seja L2 = {a j bi c i | i, j ≥ 0} uma LC
No entanto, L1 ∩ L2 = {a i bi c i | i ≥ 0} não é LC
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 269 / 423
Linguagens Livres de Contexto – Propriedades
Então L = L1 ∪ L2 também é LC
Mas, L = L1 ∩ L2
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 270 / 423
Linguagens Livres de Contexto – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 271 / 423
Linguagens Livres de Contexto – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 271 / 423
Linguagens Livres de Contexto – Propriedades
Propriedades de fechamento
Teorema: Seja R uma linguagem regular e L uma linguagem
livre de contexto, então R ∩ L é LC
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 272 / 423
Linguagens Livres de Contexto – Propriedades
LLC é Vazia?
Prova: Suponha uma LLC L
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 273 / 423
Linguagens Livres de Contexto – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 274 / 423
Linguagens Livres de Contexto – Propriedades
B → bB | bb B
C → cBS
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 274 / 423
Linguagens Livres de Contexto – Propriedades
Investigação se é LLC
Para demonstrar que uma linguagem L é LC, basta:
Criar um GLC que gere L
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 275 / 423
Linguagens Livres de Contexto – Propriedades
LRs
podem expressar bombeamentos sem qualquer
balanceamento
LLCs
podem expressar bombeamentos balanceados 2 a 2
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 276 / 423
Linguagens Livres de Contexto
Algoritmos de Reconhecimento
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 277 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Algoritmos de Reconhecimento
Alguns problemas não possuem solução computacional:
1 Certa LLC é ambígua?
2 Duas LLCs são iguais ou diferentes?
3 Uma palavra pertence a uma linguagem?
Algoritmos de reconhecimento
válidos para qualquer linguagem da classe
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 278 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
em geral, ineficientes
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 279 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Algoritmo de Early
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 280 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Classificação
Top-Down (ou Preditivo)
constrói uma árvore de derivação
Bottom-up
oposto do Top-Down
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 281 / 423
Linguagens Livres de Contexto
Algoritmos de Reconhecimento
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 282 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Algoritmos
Top-Down
Não determinista
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 283 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Exemplo
L = {a n bn | n ≥ 1}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 285 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Exemplo
L = {a n bn | n ≥ 1}
λ λ/S λ λ/λ
q0 q1 q2
a S/SB
a S/B
b B/λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 285 / 423
Linguagens Livres de Contexto
Algoritmos de Reconhecimento
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 286 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Algoritmo
inicialmente, empilha o símbolo inicial
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 287 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Exemplo
L = {a n bn | n ≥ 1}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 288 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Exemplo
L = {a n bn | n ≥ 1}
λ λ/S λ λ/λ
q0 q1 q2
λ S/aSb
λ S/ab
a a/λ
b b/λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 288 / 423
Linguagens Livres de Contexto
Algoritmos de Reconhecimento
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 289 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Mecânica:
Estratégia bottom-up para criação de todas as possíveis
árvores de derivação da palavra de entrada w
Ideia básica:
Tabela triangular de derivação
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 290 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 291 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
S → AT | AB
T → XB
X → AT | AB
A→a
a a a b b b B→b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 292 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Para preencher a 1a
linha devemos verificar qual variável
gera a sequencia de 1 terminal
S → AT | AB
T → XB
X → AT | AB
A→a
1 A A A B B B B→b
a a a b b b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 293 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Para preencher a 2a
linha devemos verificar qual variável
gera a sequencia de 2 terminais
Por exemplo, existe alguma regra que produza AA?
A resposta é não, então marcamos a célula com um –
S → AT | AB
T → XB
X → AT | AB
A→a
B→b
2 -
1 A A A B B B
a a a b b b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 294 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
O processo se repete
S → AT | AB
T → XB
2 - -
X → AT | AB
1 A A A B B B A→a
B→b
a a a b b b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 295 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
S → AT | AB
T → XB
X → AT | AB
2 - - S,X
A→a
1 A A A B B B B→b
a a a b b b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 296 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
S → AT | AB
T → XB
2 - - S,X - -
X → AT | AB
1 A A A B B B A→a
B→b
a a a b b b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 297 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Para preencher a 3a
linha devemos verificar qual variável
gera a sequência de 3 terminais
as setas mostram quais pares de células devemos trabalhar a
fim de se obter a sequência de três terminais
S → AT | AB
T → XB
X → AT | AB
3 A→a
B→b
2
1
a a a b b b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 298 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
1 + 2 = A + − = A−
Par inválido, logo marcamos a célula com um −
S → AT | AB
3 - T → XB
X → AT | AB
2 - - S,X - -
A→a
1 A A A B B B B→b
a a a b b b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 299 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
2 + 1 = − + A = −A
Par inválido, logo marcamos a célula com um −
S → AT | AB
3 - T → XB
X → AT | AB
2 - - S,X - -
A→a
1 A A A B B B B→b
a a a b b b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 300 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
3 - - T - S → AT | AB
T → XB
2 - - S,X - -
X → AT | AB
1 A A A B B B A→a
a a a b b b B→b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 301 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Para preencher a 4a
linha devemos verificar qual variável
gera a sequência de 4 terminais
o processo se repete para as linhas superiores
S → AT | AB
4 - T → XB
3 - - T - X → AT | AB
A→a
2 - - S,X - -
B→b
1 A A A B B B
a a a b b b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 302 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Para preencher a 4a
linha devemos verificar qual variável
gera a sequência de 4 terminais
o processo se repete para as linhas superiores
S → AT | AB
4 - T → XB
3 - - T - X → AT | AB
A→a
2 - - S,X - -
B→b
1 A A A B B B
a a a b b b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 302 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Para preencher a 4a
linha devemos verificar qual variável
gera a sequência de 4 terminais
o processo se repete para as linhas superiores
S → AT | AB
4 - T → XB
3 - - T - X → AT | AB
A→a
2 - - S,X - -
B→b
1 A A A B B B
a a a b b b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 302 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
5 - T
S → AT | AB
4 - S,X - T → XB
3 - - T - X → AT | AB
A→a
2 - - S,X - -
B→b
1 A A A B B B
a a a b b b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 303 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Exercício de Fixação #1
Verifique se a palavra abab é aceita na seguinte GLC:
S → XY
T → ZT | a
X → TY
Y → YT | b
Z → TZ | b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 304 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Exercício de Fixação #2
Verifique se a palavra baaba é aceita na seguinte GLC:
S → AB | BC
A → BA | a
B → CC | b
C → AB | a
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 305 / 423
Linguagens Livres de Contexto
Algoritmos de Reconhecimento
Algoritmo de Early
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 306 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Algoritmo de Early
Possivelmente o mais rápido algoritmo para LLC
Proposto em 1968
Tempo de processamento:
qualquer GLC sem produções λ: |w|3
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 307 / 423
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Algoritmo de Early
Entrada: GLC sem produções vazias
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 308 / 423
Linguagens Livres de Contexto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 309 / 423
Linguagens Livres de Contexto – Autômatos com Pilha
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 310 / 423
Linguagens Livres de Contexto – Autômatos com Pilha
a A/B
qi qj
q i : estado atual
a: símbolo a ser lido pela entrada
A: símbolo no topo da pilha (a ser desempilhado)
q j : novo estado
B: novo topo da pilha (a ser empilhado)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 313 / 423
Linguagens Livres de Contexto – Autômatos com Pilha
λ A/λ
qi qj
δ(qi , λ, λ) = [qj , B]
λ λ/B
qi qj
δ(qi , a, λ) = [qj , λ]
a λ/λ
qi qj
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 314 / 423
Linguagens Livres de Contexto – Autômatos com Pilha
Ou seja:
A palavra de entrada deve ser toda lida
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 315 / 423
Linguagens Livres de Contexto – Autômatos com Pilha
Exemplo Clássico
L(G) = {a i bi | i > 0}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 316 / 423
Linguagens Livres de Contexto – Autômatos com Pilha
Exemplo Clássico
L(G) = {a i bi | i > 0}
AP:
a λ/X b X/λ
b X/λ
q0 q1
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 316 / 423
Linguagens Livres de Contexto – Autômatos com Pilha
L2 = {a i | i ≥ 0} ∪ {a i bi | i ≥ 0}
L4 = {a i b2i | i ≥ 1}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 317 / 423
Linguagens Livres de Contexto – Autômatos com Pilha
u = v e (A = λ ou B = λ)
A = B e (u = λ ou v = λ)
(u = λ ou v = λ) e (A = λ ou B = λ)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 318 / 423
Linguagens Livres de Contexto – Autômatos com Pilha
Poder computacional
AP sem uso da pilha
Semelhante ao AF e reconheceria a classe das LR
APD
Aceita um importante subconjunto próprio da classe de LLC
APND
Aceita a classe das LLC
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 319 / 423
Linguagens Livres de Contexto
Variantes
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 320 / 423
Linguagens Livres de Contexto – Autômatos com Pilha
APs Atômicos
Transições são sempre de uma das formas:
δ(qi , a, λ) = [qj , λ] – apenas lê entrada
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 321 / 423
Linguagens Livres de Contexto – Autômatos com Pilha
APs Estendidos
Pode-se empilhar mais de uma letra, como resultado de
uma única transição
δ(qi , a, A) = [qj , BCD]
Leia a,
Desempilha A e
a A/BCD
qi qj
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 322 / 423
Linguagens Livres de Contexto – Autômatos com Pilha
Exemplo Clássico:
AP atômico e estendido para L = {a i b2i | i ≥ 1}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 323 / 423
Linguagens Livres de Contexto
Critérios de Aceitação
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 324 / 423
Linguagens Livres de Contexto – Autômatos com Pilha
Critério de Aceitação
Critério normal de aceitação: por estado final e pilha vazia
∗
[q0 , w, λ] ` [qi , λ, λ], qi ∈ F
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 325 / 423
Linguagens Livres de Contexto – Autômatos com Pilha
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 326 / 423
Linguagens Livres de Contexto – Autômatos com Pilha
Resumindo:
Aceita por estado final ⇒ aceita por estado final e pilha
vazia (pelo lema acima)
Aceita por estado final e pilha vazia ⇒ aceita por estado final
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 327 / 423
Linguagens Livres de Contexto – Autômatos com Pilha
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 328 / 423
Linguagens Livres de Contexto – Autômatos com Pilha
Resumindo:
Aceita por pilha vazia ⇒ aceita por estado final e pilha vazia
(pelo lema acima)
Aceita por estado final e pilha vazia ⇒ aceita por pilha vazia
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 329 / 423
Linguagens Livres de Contexto – Autômatos com Pilha
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 330 / 423
Linguagens Livres de Contexto
Algoritmos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 331 / 423
Linguagens Livres de Contexto
Algoritmos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 332 / 423
Linguagens Livres de Contexto – Algoritmos
Transformação de GLCs para APs (veja Autômato com Pilha como Reconhecedor)
Teorema: Se L é uma LLC, então há um AP que aceita L
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 333 / 423
Linguagens Livres de Contexto – Algoritmos
Ler a
Empilhar AB
Algoritmos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 335 / 423
Linguagens Livres de Contexto – Algoritmos
quero ir para q j e
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 337 / 423
Linguagens Livres de Contexto – Algoritmos
#4 Para todo qk ∈ Q
<qk , λ, qk > → λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 338 / 423
Linguagens Livres de Contexto – Algoritmos
F = {q1 }
L(M) = a n cbn , n ≥ 0
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 339 / 423
Linguagens Livres de Contexto – Algoritmos
c λ/λ
q0 q1
Função de transição δ
δ(q0 , a, λ) = [q0 , A] – não desempilha e empilha A
δ(q1 , b, A) = [q1 , λ]
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 340 / 423
Linguagens Livres de Contexto – Algoritmos
δ 0 (q0 , c, A) = [q1 , A]
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 341 / 423
Linguagens Livres de Contexto – Algoritmos
Novas regras:
<q0 , λ, q0 > → a<q0 , A, q0 > –k = 0
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 342 / 423
Linguagens Livres de Contexto – Algoritmos
Novas regras:
<q0 , A, q0 > → a<q0 , A, q0 >< q0 , A, q0 > –k = 0,n= 0
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 343 / 423
Linguagens Livres de Contexto – Algoritmos
Novas regras:
<q0 , λ, q0 > → c<q1 , λ, q0 > –k = 0
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 344 / 423
Linguagens Livres de Contexto – Algoritmos
Novas regras:
<q0 , A, q0 > → c<q1 , A, q0 > –k = 0
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 345 / 423
Linguagens Livres de Contexto – Algoritmos
Novas regras:
<q1 , A, q0 > → b<q1 , λ, q0 > –k = 0
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 346 / 423
Linguagens Livres de Contexto – Algoritmos
Novas regras:
<q0 , λ, q0 > → λ –k =0
<q1 , λ, q1 > → λ –k =1
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 347 / 423
Linguagens Livres de Contexto – Algoritmos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 349 / 423
5. Linguagens Sensíveis ao Contexto – Conteúdo
1 Revisão 3
2 Introdução 59
3 Linguagens Regulares 74
Autômatos Finitos Determinísticos
Autômatos Finitos Não-Determinísticos
Autômatos Finitos Não-Determinísticos com Transições-λ
Máquina de Moore
Máquinas de Mealy
Algoritmos de Transformação
Transformação AFND-λ para AFD
Minimização de AFD
Transformação de ER para AFND-λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 350 / 423
Linguagens Sensíveis ao Contexto
Hierarquia de Chomsky
Tipo Linguagem Gramática Máquina de aceitação
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 351 / 423
Linguagens Sensíveis ao Contexto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 352 / 423
Linguagens Sensíveis ao Contexto – Gram. Sensível ao Contexto
Regras: µ → ν
µ ∈ (V ∪ Σ)+ (i.e., palavra formada por elementos de V e Σ)
|µ| ≤ |ν| (i.e., regras não-contráteis, o que indica que tamanho da forma
sentencial ou aumenta ou permanece constante)
É uma GSC?
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 354 / 423
Linguagens Sensíveis ao Contexto – Gram. Sensível ao Contexto
É uma GSC?
S → aSCbc | λ
Cb → bc
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 354 / 423
Linguagens Sensíveis ao Contexto – Gram. Sensível ao Contexto
É uma GSC?
S → aSCbc | λ
Cb → bc
É uma GSC?
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 354 / 423
Linguagens Sensíveis ao Contexto – Gram. Sensível ao Contexto
É uma GSC?
S → aSCbc | λ
Cb → bc
É uma GSC?
S → aAc | bc
Ac → b
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 354 / 423
Linguagens Sensíveis ao Contexto – Gram. Sensível ao Contexto
Exemplo Clássico
L = {a i bi c i | i > 0}
GSC(L):
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 355 / 423
Linguagens Sensíveis ao Contexto – Gram. Sensível ao Contexto
Exemplo Clássico
L = {a i bi c i | i > 0}
GSC(L):
S → aAbc | abc
A → aAbC | abC
Cb → bC
Cc → cc
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 355 / 423
Linguagens Sensíveis ao Contexto – Gram. Sensível ao Contexto
Exercícios
1 Defina L(G) para a seguinte GSC:
S → SBA | a
BA → AB
aA → aaB
B→b
2 Desenvolva uma GSC G em que L(G) = {a i b2i c i | i > 0}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 356 / 423
Linguagens Sensíveis ao Contexto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 357 / 423
Linguagens Sensíveis ao Contexto – Autômato Linearm. Limitado
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 358 / 423
Linguagens Sensíveis ao Contexto – Autômato Linearm. Limitado
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 359 / 423
Linguagens Sensíveis ao Contexto – Autômato Linearm. Limitado
Exemplo Clássico
L = {a i bi c i | i > 0}
Z /Z E
Y /Y E
c/c E
Y /Y D Z /Z D b/b E
a/a D b/b D c/c D a/a E
Y/Y D X/X D
>/> E Z /Z E
q6 q7 Y /Y E
X /X E
Y /Y D
Z /Z D
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 360 / 423
Linguagens Sensíveis ao Contexto – Autômato Linearm. Limitado
Exercício de Fixação
1 L = {ww | w ∈ {a, b}+ }
2 L = {wcw | w tem o mesmo número de a e b}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 361 / 423
Linguagens Sensíveis ao Contexto
Teoremas
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 362 / 423
Linguagens Sensíveis ao Contexto – Teoremas
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 363 / 423
Linguagens Sensíveis ao Contexto – Teoremas
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 364 / 423
Linguagens Sensíveis ao Contexto – Teoremas
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 365 / 423
Linguagens Sensíveis ao Contexto – Teoremas
Prova do Teorema #2: Toda LSC L tem um ALL M tal que L(M) = L
Seja L uma LSC. Então existe um ALL M cuja L(M) = L
Em uma LSC, nenhuma forma sentencial pode ser maior que
a palavra de entrada
1 Revisão 3
2 Introdução 59
3 Linguagens Regulares 74
Autômatos Finitos Determinísticos
Autômatos Finitos Não-Determinísticos
Autômatos Finitos Não-Determinísticos com Transições-λ
Máquina de Moore
Máquinas de Mealy
Algoritmos de Transformação
Transformação AFND-λ para AFD
Minimização de AFD
Transformação de ER para AFND-λ
Hierarquia de Chomsky
Tipo Linguagem Gramática Máquina de aceitação
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 368 / 423
Linguagens Irrestritas
Gramática Irrestrita
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 369 / 423
Linguagens Irrestritas – Gramática Irrestrita
Regras: µ → ν
µ ∈ (V ∪ Σ)+ (i.e., palavra formada por elementos de V e Σ)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 370 / 423
Linguagens Irrestritas – Gramática Irrestrita
Exemplo Clássico
L = {u[u] | u ∈ {a, b}∗ }
GI(L):
S → aT [a] | bT [b] | []
T [→ aT [A | bT [B | [
Aa → aA
Ab → bA
Ba → aB
Bb → bB
A] → a]
B] → b]
Toda GI é recursivamente enumerável, logo:
existe uma MT que reconhece LI, mas não necessariamente
para para qualquer entrada w ∈ Σ∗
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 371 / 423
Linguagens Irrestritas – Gramática Irrestrita
Exemplo Clássico
GI:
S → aAbc | λ
A → aAbC | λ
Cb → bC (b’s podem ser passados para antes dos C’s)
CC → cc
Derivações:
S ⇒ aAbc ⇒i−1 a i A(bC)i−1 bc ⇒ a i (bC)i−1 bc
Exemplificando (i=3):
aaabCbCbc ⇒ aaabCbbCc ⇒ aaabCbbcc ⇒
aaabbCbcc ⇒ aaabbbCcc ⇒ aaabbbccc
Logo: L(GI) = a i bi c i , i ≥ 0
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 372 / 423
Linguagens Irrestritas – Gramática Irrestrita
Exercício
L = {a i bj a i bj | i, j ≥ 0}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 373 / 423
Linguagens Irrestritas – Gramática Irrestrita
Exercício
L = {a i bj a i bj | i, j ≥ 0}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 373 / 423
Linguagens Irrestritas
Gramática Irrestrita
Teoremas
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 374 / 423
Linguagens Irrestritas – Gramática Irrestrita
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 375 / 423
Linguagens Irrestritas – Gramática Irrestrita
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 376 / 423
Linguagens Irrestritas – Gramática Irrestrita
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 377 / 423
Linguagens Irrestritas
Máquinas de Turing
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 378 / 423
Linguagens Irrestritas – Máquinas de Turing
Máquinas de Turing
Modelo abstrato para os computadores modernos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 379 / 423
Linguagens Irrestritas – Máquinas de Turing
Memória ilimitada
Seja w uma palavra de entrada
Configuração inicial da fita: BwBBBBBBBB...
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 380 / 423
Linguagens Irrestritas – Máquinas de Turing
Máquinas de Turing
Máquina de estados com uma fita e uma cabeça de
leitura/gravação
Cada posição da fita possui um símbolo de Γ
Fita começa na posição zero
Fita possui infinitas posições para a direita
B (branco): simbolo especial de Γ
Entrada é gravada na fita, começando na posição 1
Posição 0 é sempre um B
Posições depois da palavra de entrada são todas B
Cabeça começa posicionada na posição 0
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 381 / 423
Linguagens Irrestritas – Máquinas de Turing
Máquinas de Turing
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 382 / 423
Linguagens Irrestritas – Máquinas de Turing
Computação
Computação para quando encontra um estado/símbolo
para o qual não exista transição definida
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 383 / 423
Linguagens Irrestritas – Máquinas de Turing
Grave y na fita
x/y E x/y E
qi qj qi qj
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 384 / 423
Linguagens Irrestritas – Máquinas de Turing
Exercício de Fixação #1
MT para ler uma entrada formada por uma palavra sobre
{a, b} e trocar a por b e vice-versa. Ao final do
processamento, rebobinar a cabeça de leitura/gravação
para a posição zero da fita
Exercício de Fixação #2
MT para realizar a seguinte transformação na fita de
entrada:
BuB... ⇒ BuBuB..., onde u = (a ∪ b)∗
Exercício de Fixação #3
MT para somar 1 em um número binário gravado
inicialmente na fita de entrada
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 385 / 423
Linguagens Irrestritas – Máquinas de Turing
Exercício de Fixação #4
MT para realizar as seguintes transformações na fita de
entrada:
Ba n Ba m B... ⇒ Ba n Ba m Ba n+m B..., n, m ≥ 0
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 386 / 423
Linguagens Irrestritas – Máquinas de Turing
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 387 / 423
Linguagens Irrestritas – Máquinas de Turing
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 388 / 423
Linguagens Irrestritas – Máquinas de Turing
Exemplos:
L1 = (a ∪ b)∗ aa(a ∪ b)∗
L2 = {a i bi c i | i ≥ 0}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 389 / 423
Linguagens Irrestritas – Máquinas de Turing
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 390 / 423
Linguagens Irrestritas – Máquinas de Turing
Reflexão
As linguagens L1...4 (anteriormente citadas) são:
a. recursivamente enumeráveis?
b. recursivas?
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 391 / 423
Linguagens Irrestritas
Máquinas de Turing
Variantes
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 392 / 423
Linguagens Irrestritas – Máquinas de Turing
MT Multitrilhas
Fita é dividida em múltiplas trilhas, mantendo uma única
cabeça de leitura/gravação
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 393 / 423
Linguagens Irrestritas – Máquinas de Turing
Exercício de Fixação
MT para somar 1 em um número binário
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 394 / 423
Linguagens Irrestritas – Máquinas de Turing
Seu uso só faz sentido quando se tem mais fitas (por quê?)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 395 / 423
Linguagens Irrestritas – Máquinas de Turing
MT Multifitas
Máquina com k fitas e k cabeças de leitura/gravação
Máquina lê as k fitas simultaneamente (de forma síncrona)
Transição consulta:
Estado atual (único)
Símbolos lidos por cada uma das cabeças
MT Multifitas
Entrada é escrita na Fita 1
Exercício de Fixação
MT para reconhecer as seguintes linguagens:
L1 = {a i bi | i > 0}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 397 / 423
Linguagens Irrestritas – Máquinas de Turing
MT Não-Determinísticas
Modificação da função de transição de estados:
δ : Q × Γ → P(Q × Γ × {E, D})
Exemplo de transição:
δ(q1 , c) = {[q1 , c, D], [q2 , c, D], [q3 , C, E]}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 398 / 423
Linguagens Irrestritas – Máquinas de Turing
Exercício de Fixação
MT para reconhecer as seguintes linguagens:
Palavras contendo um c precedido ou sucedido por ab
L = {ww | w ∈ {a, b}∗ }
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 399 / 423
Linguagens Irrestritas – Máquinas de Turing
MT Enumeradoras de Linguagens
MT vistas até o momento são aceitadoras de linguagens:
Entrada: palavra de acordo com um alfabeto
MT Enumeradoras de Linguagens
Máquina com k-fitas (multi-fita)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 400 / 423
Linguagens Irrestritas – Máquinas de Turing
MT Enumeradoras de Linguagens
Uma MT com k-fitas E = (Q, Σ, Γ, δ, q0 ) enumera uma
linguagem L se:
Sua computação começa com todas fitas vazias
Fita 1 é chamada de fita de saída
A cada transição, cabeça da Fita 1 permanece parada (S)
ou se move para a direita (D)
Parte “não-branca” da Fita 1 tem uma das formas:
B#u1 #u2 #...#uk # ou
B#u1 #u2 #...#uk #v onde ui ∈ L e v ∈ Σ∗
ui é escrito na Fita 1 (entre #0 s) sse ui ∈ L
Exemplo
MT para enumerar a linguagem L = {a i bi | i ≥ 0}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 402 / 423
Linguagens Irrestritas – Máquinas de Turing
Exemplo
MT para enumerar a linguagem L = {a i bi | i ≥ 0}
[B/a D, X /X E]
q4 [B/b D, X /X D]
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 402 / 423
Linguagens Irrestritas – Máquinas de Turing
Exemplo
Descrição do funcionamento da MT anterior:
Escreve ## na F1 (já que λ ∈ L)
Loop:
q3 : volta na F2: para cada X , escreve a na F1
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 403 / 423
Linguagens Irrestritas – Máquinas de Turing
Exercício de Fixação
MT para enumerar a linguagem L = {a i bi c i | i ≥ 0}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 404 / 423
Linguagens Irrestritas
Máquinas de Turing
Teoremas
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 405 / 423
Linguagens Irrestritas – Máquinas de Turing
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 406 / 423
Linguagens Irrestritas – Máquinas de Turing
Prova do Teorema #5
(volta) se L é enumerada por uma MT, então L é RE
Seja E a MT que enumera L
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 407 / 423
Linguagens Irrestritas – Máquinas de Turing
Prova do Teorema #5
(ida) se L é RE, então L é enumerada por uma MT
Ordem Lexicográfica
Ordem lexicográfica de Σ: função que mapeia palavras de
Σ para números naturais
Exemplo: Σ = {a, b, c} e a1 = a, a2 = b, a3 = c
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 409 / 423
Linguagens Irrestritas – Máquinas de Turing
Preparando a Prova
Suponha as palavras de Σ em ordem lexicográfica
λ, u1 , u2 , u3 , ...
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 410 / 423
Linguagens Irrestritas – Máquinas de Turing
Voltando à Prova
Significado de par [i,j]: rode M com entrada ui por j passos
Linguagem Recursiva
MT decide uma linguagem L, logo L é recursiva (LSC)
Uma MT decide uma linguagem L se ela para para todas as
possíveis palavras de entrada (Σ∗ )
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 412 / 423
Linguagens Irrestritas – Máquinas de Turing
Prova do Teorema #6
(ida) se L é recursiva, então L pode ser enumerada em
ordem lex.
Seja M a MT que decide L
loop:
Rode E ∗ e produza uma palavra u (em ordem lex.)
Rode M com u
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 413 / 423
Linguagens Irrestritas – Máquinas de Turing
Prova do Teorema #6
(volta) Se L pode ser enumerada em ordem lexicográfica,
então L é recursiva
Se L for finita, então L é imediatamente recursiva
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 414 / 423
7. Considerações Finais – Conteúdo
1 Revisão 3
2 Introdução 59
3 Linguagens Regulares 74
Autômatos Finitos Determinísticos
Autômatos Finitos Não-Determinísticos
Autômatos Finitos Não-Determinísticos com Transições-λ
Máquina de Moore
Máquinas de Mealy
Algoritmos de Transformação
Transformação AFND-λ para AFD
Minimização de AFD
Transformação de ER para AFND-λ
Hierarquia de Chomsky
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 416 / 423
Considerações Finais – Hierarquia de Chomsky
Hierarquia de Chomsky
Tipo Linguagem Gramática Máquina de aceitação
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 417 / 423
Considerações Finais
Tese de Church-Turing
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 418 / 423
Considerações Finais – Tese de Church-Turing
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 419 / 423
Considerações Finais – Tese de Church-Turing
Linguagens de Programação
Se uma LP é capaz de manipular uma MT de uma única fita,
essa LP é capaz de expressar qualquer algoritmo
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 420 / 423
Agradecimentos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 421 / 423
Agradecimentos
Alberto Hokari
Gostaria de agradecer ao aluno pelos desenhos das máquinas
em formato TikZ e ao desenvolvimento do material de CYK
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 422 / 423
Referências I
P. F. Blauth Menezes.
Linguagens formais e autômatos, volume 3.
Bookman, 6 edition, 2011.
S. L. G. de Oliveira.
Algoritmos e seus fundamentos.
Editora UFLA, 2011.
J. E. Hopcroft and J. D. Ullman.
Formal languages and their relation to automata.
Addison-Wesley, 1969.
M. Sipser.
Introdução à Teoria da Computação.
Thompson, 2007.
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 423 / 423
Referências II
T. A. Sudkamp.
Languages and machines: an introduction to the theory of Computer
Science.
Addison-Wesley, 2 edition, 2005.
M. T. Valente.
Notas de aula da disciplina Fundamentos Teóricos da Computação.
Programa de Pós-graduação em Informática, PUC Minas, 2007.
N. J. Vieira.
Introdução aos Fundamentos da Computação: Linguagens e máquinas.
Thomson, 2006.
N. J. Vieira.
Notas de aula da disciplina fundamentos da teoria da computação.
Bacharelado em Ciência da Computação, UFMG, 2009.
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Outubro, 2015 424 / 423