You are on page 1of 21

Aut´omatos finitos n˜ao determin´ısticos

com transi¸c˜oes por
Aut´omatos que podem mudar de estado sem consumir qualquer s´ımbolo,
isto ´e, admite transi¸c˜oes por
s
1
__ '` __
a
/
s
2
'` __
a
/
s
3
'` __
` ´
a

/
s
0
'` __
ε >
}
}
}
}
}
}
}
}
ε

A
A
A
A
A
A
A
A
s
4
__ '` __
a
/
s
5
'` __
a
/
s
6
'` __
a
/
s
7
'` __
a
/
s
8
'` __
_¸ ` ´
a
¸o
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
Podemos tamb´em simplificar a constru¸c˜ao dos aut´omatos que reconhecem
conjuntos finitos de palavras-chave:
0
\ __
r
/
2
\ __
e
/
3
\ __
d
/
4
\ __
e
/
5
\ __ ` _¸¸¸
/
10
¸¸
´
Σ
`
__

8
q
q
q
q
q
q
q
q
q
q
q
q
q
q
q
q

&
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
1
\ __
d
/
6
\ __
e
/
7
\ __
d
/
8
\ __
o
/
9
\ __ ` _¸¸¸
Constru´ımos um aut´ omato para cada palavra (cada uma com o seu estado
inicial) e depois reunimos todos num s´o com um novo estado inicial e
transi¸c˜oes por desse estado para cada um dos iniciais das palavras.
Departamento de Ciˆencia de Computadores da FCUP — MC — Aula 6 2
AFND-
N = (S, Σ, δ, s
0
, F)
em que δ ´e uma fun¸c˜ao de S ×(Σ ∪ {}) em P(S)
Exemplo 6.1. AFND- que reconhe¸ca a linguagem das palavras que re-
presentam n´ umeros decimais:
• Opcionamente, um sinal + ou −
• Uma sequˆencia de digitos 0 a 9
• Um ponto decimal ·
• Outra sequˆencia de d´ıgitos
• e pelo menos uma das sequˆencia de d´ıgitos tem de ser n˜ao vazia
Departamento de Ciˆencia de Computadores da FCUP — MC — Aula 6 3
E = ({s
0
, s
1
, . . . , s
5
}, {·, +, −, 0, 1, . . . , 9}, δ, s
0
, {s
5
})
/
s
0
'` __
,+,−
/
s
1
'` __
0,1,...,9

?
?
?
?
?
?
?
?
?
¸¸
´
0,1,...,9
`
·
/
s
2
'` __
0,1,...,9
/
s
3
'` __

/

`
0,1,...,9
´
s
5
__ '` __
s
4
'` __
·
?









−, + · 0, 1, . . . 9
s
0
{s
1
} {s
1
} ∅ ∅
s
1
∅ ∅ {s
2
} {s
1
, s
4
}
s
2
∅ ∅ ∅ {s
3
}
s
3
{s
5
} ∅ ∅ {s
3
}
s
4
∅ ∅ {s
3
} ∅
s
5
∅ ∅ ∅ ∅
Departamento de Ciˆencia de Computadores da FCUP — MC — Aula 6 4
Fecho por transi¸c˜oes
E

= (S, Σ ∪ {}, δ, s
0
, F)
Para s ∈ S, seja Fecho
ε
(s) conjunto de estados acess´ıveis do estado s
por transi¸c˜oes por
Formalmente definimos Fecho
ε
(s) recursivamente por
Base. s ∈ Fecho
ε
(s)
Indu¸c˜ao. se p ∈ Fecho
ε
(s) e r ∈ δ(p, ) ent˜ao r ∈ Fecho
ε
(s)
Para o Exemplo 6.1 temos: Fecho
ε
(s
0
) = {s
0
, s
1
}, Fecho
ε
(s
3
) = {s
3
, s
5
}e
para os restantes estados s, Fecho
ε
(s) = {s}.
Departamento de Ciˆencia de Computadores da FCUP — MC — Aula 6 5
Extens˜ao da fun¸c˜ao transi¸c˜ao a palavras
Dado E

= (S, Σ ∪ {}, δ, s
0
, F) estendemos

δ de modo a que

δ(s, w) seja
o conjunto de estados que s˜ao acess´ıveis de s por caminhos cujas etiquetas
concatenadas d˜ao w, mas algumas podem ser .A defini¸c˜ao recursiva ´e:
Base.

δ(s, ) = Fecho

(s)
Indu¸c˜ao. Suponhamos que w = xa, com a ∈ Σ,
• seja

δ(s, x) = {p
1
, . . . , p
k
}
• e seja ∪
k
i=1
δ(p
i
, a) = {r
1
, . . . , r
m
}
• ent˜ao

δ(s, w) = ∪
m
j=1
Fecho

(r
j
)
Para o Exemplo 6.1, calculemos

δ(s
0
, 3.7):
Departamento de Ciˆencia de Computadores da FCUP — MC — Aula 6 6
/
s
0
'` __
,+,−
/
s
1
'` __
0,1,...,9

@
@
@
@
@
@
@
@
@
¸¸
´
0,1,...,9
`
·
/
s
2
'` __
0,1,...,9
/
s
3
'` __

/

`
0,1,...,9
´
s
5
'` __ '` __
s
4
'` __
·
>
~
~
~
~
~
~
~
~
~

b
δ(s
0
, ) = Fecho

(s
0
) = {s
0
, s
1
}
• Para
b
δ(s
0
, 3)
δ(s
0
, 3) ∪ δ(s
1
, 3) = ∅ ∪ {s
1
, s
4
}

b
δ(s
0
, 3) = Fecho

(s
1
) ∪ Fecho

(s
4
) = {s
1
, s
4
}
• Para
b
δ(s
0
, 3.)
δ(s
1
, ·) ∪ δ(s
4
, ·) = {s
2
} ∪ {s
3
} = {s
2
, s
3
}

b
δ(s
0
, 3.) = Fecho

(s
2
) ∪ Fecho

(s
3
) = {s
2
, s
3
, s
5
}
• Para
b
δ(s
0
, 3.7)
δ(s
2
, 7) ∪ δ(s
3
, 7) ∪ δ(s
5
, 7) = {s
3
}

b
δ(s
0
, 3.7) = Fecho

(s
3
) = {s
3
, s
5
}
Departamento de Ciˆencia de Computadores da FCUP — MC — Aula 6 7
Linguaguem aceite por um AFND-
Dado E

= (S, Σ ∪ {}, δ, s
0
, F)
L(E) = {x ∈ Σ

|

δ(s
0
, x) ∩ F = ∅}
Para o Exemplo 6.1 como

δ(s
0
, 3.7) = {s
3
, s
5
} e s
5
∈ F ent˜ao 3.7 ∈ L(E).
Departamento de Ciˆencia de Computadores da FCUP — MC — Aula 6 8
Elimina¸c˜ao de transi¸c˜oes
Dado E = (S
E
, Σ, δ
E
, s
0
, F
E
) um AFND-, podemos constru´ımos A =
(S
A
, Σ, δ
A
, s
A
, F
A
) um AFD equivalente, por um m´etodo semelhante `a da
constru¸c˜ao de subconjuntos:
• s
A
= Fecho

(s
0
)
• S
A
´e o conjunto dos subconjuntos X de S
E
, tal que X = Fecho

(X)
(i.e X ´e fechado por transi¸c˜oes ) e X ´e acess´ıvel de s
A
• F
A
= {X | X ∈ S
A
e X ∩ F
E
= ∅}
• δ
A
(X, a) ´e calculado para a ∈ Σ e X ∈ S
A
por
1. Seja X = {p
1
, . . . , p
k
}
2. Seja ∪
k
i=1
δ(p
i
, a) = {r
1
, . . . , r
m
}
3. ent˜ao δ
A
(X, a) = ∪
m
j=1
Fecho

(r
j
)
Departamento de Ciˆencia de Computadores da FCUP — MC — Aula 6 9
Exerc´ıcio 6.1. Constr´oi um ADF equivalente ao AFND- do exem-
plo 6.1.
/
s
0
'` __
,+,−
/
s
1
'` __
0,1,...,9

@
@
@
@
@
@
@
@
@
¸¸
´
0,1,...,9
`
·
/
s
2
'` __
0,1,...,9
/
s
3
'` __

/

`
0,1,...,9
´
s
5
'` __ '` __
s
4
'` __
·
>
~
~
~
~
~
~
~
~
~

Resolu¸c˜ao Fecho

(s
0
) = {s
0
, s
1
}, Fecho
ε
(s
3
) = {s
3
, s
5
}e para os restantes
estados s, Fecho
ε
(s) = {s}
−, + · 0, 1, . . . 9
→ {s
0
, s
1
} {s
1
} {s
2
} {s
1
, s
4
}
{s
1
} ∅ {s
2
} {s
1
, s
4
}
{s
2
} ∅ ∅ {s
3
, s
5
}
{s
1
, s
4
} ∅ {s
3
, s
2
, s
5
} {s
1
, s
4
}
{s
3
, s
5
} ∅ ∅ {s
3
, s
5
}
{s
2
, s
3
, s
5
} ∅ ∅ {s
3
, s
5
}
Departamento de Ciˆencia de Computadores da FCUP — MC — Aula 6 10
Equivalˆencia entre AFD e AFND-
Proposi¸c˜ao 6.1. Uma linguagem L ´e aceite por um AFND- se e s´o se L
´e aceite por algum AFD.
Lema 6.1.

δ
E
(s
0
, w) =

δ
A
(s
A
, w)
Dem: Por indu¸c˜ao em |w|.
Base. w = ,

δ
E
({s
0
}, ) = Fecho

(s
0
) e s
A
= Fecho

(s
0
). Ent˜ao

δ
A
(s
A
, ) = s
A
= Fecho

(s
0
) =

δ
E
(s
0
, )
Indu¸c˜ao. w = xa e

δ
E
(s
0
, x) =

δ
A
(s
A
, x), sejam {p
1
, . . . , p
k
}. Pela
defini¸c˜ao calculamos

δ
E
(s
0
, w) por
1. ∪
k
i=1
δ(p
i
, a) = {r
1
, . . . , r
m
}
2.

δ
E
(s
0
, w) = ∪
m
j=1
Fecho

(r
j
)
Departamento de Ciˆencia de Computadores da FCUP — MC — Aula 6 11
mas isso ´e precisamente δ
A
({p
1
, . . . , p
k
}, a) que ´e

δ
A
(s
A
, w).
Dem: (Proposi¸c˜ao 6.1) (⇐) Seja E = (S
E
, Σ, δ
E
, s
0
, F
E
) um AFND-
e seja A = (S
A
, Σ, δ
A
, s
A
, F
A
) um AFD constru´ıdo pelo m´etodo de
subconjuntos modificado. Queremos que L(A) = L(E). Para x ∈ Σ

,
x ∈ L(A) ⇐⇒

δ
A
(s
A
, x) ∈ F
A
⇐⇒

δ
A
(s
A
, x) ∩ F
E
= ∅
⇐⇒

δ
E
(s
0
, x) ∩ F
E
= ∅
⇐⇒ x ∈ L(E)
(⇒) Para tornar um AFD num AFND- basta acrescentar δ(s, ) = ∅ e
transformar as transi¸c˜oes do tipo δ(s, a) = s

em δ(s, a) = {s

}, para todos
os estados do AFD.
Departamento de Ciˆencia de Computadores da FCUP — MC — Aula 6 12
Exerc´ıcio 6.2. Considera o aut´omato finito com transi¸c˜oes por ,
({s
0
, s
1
, s
2
}, {a, b, c}, δ, s
0
, {s
2
}) com a seguinte fun¸c˜ao de transi¸c˜ao δ:
a b c
s
0
{s
1
, s
2
} ∅ {s
1
} {s
2
}
s
1
∅ {s
0
} {s
2
} {s
0
, s
1
}
s
2
∅ ∅ ∅ ∅
(a) Apresenta o diagrama que descreve o aut´omato.
(b) Calcula o fecho- de cada estado.
(c) Determina um aut´omato finito determin´ıstico completo equivalente.

Departamento de Ciˆencia de Computadores da FCUP — MC — Aula 6 13
Linguagens regulares e express˜oes
regulares
[HMU00] (Cap. 3.3)
Vamos ver que as linguagens aceites por aut´omatos finitos podem ser
descritas declarativamente por express˜oes regulares.
Express˜oes deste tipo s˜ao usadas em muitos sistemas:
• expans˜ao 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. n´ umeros decimais, identificadores, palavras chave,
etc.
Departamento de Ciˆencia de Computadores da FCUP — MC — Aula 6 14
Representa¸c˜ao finita de linguagens
L
1
= {x ∈ {0, 1}

| x tem 2 ou 3 ocorrˆencias de 1, n˜ao sendo as
duas primeiras consecutivas }
Podemos escrever:
L
1
= {0}

{1}{0}

{0}{1}{0}

({1}{0}

∪ {}) ou simplificando, podemos
associar a L
1
a express˜ao:
0

10

010

(10

+ )
L
2
= {x ∈ {0, 1}

| x cont´em 000}
L
2
= {0, 1}

{000}{0, 1}

ou simplificando, podemos associar a L
2
a
express˜ao:
(0 + 1)

000(0 + 1)

Departamento de Ciˆencia de Computadores da FCUP — MC — Aula 6 15
Express˜oes regulares sobre um alfabeto
O conjunto das express˜oes regulares sobre Σ e o conjunto das linguagens
por elas descritas s˜ao definidos indutivamente por:
(i) ´e uma express˜ao regular sobre Σ, e descreve a linguagem {};i.e
L() = {}
(ii) ∅ ´e uma express˜ao regular sobre Σ, e descreve a linguagem ∅;i.e L(∅) = ∅
(iii) Se a ∈ Σ ent˜ao a ´e uma express˜ao regular sobre Σ, e descreve a
linguagem {a};i.e L(a) = {a}
(iv) Se r e s s˜ao express˜oes regulares sobre Σ que descrevem as linguagens
L(r) e L(s), ent˜ao (r + s), (rs) e (r

) s˜ao express˜oes regulares sobre
Σ, e descrevem L(r) ∪ L(s), L(r)L(s) e L(r)

respectivamente;i.e
L((r + s)) = L(r) ∪ L(s), L((rs)) = L(r)L(s) e L((r

)) = L(r)

.
Departamento de Ciˆencia de Computadores da FCUP — MC — Aula 6 16
Usando as precedˆencias das opera¸c˜oes, fecho > concatena¸c˜ao > uni˜ao,
podemos omitir alguns parentisis!
express˜ao 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 Σ
cont´em ∅, {}, {a} para a ∈ Σ e ´e fechado para a concatena¸c˜ao, reuni˜ao e
fecho de Kleene.
Departamento de Ciˆencia de Computadores da FCUP — MC — Aula 6 17
Mas...
Nem todas as linguagens s˜ao regulares! Por exemplo
{0
n
1
n
| n ≥ 1}
Departamento de Ciˆencia de Computadores da FCUP — MC — Aula 6 18
Mais algumas express˜oes 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 n´ umero par de a’s}
Tendo um a tem necessariamente outro
B = L((ab

a + b)

)
• C = {x ∈ {0, 1}

| x n˜ao tem a subpalavra 111}
Departamento de Ciˆencia de Computadores da FCUP — MC — Aula 6 19
Se houver um 1 ou um 11 tem de haver pelo menos um 0 antes de outro
1
C = L(0

+ 0

(1 + 11)(0
+
(1 + 11))

0

)
• D = {x ∈ {0, 1}

| x n˜ao tem a subpalavra 00}
`
A direita de um 0 tˆem um 1
(01 + 1)

, mas pode terminar em 0
D = L((01 + 1)

(0 + ))
• R, linguagem dos n´ umeros 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 Ciˆencia de Computadores da FCUP — MC — Aula 6 20
Leituras
[HMU00] Cap 2.5,3.1,3.3
Referˆencias
[HMU00] John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman.
Introduction to Automata Theory, Languages and Computation.
Addison Wesley, 2nd edition, 2000.
Departamento de Ciˆencia de Computadores da FCUP — MC — Aula 6 21