21
Aut´ omatos finitos n˜ ao determin´ ısticos com transi¸ oes por Aut´ omatos que podem mudar de estado sem consumir qualquer s´ ımbolo, isto ´ e, admite transi¸ oes por s 1 a s 2 a s 3 a s 0 ε ε s 4 a s 5 a s 6 a s 7 a s 8 a aceita a linguagem {x ∈{a} ||x| ´ e divis´ ıvel por 3 ou 5 } Departamento de Ciˆ encia de Computadores da FCUP — MC — Aula 6 1

Autómatos Finitos com Transições Epsilon

Embed Size (px)

DESCRIPTION

apontamentos

Citation preview

Page 1: Autómatos Finitos com Transições Epsilon

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

Page 2: Autómatos Finitos com Transições Epsilon

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

Page 3: Autómatos Finitos com Transições Epsilon

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

Page 4: Autómatos Finitos com Transições Epsilon

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

Page 5: Autómatos Finitos com Transições Epsilon

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

Page 6: Autómatos Finitos com Transições Epsilon

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

Page 7: Autómatos Finitos com Transições Epsilon

// 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

Page 8: Autómatos Finitos com Transições Epsilon

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

Page 9: Autómatos Finitos com Transições Epsilon

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

Page 10: Autómatos Finitos com Transições Epsilon

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

Page 11: Autómatos Finitos com Transições Epsilon

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

Page 12: Autómatos Finitos com Transições Epsilon

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

Page 13: Autómatos Finitos com Transições Epsilon

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

Page 14: Autómatos Finitos com Transições Epsilon

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

Page 15: Autómatos Finitos com Transições Epsilon

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

Page 16: Autómatos Finitos com Transições Epsilon

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

Page 17: Autómatos Finitos com Transições Epsilon

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

Page 18: Autómatos Finitos com Transições Epsilon

Mas...

Nem todas as linguagens sao regulares! Por exemplo

{0n1n | n ≥ 1}

Departamento de Ciencia de Computadores da FCUP — MC — Aula 6 18

Page 19: Autómatos Finitos com Transições Epsilon

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

Page 20: Autómatos Finitos com Transições Epsilon

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

Page 21: Autómatos Finitos com Transições Epsilon

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