Ling. Formais e Autômatos
AFN-ε
Tópicos
Autômatos finitos
AF com ε-transições
AF com ε-transições
Definição
O autômato finito com ε-transições permite
transições sobre ε, a string vazia
O AFN-ε tem permissão para fazer uma
transição espontaneamente, sem receber um
símbolo de entrada
Conveniência de programação
q0
ε
q1
AF com ε-transições
Definição
Um autômato finito com ε-transições consiste
em:
• Um conjunto finito de estados: Q
• Um conjunto finito de símbolos de entrada: Σ
• Uma função de transição que toma como
argumentos um estado em Q e um elemento de Σ
U {ε}: δ
• Um estado inicial (que está em Q)
• Um conjunto de estados finais F (F é um
subconjunto de Q)
AF com ε-transições
Notação:
A = (Q, Σ, δ, q0, F)
Exemplo 1
Construir um AFN que reconheça as
palavras-chave web e ebay
Como ele poderia ser construído?
Exemplo 1
Construir um AFN que reconheça as
palavras-chave web e ebay
1.º passo: Construímos uma seqüência
completa de estados para cada palavrachave, como se fosse a única palavra que o
autômato precisasse reconhecer
Exemplo 1
Construir um AFN que reconheça as
palavras-chave web e ebay
O AFN abaixo reconhece a palavra-chave
web
q0
w
q1
e
q2
b
q3
Exemplo 1
Construir um AFN que reconheça as
palavras-chave web e ebay
O AFN abaixo reconhece a palavra-chave
ebay
q4
e
q5
b
q6
a
q7
y
q8
Exemplo 1
Construir um AFN que reconheça as
palavras-chave web e ebay
2.º passo: Adicionamos um novo estado
inicial com ε-transições para os estados
iniciais dos autômatos anteriores, que
correspondem a cada uma das palavraschave!
Exemplo 1
Construir um AFN que reconheça as
palavras-chave web e ebay
ε
w
q0
e
q1
b
q2
q3
Início
ε
q4
e
q5
b
q6
a
q7
Acabamos de construir um AFN com ε-transições!
y
q8
Exemplo 2
L = { w | qualquer símbolo a antecede
qualquer símbolo b }
Como seria o AFN-ε que
aceita essa linguagem?
Exemplo 2
L = { w | qualquer símbolo a antecede
qualquer símbolo b }
q0
a
ε
q1
b
ε-fechamento de um estado
Definição informal
Usamos o ε-fechamento em um estado q
seguindo todas as transições saindo de q
rotuladas por ε. Porém, quando chegamos a
outros estados seguindo ε, acompanhamos
as transições ε que saem desses estados, e
assim por diante, encontrando eventualmente
todo estado que pode ser alcançado a partir
de q ao longo de qualquer caminho cujos
arcos são todos rotulados por ε.
ε-fechamento de um estado
Definição formal
O estado q está em ECLOSE(q). Se o estado
p está em ECLOSE(q), e existe uma
transição do estado p para o estado r
rotulada por ε, então r está em ECLOSE(q).
Mais precisamente, se δ é a função de
transição do AFN-ε envolvido, e p está em
ECLOSE(q), então ECLOSE(q) também
contém todos os estados em δ(p, ε).
ε-fechamento de um estado
ECLOSE(1) = { ? }
2
ε
ε
3
6
ε
b
1
ε
4
a
5
ε
7
ε-fechamento de um estado
ECLOSE(1) = { 1, 2, 3, 4, 6 }
2
ε
ε
3
6
ε
b
1
ε
4
a
5
ε
7
AF com ε-transições
Considerações
Dado qualquer AFN-ε E, podemos encontrar
um AFD D que aceita a mesma linguagem
que E.
Para eliminar as ε-transições, aplica-se uma
construção muito parecida com a construção
de conjuntos, pois os estados de D são
subconjuntos dos estados de E.
• A única diferença é que devemos incorporar as εtransições de E, o que fazemos por meio do
mecanismo do ε-fechamento (ECLOSE).
Ling. Formais e Autômatos
Exp. regulares
Tópicos
Expressões regulares
Introdução
Operadores
Linguagens regulares
De acordo com a Hierarquia de
Chomsky, as linguagens regulares
constituem a classe de linguagens mais
simples, sendo possível desenvolver
algoritmos de reconhecimento, de geração
ou de conversão entre formalismos de
pouca complexidade, de grande eficácia e
de fácil implementação.
Entretanto, as linguagens regulares
possuem fortes limitações de
expressividade.
Linguagens regulares
Um autômato finito reconhece
uma linguagem regular!
Expressões regulares
Toda linguagem regular pode ser descrita
por uma expressão regular
Uma expressão regular é definida a partir
de conjuntos (linguagens) básicos e
operações de concatenação e de união
Expressões regulares
Ø é uma expressão regular e denota o conjunto { }
Ε é uma expressão regular e denota o conjunto {ε}
Para cada a Є Σ, a é uma expressão regular e denota o
conjunto { a }
Se r e s são expressões regulares denotando os conjuntos
R e S, então (r+s), (rs) e (r*) são expressões regulares e
denotam os conjuntos RUS, RS e R*, respectivamente
Expressões regulares
Alfabeto: Σ = { 0, 1 }
00 é expressão regular se 0 é expressão regular
L(0) L(0) = { 0 } { 0 } = { 0 }
0+1 é expressão regular se 0 é expressão regular e 1 é
expressão regular
L(0) U L(1) = { 0 } U { 1 } = { 0, 1 } = Σ
0* é expressão regular se 0 é expressão regular
L(0)* = { 0 }* = { ε, 0, 00, 000, 0000, ... }
Expressões regulares
Precedência:
*,+
0+1*
L(0) U L(1)* = { 0 } U L(1)* = { 0 } U { 1 }* = { 0 } U { ε, 1, 11, ...}=
= { 0, ε, 1, 11, ... }
Abreviamos rr* por r+
00*11*22* = 0+1+2+
Exemplo 1
Considerando o alfabeto Σ={ 0, 1 }
E1 = (0+1)* 00 (0+1)*
O que E1 representa?
Exemplo 1
Considerando o alfabeto Σ={ 0, 1 }
E1 = (0+1)* 00 (0+1)* =
L(E1) = L((0+1)*) . L(0) . L(0) . L((0+1)*) =
{0, 1}* . {00} . {0, 1}*
Uma string que tenha, pelo menos,
2 zeros consecutivos!
Exemplo 2
Considerando o alfabeto Σ={ 0, 1 }
E2 = ((0+1) (0+1))*
O que E2 representa?
Exemplo 2
Considerando o alfabeto Σ={ 0, 1 }
E2 = ((0+1) (0+1))* =
L(E2) = L((0+1) (0+1))* = (L(0+1) . L(0+1))* =
= ({0,1} {0,1})* = {ε, 00, 01, 10, 11}*
Cadeias que tenham
comprimento par! (ou ε)
Expressões regulares
AF
Determinístico
AF Não
Determinístico
Expressões
Regulares
Expressões regulares
Simplificações
Associação
Distribuição
Equivalência de fecho
Expressões regulares
Seja r uma expressão regular. Então
existe um AF não determinístico com εtransições que aceita r.
Sérgio Donizetti Zorzo
[email protected]
Paulo R. M. Cereda
[email protected]
Universidade Federal de São Carlos