Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Hierarquia de Chomsky
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
(, )
<S0> <S1>
(, )
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
aa Somente a cadeia aa
a b
S0 S1 S2
a
c d
a b
S0 S1 S3 S3
d c b a
S2 S4
Automato finito no-determinstico
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.)
: 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
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
p q r
a b
v0 v1 vf
b a
v2
<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
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
ABC ou Aa
onde A, B, C V e a T.
Forma Normal de Greibach
Aa B1 B2Bk
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
A1
A2
Q A3
Empilha/Desempilha
pilha
A4
unidade
de controle z
Definio APN
a b b a b a ...
Q
MQUINA DE TURING - DESCRIO
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