Escolar Documentos
Profissional Documentos
Cultura Documentos
0*
Exemplo: construindo um AFN para
uma ER dada
(0+1)*
Exemplo: construindo um AFN para
uma ER dada
(0+1)*1
Exemplo: construindo um AFN para
uma ER dada
(0+1)*1
– Considere abab
• Podemos decompô-la em 3 partes (x,y e z)
Princípio da casa dos pombos
• Seja L=L(aba*b)
– E se for abaab
• Podemos decompô-la também em 3 partes
Princípio da casa dos pombos
• Seja L=L(aba*b)
– E se for abaaab
• Podemos decompô-la também em 3 partes
• E assim sucessivamente:
– w=xyiz
– Podemos “bombear” y quantas vezes quisermos
O Lema do Bombeamento para
linguagens regulares
O Lema do Bombeamento para
linguagens regulares
• Descreve uma propriedade essencial das
linguagens regulares
– Diz que toda palavra suficientemente longa (|w| ≥ p)
pertencente a uma linguagem regular pode ser
particionada em 3 partes (w=xyz)
– a porção do meio (y) não pode ser vazia
– existe um número natural p sendo que o
comprimento de x concatenado com y não pode ser
maior do que p (|xy|≤ p)
– qualquer palavra construída repetindo-se y um
número qualquer de vezes (xz, xyz, xyyz, xyyyz, etc)
pertence também à mesma linguagem regular
• O processo de repetição de y é chamado de
bombeamento
O Lema do Bombeamento para
linguagens regulares
• A restrição (|xy|≤ p) impõe um limite na quantidade de
variações a serem testadas
• O número de estados de um provável autômato é uma
boa tentativa para ser um comprimento do
bombeamento p
• É útil para provar a irregularidade de uma linguagem
– encontrando uma sequencia xyz que ao ser bombeada gera
uma cadeia que não pertence à linguagem (prova por
contradição)
• Não é suficiente para provar que a linguagem É regular
Aplicando o PL
O autômato é FINITO
Exemplo
• Voltando a nosso exemplo inicial
– As palavras nessa linguagem tem comprimento
par e o autômato tem quatro estados
– Alguns exemplos de bombeamento usando p=4
• Se w=0011 e x=00, y=11 e z=ɛ
– Então xy0z=00, xy1z=0011, xy2z=001111, xy3z=00111111 ... são
todas palavras de L
• Se w=0110 e x=0, y=11 e z=0
– Então xy0z=00, xy1z=0110, xy2z=011110, xy3z=01111110 ... são
todas palavras de L
Como provar que uma linguagem não
é regular
• Por contradição
• Assumimos que a linguagem é regular
• Logo assumimos que deve existir um padrão
xyiz que possa ser bombeado
• Analisamos a forma da linguagem e os
padrões possíveis
• Se nenhum permite bombeamento estará
provado que ela não é regular
Prova de que {0n1n | n≥0} não é regular
• Sejam w,x,y,p e i como definidos anteriormente
• Qualquer que seja p, se considerarmos a palavra:
0p1p :
– Deveria existir x e y tal que |xy|≤ p
– Cujo bombeamento xyiz só gere palavras da
linguagem
– Mas como |xy|≤ p, y necessariamente só tem 0s
– O bombeamento para i>1 vai gerar palavras com
número de 0s maior que o número de 1s, logo não
pertencentes à linguagem
Para mais explicações sobre o Lemma
do Bombeamento
• https://www.youtube.com/watch?v=4EsUC6r
bQ-w
Gramática linear
• Seja G=(V, T, P, S) uma gramática e sejam A e B
elementos de V e w uma palavra de T*. Então
G é uma:
– Gramática Linear à direita (GLD). Se todas as
regras de produção são da forma:
• A→wB ou A→w
– Gramática Linear à esquerda (GLE). Se todas as
regras de produção são da forma:
• A→Bw ou A→w
Gramática linear
– Gramática Linear Unitária à direita (GLUD). Se
todas as regras de produção são da forma:
• A→wB ou A→w, adicionalmente |w|<=1
– Gramática Linear Unitária à esquerda (GLUE). Se
todas as regras de produção são da forma:
• A→Bw ou A→w, adicionalmente |w|<=1
Equivalência das gramáticas lineares
• As diversas gramáticas lineares são
formalismos equivalentes:
• Seja L uma linguagem então:
– L é gerada por uma GLD se, e somente se,
– L é gerada por uma GLE se, e somente se,
– L é gerada por uma GLUD se, e somente se,
– L é gerada por uma GLUE.
Ex. de gramáticas lineares equivalentes para a
linguagem a(ba)*
GLD para a linguagem a(ba)*
• G={{S,A}, {a,b}, P, S}
• P={S→aA,
A→baA|ε}
GLE para a linguagem a(ba)*
• G={{S}, {a,b}, P, S}
• P={S→Sba|a}
GLUD para a linguagem a(ba)*
• G={{S,A}, {a,b}, P, S}
• P={S→Aa|a,
A→Sb}
Teorema
• 1 - Se L é uma Linguagem gerada por uma
gramática regular, então L é uma linguagem
regular
• 2 - Se L é uma linguagem regular, então existe
uma gramática regular G que gera L.
Exercícios
• Construa um autômato finito determinístico e uma expressão regular para
cada umas da linguagens a seguir:
– A) A linguagem dos identificadores do pascal
• Ex. válidos: a, _, media, M23af, c311
• Ex. inválidos: 2, 45media, 3csa
– B) Os números inteiros
• Ex. válidos: 1, -1, +1, +45, 77, -44, 4564894, -459456
• Ex. inválidos: +, -, 55+5, 8989-4, --65, ++5
– C) Os números reais
• Ex. válidos: 1, -1, +1, +45.05, 77.5, -44.5554, 4564.894, -459456
• Ex. inválidos: +, -, 55+5, 8..989-4, --65, ++5, .56, +.45, .564, -+532