Escolar Documentos
Profissional Documentos
Cultura Documentos
Autômato Finito
Autômato Finito
Entradas do sistema:
h - homem atravessa o rio sozinho
l - homem atravessa o rio com o lobo
c - homem atravessa o rio com a cabra
r - homem atravessa o rio com o repolho
Autômato Finito Determinístico
Objetivo: <HLCR-0> ⇒ <0-HLCR>
Representação por diagrama:
círculos representam estados
Prof. Yandre Maldonado - 4
problema HLCR.
HCR-L HLC-R
r l
r l
c h
0-HLCR HC-LR C-HLR
c h
Autômato Finito Determinístico
S é um conjunto finito não vazio de
estados
S0 é o estado inicial, S0 ∈ S
δ é a função de transição de estados,
definida δ: S x Σ → S
F é o conjunto de estados finais, F⊆ S
Definições Básicas
F = {Sf}
a a
S0 S1 Sf
δ (S0, a) = S1 b b
δ (S1, a) = Sf
δ (S1, b) = S2 S2
δ (S2, b) = S1
Exercícios
Dados os seguintes a b
autômatos:
a a b
c S0 S1 Sf
S1
b
Prof. Yandre Maldonado - 14
{a..z},
S0
{A..Z},
c {a..z}, {0..9}
S2 b
{A..Z}
S0 Sf
Exemplo:
Modelagem de uma “vending
machine” que aceita moedas de 5, 10
Prof. Yandre Maldonado - 15
5 5 10
Diagrama de transições
Prof. Yandre Maldonado - 20
Algoritmo do AFD
Início
Estado Atual ← Estado Inicial;
Para I variar do Símbolo inicial da fita até o símbolo final
Faça Se Existe δ (Estado Atual, I)
Prof. Yandre Maldonado - 21
estados
S0 é um conjunto não vazio de estados
iniciais, S0 ⊆ S
δ é a função de transição de estados,
definida δ: S x Σ → ρ(S)
F é o conjunto de estados finais, F⊆ S
AFND
inicial;
Então em AFD S0 ∈ S , e em AFND S0 ⊆
S;
Um AFND pode ter mais de um estado
“ativo” (corrente) num instante;
Inicialmente, todo estado de S0 são
ativados;
AFND
“Alternativas” para processar uma única
cadeia;
Se o processamento de uma cadeia não
Prof. Yandre Maldonado - 25
processamento;
A função δ agora é definida S x Σ →
ρ(S), onde cada elemento do contra-
domínio (ρ(S)) é um conjunto de
estados pertencentes a S;
AFND
a R
Prof. Yandre Maldonado - 27
S
a
T
Se o estado S estiver ativo e a letra a
for processada, então tanto R quanto
T passaram a estar ativos;
AFND
serão efetuadas;
Então, podemos novamente observar
que podemos ter vários estados
ativos ao mesmo tempo, ao contrário
dos AFD’s.
Simulação1
Simulação2
Equivalência entre AFD e AFND
A classe dos AFD’s é equivalente à classe dos
AFND’s. Assim, para todo AFD existe um AFND
equivalente e vice-versa.
Exemplo:
a, b L(A) = {w| w ∈ {a,b}* ∧ w possui aaa como sufixo}
AFND
Prof. Yandre Maldonado - 30
a a a
S0 S1 S2 Sf
b a
b
AFD
b b
S0 a S1 a S2 a Sf
Exercício
Construa um AFD e um AFND para a
seguinte linguagem:
L(A) = {w|w ∈ {a,b}* ∧ w possui aa como
subpalavra} a, b
Prof. Yandre Maldonado - 31
AFND a, b
a a
S0 S1 Sf
b a, b
b
AFD
S0 a S1 a Sf
Transformação de AFND em AFD
Sf
a, b
S0 Sf S0
a S0 Sf
a Sf
a, b b b
a a
S0 Sf S0
a a S0 Sf
Transformação de AFND em AFD
Exercício:
É possível prever quantos estados serão
formados em um AFD obtido a partir de
um AFND?
Prof. Yandre Maldonado - 35
a a
S0 S1 Sf
Minimização de AFD
Estados
Estados não
não
S1 equivalentes
equivalentes serão
serão
sinalizados,
sinalizados, ao
ao final
final do
do
S2 processo,
processo, os
os
... cruzamentos
cruzamentos emem
branco
branco deverão
deverão indicar
indicar
Sn estados
estados equivalentes.
equivalentes.
Strash
S0 S1 ... Sn-1 Sn
Minimização de AFD
Exemplo
Considere o seguinte AFD e sua tabela de
cruzamentos de estados:
Prof. Yandre Maldonado - 42
b a Estados trivialmente
S0 S1 não-equivalentes
b S1 X
a S2 X
S3 X
S2 b b S3
S4 X X X
a b b a
S5 X X X
a a
S4 S5 S0 S1 S2 S3 S4
Minimização de AFD
Análise dos pares ainda não marcados:
Verificar se cada par de estados não marcado leva, ao
processar um mesmo símbolo, à estados não-
equivalentes;
Nesta etapa os pares serão marcados com o símbolo ⊗.
Prof. Yandre Maldonado - 43
b a
S0 S1
b S1 X
a S2 X
S3 X
S2 b b S3
S4 X X X
a b b a
S5 X X X
a a
S4 S5 S0 S1 S2 S3 S4
Minimização de AFD
Análise dos pares ainda não marcados:
{S0, S4} ?
• δ(S0, a)=S2 δ(S4, a)=S3 ⇒ {S2, S3} ?
• δ(S0, b)=S1 δ(S4, b)=S2 ⇒ {S1, S2} ?
Prof. Yandre Maldonado - 44
b a
S0 S1
b S1 X
a S2 X {S0, S4}
S3 X {S0, S4}
S2 b b S3
S4 X X X
a b b a
S5 X X X
a a
S4 S5 S0 S1 S2 S3 S4
Minimização de AFD
Análise dos pares ainda não marcados:
{S0, S5} ?
• δ(S0, a)=S2 δ(S5, a)=S2
• δ(S0, b)=S1 δ(S5, b)=S3 ⇒ {S1, S3} ?
Prof. Yandre Maldonado - 45
b a
S0 S1 {S0, S5}
b S1 X
a S2 X {S0, S4}
S3 X {S0, S4}
S2 b b S3
S4 X X X
a b b a
S5 X X X
a a
S4 S5 S0 S1 S2 S3 S4
Minimização de AFD
Análise dos pares ainda não marcados:
{S1, S2} ?
• δ(S1, a)=S1 δ(S2, a)=S4 ⇒ {S1, S4} = X
• δ(S1, b)=S0 δ(S2, b)=S5 ⇒ {S0, S5} ?
Prof. Yandre Maldonado - 46
b a
S0 S1 {S0, S5}
b S1 X
a S2 X ⊗ {S0, S4}
S3 X {S0, S4}
S2 b b S3
S4 ⊗ X X X
a b b a
S5 X X X
a a
S4 S5 S0 S1 S2 S3 S4
Minimização de AFD
Análise dos pares ainda não marcados:
{S1, S3} ?
• δ(S1, a)=S1 δ(S3, a)=S5 ⇒ {S1, S5} = X
• δ(S1, b)=S0 δ(S3, b)=S4 ⇒ {S0, S4} = ⊗
Prof. Yandre Maldonado - 47
b a
S0 S1 {S0, S5}
b S1 X
a S2 X ⊗
S2 S3 S3 X ⊗
b b
S4 ⊗ X X X
a b b a
S5 ⊗ X X X
a a
S4 S5 S0 S1 S2 S3 S4
Minimização de AFD
Análise dos pares ainda não marcados:
{S2, S3} ?
• δ(S2, a)=S4 δ(S3, a)=S5 ⇒ {S4, S5} ?
• δ(S2, b)=S5 δ(S3, b)=S4 ⇒ {S4, S5} ?
Prof. Yandre Maldonado - 48
b a
S0 S1
b S1 X
a S2 X ⊗
S2 S3 S3 X ⊗
b b {S2, S3}
S4 ⊗ X X X
a b b a
S5 ⊗ X X X
a a
S4 S5 S0 S1 S2 S3 S4
Minimização de AFD
Análise dos pares ainda não marcados:
{S4, S5} ?
• δ(S4, a)=S3 δ(S5, a)=S2 ⇒ {S2, S3} ?
• δ(S4, b)=S2 δ(S5, b)=S3 ⇒ {S2, S3} ?
Prof. Yandre Maldonado - 49
b a
S0 S1
b S1 X
a S2 X ⊗
{S4, S5}
S2 S3 S3 X ⊗
b b {S2, S3}
S4 ⊗ X X X
a b b a
S5 ⊗ X X X
a a
S4 S5 S0 S1 S2 S3 S4
Minimização de AFD
Conclusão
Não foi identificada a não-equivalência
entre os pares: S2xS3 e S4xS5;
Assim, estes pares podem ser “fundidos”
Prof. Yandre Maldonado - 50
em um único estado;
S1 X
S2 X ⊗
S3 X ⊗
S4 ⊗ X X X
S5 ⊗ X X X
S0 S1 S2 S3 S4
Minimização de AFD
a a
S2 b b S3 S2x3
a b b a a, b a, b
a a
S4 S5 S4x5
Minimização de AFD
Critério usado para a marcação dos estados
não-equivalentes:
Para cada par {Su, Sv} não marcado e para
cada símbolo a ∈ Σ, suponha que δ(Su, a)=Ru e
Prof. Yandre Maldonado - 52
δ(Sv, a)=Rv:
• Se Ru = Rv, então Su e Sv são equivalentes e, para o
símbolo a não deve ser marcado;
• Se Ru ≠ Rv e o par {Ru, Rv} não está marcado, então
{Su, Sv} é incluído em uma lista a partir de {Ru, Rv}
para posterior análise;
• Se Ru ≠ Rv e o par {Ru, Rv} está marcado, então:
• {Su, Sv} é não equivalente e deve ser marcado;
• Se {Su, Sv} encabeça uma lista de pares, então todos
os pares da lista devem ser marcados.
Minimização de AFD