Você está na página 1de 21

Automatos nitos nao determinsticos

com transicoes por


Automatos que podem mudar de estado sem consumir qualquer smbolo,
isto e, admite transicoes 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 divisvel por 3 ou 5 }


Departamento de Ciencia de Computadores da FCUP MC Aula 6 1
Podemos tambem simplicar a construcao dos automatos que reconhecem
conjuntos nitos 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
\ __ ` _
Construmos um aut omato para cada palavra (cada uma com o seu estado
inicial) e depois reunimos todos num so com um novo estado inicial e
transicoes por desse estado para cada um dos iniciais das palavras.
Departamento de Ciencia de Computadores da FCUP MC Aula 6 2
AFND-
N = (S, , , s
0
, F)
em que e uma funcao de S ( {}) em P(S)
Exemplo 6.1. AFND- que reconheca a linguagem das palavras que re-
presentam n umeros decimais:
Opcionamente, um sinal + ou
Uma sequencia de digitos 0 a 9
Um ponto decimal
Outra sequencia de dgitos
e pelo menos uma das sequencia de dgitos tem de ser nao vazia
Departamento de Ciencia 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 Ciencia de Computadores da FCUP MC Aula 6 4
Fecho por transicoes
E

= (S, {}, , s
0
, F)
Para s S, seja Fecho

(s) conjunto de estados acessveis do estado s


por transicoes por
Formalmente denimos 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

(s
0
) = {s
0
, s
1
}, Fecho

(s
3
) = {s
3
, s
5
}e
para 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, {}, , s
0
, F) estendemos

de modo a que

(s, w) seja
o conjunto de estados que sao acessveis de s por caminhos cujas etiquetas
concatenadas dao w, mas algumas podem ser .A denicao recursiva e:
Base.

(s, ) = Fecho

(s)
Inducao. 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
}
entao

(s, w) =
m
j=1
Fecho

(r
j
)
Para o Exemplo 6.1, calculemos

(s
0
, 3.7):
Departamento de Ciencia 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 Ciencia 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 entao 3.7 L(E).
Departamento de Ciencia de Computadores da FCUP MC Aula 6 8
Eliminacao de transicoes
Dado E = (S
E
, ,
E
, s
0
, F
E
) um AFND-, podemos construmos A =
(S
A
, ,
A
, s
A
, F
A
) um AFD equivalente, por um metodo semelhante `a da
construcao 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 transicoes ) e X e acessvel 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. entao
A
(X, a) =
m
j=1
Fecho

(r
j
)
Departamento de Ciencia de Computadores da FCUP MC Aula 6 9
Exerccio 6.1. Constroi 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
'` __

>
~
~
~
~
~
~
~
~
~

Resolucao 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 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 L
e aceite por algum AFD.
Lema 6.1.

E
(s
0
, w) =

A
(s
A
, w)
Dem: Por inducao em |w|.
Base. w = ,

E
({s
0
}, ) = Fecho

(s
0
) e s
A
= Fecho

(s
0
). Entao

A
(s
A
, ) = s
A
= Fecho

(s
0
) =

E
(s
0
, )
Inducao. w = xa e

E
(s
0
, x) =

A
(s
A
, x), sejam {p
1
, . . . , p
k
}. Pela
denicao 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 Ciencia 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: (Proposicao 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 construdo pelo metodo de
subconjuntos modicado. 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 transicoes do tipo (s, a) = s

em (s, a) = {s

}, para todos
os estados do AFD.
Departamento de Ciencia de Computadores da FCUP MC Aula 6 12
Exerccio 6.2. Considera o automato nito com transicoes por ,
({s
0
, s
1
, s
2
}, {a, b, c}, , s
0
, {s
2
}) com a seguinte funcao de transicao :
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 automato.
(b) Calcula o fecho- de cada estado.
(c) Determina um automato nito determinstico completo equivalente.

Departamento de Ciencia de Computadores da FCUP MC Aula 6 13


Linguagens regulares e expressoes
regulares
[HMU00] (Cap. 3.3)
Vamos ver que as linguagens aceites por automatos nitos podem ser
descritas declarativamente por expressoes regulares.
Expressoes deste tipo sao usadas em muitos sistemas:
expansao de nomes de cheiros 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, identicadores, palavras chave,
etc.
Departamento de Ciencia de Computadores da FCUP MC Aula 6 14
Representacao nita de linguagens
L
1
= {x {0, 1}

| x tem 2 ou 3 ocorrencias de 1, nao sendo as


duas primeiras consecutivas }
Podemos escrever:
L
1
= {0}

{1}{0}

{0}{1}{0}

({1}{0}

{}) ou simplicando, podemos


associar a L
1
a expressao:
0

10

010

(10

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

| x contem 000}
L
2
= {0, 1}

{000}{0, 1}

ou simplicando, podemos associar a L


2
a
expressao:
(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 linguagens
por elas descritas sao denidos indutivamente por:
(i) e uma expressao regular sobre , e descreve a linguagem {};i.e
L() = {}
(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 a
linguagem {a};i.e L(a) = {a}
(iv) Se r e s sao expressoes regulares sobre que descrevem as linguagens
L(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.e
L((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 e
fecho de Kleene.
Departamento de Ciencia de Computadores da FCUP MC Aula 6 17
Mas...
Nem todas as linguagens sao regulares! Por exemplo
{0
n
1
n
| 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 0s}


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 as}


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 outro
1
C = L(0

+ 0

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

)
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 n umeros decimais racionais em =
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, , .}
Para os dgitos: 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 Jerey 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