Escolar Documentos
Profissional Documentos
Cultura Documentos
Ricardo Terra
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 1 / 422
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) Março, 2015 2 / 422
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
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 3 / 422
Revisão
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 4 / 422
Revisão – Conjuntos, relações e funções (1–34)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 5 / 422
Revisão – Conjuntos, relações e funções (1–9)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 6 / 422
Revisão – Conjuntos, relações e funções (1–7)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 7 / 422
Revisão
Definições Recursivas
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 8 / 422
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) Março, 2015 9 / 422
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) Março, 2015 10 / 422
Revisão – Definições Recursivas
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 11 / 422
Revisão – Definições Recursivas
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 12 / 422
Revisão – Definições Recursivas
Mais formalmente
(i) base: {(0, 1)} ⊂ fat
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 12 / 422
Revisão
Indução Matemática
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 13 / 422
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 [6], Seção 1.7)
Assim, P é válido ∀x ∈ X
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 14 / 422
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) Março, 2015 16 / 422
Revisão
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 17 / 422
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) Março, 2015 18 / 422
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) Março, 2015 19 / 422
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 20 / 422
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 21 / 422
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 22 / 422
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 23 / 422
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 23 / 422
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 23 / 422
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) Março, 2015 24 / 422
Revisão – Linguagens Formais e Autômatos (LFA)
GR(L):
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 25 / 422
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) Março, 2015 25 / 422
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) Março, 2015 25 / 422
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) Março, 2015 26 / 422
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 27 / 422
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 27 / 422
Revisão – Linguagens Formais e Autômatos (LFA)
E abbabb ∈ L(G)?
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 27 / 422
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) Março, 2015 28 / 422
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) Março, 2015 30 / 422
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) Março, 2015 30 / 422
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) Março, 2015 30 / 422
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) Março, 2015 30 / 422
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 31 / 422
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) Março, 2015 32 / 422
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) Março, 2015 32 / 422
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) Março, 2015 32 / 422
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) Março, 2015 32 / 422
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 33 / 422
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) Março, 2015 34 / 422
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) Março, 2015 34 / 422
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) Março, 2015 35 / 422
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) Março, 2015 36 / 422
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) Março, 2015 37 / 422
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) Março, 2015 37 / 422
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) Março, 2015 38 / 422
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) Março, 2015 38 / 422
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) Março, 2015 39 / 422
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 40 / 422
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) Março, 2015 42 / 422
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) Março, 2015 42 / 422
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) Março, 2015 44 / 422
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) Março, 2015 44 / 422
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) Março, 2015 45 / 422
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) Março, 2015 46 / 422
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) Março, 2015 47 / 422
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 48 / 422
Revisão – Linguagens Formais e Autômatos (LFA)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 49 / 422
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) Março, 2015 50 / 422
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) Março, 2015 51 / 422
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) Março, 2015 52 / 422
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) Março, 2015 53 / 422
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) Março, 2015 54 / 422
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) Março, 2015 55 / 422
Revisão
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 56 / 422
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) Março, 2015 57 / 422
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) Março, 2015 58 / 422
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
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 59 / 422
Introdução
Hierarquia de Chomsky
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 60 / 422
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) Março, 2015 61 / 422
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) Março, 2015 62 / 422
Introdução
Conceitos Básicos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 63 / 422
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) Março, 2015 64 / 422
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) Março, 2015 65 / 422
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) Março, 2015 66 / 422
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) Março, 2015 67 / 422
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) Março, 2015 68 / 422
Introdução – Conceitos Básicos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 70 / 422
Introdução – Conceitos Básicos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 71 / 422
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) Março, 2015 72 / 422
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) Março, 2015 73 / 422
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 154
Lema do Bombeamento 161
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 74 / 422
Linguagens Regulares – 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) Março, 2015 75 / 422
Linguagens Regulares
Conjuntos Regulares
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 76 / 422
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) Março, 2015 77 / 422
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) Março, 2015 78 / 422
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) Março, 2015 79 / 422
Linguagens Regulares
Expressões Regulares
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 80 / 422
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}, mostre que as seguintes
linguagens são regulares:
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) Março, 2015 83 / 422
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) Março, 2015 84 / 422
Linguagens Regulares
Gramáticas Regulares
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 85 / 422
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) Março, 2015 86 / 422
Linguagens Regulares – Gramáticas Regulares
GR(L):
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 87 / 422
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) Março, 2015 87 / 422
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) Março, 2015 88 / 422
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) Março, 2015 89 / 422
Linguagens Regulares – Gramáticas Regulares
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 90 / 422
Linguagens Regulares – Gramáticas Regulares
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 90 / 422
Linguagens Regulares – Gramáticas Regulares
E abbabb ∈ L(G)?
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 90 / 422
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) Março, 2015 91 / 422
Linguagens Regulares
Autômatos Finitos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 92 / 422
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) Março, 2015 93 / 422
Linguagens Regulares
Autômatos Finitos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 94 / 422
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) Março, 2015 96 / 422
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) Março, 2015 96 / 422
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) Março, 2015 96 / 422
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) Março, 2015 97 / 422
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) Março, 2015 98 / 422
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) Março, 2015 99 / 422
Linguagens Regulares – Autômatos Finitos – AFD
δ̂D : Q x Σ∗ → Q
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 100 / 422
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) Março, 2015 101 / 422
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) Março, 2015 102 / 422
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) Março, 2015 102 / 422
Linguagens Regulares
Autômatos Finitos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 103 / 422
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) Março, 2015 104 / 422
Linguagens Regulares – Autômatos Finitos – AFND
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 105 / 422
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) Março, 2015 106 / 422
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) Março, 2015 106 / 422
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) Março, 2015 106 / 422
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) Março, 2015 107 / 422
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) Março, 2015 108 / 422
Linguagens Regulares – Autômatos Finitos – AFND
δ̂ND : Q x Σ∗ → P(Q)
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 109 / 422
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) Março, 2015 110 / 422
Linguagens Regulares
Autômatos Finitos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 111 / 422
Linguagens Regulares – Autômatos Finitos – AFND-λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 112 / 422
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) Março, 2015 113 / 422
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) Março, 2015 113 / 422
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) Março, 2015 114 / 422
Linguagens Regulares
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 115 / 422
Linguagens Regulares
Máquina de Moore
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 116 / 422
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) Março, 2015 117 / 422
Linguagens Regulares – Autômatos com Saída – Moore
q3 /2
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 118 / 422
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) Março, 2015 119 / 422
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) Março, 2015 120 / 422
Linguagens Regulares – Autômatos com Saída – Moore
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 121 / 422
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) Março, 2015 122 / 422
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) Março, 2015 123 / 422
Linguagens Regulares
Máquinas de Mealy
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 124 / 422
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) Março, 2015 125 / 422
Linguagens Regulares – Autômatos com Saída – Mealy
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 126 / 422
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) Março, 2015 127 / 422
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) Março, 2015 128 / 422
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) Março, 2015 130 / 422
Linguagens Regulares
Algoritmos de Transformação
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 131 / 422
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) Março, 2015 132 / 422
Linguagens Regulares
Algoritmos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 133 / 422
Linguagens Regulares
Algoritmos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 134 / 422
Linguagens Regulares – Algoritmos – AFND-λ para AFND
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 135 / 422
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) Março, 2015 136 / 422
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) Março, 2015 136 / 422
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. Estados sem transição λ
permanecem intactos δND a b c
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 136 / 422
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. Estados sem transição λ
permanecem intactos δND a b c
ii. Para os estados com transição λ: q0 {q0 , q1 , q2 } ∅ ∅
q1 ∅ {q1 } ∅
q2 ∅
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 136 / 422
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. Estados sem transição λ
permanecem intactos δND a b c
ii. Para os estados com transição λ: q0 {q0 , q1 , q2 } ∅ ∅
ou faz transições λ,
q1 ∅ {q1 } ∅
consome e para
q2 ∅ {q 1 }
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 136 / 422
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. Estados sem transição λ
permanecem intactos δND a b c
ii. Para os estados com transição λ: q0 {q0 , q1 , q2 } ∅ ∅
ou faz transições λ,
q1 ∅ {q1 } ∅
consome e para
q2 ∅ {q 1 } {q 1 , q 2 }
ou consome, faz
transições λ (opcional) e para
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 136 / 422
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) Março, 2015 137 / 422
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) Março, 2015 137 / 422
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) Março, 2015 137 / 422
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) Março, 2015 137 / 422
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
{q0 }
a
{q0 , q1 , q2 }
c
{q1 , q2 } {q0 } {q0 , q1 , q2 } ∅ ∅
{q0 , q1 , q2 } {q0 , q1 , q2 } {q1 } {q1 , q2 }
b b
{q1 } ∅ {q1 } ∅
{q1 , q2 } ∅ {q1 } {q1 , q2 }
b {q1 }
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 138 / 422
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) Março, 2015 139 / 422
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) Março, 2015 140 / 422
Linguagens Regulares
Algoritmos
Minimização de AFD
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 141 / 422
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 ,c
c
q1 a,b q4
a
q0 b b q3
q2 q5
c c a,b
,c
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 142 / 422
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) Março, 2015 143 / 422
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) Março, 2015 144 / 422
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) Março, 2015 145 / 422
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) Março, 2015 146 / 422
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) Março, 2015 147 / 422
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) Março, 2015 147 / 422
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) Março, 2015 147 / 422
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) Março, 2015 147 / 422
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) Março, 2015 147 / 422
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) Março, 2015 147 / 422
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) Março, 2015 147 / 422
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) Março, 2015 147 / 422
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) Março, 2015 147 / 422
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) Março, 2015 147 / 422
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) Março, 2015 148 / 422
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) Março, 2015 149 / 422
Linguagens Regulares
Algoritmos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 150 / 422
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) Março, 2015 151 / 422
Linguagens Regulares – Algoritmos – ER-λ para AFND-λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 152 / 422
Linguagens Regulares – Algoritmos – ER-λ para AFND-λ
a
q2 q3
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 152 / 422
Linguagens Regulares – Algoritmos – ER-λ para AFND-λ
a
q2 q3
b
q4 q5
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 152 / 422
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) Março, 2015 152 / 422
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) Março, 2015 152 / 422
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) Março, 2015 152 / 422
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) Março, 2015 152 / 422
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) Março, 2015 152 / 422
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) Março, 2015 153 / 422
Linguagens Regulares
Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 154 / 422
Linguagens Regulares – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 155 / 422
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) Março, 2015 156 / 422
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) Março, 2015 156 / 422
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) Março, 2015 156 / 422
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 [6])
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) Março, 2015 157 / 422
Linguagens Regulares – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 158 / 422
Linguagens Regulares – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 159 / 422
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) Março, 2015 160 / 422
Linguagens Regulares
Lema do Bombeamento
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 161 / 422
Linguagens Regulares – Lema do Bombeamento
b b
a
q0 q1
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 162 / 422
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) Março, 2015 163 / 422
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) Março, 2015 164 / 422
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) Março, 2015 166 / 422
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) Março, 2015 167 / 422
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) Março, 2015 167 / 422
Linguagens Regulares – Lema do Bombeamento
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 168 / 422
Linguagens Regulares – Lema do Bombeamento
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 168 / 422
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) Março, 2015 169 / 422
4. Linguagens Livres de Contexto – Conteúdo
1 Revisão 3
2 Introdução 59
3 Linguagens Regulares 74
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 170 / 422
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) Março, 2015 171 / 422
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) Março, 2015 172 / 422
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) Março, 2015 173 / 422
Linguagens Livres de Contexto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 174 / 422
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) Março, 2015 175 / 422
Linguagens Livres de Contexto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 176 / 422
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) Março, 2015 177 / 422
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) Março, 2015 179 / 422
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) Março, 2015 180 / 422
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 | λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 180 / 422
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 | λ
S→A|a|b
A → aaS | abS | baS | bbS
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 180 / 422
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) Março, 2015 181 / 422
Linguagens Livres de Contexto
Recursividade
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 182 / 422
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) Março, 2015 183 / 422
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) Março, 2015 184 / 422
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) Março, 2015 185 / 422
Linguagens Livres de Contexto
Árvore de Derivação
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 186 / 422
Linguagens Livres de Contexto – Gramática Livre de Contexto
Processadores de texto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 187 / 422
Linguagens Livres de Contexto – Gramática Livre de Contexto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 188 / 422
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) Março, 2015 189 / 422
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) Março, 2015 190 / 422
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) Março, 2015 190 / 422
Linguagens Livres de Contexto
Ambiguidade
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 191 / 422
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
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) Março, 2015 192 / 422
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
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) Março, 2015 192 / 422
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
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) Março, 2015 192 / 422
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) Março, 2015 193 / 422
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) Março, 2015 193 / 422
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) Março, 2015 194 / 422
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) Março, 2015 194 / 422
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) Março, 2015 195 / 422
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) Março, 2015 196 / 422
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) Março, 2015 197 / 422
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) Março, 2015 197 / 422
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) Março, 2015 197 / 422
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) Março, 2015 198 / 422
Linguagens Livres de Contexto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 199 / 422
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) Março, 2015 200 / 422
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) Março, 2015 201 / 422
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) Março, 2015 202 / 422
Linguagens Livres de Contexto
Formas Normais
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 203 / 422
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) Março, 2015 204 / 422
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) Março, 2015 205 / 422
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) Março, 2015 205 / 422
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) Março, 2015 206 / 422
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) Março, 2015 206 / 422
Linguagens Livres de Contexto
Transformações de Gramática
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 207 / 422
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) Março, 2015 208 / 422
Linguagens Livres de Contexto
Transformações de Gramática
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 209 / 422
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) Março, 2015 210 / 422
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) Março, 2015 211 / 422
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) Março, 2015 211 / 422
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) Março, 2015 212 / 422
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) Março, 2015 213 / 422
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) Março, 2015 213 / 422
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) Março, 2015 213 / 422
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) Março, 2015 214 / 422
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) Março, 2015 215 / 422
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) Março, 2015 215 / 422
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) Março, 2015 215 / 422
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) Março, 2015 215 / 422
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) Março, 2015 215 / 422
Linguagens Livres de Contexto – Transformações de Gramática
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 216 / 422
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) Março, 2015 217 / 422
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) Março, 2015 217 / 422
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) Março, 2015 218 / 422
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) Março, 2015 218 / 422
Linguagens Livres de Contexto
Transformações de Gramática
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 219 / 422
Linguagens Livres de Contexto – Transformações de Gramática
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 220 / 422
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) Março, 2015 221 / 422
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) Março, 2015 222 / 422
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) Março, 2015 223 / 422
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) Março, 2015 223 / 422
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) Março, 2015 223 / 422
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) Março, 2015 223 / 422
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) Março, 2015 223 / 422
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) Março, 2015 223 / 422
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) Março, 2015 223 / 422
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) Março, 2015 223 / 422
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) Março, 2015 224 / 422
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) Março, 2015 225 / 422
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) Março, 2015 226 / 422
Linguagens Livres de Contexto
Transformações de Gramática
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 227 / 422
Linguagens Livres de Contexto – Transformações de Gramática
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 228 / 422
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) Março, 2015 229 / 422
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) Março, 2015 230 / 422
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) Março, 2015 231 / 422
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) Março, 2015 231 / 422
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) Março, 2015 231 / 422
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) Março, 2015 231 / 422
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) Março, 2015 231 / 422
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) Março, 2015 232 / 422
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) Março, 2015 232 / 422
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) Março, 2015 232 / 422
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) Março, 2015 233 / 422
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) Março, 2015 234 / 422
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) Março, 2015 234 / 422
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) Março, 2015 234 / 422
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) Março, 2015 234 / 422
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) Março, 2015 234 / 422
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) Março, 2015 234 / 422
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) Março, 2015 235 / 422
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) Março, 2015 235 / 422
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) Março, 2015 235 / 422
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) Março, 2015 236 / 422
Linguagens Livres de Contexto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 237 / 422
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) Março, 2015 238 / 422
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) Março, 2015 239 / 422
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) Março, 2015 239 / 422
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) Março, 2015 239 / 422
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) Março, 2015 240 / 422
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) Março, 2015 241 / 422
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) Março, 2015 241 / 422
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) Março, 2015 242 / 422
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) Março, 2015 242 / 422
Linguagens Livres de Contexto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 243 / 422
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) Março, 2015 245 / 422
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) Março, 2015 245 / 422
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) Março, 2015 245 / 422
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) Março, 2015 246 / 422
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) Março, 2015 246 / 422
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) Março, 2015 247 / 422
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) Março, 2015 247 / 422
Linguagens Livres de Contexto – Remoção de rec. à esquerda
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 248 / 422
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) Março, 2015 250 / 422
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) Março, 2015 251 / 422
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) Março, 2015 252 / 422
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) Março, 2015 253 / 422
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) Março, 2015 254 / 422
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) Março, 2015 255 / 422
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) Março, 2015 256 / 422
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) Março, 2015 258 / 422
Linguagens Livres de Contexto
Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 259 / 422
Linguagens Livres de Contexto – Propriedades
LLCs
Mais geral que LRs
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 260 / 422
Linguagens Livres de Contexto – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 261 / 422
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) Março, 2015 262 / 422
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) Março, 2015 263 / 422
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) Março, 2015 264 / 422
Linguagens Livres de Contexto – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 265 / 422
Linguagens Livres de Contexto – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 266 / 422
Linguagens Livres de Contexto – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 267 / 422
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) Março, 2015 268 / 422
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) Março, 2015 269 / 422
Linguagens Livres de Contexto – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 270 / 422
Linguagens Livres de Contexto – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 270 / 422
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) Março, 2015 271 / 422
Linguagens Livres de Contexto – Propriedades
LLC é Vazia?
Prova: Suponha uma LLC L
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 272 / 422
Linguagens Livres de Contexto – Propriedades
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 273 / 422
Linguagens Livres de Contexto – Propriedades
B → bB | bb B
C → cBS
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 273 / 422
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) Março, 2015 274 / 422
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) Março, 2015 275 / 422
Linguagens Livres de Contexto
Algoritmos de Reconhecimento
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 276 / 422
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) Março, 2015 277 / 422
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
em geral, ineficientes
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 278 / 422
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Algoritmo de Early
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 279 / 422
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) Março, 2015 280 / 422
Linguagens Livres de Contexto
Algoritmos de Reconhecimento
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 281 / 422
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) Março, 2015 282 / 422
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) Março, 2015 284 / 422
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) Março, 2015 284 / 422
Linguagens Livres de Contexto
Algoritmos de Reconhecimento
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 285 / 422
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) Março, 2015 286 / 422
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) Março, 2015 287 / 422
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) Março, 2015 287 / 422
Linguagens Livres de Contexto
Algoritmos de Reconhecimento
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 288 / 422
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) Março, 2015 289 / 422
Linguagens Livres de Contexto – Algoritmos de Reconhecimento
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 290 / 422
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) Março, 2015 291 / 422
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) Março, 2015 292 / 422
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) Março, 2015 293 / 422
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) Março, 2015 294 / 422
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) Março, 2015 295 / 422
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) Março, 2015 296 / 422
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) Março, 2015 297 / 422
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) Março, 2015 298 / 422
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) Março, 2015 299 / 422
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) Março, 2015 300 / 422
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) Março, 2015 301 / 422
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) Março, 2015 301 / 422
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) Março, 2015 301 / 422
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) Março, 2015 302 / 422
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) Março, 2015 303 / 422
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) Março, 2015 304 / 422
Linguagens Livres de Contexto
Algoritmos de Reconhecimento
Algoritmo de Early
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 305 / 422
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) Março, 2015 306 / 422
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) Março, 2015 307 / 422
Linguagens Livres de Contexto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 308 / 422
Linguagens Livres de Contexto – Autômatos com Pilha
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 309 / 422
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) Março, 2015 312 / 422
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) Março, 2015 313 / 422
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) Março, 2015 314 / 422
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) Março, 2015 315 / 422
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) Março, 2015 315 / 422
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) Março, 2015 316 / 422
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) Março, 2015 317 / 422
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) Março, 2015 318 / 422
Linguagens Livres de Contexto
Variantes
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 319 / 422
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) Março, 2015 320 / 422
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) Março, 2015 321 / 422
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) Março, 2015 322 / 422
Linguagens Livres de Contexto
Critérios de Aceitação
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 323 / 422
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) Março, 2015 324 / 422
Linguagens Livres de Contexto – Autômatos com Pilha
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 325 / 422
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) Março, 2015 326 / 422
Linguagens Livres de Contexto – Autômatos com Pilha
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 327 / 422
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) Março, 2015 328 / 422
Linguagens Livres de Contexto – Autômatos com Pilha
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 329 / 422
Linguagens Livres de Contexto
Algoritmos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 330 / 422
Linguagens Livres de Contexto
Algoritmos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 331 / 422
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) Março, 2015 332 / 422
Linguagens Livres de Contexto – Algoritmos
Ler a
Empilhar AB
Algoritmos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 334 / 422
Linguagens Livres de Contexto – Algoritmos
quero ir para q j e
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 336 / 422
Linguagens Livres de Contexto – Algoritmos
#4 Para todo qk ∈ Q
<qk , λ, qk > → λ
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 337 / 422
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) Março, 2015 338 / 422
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) Março, 2015 339 / 422
Linguagens Livres de Contexto – Algoritmos
δ 0 (q0 , c, A) = [q1 , A]
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 340 / 422
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) Março, 2015 341 / 422
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) Março, 2015 342 / 422
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) Março, 2015 343 / 422
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) Março, 2015 344 / 422
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) Março, 2015 345 / 422
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) Março, 2015 346 / 422
Linguagens Livres de Contexto – Algoritmos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 348 / 422
5. Linguagens Sensíveis ao Contexto – Conteúdo
1 Revisão 3
2 Introdução 59
3 Linguagens Regulares 74
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 349 / 422
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) Março, 2015 350 / 422
Linguagens Sensíveis ao Contexto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 351 / 422
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) Março, 2015 353 / 422
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) Março, 2015 353 / 422
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) Março, 2015 353 / 422
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) Março, 2015 353 / 422
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) Março, 2015 354 / 422
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) Março, 2015 354 / 422
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 a i | i > 0}
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 355 / 422
Linguagens Sensíveis ao Contexto
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 356 / 422
Linguagens Sensíveis ao Contexto – Autômato Linearm. Limitado
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 357 / 422
Linguagens Sensíveis ao Contexto – Autômato Linearm. Limitado
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 358 / 422
Linguagens Sensíveis ao Contexto – Autômato Linearm. Limitado
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) Março, 2015 359 / 422
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) Março, 2015 360 / 422
Linguagens Sensíveis ao Contexto
Teoremas
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 361 / 422
Linguagens Sensíveis ao Contexto – Teoremas
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 362 / 422
Linguagens Sensíveis ao Contexto – Teoremas
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 363 / 422
Linguagens Sensíveis ao Contexto – Teoremas
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 364 / 422
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
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 366 / 422
Linguagens Irrestritas
Hierarquia de Chomsky
Tipo Linguagem Gramática Máquina de aceitação
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 367 / 422
Linguagens Irrestritas
Gramática Irrestrita
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 368 / 422
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) Março, 2015 369 / 422
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) Março, 2015 370 / 422
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) Março, 2015 371 / 422
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) Março, 2015 372 / 422
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) Março, 2015 372 / 422
Linguagens Irrestritas
Gramática Irrestrita
Teoremas
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 373 / 422
Linguagens Irrestritas – Gramática Irrestrita
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 374 / 422
Linguagens Irrestritas – Gramática Irrestrita
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 375 / 422
Linguagens Irrestritas – Gramática Irrestrita
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 376 / 422
Linguagens Irrestritas
Máquinas de Turing
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 377 / 422
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) Março, 2015 378 / 422
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) Março, 2015 379 / 422
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) Março, 2015 380 / 422
Linguagens Irrestritas – Máquinas de Turing
Máquinas de Turing
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 381 / 422
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) Março, 2015 382 / 422
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) Março, 2015 383 / 422
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) Março, 2015 384 / 422
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) Março, 2015 385 / 422
Linguagens Irrestritas – Máquinas de Turing
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 386 / 422
Linguagens Irrestritas – Máquinas de Turing
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 387 / 422
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) Março, 2015 388 / 422
Linguagens Irrestritas – Máquinas de Turing
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 389 / 422
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) Março, 2015 390 / 422
Linguagens Irrestritas
Máquinas de Turing
Variantes
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 391 / 422
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) Março, 2015 392 / 422
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) Março, 2015 393 / 422
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) Março, 2015 394 / 422
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
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 395 / 422
Linguagens Irrestritas – Máquinas de Turing
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) Março, 2015 396 / 422
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]}
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) Março, 2015 397 / 422
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) Março, 2015 398 / 422
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) Março, 2015 400 / 422
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) Março, 2015 400 / 422
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) Março, 2015 401 / 422
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) Março, 2015 402 / 422
Linguagens Irrestritas
Máquinas de Turing
Teoremas
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 403 / 422
Linguagens Irrestritas – Máquinas de Turing
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 404 / 422
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) Março, 2015 405 / 422
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) Março, 2015 407 / 422
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) Março, 2015 408 / 422
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) Março, 2015 410 / 422
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) Março, 2015 411 / 422
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) Março, 2015 412 / 422
7. Considerações Finais – Conteúdo
1 Revisão 3
2 Introdução 59
3 Linguagens Regulares 74
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 413 / 422
Considerações Finais
Hierarquia de Chomsky
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 414 / 422
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) Março, 2015 415 / 422
Considerações Finais
Tese de Church-Turing
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 416 / 422
Considerações Finais – Tese de Church-Turing
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 417 / 422
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) Março, 2015 418 / 422
Agradecimentos
Ricardo Terra (rterrabh [at] gmail.com) Linguagens Formais e Autômatos (LFA) Março, 2015 419 / 422
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) Março, 2015 420 / 422
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) Março, 2015 421 / 422
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) Março, 2015 422 / 422