LFormais
LFormais
LFormais
Alfabetos e Palavras
• Um alfabeto é um conjunto finito de símbolos
distintos.
• Exemplo: Σ = {a,b,c}
é um alfabeto formado pelos símbolos a, b e c.
• Uma palavra sobre um alfabeto Σ é uma seqüência
de comprimento finito formada com símbolos desse
alfabeto.
• Algumas palavras sobre o alfabeto Σ = {a,b,c} :
abc , bcaabbac , b
• A palavra de comprimento zero é representada por λ .
Linguagens
• Seja Σ um alfabeto qualquer. O conjunto de todas as
palavras sobre Σ é denotado por Σ* .
• Por exemplo, se Σ = {a,b,c} , então
Σ* = {λ, a, b, c, aa, ab, ac, ba, bb, bc, ca, cb, cc, aaa, ...}
• Uma linguagem sobre um alfabeto Σ é qualquer
subconjunto de Σ* .
• Linguagens sobre Σ = {a,b,c} :
{a, ab, bbc}
{aa, ab, ac, ba, bb, bc, ca, cb, cc}
todas as palavras que começam com a
1
Linguagens
• Outras linguagens sobre Σ = {a,b,c} :
todas as palavras de comprimento par
{λ, a, b, c} {λ}
{} Σ*
• A concatenação de 2 palavras será representada
por sua justaposição. Por exemplo, sejam uma
palavra x = abc e uma palavra y = bb .
A concatenação de x com y é representada por
xy = abcbb .
Concatenação de linguagens
• Se X e Y são duas linguagens,
a concatenação de X com Y, denotada por XY,
é a seguinte linguagem:
XY = { palavras xy tais que x ∈ X e y ∈ Y }
Concatenação de linguagens
• Por exemplo, sejam
X = {a,b,c} e Y = {abb,ba} .
Então
XY = {aabb,aba,babb,bba,cabb,cba}
• A concatenação de X consigo mesma n vezes é Xn :
Xn = X X X ... X X (n vezes)
• Por definição, X0 é o conjunto {λ}:
X0 = {λ}
2
Concatenação de linguagens
• Outros exemplos, com X = {a,b,c} e Y = {abb,ba} :
X0 = {λ}
X1 = X = {a,b,c}
X2 = XX = {aa,ab,ac,ba,bb,bc,ca,cb,cc}
X3 = X2X = {aaa,aab,aac,aba,abb,abc,aca,acb,acc,
baa,bab,bac,bba,bbb,bbc,bca,bcb,bcc,
caa,cab,cac,cba,cbb,cbc,cca,ccb,ccc}
Y2 = YY = {abbabb,abbba,baabb,baba}
7
Exercícios
Considere o alfabeto Σ = {a,b,c}. Seja L1 a linguagem das
palavras que começam com o símbolo 'a', e L2 a linguagem
das palavras que terminam com o símbolo 'b'.
1. O conjunto {a,b,c} é uma linguagem sobre Σ ?
2. Qual a menor linguagem que pode ser criada com esse
alfabeto (menor número de palavras) ?
3. Qual é o resultado da concatenação de L1 com L2 ?
4. Qual é o resultado da união de L1 com L2 ?
5. A união de 2 linguagens pode resultar em uma
linguagem menor que as outras duas?
6. A concatenção de 2 linguagens pode resultar em uma
linguagem menor que as outras duas?
8
Fecho de Kleene
• A operação X*, denominada Fecho de Kleene de X,
é definida como a união de Xi ,
com i variando de 0 a infinito:
X* = X0 ∪ X1 ∪ X2 ∪ X3 ∪ ...
Ou seja, X* consiste de todas as palavras que se pode
construir a partir dos elementos de X .
• Por exemplo, se X = {a,b,c} e Y = {abb,ba} :
X* = {λ,a,b,c,aa,ab,ac,ba,bb,bc,ca,cb,cc,aaa,...}
Y* = {λ,abb,ba,abbabb,abbba,baabb,baba,abbabbabb,...}
3
Expressões Regulares
10
11
12
4
Expressões Regulares - exemplos
• (a ∪ b) (ab ∪ bb)
denota a linguagem {aab,abb,bab,bbb}
• (a ∪ b)*
a linguagem {λ,a,b,aa,ab,ba,bb,aaa,...} :
• (aa)*
palavras só com a, e com comprimento par
(inclui a palavra nula)
13
• (a2)+
palavras só com a, e com comprimento par maior
que zero (não inclui a palavra nula)
• a (a ∪ b ∪ c)*
Linguagem sobre {a,b,c} das palavras que começam
com o símbolo a
14
• a (a ∪ b ∪ c)* b
Linguagem sobre {a,b,c} das palavras que começam
com o símbolo a e terminam com b
• (b ∪ c) (a ∪ b ∪ c)* ∪ λ
Linguagem das palavras sobre {a,b,c} que não
começam com o símbolo a
15
5
Expressões Regulares - exercícios
16
17
18
6
Expressões Regulares - restrições
19