Download - Hierarquia de Chomsky
Fernando Simeone
A Hierarquia de Chomsky
Sumário• Introdução
• Linguagens Regulares (3)
• Linguagens Livre de Contexto (2)
• Linguagens Recursivamente Enumeráveis (0)
• Linguagens Sensíveis ao Contexto (1)
• A Hierarquia de Chomsky
Introdução
Introdução
Introdução
• Linguagens
Introdução
• Linguagens
• Gramáticas
Introdução
• Linguagens
• Gramáticas
• Reconhecedores
Hierarquia de Chomsky
Linguagens Regulares (3)
Linguagens Livre de Contexto (2)
Linguagens Sensíveis ao Contexto (1)
Linguagens Recursivamente Enumeráveis (0)
Linguagens Regulares3
T I P O
Hierarquia de Chomsky
Linguagens Regulares (3)
Linguagens Livre de Contexto (2)
Linguagens Sensíveis ao Contexto (1)
Linguagens Recursivamente Enumeráveis (0)
Linguagens Regulares!
• Linguagens: Linguagens Regulares
• Gramáticas: Gramáticas Regulares
• Reconhecedores: Autômatos Finitos
!
L = { a(ba)* } aba, ababa, abababa
!
L = { (a + b)*(aa + bb) } aa, bb, aaa, abaa
Linguagens Regulares
G = (V, T, P, S) !
Regras de Produção:
A ⟶ wB A ⟶ Bw A ⟶ w A ⟶ λ Sendo que w ϵ T*, e A, B ϵ V.
Gramáticas Regulares
Gramáticas Regulares
Gramáticas Regulares L = { a(ba)* }
(aba, ababa, abababa)
Gramáticas Regulares
G = ({S, A}, {a, b}, P, S)
S ⟶ aA
A ⟶ baA | λ
L = { a(ba)* }(aba, ababa, abababa)
Gramáticas Regulares
G = ({S, A}, {a, b}, P, S)
S ⟶ aA
A ⟶ baA | λ
L = { a(ba)* }(aba, ababa, abababa)
L = { (a + b)*(aa + bb) }(aa, bb, aaa, abaa)
Gramáticas Regulares
G = ({S, A}, {a, b}, P, S)
S ⟶ aA
A ⟶ baA | λ
L = { a(ba)* }(aba, ababa, abababa)
G = ({S, A}, {a, b}, P, S)
S ⟶ Aaa | Abbe
A ⟶ Aa | Ab | λ
L = { (a + b)*(aa + bb) }(aa, bb, aaa, abaa)
Autômatos Finitos• L = a(ba)*
Autômatos Finitos• L = a(ba)*
S A qf
B
a λ
ab
Autômatos Finitos• L = a(ba)*
S A qf
B
a λ
ab
a b a b a
a b b a a
Exemplos:
Autômatos Finitos• L = a(ba)*
S A qf
B
a λ
ab
a b a b a ✓ Aceita
a b b a a
Exemplos:
x Não aceita
Autômatos Finitos• L = a(ba)*
S A qf
B
a λ
ab
a b a b a ✓ Aceita
a b b a a
Exemplos:
Linguagens Livres de Contexto2
T I P O
Hierarquia de Chomsky
Linguagens Regulares (3)
Linguagens Livre de Contexto (2)
Linguagens Sensíveis ao Contexto (1)
Linguagens Recursivamente Enumeráveis (0)
!
• Linguagens: Linguagens Livres de Contexto
• Gramáticas: Gramáticas Livres de Contexto
• Reconhecedores: Autômatos Com Pilha
Linguagens Livres de Contexto
Linguagens Livres de Contexto!
L = { anbn | n ≥ 0 } ab, aabb, aaabbb
!
L = Expressões aritméticas (+, *, [, ]) x + x, x + x * x, x * [x + x]
Gramáticas Livres de ContextoG = (V, T, P, S) !
Regras de Produção:
A ⟶ 𝛂
Sendo que 𝛂 ϵ (T ∪ V)*.
Gramáticas Livres de ContextoG = (V, T, P, S) !
Regras de Produção:
A ⟶ 𝛂
Sendo que 𝛂 ϵ (T ∪ V)*.
Exemplos:
A ⟶ aAb B ⟶ aaA
Gramáticas Livres de Contexto
Gramáticas Livres de Contexto
L = { anbn | n ≥ 0 } (ab, aabb, aaabbb)
Gramáticas Livres de Contexto
L = { anbn | n ≥ 0 } (ab, aabb, aaabbb)G = ({S}, {a, b}, P, S)
S ⟶ aSb
S ⟶ λ
Gramáticas Livres de Contexto
L = { anbn | n ≥ 0 } (ab, aabb, aaabbb)G = ({S}, {a, b}, P, S)
S ⟶ aSb
S ⟶ λ
L = Expressões aritméticas ( x + x, x + x * x, x * [x + x] )
Gramáticas Livres de Contexto
G = ({E}, {+, *, [, ], x}, P, E)
E ⟶ E + E | E * E | [E] | x
L = { anbn | n ≥ 0 } (ab, aabb, aaabbb)G = ({S}, {a, b}, P, S)
S ⟶ aSb
S ⟶ λ
L = Expressões aritméticas ( x + x, x + x * x, x * [x + x] )
Autômatos com Pilha• L = { anbn | n ≥ 0 }
Autômatos com Pilha• L = { anbn | n ≥ 0 }
S qf
B
(a, λ, B)
(b, B, λ)
(b, B, λ)
(λ, λ, λ) (λ, λ, λ)
Autômatos com Pilha• L = { anbn | n ≥ 0 }
a a b b
a b b a
Exemplos:
S qf
B
(a, λ, B)
(b, B, λ)
(b, B, λ)
(λ, λ, λ) (λ, λ, λ)
Autômatos com Pilha• L = { anbn | n ≥ 0 }
a a b b ✓ Aceita
a b b a
Exemplos:
S qf
B
(a, λ, B)
(b, B, λ)
(b, B, λ)
(λ, λ, λ) (λ, λ, λ)
Autômatos com Pilha• L = { anbn | n ≥ 0 }
x Não aceita
a a b b ✓ Aceita
a b b a
Exemplos:
S qf
B
(a, λ, B)
(b, B, λ)
(b, B, λ)
(λ, λ, λ) (λ, λ, λ)
Linguagens Recursivamente Enumeráveis0
T I P O
Linguagens Recursivamente Enumeráveis (0)
Hierarquia de Chomsky
Linguagens Sensíveis ao Contexto (1)
Linguagens Livre de Contexto (2)
Linguagens Regulares (3)
Linguagens Recursivamente Enumeráveis
!
• Linguagens: Ling. Recursivamente Enumeráveis
• Gramáticas: Gramáticas Irrestritas
• Reconhecedores: Máquinas de Turing
!
L = { anbncn | n ≥ 0 } abc, aaabbbccc, aabbcc
!
L = { u[u] | u ϵ {a, b}* } aa[aa], aab[aab], baba[baba]
Linguagens Recursivamente Enumeráveis
Gramáticas Irrestritas
Gramáticas IrrestritasG = (V, T, P, S) !
Regras de Produção:
u ⟶ w
Sendo que u ϵ (T ∪ V)+ e w ϵ (T ∪ V)*.
Gramáticas IrrestritasG = (V, T, P, S) !
Regras de Produção:
u ⟶ w
Sendo que u ϵ (T ∪ V)+ e w ϵ (T ∪ V)*.
Exemplos:
A ⟶ aAb B ⟶ λ bAc ⟶ aA
Gramáticas Irrestritas
Gramáticas Irrestritas
L = { anbncn | n ≥ 0 } (abc, aaabbbccc)
Gramáticas Irrestritas
L = { anbncn | n ≥ 0 } (abc, aaabbbccc)
G = ({S, A, C}, {a, b, c}, P, S)
S ⟶ aAbc | λ Cb ⟶ bC
A ⟶ aAbC | λ Cc ⟶ cc
Gramáticas Irrestritas
L = { u[u] | u ϵ {a, b}* } ( aa[aa], baba[baba] )
Gramáticas Irrestritas
• G = ({S, T, A, B}, {a, b [, ]}, P, S)
S ⟶ aT[a] | bT[b] Ba ⟶ aB
T[ ⟶ aT[A | bT[B | [ Bb ⟶ bB
Aa ⟶ aA A] ⟶ a]
Ab ⟶ bA B] ⟶ b]
L = { u[u] | u ϵ {a, b}* } ( aa[aa], baba[baba] )
Máquina de Turing• L ={ anbncn | n ≥ 0 }
Máquina de Turing• L ={ anbncn | n ≥ 0 }
qf
q0(B, B, ➞)
q1 q3 q4
q5
q2(a, X, ➞) (b, Y, ➞)
(a, a, ➞)(Y, Y, ➞)
(b, b, ➞)(Z, Z, ➞)
(c, Z,←)
(a, a, ←)(b, b, ←)(Y, Y, ←)(Z, Z, ←)
(X, X, ➞)
(Z, Z, ➞)(Y, Y, ➞)
(Y, Y, ➞)
(B, B, ➞)
(B, B, ➞)
B B B … B
Máquina de Turing• L ={ anbncn | n ≥ 0 } a a b b c c
a b b a c c
Exemplos:
qf
q0(B, B, ➞)
q1 q3 q4
q5
q2(a, X, ➞) (b, Y, ➞)
(a, a, ➞)(Y, Y, ➞)
(b, b, ➞)(Z, Z, ➞)
(c, Z,←)
(a, a, ←)(b, b, ←)(Y, Y, ←)(Z, Z, ←)
(X, X, ➞)
(Z, Z, ➞)(Y, Y, ➞)
(Y, Y, ➞)
(B, B, ➞)
(B, B, ➞)
B B B … B
Máquina de Turing• L ={ anbncn | n ≥ 0 } a a b b c c
a b b a c c
Exemplos:✓ Aceita
qf
q0(B, B, ➞)
q1 q3 q4
q5
q2(a, X, ➞) (b, Y, ➞)
(a, a, ➞)(Y, Y, ➞)
(b, b, ➞)(Z, Z, ➞)
(c, Z,←)
(a, a, ←)(b, b, ←)(Y, Y, ←)(Z, Z, ←)
(X, X, ➞)
(Z, Z, ➞)(Y, Y, ➞)
(Y, Y, ➞)
(B, B, ➞)
(B, B, ➞)
B B B … B
Máquina de Turing• L ={ anbncn | n ≥ 0 } a a b b c c
a b b a c c
Exemplos:
x Não aceita
✓ Aceita
qf
q0(B, B, ➞)
q1 q3 q4
q5
q2(a, X, ➞) (b, Y, ➞)
(a, a, ➞)(Y, Y, ➞)
(b, b, ➞)(Z, Z, ➞)
(c, Z,←)
(a, a, ←)(b, b, ←)(Y, Y, ←)(Z, Z, ←)
(X, X, ➞)
(Z, Z, ➞)(Y, Y, ➞)
(Y, Y, ➞)
(B, B, ➞)
(B, B, ➞)
B B B … B
Linguagens Sensíveis ao Contexto1
T I P O
Linguagens Recursivamente Enumeráveis (0)
Linguagens Sensíveis ao Contexto (1)
Hierarquia de Chomsky
Linguagens Livre de Contexto (2)
Linguagens Regulares (3)
Linguagens Sensíveis ao Contexto
!
• Linguagens: Linguagens Sensíveis ao Contexto
• Gramáticas: Gramáticas Sensíveis ao Contexto
• Reconhecedores: M. de Turing com fita limitada
!
L = { anbncn | n > 0 } abc, aaabbbccc, aabbcc
!
L = { ww | w ϵ {a, b}* } aa, aabb, abaaba
Linguagens Sensíveis ao Contexto
Gramáticas Sensíveis ao ContextoG = (V, T, P, S) !
Regras de Produção:
u ⟶ w
Sendo que u ϵ (T ∪ V)+ e w ϵ (T ∪ V)*, e |u| ≤ |w|.
Gramáticas Sensíveis ao ContextoG = (V, T, P, S) !
Regras de Produção:
u ⟶ w
Sendo que u ϵ (T ∪ V)+ e w ϵ (T ∪ V)*, e |u| ≤ |w|.Exemplos:
A ⟶ aAb
Cc ⟶ aAc
Aa ⟶ bB
B ⟶ λ
Gramáticas Sensíveis ao Contexto
Gramáticas Sensíveis ao Contexto
L = { anbncn | n > 0 } (abc, aabbcc, aaabbbccc)
Gramáticas Sensíveis ao Contexto
G = ({S, A, C}, {a, b, c}, P, S)
S ⟶ aAbc | abc
A ⟶ aAbC | λ
Cb ⟶ bC
Cc ⟶ cc
L = { anbncn | n > 0 } (abc, aabbcc, aaabbbccc)
A Hierarquia de Chomsky
Hierarquia de Chomsky
Linguagens Regulares (3)
Linguagens Livre de Contexto (2)
Linguagens Sensíveis ao Contexto (1)
Linguagens Recursivamente Enumeráveis (0)
Hierarquia de ChomskyLinguagem Gramática Reconhecedor
[0] Linguagens Recursivamente Enumeráveis Gramáticas Irrestritas Máquina de Turing
[1] Linguagens Sensíveis ao Contexto
Gramáticas Sensíveis ao Contexto
Máquina de Turing com Fita Limitada
[2] Linguagens Livres de Contexto
Gramáticas Livres de Contexto Autômato com Pilha
[3] Linguagens Regulares Gramáticas Regulares Autômato Finito
0
Hierarquia de ChomskyGramáticas
A ⟶ aAb#B ⟶ aaA
Cc ⟶ aAc#Aa ⟶ bB
aCc ⟶ aA
A ⟶ abB#A ⟶ Bab#A ⟶ λ
0
1
Hierarquia de ChomskyGramáticas
A ⟶ aAb#B ⟶ aaA
Cc ⟶ aAc#Aa ⟶ bB
aCc ⟶ aA
A ⟶ abB#A ⟶ Bab#A ⟶ λ
0
1
2
Hierarquia de ChomskyGramáticas
A ⟶ aAb#B ⟶ aaA
Cc ⟶ aAc#Aa ⟶ bB
aCc ⟶ aA
A ⟶ abB#A ⟶ Bab#A ⟶ λ
0
1
2
Hierarquia de ChomskyGramáticas
A ⟶ aAb#B ⟶ aaA
Cc ⟶ aAc#Aa ⟶ bB
aCc ⟶ aA
3A ⟶ abB#A ⟶ Bab#A ⟶ λ
Referências
• MENEZES, P. B. Linguagens formais e autômatos. 4 ed. Sagra-Dcluzzato, 1998.
• SUDKAMP, T. A. Languages and Machines: An Introduction to the Theory of Computer Science (3rd Edition). Boston, MA, USA: Addison-Wesley Longman Publishing Co., Inc., 2005. ISBN 0321322215.
Obrigado Dúvidas ??