Sei sulla pagina 1di 78

O Estudo das linguagens formais

Estudo das Linguagens formais


Hierarquia de Chomsky

Linguagens Enumerveis Recursivamente

Linguagens Sensveis ao Contexto

Linguagens Livres de Contexto

Linguagens Regulares
Linguagens formais e autmatos


Linguagens Regulares - LR
Categoria mais restrita de linguagens;
Descrever uma LR um problema menos
complexo do que descrever linguagens de
outras categorias;
Modelos formais que podem represent-las:

Autmato Finito Determinstico;

Autmato Finito No-Determinstico;

Autmato Finito com Sada;

Gramtica Regular;

Expresses Regulares.
Linguagens formais e autmatos


Linguagens Regulares LR
Algumas aplicaes dos formalismos que
s definem:

Analisadores Lxicos;

Modelagem de Sistemas de Estados Finitos;

Ferramentas de pesquisa de textos;
Linguagens formais e autmatos


Autmato Finito Determinstico AFD
Formalismo de carter reconhecedor;
Pode reconhecer qualquer LR;
Principais aplicaes:

Modelagem de sistemas de estados finitos;

Anlise lxica;
Problema clssico HLCR (Hopcroft e
Ullman)
Linguagens formais e autmatos


Problema: um homem quer atravessar um
rio levando consigo um lobo, uma cabra e
um repolho e no bote s cabem ele e mais
um dos outros trs;

Exemplos de possveis estados do sistema:
<HLCR-0> - todos na margem esquerda
<L-HCR> - lobo na margem esquerda,
cabra e repolho na direita

Possveis entradas do sistema:
h - homem atravessa o rio sozinho;
l - homem atravessa o rio com o lobo;
c - homem atravessa o rio com a cabra;
r - homem atravessa o rio com o repolho;
Linguagens formais e autmatos


Objetivo: <HLCR-0> <0-HLCR>

Representao por diagrama:
crculos representam estados;
arcos representam ao ou transio (de
um estado p/ outro);
O estado final marcado por um crculo
duplo;
As respostas p/ o problema so as
seqncias de aes que levam do estado
inicial para o final;
Linguagens formais e autmatos
c h
Incio
HLCR-0 LR-HC HLR-C
h
c
l r
l r
R-HLC L-HRC
Diagrama
representando o c c c c
problema HLCR.
HCR-L HLC-R
r l
r l
c h
0-HLCR HC-LR C-HLR
c h
Linguagens formais e autmatos


Exemplo de sistema que pode ser
representados desta forma:
Forno de micro-ondas

Entradas: porta aberta ou fechada,
comandos fornecidos pelo cozinheiro
atravs do painel, sinal do timer que
expira.

Estados: aberto, esperando por comandos,
cozinhando, desligado.

Prxima tarefa: construir o diagrama de
estados de um forno de micro-ondas
Autmato finito determinstico (AFD)


Um AFD A define uma linguagem L(A)
sobre um alfabeto

Carter reconhecedor:
dada uma cadeia x, ela pertence a L(A)?
Autmato finito determinstico (AFD)


Uma abstrao de um AFD
uma cabea de leitura extrai
seqencialmente o contedo de uma fita
(string)
uma luz de aceitao que acende somente
se a cadeia pertencer a linguagem
representada pela AFD
exemplos de cadeias aceitas em HLCR:

chrclhc, ccchllrclllhccc, ...
Autmato finito determinstico (AFD)


Definio Matemtica de um AFD
Um AFD uma quntupla <, S, s0, , F>,
onde:
o alfabeto de entrada
S um conjunto finito no vazio de estados
s0 o estado inicial, s0 S
a funo de transio de estados,
definida : S x S
F o conjunto de estados finais, F S
Autmato finito determinstico (AFD)


Um string x para ser aceito, deve levar
do estado s0 para algum estado
pertencente a F

A funo determina como so as
transies de estados. Ela leva um par
<s, a> onde s um estado e a uma
letra do alfabeto num estado s
(s, a) = s
Autmato finito determinstico (AFD)


Finito: numero de estados envolvidos no
sistema finito

Determinstico: estabelece que para uma
cadeia x L(A), s existe uma nica
seqncia de estados no AFD A para
process-la.
Autmato finito determinstico (AFD)


Exemplo de Autmato:
V=<, S, s0, , F> onde:
= {a, b}
S = {<s0>, <s1>, <s2>, <sf>}
s0 = <s0> - estado inicial
F = {<sf>}
a a
<S0> <S1> <Sf>
(s0, a) = s1
(s1, a) = sf b b
(s1, b) = s2
(s2, b) = s1 <S2>
Autmato finito determinstico (AFD)


Outros exemplos de AFD
a b

a b
<S0> <S1> <Sf>

a
<S1> c
b
<S0>
c
<S2> b
Autmato finito determinstico (AFD)


Exemplo de sistema de estados finitos:
Modelagem de uma vending machine que
aceita moedas de 5, 10 e 25 centavos. O
preo do produto que ela entrega 30
centavos.
Autmato finito determinstico (AFD)


Partindo do estado inicial (0 centavos)
deveremos reconhecer seqncias
que nos levem a estados finais (valor
inserido >= 30 centavos)

Podemos chamar o autmato de V

Mais uma tarefinha: apresentar o AFD
para esta mquina
Autmato finito determinstico (AFD)


Assim:
V=<, S, s0, , F> onde:
= {5, 10, 25} - cada um destes smbolos (ou
letras) representa uma ao
S = {<0c>, <5c>, <10c>, <15c>, <20c>, <25c>,
<30c>, <35c>, <40c>, <45c>, <50c>} - cada
estado indica quanto foi depositado
S0 = <0c> - estado inicial
F = {<30c>, <35c>, <40c>, <45c>, <50c>} -
estado onde a entrada vlida e o produto
pode ser liberado
Autmato finito determinstico (AFD)


Delta definida como:
(<0c>, 5) = <5c>
(<0c>, 10) = <10c>
(<0c>, 25) = <25c>
(<5c>, 5) = <10c>
(<5c>, 10) = <15c>
(<5c>, 25) = <30c>
(<10c>, 5) = <15c>
(<10c>, 10) = <20c>
(<10c>, 25) = <35c>
...
Tabela de transio de estados
5 10 25
<0c> <5c> <10c> <25c>
<5c> <10c> <15c> <30c>
<10c> <15c> <20c> <35c>
<15c> <20c> <25c> <40c>
<20c> <25c> <30c> <45c>
<25c> <30c> <35c> <50c>
<30c> <35c> <40c> <50c>
<35c> <40c> <45c> <50c>
<40c> <45c> <50c> <50c>
<45c> <50c> <50c> <50c>
<50c> <50c> <50c> <50c>
Autmato finito com sada Mquina
de Mealy

Autmato Finito com Sada: Mquina de Mealy


uma sextupla <, S, , S0, F, >, onde:
o alfabeto de entrada

S um conjunto finito no vazio de estados
S o estado inicial, S S
0 0

a funo de transio de estados,


definida : S x S x *

F o conjunto de estados finais, F S

o alfabeto de smbolos de sada
Autmato finito com sada Mquina
de Mealy

Exemplo de Mquina de Mealy
(, ) (, )

(, )
<S0> <S1>
(, )

Considerando que seja qualquer caractere e espao em branco,


esta mquina elimina espaos em branco repetidos de uma
seqncia de caracteres.
Expresses Regulares


Expresses Regulares ER
Formalismo de carter gerador;

A partir dele pode-se inferir como construir as
cadeias da linguagem;
Pode representar qualquer LR;
Uma ER definida a partir de conjuntos
bsicos e operadores de concatenao e
unio;
Expresses Regulares


Uma ER sobre um alfabeto definida
como segue:
uma ER e denota a linguagem vazia;
uma ER e denota a linguagem contendo
exclusivamente a palavra vazia, ou seja, {};
Qualquer smbolo x pertencente a uma
ER e denota a linguagem contendo a palavra
x, ou seja, {x};
Se r e s so ERs e denotam as linguagens R
e S, respectivamente, ento:

(r+s) ER e denota a linguagem RS

(rs) ER e denota a linguagem RS={uv|uR e
vS}

(r*) ER e denota a linguagem R*
Expresses Regulares


Expresso Regular
Pode-se utilizar parnteses ou no, mas
deve-se considerar a seguinte conveno:

A concatenao sucessiva (fechamento)
tem precedncia sobre a concatenao;

A concatenao tem precedncia sobre a
unio.
Expresses Regulares

Expresso Regular Linguagem Representada

aa Somente a cadeia aa

ba* Todas as cadeias que iniciam por b, seguido por zero


ou mais a

(a+b)* Todas as cadeias sobre {a, b}

(a+b)*aa (a+b)* Todas as cadeias sobre {a, b} contendo aa como


subcadeia

a*ba*ba* Todas as combinaes de as contendo exatamente


dois bs

(a+b)*(aa+bb) Todas as cadeias que terminam com aa ou bb


Expresses Regulares

Tarefinha: Descreva uma expresso


regular equivalente ao seguinte AFD.

a b
S0 S1 S2
a
c d
a b
S0 S1 S3 S3

d c b a

S2 S4
Automato finito no-determinstico

O prximo estado no necessariamente


unicamente determinado pelo estado atual e pelo
smbolo de entrada.

Podemos ter zero, uma ou mais transies de


estado com o mesmo smbolo de entrada.
Exemplo 1:

A = { x {0, 1}* | o quinto smbolo da direita para


esquerda 1}
0,1
0,1
1 0,1 0,1 0,1
q1 q2 q3 q4 q5 q6

11010010 A 11000010 A

No - determinstico:
- q1 tem duas transies com o smbolo 1.
- q6 no tem transies.
Exemplo 2

0,1 0,1
0 0
q0 q3 q4

q1
q0 tem duas transies com 0 e
1
q2 duas com 1
0,1 q1 no tem transio com 0
q3 no tem transio com 1
Exemplo 2 (cont.)

Uma seqncia de entrada a1a2 an aceita por um


autmato finito no determinstico se existe uma
seqncia de transies, correspondendo a seqncia de
entrada, que leva do estado inicial algum dos estados
finais.

01001 aceita por este autmato pois a seqncia de


transies q0 q0 q0 q3 q4 q4

aceita todos as cadeais com dois 1s ou dois 0s


consecutivos.
Automato finito no-determinstico

Definio: Um autmato finito no - determinstico (AFND)


uma 5 - upla (Q,,,q0,F) onde Q, , q0, e F tem o mesmo
significado que para autmato finitos determinsticos
(AFD) e um mapeamento de Q x 2Q.

(q, a) o conjunto de todos os estados p tal que existe


uma transio (com o smbolo a) de q para p.
Automato finito no-determinstico

: Q x * 2Q
1) (q,) = {q}
2) (q,wa) = { p | para algum r(q,w),
p (r, a)}
Comeando em q e lendo a cadeia w seguida do
smbolo a ns podemos estar no estado p sse
um estado possvel de se estar aps ler w r e
de r podemos ir para p lendo a.
Automato finito no-determinstico

A funo do autmato anterior dada abaixo.

Entrada:
Estado 0 1
q0 {q0,q3} {q0, q1}
q1 {q2 }
q2 {q2 } {q2 }
q3 {q4 }
q4 {q4 } {q4 }
Automato finito no-determinstico

X = 01001
(q0 , 0) = {q0, q3 }
(q0, 01) = ( (q0, 0), 1)
= ( {q0, q3}, 1)
= (q0 ,1) (q3,1)
= { q 0, q 1}
(q0, 010) = { q0, q3 }
(q0, 0100) = {q0, q3, q4 }
(q0, 01001) = {q0, q1, q4 }
Autmatos finitos com transies vazias
(transies


p q

o autmato vai do estado p para o estado q sem ler um


smbolo de entrada.
Autmatos finitos com transies vazias
(transies
Exemplo:

s t
u
b b b

p q r

Estando no estado s e recebendo o smbolo b:


ler b e ir para p

ir para t e ento ler b e ir para q

ir para t, ir para u e ento ler b e ir para r.

O conjunto aceito pelo autmato acima


{b, bb, bbb}.
Gramticas

A Gramtica uma ferramenta comum e poderosa para


definir linguagens.
Definio: Uma gramtica G uma qudrupla G=(V, T,
S, P) onde:
V um conjunto finito de variveis ou smbolos no-
terminais;
T um conjunto finito de smbolos terminais;
S V um smbolo especial chamado de smbolo
inicial ou varivel de incio;
P um conjunto finito de produes
Gramticas

As regras de produo so da forma xy, onde x um


elemento de (VT)+ e y est em (VT)*.
As produes so aplicadas como segue:
dada uma cadeia w da forma w=uxv, dizemos que a
produo aplicvel a esta cadeia e podemos us-la
para trocar x por y, obtendo assim uma nova cadeia
z=uyv
Isto escrito por wz (w deriva z ou z derivada de w
ou z deriva de w).
Gramticas

Se w1w2...wn, dizemos que w1 deriva wn e


escrevemos w1*wn
* indica que foi tomado um nmero no-especificado de
etapas (incluindo zero) para derivar wn de w1. Logo
w*w sempre se d.
Para indicar que pelo menos uma produo foi aplicada,
escreve-mos w+v
Gramticas

Aplicando as regras de produo em ordens


diferentes, uma gramtica pode gerar muitas
cadeias. O conjunto de todas tais cadeias a
linguagem definida ou gerada pela gramtica.
Linguagem Gerada

Definio: Seja G = (V, T, S, P) uma gramtica. Ento o


conjunto L(G) = {wT* | S*w} a linguagem gerada
por G.
Se w L (G), ento a sequncia Sw1w2
wnw uma derivao da sentena (ou palavra) w.
Exemplo

G = <{S}, {a,b}, S, P> onde P dado por SaSb e


S
Ento podemos derivar aabb:
SaSb aaSbb aabb
Logo podemos escrever S*aabb
Uma gramtica define completamente L(G), porm
pode no ser fcil obter uma descrio explcita da
linguagem a partir da gramtica.
Neste exemplo, temos que L(G)={anbn|n0}
Gramticas Regulares

Uma gramtica regular uma gramtica


linear
Uma gramtica G = <V, T,S,P> diz-se linear
direita se todas as produes so da
forma
A xB ou Ax
onde A, B V, e x T*.
e linear esquerda se todas as produes
so da forma
AxB Ax
Exemplos

G1 = ({s},{a,b},S,P1), P1: SabS|a linear direita.


SabS ababS ababa
L (G1) a linguagem L((ab)*a)
G2 = ({S,S1,S2},{a,b},S,P2), com produes SS1ab,
S1S1 ab|S2, S2a linear esquerda.
S S1abS1ababS2ababaabab
L(G2) a linguagem L(a(ab)*)
Tarefinha: apresente as gramticas geradoras e os
AF das linguagens denotadas pelas expresses
regulares da tabela, respectivamente.
Exemplo

Construir um autmato que aceita a linguagem


gerada pela gramtica
V0aV1
V1abV0 |b

A primeira regra de produo cria uma aresta


rotulada a entre V0 e V1. Para segunda regra,
introduzimos um vrtice adicional tal que existe um
caminho rotulado ab entre V1 e V0.
Finalmente, precisamos adicionar uma aresta
rotulada b entre V1 e Vf

a b
v0 v1 vf

b a
v2

A linguagem gerada pela gramtica e reconhecida


pelo autmato a linguagem regular L ((aab)*ab)
Linguagens Livre de Contexto

<stmt>::=<if-stmt>|<while-stmt>|
<begin-stmt>|<assg-stmt>
<if-stmt>::=if <bool-expr> then <stmt>
else <stmt>
<while-stmt>::=while <bool-expr>
do <stmt>
<begin-stmt>::=begin <stmt-list> end
<stmt-list>::=<stmt>;<stmt-list>|<stmt>
<assg_stmt>::=<var>:=<arith-expr>
Linguagens Livre de Contexto

<bool-expr>::=
<arith-expr><comp-op><arith-expr>
<comp.-op>::=<|>||||=|
<arith-expr>::=<var>|<const>|
(<arith-expr><arith-op><arith-expr>)
<arith-op>::=+ | - | *| /
<const>::=0|1|2|3|4|5|6|7|8|9
<var>::=a|b|c||x|y|z
BNF (Backus-Naur form)dando a definio formal de
uma linguagem de programao.
Exemplos

L = {anbn|n0} livre de contexto.


Se em L substituirmos a por ( e b por ), cadeias
de parnte-ses tais como ( ( ) ) e ( ( ( ) ) ) estaro em
L.
L descreve uma estrutura aninhada comum em
linguagens de programao.
Gramticas Livre De Contexto

As produes numa gramtica regular so restritas de


duas formas:
o lado esquerdo deve conter uma nica varivel,
enquanto o lado direito tem uma forma especial.
Para criar uma gramtica mais poderosa, devemos
relaxar algumas dessas condies .
Gramticas Livre De Contexto (GLC)

Na GLC, a restrio sobre o lado esquerdo


mantida, mas qualquer coisa permitida no lado
direito.

Definio: Uma gramtica G=<V,T,S,P> livre de


contexto se todas as produes em P tem a forma
Ax, onde AV e x(VT)*.
Gramticas Livre De Contexto

A linguagem L livre de contexto sss existe uma


GLC G tal que L = L(G).

Obs: Toda linguagem regular livre de contexto.


Exemplos

G=<{S},{a,b},S,P>, com produes SaSa;


SbSb, S
Uma derivao tpica nessa gramtica
SaSaaaSaaaabSbaaaaabbaa
Isto torna claro que L(G)={WWR|W{a, b}*}

Tarefinha: Apresente outra GLC


rvores de Derivao

Mostra derivaes independente da ordem em que


as produes so usadas.
Uma rvore de derivao uma rvore ordenada
onde:
os nodos so rotulados com os lados esquerdos
das produes e
o filho de cada nodo representa seus
correspondentes lados direitos.

Construir uma rvore de derivao para uma


palavra qualquer de L(G)={WWR|W{a, b}*}
rvores de Derivao

Mostra derivaes independente da ordem em que


as produes so usadas.
Uma rvore de derivao uma rvore ordenada
onde:
os nodos so rotulados com os lados esquerdos
das produes e
o filho de cada nodo representa seus
correspondentes lados direitos.

Construir uma rvore de derivao para uma


palavra qualquer de L(G)={WWR|W{a, b}*}
Ambigidade

Uma gramtica livre de contexto G ambgua se existe


wL(G) com no mnimo duas rvores de derivao.

ambiguidade a existncia de 2 derivaes


esquerda e direita.
Exemplo: A gramtica com produes SaSb | SS |
ambgua.
aabb tem duas rvores de derivao:

S S

S S
a S b
a S b

a S b
a S b
Tarefinha: apresentar outra gramtica
que seja ambgua e pelo menos duas
Derivaes para esta gramtica
Formas Normais

A definio de uma GLC no impe qualquer restrio


no lado direito de uma produo.
Em muitas situaes (aplicaes) desejvel colocar
restries.
Existem mtodos de transformar uma GLC arbitrria
numa equivalente que satisfaz certas restries sobre
sua forma.
Forma Normal de Chomsky

Uma gramtica livre de contexto est na forma


normal de Chomsky se todas as produes so da
forma

ABC ou Aa

onde A, B, C V e a T.
Forma Normal de Greibach

Uma gramtica livre de contexto est na forma normal


de Greibach se todas as produes tem a forma

Aa B1 B2Bk

para k0, com A, B1, BkV e aT.


Teorema de Normalizao

Teorema:
Para toda GLC G, existe uma GLC G na forma
normal de Chomsky e uma GLC G na forma
normal de Greibach tal que
L(G)=L(G)=L(G) - { }
Exemplo

Derive a gramtica na forma normal de Chomsky para o


conjunto
{anbn | n0} - {} = {anbn | n 1}.
pegue gramtica para {anbn | n0} :
SaSb|
Removendo as - produes temos:
S aSb | ab
que gera {anbn | n 1}.
Exemplo (cont.)

Adicionamos no-terminais A, B e trocamos as


produes para:
S ASB| AB A a B b
Adicionamos um no-terminal C e trocamos
B ASB por S AC C SB.
A gramtica na forma normal de Chomsky
S AB|AC A a B b C SB

Tarefinha: Encontrar a Forma Normal de Greibach


para esta mesma gramtica.
Autmato com Pilha
fita de entrada
esquerda p/ direita,read only
x1 x2 x3 x4 x5 x6 ... xn

A1

A2

Q A3

Empilha/Desempilha
pilha
A4
unidade
de controle z
Definio APN

autmato com pilha no-determinstico


M=<Q,,,,q0,,F>
Q estados
alfabeto da fita
alfabeto da pilha
q0Q estado inicial
z smbolo de incio da pilha
FQ estados finais
funo de transio
: Q x ( U {} ) x Q x *
EXEMPLO: Considere o APN com
Q={q0,q1,q2,q3),={a,b},={0,1}, z=0, F = {q3} e
(q0,a,0)={(q1,10),(q3,)}
(q0, ,0) = {(q3,)}
(q1,a,1) = {(q1,11)}
((q1,b,1) = {(q2,)}
(q2,b,1) = {(q2,)}
(q2, ,0) = {(q3,)}
- Mais tarefinhas:
Construir graficamente este APN
Para a sua GLC, apresente o APN
Definio APN

se ( (p,a,A),(q,B1B2. Bk ) ) isto significa


intuitivamente que quando a mquina est no estado p
lendo o smbolo a (na fita de entrada) e A (no topo da
pilha),ela tira A da pilha,coloca B1B2. Bk na pilha (Bk
primeiro e B1 por ltimo),move a cabea para a direita
uma clula passando o smbolo a e entra no estado q.
Mquina de Turing

Mquinas de Turing podem ser entendidas como


autmatos mais potentes .
Elas podem computar qualquer funo
computvel;
Mquina de Turing (Descrio Informal)

a b b a b a ...

ambos sentidos, l/escreve

Q
MQUINA DE TURING - DESCRIO

conjunto finito de estados Q;


uma fita semi-infinita, isto , ela delimitada esquerda
pelo smbolo e infinita a direita;
o cabeote da fita pode se mover para a direita e para
esquerda da fita e pode escrever smbolos sobre a fita;
a entrada da fita de tamanho finito e inicialmente est
logo aps o ( direita);
as infinitas clulas a direita da cadeia de entrada todas
tambm contm o smbolo especial nulo ;
MQUINA DE TURING - DESCRIO

funcionamento comea no estado inicial S e o cabeote


sobre ;
a cada passo a MT l o smbolo sobre o cabeote, e
dependendo deste smbolo e do estado corrente, escreve
um novo smbolo nesta clula, move o cabeote para a
direita ou para a esquerda e entra num novo estado
(funo de transio );
a MT aceita a cadeia de entrada indo para um estado
especial t e rejeita indo para um estado especial r;
para algumas cadeias de entrada a MT pode funcionar
infinitamente sem nunca aceit-la ou rejeit-la.
MQUINA DE TURING (MT) - DEFINIO

Uma MT uma 9-tupla M = (Q,,,,,,s,t,r) onde:


Q o conjunto finito de estados;
o alfabeto de entrada (finito);
o alfabeto da fita contendo como um subconjunto
(finito)
\ , smbolo nulo;
\ , delimitador esquerda
: Qx Qxx{L,R}, funo de transio
sQ, estado inicial
tQ, estado de aceitao
rQ, estado de rejeio
MQUINA DE TURING - EXEMPLO

EXEMPLO:
MT que aceita { anbncn / n 0}.
Informalmente:
A MT comea no estado inicial S, varre a entrada a
direita, checando se da forma a*b*c*.
Ela no escreve no seu caminho (formalmente ela
escreve o que leu).
At encontrar o primeiro , da troca este smbolo por
um delimitador direita d.
MQUINA DE TURING - EXEMPLO

Agora a MT varre a fita a esquerda apagando o


primeiro c que encontra, ento o primeiro b e tambm o
primeiro a.
A MT varre a direita apagando um a, um b, e um c.
A MT continua indo da direita para esquerda (e vice-
versa) apagando uma ocorrncia de cada letra a cada
passo.
MQUINA DE TURING - EXEMPLO

Se em algum passo ela encontra uma ocorrncia de


um smbolo e nenhuma de outra, ela rejeita a cadeia.
Seno, ela vai apagar todas as letras e no passo final
ter somente nulos entre e d, neste ponto a MT
aceita a cadeia.
Mais uma tarefinha: encontrar um exemplo de uma
MT como reconhecedora de alguma linguagem.
Apresentar esta mquina como um autmato.
Linguagens Sensveis ao Contexto

G = (V,T,P,S) onde as produes em P tem a forma


com e sendo cadeias arbitrrias de smbolos da
gramtica, e tem que ser pelo menos to grande
(longo) quanto .
O nome sensvel ao contexto vem da forma normal para
estas gramticas onde cada produo tem a forma
1A2 12 com .

Obs: As linguagens de programao so sensveis ao


contexto.

Potrebbero piacerti anche