Anda di halaman 1dari 7

Alfabetos e Linguagens

Alfabeto

conjunto finito no vazio de smbolos

smbolo um elemento qualquer de um alfabeto

usualmente designado por

exemplos: = {a,b}

= {0,1,2,3,4,5,6,7,8,9}

Cadeia (string, palavra)

concatenao de smbolos de um alfabeto

exemplos: aab , 123094

cadeia vazia: no contm nenhum smbolo, anotada com

Comprimento de cadeia

nmero de smbolos de uma cadeia.

exemplos: |aab| = 3 , |123094|=6 , ||=0

Concatenao de cadeias

define-se a concatenao z de uma cadeia x com uma cadeia y,

como sendo a concatenao dos smbolos de ambas as cadeias,

formando a cadeia xy. Obs: |z| = |x| + |y|

exemplo: x = abaa; y = ba z = abaaba

x = ba; y = z = ba

Potncias de um alfabeto

Denotamos k o conjunto de todas as palavras de comprimento k, sobre o alfabeto . Exemplos,


para o alfabeto = {0, 1} :

0 = { } 1 = {0, 1} 2 = {00, 01, 10, 11}

3 = {000, 001, 010, 011, 100, 101, 110, 111}


Fechamento de um Alfabeto
Fecho transitivo e reflexivo: *
o conjunto de todas as palavras sobre o alfabeto
* = 0 1 2 3 ...
Fecho transitivo obtido excluindo a palavra vazia: +
+ = 1 2 3 ...
* = + { }
Para o alfabeto = {0, 1}
* = { , 0, 1, 00, 01, 10, 11, ... }
+ = {0, 1, 00, 01, 10, 11, ...}

Linguagem
Coleo de cadeias de smbolos, de comprimento finito.
Estas cadeias so denominadas sentenas da linguagem,
e so formadas pela justaposio de elementos individuais,
os smbolos ou tomos da linguagem.
Exemplos:
{ab, bc} ( linguagem formada pelas cadeias ab e bc)
{abn, anb; n 0} ( linguagem formada por todas as cadeias que comeam com a seguido
de um nmero qualquer de b's ou
comeam com um nmero qualquer de a's seguidos de um b,
por exemplo a, ab, abb, b, aab, aaab, ...)

Mecanismos de Representao de Linguagens

enumerao das cadeias de smbolos que formam as suas sentenas (somente linguagens finitas
podem ser representadas por este mtodo)

conjunto de leis de formao das cadeias: Gramtica

regras de aceitao de cadeias: Reconhecedor


Exemplos:
enumerao
L = {a, b, ab, ba} ( linguagem formada pelas cadeias a, b, ab e ba)

leis de formao gramtica G


G = ( {A, B}, {0, 1}, P, A)
P: { A 0A
AB
B 1B
B } gera L(G) = {0n1m, n 1 m 0}

regras de aceitao um reconhecedor para a linguagem L acima


... dever verificar se a palavra comea com a ou b e se tiver mais um smbolo dever terminar com b
ou a, respectivamente e, tambm no poder ter mais smbolos caso pertena a linguagem L.
No contexto da Teoria das Linguagens Formais e Autmatos:

Problema: dados um alfabeto e uma linguagem L sobre , decidir se


uma dada palavra w pertence ou no a L.
Sejam as linguagens L1 e L2 sobre algum alfabeto , definimos:

Concatenao
L1 L2 = {xy | x L1 e y L2},
usualmente denotamos L1 L2 como L1L2 .
as linguagens no precisam ser sobre o mesmo alfabeto
se L1 1 e L2 2 , teremos L1L2 1 2.

para qualquer linguagem L: L{} = {}L = L


a linguagem que contm somente a cadeia vazia atua como elemento neutro para a
operao de concatenao.

Unio L1 L2 = {x | x L1 ou x L2}

Interseco L1 L2 = {x | x L1 e x L2}

Diferena L1 - L2 = {x | x L1 e x L2 }.
Exemplos: considere = {0, 1} e as linguagens sobre :
L1 = {, 1, 0110, 11010} e L2 = {, 0, 1, 10, 11}.
ento: L1 L2 = {, 0, 1, 10, 11, 0110, 11010}
L1 L2 = {, 1}
L1 - L2 = {0110, 11010}

Potenciao
Se L , definimos Ln = {} se n = 0, e Ln = L Ln-1 para n > 0.
Exemplo: para L = {xy}, temos L0 = {}, L1 = L = {xy}, L2 = LL = {xyxy}.
Obs: 0 = {}

Sub - linguagem
se todas as cadeias de L1 so tambm cadeias de L2, ento L1 definida como uma sub-linguagem de L2 ,
ou seja, L1 L2
exemplo: se L1 = {1, 11, 111, 1111} e L2 = {1n | n 4} temos que L1 L2.
Note que qualquer linguagem L sobre um alfabeto uma sub-linguagem de *, isto , L *.

Igualdade L1 = L2 , se L1 L2 e L2 L1.

Fechos

o transitivo ou positivo : L+ = Ui =1 Li

o transitivo e reflexivo ou fecho de Kleene : L* = Ui = 0 Li
o fecho de Kleene consiste de zero ou mais concatenaes de L, enquanto o fecho positivo corresponde
a uma ou mais concatenaes
Exemplo suponha L = {1} sobre o alfabeto = { 0, 1 }. Temos
L0 = {}, L1 = {1}, L2 = {12} assim
L* = {, 1, 12, 13, ...} e tambm L+ = { 1, 12, 13, ...}

Complemento L = * L
Para as linguagens L1 , L2 e L3 sobre um mesmo alfabeto :

L1(L2 L3) = L1L2 L1L3 e (L2 L3)L1 = L2L1 L3L1

A concatenao no interage com a interseco da mesma forma que a unio. Para ilustrar, considere
que L1 = {, 1}, L2 = {} e L3 = {1}

Note que L1L2 = {, 1}, e L1L3 = {1, 12}, e assim L1L2 L1L3 = {1}.

Por outro lado, L2 L3 = e assim L1(L2 L3) =

A concatenao e a diferena de linguagens tambm so incompatveis.

Em geral temos: L1(L2 - L3) L1L2 - L1L3

No exemplo, L1(L2 - L3) = enquanto L1L2 - L1L3 = {}

Gramticas

dispositivos de gerao de sentenas das linguagens que definem


caracterizadas como qudruplas ordenadas: G = (V, , P, S), onde:
V: um alfabeto finito, conhecido como vocabulrio no terminal. Os smbolos de V so usados
como nomes para categorias sintticas. Temos como exemplo: em Portugus sentena,
predicado, ..., verbo; e em linguagem de programao - programa, bloco de comandos,
procedimentos, etc.
: um alfabeto finito conhecido como vocabulrio terminal. Os smbolos de so aqueles que
aparecem nos programas de uma linguagem de programao, ou em palavras na linguagem natural
como o Portugus.
P: um conjunto finito de regras ou produes da forma W W' onde: W (V )+, isto o
conjunto de cadeias no vazias sobre V e e W' (V )*. A interpretao da regra W W'
que W pode ser substitudo por W' sempre que W aparecer.
S: o smbolo inicial , ou o axioma, da gramtica. S o nome da categoria sinttica principal.

Como exemplo em Portugus: S = sentena.


Obs.:

V = ; V = T, um conjunto com todos os smbolos terminais e no-terminais;


os elementos de , so os terminais e representados por letras minsculas a, b, c, ...
os elementos de V so os no terminais e representados por letras maisculas A, B, C, ...
cadeias mistas, ou seja cadeias C (V )* so representadas por letras gregas , , ...
As gramticas devem ser vistas como sistemas de substituio, nos quais as produes indicam as
substituies possveis para os no terminais.
Exemplos:
G = ( {S,A,B}, {a,b}, P, S), portanto:
V = {S, A, B};
= {a, b};
P = { 1) S AB;
2) A a;
3) B b }
S : estado inicial,
(1) ( 2) ( 3)
desta forma: S AB aB ab , nica cadeia gerada

Um exemplo com a linguagem natural, empregando uma gramtica que conhecemos, considere:
V = { sentena, sujeito, predicado, artigo, verbo, substantivo, complemento}
= { peixe, isca, mordeu, o, a}
P = { 1. Sentena sujeito, predicado;
2. sujeito artigo substantivo;
3. predicado verbo, complemento;
4. complemento artigo, substantivo;
5. artigo o;
6. artigo a;
7. substantivo peixe;
8. substantivo isca;
9. verbo mordeu. }
S = sentena
Para gerar uma sentena sintaticamente correta, temos a rvore de derivao:
Com esta gramtica, pode-se gerar as seguintes frases sintaticamente corretas:
O peixe mordeu a isca
A isca mordeu o peixe
O peixe mordeu o peixe
A isca mordeu a isca etc. ...

Note que s a primeira, que aparece na rvore de derivao, transmite uma informao dentro da
linguagem natural, enquanto as demais so apenas corretas quanto a sua construo.
Para as definies a seguir vamos considerar
G = (V, , P, S) e , , , (V )*.

Uma cadeia gera diretamente () uma cadeia , se e somente se ( ) P, no


1exemplo temos no 3 passo: aB ab pois B b.

Uma cadeia gera ( ) uma cadeia se e somente se existe 1, 2, ..., n tal que
1 2 ... n , n 0. Se n = 0, ento e portanto para
qualquer . 1exemplo: S ab; S aB; AB ab; ab ab (zero
passos). 2exemplo: sentena o peixe mordeu a (substantivo), etc.

Uma cadeia (V )* uma forma sentencial de G se e somente se S ou seja, um


embrio para uma cadeia gerada pela gramtica. No 1exemplo: aB, AB, S, ab so formas
sentenciais, enquanto bA (V )* no . Uma forma sentencial, , uma sentena de G se e
somente se . Portanto as cadeias geradas pela gramtica so as sentenas de G. Considere,
por exemplo, a gramtica:
G1 = ( { A, B}, { a, b, c}, P, A)
onde P = { 1) A aB;
2) B bB;
3) B c },
Pergunta: x = abbbc uma sentena de G ? resposta: sim!
1 2 2 2 3
Pois, A aB abB abbB abbbB abbbc ,

Como fixao verifique se y = ac e z = aabc so sentenas de G1, e tambm, se o conjunto de


sentenas geradas por G1 pode ser expresso como {ab nc |n 0} .

Linguagens Geradas
A linguagem L gerada pela gramtica G, denotada como L(G), o conjunto L(G) = { | sentena de
G }, ou seja,
L(G) = { | S }, como na questo acima ou na ilustrao a seguir:
G2 = ( {S, A, B, C}, { a, b, c}, P, S )
onde P={ 1) S A;
2) A BaC;
3) B bB;
4) B b;
5) C cC;
6) C c. }
portanto a linguagem gerada por G2 :
bac, bbac, bacc, bbbaccc, etc., isto ,

L(G2 ) = {b i ac j / i , j 1} .
A rvore de derivao sinttica para a cadeia bbaccc ser:

a produo: 1 2 3 4 5 5 6 gera a cadeia bbaccc.

Anda mungkin juga menyukai