Você está na página 1de 7

Linguagens Formais

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 }

Ou seja, são as palavras formadas pela


concatenação de uma palavra qualquer de X
com uma palavra qualquer de Y
(prefixo pertence a X, sufixo pertence a 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

Expressões Regulares - Definição


• Para definir expressões regulares, vamos usar as
seguintes abreviações:
– o conjunto {a} será representado simplesmente por a ;
– {a,b,c,...} será representado por a ∪ b ∪ c ∪...
• O conjunto de expressões regulares sobre um alfabeto
Σ qualquer é definido como:
1. os conjuntos { } e λ são expressões regulares;
2. para todo símbolo a de Σ, a é uma expressão regular;
3. se x e y são expressões regulares sobre Σ, então também
são expressões regulares: x ∪ y , xy e x* .

11

Expressões Regulares - exemplos


• a∪b
linguagem formada apenas pelas palavras a e b
• abb ∪ aa ∪ ac
linguagem formada exatamente pelas palavras
abb, aa e ac, ou seja, {abb,aa,ac}
• a*
linguagem (infinita) de todas as palavras formadas
apenas com o símbolo a

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

Expressões Regulares - exemplos


• Outras abreviações:
– x+ é usado para abreviar xx* ;
– x2 é usado para abreviar xx ;
– x3 para abreviar x2x etc.

• (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

Expressões Regulares - exemplos

• 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

• Que linguagens são essas?


1. (a ∪ b)* b (a ∪ b)*
2. (a ∪ b)* a (a ∪ b)* a (a ∪ b)*
3. (a ∪ b ∪ c) (a ∪ b ∪ c) (a ∪ b ∪ c)
4. (b* a b* a b*) *

16

Expressões Regulares - exercícios

• Construa expressões regulares para:


1. Linguagem das palavras de comprimento par
sobre o alfabeto {a,b,c}.
2. Linguagem das palavras sobre o alfabeto {a,b,c}
que contenham exatamente um símbolo c .

17

Expressões Regulares - restrições

• As linguagens que podem ser especificadas por


expressões regulares são chamadas de
linguagens regulares.
• Mas expressões regulares não podem ser usadas
para especificar qualquer linguagem desejada.
• Muitas linguagens não conseguem ser especificadas
com expressões regulares, necessitando de
formalismos mais poderosos.

18

6
Expressões Regulares - restrições

• Exemplos de linguagens que não são regulares:


– Linguagem cujas palavras têm o formato anbn,
para qualquer n. Ou seja:
{ λ, ab, aabb, aaabbb, ... }
– Linguagem sobre alfabeto { a, b, (, ) } com
aninhamento correto de parêntesis abrindo e fechando.

19

Você também pode gostar