Automatos finitos nao determinısticoscom transicoes por ε
Automatos que podem mudar de estado sem consumir qualquer sımbolo,isto e, admite transicoes por ε
s1gfed`abc_^]\XYZ[ a// s2_^]\XYZ[ a
// s3_^]\XYZ[EDGF
a
��
// s0_^]\XYZ[
ε >>}}}}}}}}
ε
AAA
AAAA
A
s4gfed`abc_^]\XYZ[ a// s5_^]\XYZ[ a
// s6_^]\XYZ[ a// s7_^]\XYZ[ a
// s8_^]\XYZ[ BCEDGFa
oo
aceita a linguagem {x ∈ {a}? | |x| e divisıvel por 3 ou 5 }
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 1
Podemos tambem simplificar a construcao dos automatos que reconhecemconjuntos finitos de palavras-chave:
0WVUTPQRS r// 2WVUTPQRS e
// 3WVUTPQRS d// 4WVUTPQRS e
// 5WVUTPQRSONMLHIJK
// 10@AGFΣ
ED��gfed`abc
ε88qqqqqqqqqqqqqqqq
ε
&&MMMMMMMMMMMMMMMM
1WVUTPQRS d// 6WVUTPQRS e
// 7WVUTPQRS d// 8WVUTPQRS o
// 9WVUTPQRSONMLHIJK
Construımos um automato para cada palavra (cada uma com o seu estadoinicial) e depois reunimos todos num so com um novo estado inicial etransicoes por ε desse estado para cada um dos iniciais das palavras.
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 2
AFND-ε
N = (S, Σ, δ, s0, F )
em que δ e uma funcao de S × (Σ ∪ {ε}) em P(S)
Exemplo 6.1. AFND-ε que reconheca a linguagem das palavras que re-presentam numeros decimais:
• Opcionamente, um sinal + ou −
• Uma sequencia de digitos 0 a 9
• Um ponto decimal ·
• Outra sequencia de dıgitos
• e pelo menos uma das sequencia de dıgitos tem de ser nao vazia
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 3
E = ({s0, s1, . . . , s5}, {·,+,−, 0, 1, . . . , 9}, δ, s0, {s5})
// s0_^]\XYZ[ε,+,−
// s1_^]\XYZ[
0,1,...,9 ��???
????
??
@AGF0,1,...,9ED��
·// s2_^]\XYZ[
0,1,...,9
// s3_^]\XYZ[ε//
BCED 0,1,...,9GF��s5gfed`abc_^]\XYZ[
s4_^]\XYZ[·
??���������
ε −,+ · 0, 1, . . . 9s0 {s1} {s1} ∅ ∅s1 ∅ ∅ {s2} {s1, s4}s2 ∅ ∅ ∅ {s3}s3 {s5} ∅ ∅ {s3}s4 ∅ ∅ {s3} ∅s5 ∅ ∅ ∅ ∅
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 4
Fecho por transicoes ε
Eε = (S, Σ ∪ {ε}, δ, s0, F )
Para s ∈ S, seja Fechoε(s) conjunto de estados acessıveis do estado spor transicoes por ε
Formalmente definimos Fechoε(s) recursivamente por
Base. s ∈ Fechoε(s)
Inducao. se p ∈ Fechoε(s) e r ∈ δ(p, ε) entao r ∈ Fechoε(s)
Para o Exemplo 6.1 temos: Fechoε(s0) = {s0, s1}, Fechoε(s3) = {s3, s5}epara os restantes estados s, Fechoε(s) = {s}.
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 5
Extensao da funcao transicao a palavras
Dado Eε = (S, Σ ∪ {ε}, δ, s0, F ) estendemos δ de modo a que δ(s, w) sejao conjunto de estados que sao acessıveis de s por caminhos cujas etiquetasconcatenadas dao w, mas algumas podem ser ε.A definicao recursiva e:
Base. δ(s, ε) = Fechoε(s)
Inducao. Suponhamos que w = xa, com a ∈ Σ,
• seja δ(s, x) = {p1, . . . , pk}• e seja ∪k
i=1δ(pi, a) = {r1, . . . , rm}• entao δ(s, w) = ∪m
j=1Fechoε(rj)
Para o Exemplo 6.1, calculemos δ(s0, 3.7):
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 6
// s0_^]\XYZ[ε,+,−
// s1_^]\XYZ[
0,1,...,9 @@@
@@@@
@@
@AGF0,1,...,9ED��
·// s2_^]\XYZ[
0,1,...,9
// s3_^]\XYZ[ε
//BCED 0,1,...,9GF��
s5_^]\XYZ[_^]\XYZ[
s4_^]\XYZ[·
>>~~~~~~~~~
• bδ(s0, ε) = Fechoε(s0) = {s0, s1}• Para bδ(s0, 3)
? δ(s0, 3) ∪ δ(s1, 3) = ∅ ∪ {s1, s4}? bδ(s0, 3) = Fechoε(s1) ∪ Fechoε(s4) = {s1, s4}
• Para bδ(s0, 3.)
? δ(s1, ·) ∪ δ(s4, ·) = {s2} ∪ {s3} = {s2, s3}? bδ(s0, 3.) = Fechoε(s2) ∪ Fechoε(s3) = {s2, s3, s5}
• Para bδ(s0, 3.7)
? δ(s2, 7) ∪ δ(s3, 7) ∪ δ(s5, 7) = {s3}? bδ(s0, 3.7) = Fechoε(s3) = {s3, s5}
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 7
Linguaguem aceite por um AFND-ε
Dado Eε = (S, Σ ∪ {ε}, δ, s0, F )
L(E) = {x ∈ Σ? | δ(s0, x) ∩ F 6= ∅}
Para o Exemplo 6.1 como δ(s0, 3.7) = {s3, s5} e s5 ∈ F entao 3.7 ∈ L(E).
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 8
Eliminacao de transicoes ε
Dado E = (SE,Σ, δE, s0, FE) um AFND-ε, podemos construımos A =(SA,Σ, δA, sA, FA) um AFD equivalente, por um metodo semelhante a daconstrucao de subconjuntos:
• sA = Fechoε(s0)
• SA e o conjunto dos subconjuntos X de SE, tal que X = Fechoε(X)(i.e X e fechado por transicoes ε) e X e acessıvel de sA
• FA = {X | X ∈ SA e X ∩ FE 6= ∅}
• δA(X, a) e calculado para a ∈ Σ e X ∈ SA por1. Seja X = {p1, . . . , pk}2. Seja ∪k
i=1δ(pi, a) = {r1, . . . , rm}3. entao δA(X, a) = ∪m
j=1Fechoε(rj)
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 9
Exercıcio 6.1. Constroi um ADF equivalente ao AFND-ε do exem-
plo 6.1. // s0_^]\XYZ[ε,+,−
// s1_^]\XYZ[
0,1,...,9 @@@
@@@@
@@
@AGF0,1,...,9ED��
·// s2_^]\XYZ[
0,1,...,9
// s3_^]\XYZ[ε
//BCED 0,1,...,9GF��
s5_^]\XYZ[_^]\XYZ[
s4_^]\XYZ[·
>>~~~~~~~~~
�
Resolucao Fechoε(s0) = {s0, s1}, Fechoε(s3) = {s3, s5}e para os restantesestados s, Fechoε(s) = {s}
−, + · 0, 1, . . . 9
→ {s0, s1} {s1} {s2} {s1, s4}{s1} ∅ {s2} {s1, s4}{s2} ∅ ∅ {s3, s5}
{s1, s4} ∅ {s3, s2, s5} {s1, s4}?{s3, s5} ∅ ∅ {s3, s5}
?{s2, s3, s5} ∅ ∅ {s3, s5}
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 10
Equivalencia entre AFD e AFND-εProposicao 6.1. Uma linguagem L e aceite por um AFND-ε se e so se Le aceite por algum AFD.
Lema 6.1. δE(s0, w) = δA(sA, w)
Dem: Por inducao em |w|.
Base. w = ε, δE({s0}, ε) = Fechoε(s0) e sA = Fechoε(s0). Entao
δA(sA, ε) = sA = Fechoε(s0) = δE(s0, ε)
Inducao. w = xa e δE(s0, x) = δA(sA, x), sejam {p1, . . . , pk}. Pela
definicao calculamos δE(s0, w) por
1. ∪ki=1δ(pi, a) = {r1, . . . , rm}
2. δE(s0, w) = ∪mj=1Fechoε(rj)
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 11
mas isso e precisamente δA({p1, . . . , pk}, a) que e δA(sA, w).
Dem: (Proposicao 6.1) (⇐) Seja E = (SE,Σ, δE, s0, FE) um AFND-ε e seja A = (SA,Σ, δA, sA, FA) um AFD construıdo pelo metodo desubconjuntos modificado. Queremos que L(A) = L(E). Para x ∈ Σ?,
x ∈ L(A) ⇐⇒ δA(sA, x) ∈ FA
⇐⇒ δA(sA, x) ∩ FE 6= ∅
⇐⇒ δE(s0, x) ∩ FE 6= ∅⇐⇒ x ∈ L(E)
(⇒) Para tornar um AFD num AFND-ε basta acrescentar δ(s, ε) = ∅ etransformar as transicoes do tipo δ(s, a) = s′ em δ(s, a) = {s′}, para todosos estados do AFD.
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 12
Exercıcio 6.2. Considera o automato finito com transicoes por ε,({s0, s1, s2}, {a, b, c}, δ, s0, {s2}) com a seguinte funcao de transicao δ:
ε a b c
s0 {s1, s2} ∅ {s1} {s2}s1 ∅ {s0} {s2} {s0, s1}s2 ∅ ∅ ∅ ∅
(a) Apresenta o diagrama que descreve o automato.
(b) Calcula o fecho-ε de cada estado.
(c) Determina um automato finito determinıstico completo equivalente.
�
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 13
Linguagens regulares e expressoesregulares
[HMU00] (Cap. 3.3)
Vamos ver que as linguagens aceites por automatos finitos podem serdescritas declarativamente por expressoes regulares.
Expressoes deste tipo sao usadas em muitos sistemas:
• expansao de nomes de ficheiros em UNIX: ls *.c
• em procura de palavras em comandos como o grep ou navegadores WWW
• analisadores lexicais (lex) de compiladores ou processadores de lingua-gens naturais: ex. numeros decimais, identificadores, palavras chave,etc.
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 14
Representacao finita de linguagensL1 = {x ∈ {0, 1}? | x tem 2 ou 3 ocorrencias de 1, nao sendo as
duas primeiras consecutivas }
Podemos escrever:
L1 = {0}?{1}{0}?{0}{1}{0}?({1}{0}? ∪ {ε}) ou simplificando, podemosassociar a L1 a expressao:
0?10?010?(10? + ε)
L2 = {x ∈ {0, 1}? | x contem 000}
L2 = {0, 1}?{000}{0, 1}? ou simplificando, podemos associar a L2 aexpressao:
(0 + 1)?000(0 + 1)?
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 15
Expressoes regulares sobre um alfabeto
O conjunto das expressoes regulares sobre Σ e o conjunto das linguagenspor elas descritas sao definidos indutivamente por:
(i) ε e uma expressao regular sobre Σ, e descreve a linguagem {ε};i.eL(ε) = {ε}
(ii) ∅ e uma expressao regular sobre Σ, e descreve a linguagem ∅;i.e L(∅) = ∅
(iii) Se a ∈ Σ entao a e uma expressao regular sobre Σ, e descreve alinguagem {a};i.e L(a) = {a}
(iv) Se r e s sao expressoes regulares sobre Σ que descrevem as linguagensL(r) e L(s), entao (r + s), (rs) e (r?) sao expressoes regulares sobreΣ, e descrevem L(r) ∪ L(s), L(r)L(s) e L(r)? respectivamente;i.eL((r + s)) = L(r) ∪ L(s), L((rs)) = L(r)L(s) e L((r?)) = L(r)?.
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 16
Usando as precedencias das operacoes, fecho > concatenacao > uniao,podemos omitir alguns parentisis!
expressao regular sobre {0, 1} linguagem descrita(0 + 1) {0, 1}(0?) {ε, 0, 00, 000, 0000, 00000, . . .}((0?)(11)) {11, 011, 0011, 00011, 000011, 0000011, . . .}((01)?) {ε, 01, 0101, 010101, 01010101, 0101010101, . . .}((0 + 1)?) {ε, 0, 1, 00, 01, 10, 11, 000, 001, 010,
011, 100, 101, 110, 111, . . . }((1?)(0((0 + 1)?))) { 0, 10, 01, 00, 000, 100, 010,
001, 110, 101, 011, . . . }={x |x tem algum 0}
Em resumo, o conjunto das linguagens regulares sobre um alfabeto Σcontem ∅, {ε}, {a} para a ∈ Σ e e fechado para a concatenacao, reuniao efecho de Kleene.
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 17
Mas...
Nem todas as linguagens sao regulares! Por exemplo
{0n1n | n ≥ 1}
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 18
Mais algumas expressoes regulares
• A = {x ∈ {0, 1}? | x tem pelo menos um 11 entre cada par de 0’s}
Isto e, se ocorrer um 0 tem de ocorrer 11 a seguir
(1 + 011)?
excepto para o 0 mais a direita
A = L((1 + 011)?(ε + 0 + 01))
• B = {x ∈ {a, b}? | x que tem um numero par de a’s}
Tendo um a tem necessariamente outro
B = L((ab?a + b)?)
• C = {x ∈ {0, 1}? | x nao tem a subpalavra 111}
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 19
Se houver um 1 ou um 11 tem de haver pelo menos um 0 antes de outro1
C = L(0? + 0?(1 + 11)(0+(1 + 11))?0?)
• D = {x ∈ {0, 1}? | x nao tem a subpalavra 00}
A direita de um 0 tem um 1
(01 + 1)?, mas pode terminar em 0
D = L((01 + 1)?(0 + ε))
• R, linguagem dos numeros decimais racionais em Σ ={0, 1, 2, 3, 4, 5, 6, 7, 8, 9,−, .}
Para os dıgitos: digito = (0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9)
R = L((ε +−)digito+(.digito+ + ε))
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 20
Leituras
[HMU00] Cap 2.5,3.1,3.3
Referencias
[HMU00] John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman.Introduction to Automata Theory, Languages and Computation.Addison Wesley, 2nd edition, 2000.
Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 21
Top Related