Vous êtes sur la page 1sur 9

Licenciatura em Engenharia Informtica DEI/ISEP

Linguagens de Programao 2006/07


Ficha 4
Autmatos Finitos Determinsticos
Objectivos:
Validao de palavras utilizando Autmatos Finitos;
Converso de autmatos nitos no determinsticos (AFN) em autmatos
nitos determinsticos (AFD);
Minimizao de Autmatos Finitos Determinsticos;
Aprendizagem dos conceitos atravs da realizao de exerccios;
4.1 Validao de palavras utilizando Autma-
tos Finitos
Considere o autmato nito no determinstico que permite reconhecer nmeros
binrios terminados em 10 (anteriormente apresentado na cha 3).
start
ONML HIJK
s
0
1

1|0
.
ONML HIJK
s
1
0
ONML HIJK GFED @ABC
s
2
Figura 4.1: Representao grca do AF
Conforme descrito anteriormente, formalmente este autmato denido da
seguinte forma:
A = (S, , s
0
, F, ) = ({s
0
, s
1
, s
2
}, {0, 1}, s
0
, {s
2
}, )
onde,
21
(s
0
, 0) = {s
0
}
(s
0
, 1) = {s
0
, s
1
}
(s
1
, 0) = {s
2
}
Para vericar formalmente se uma determinada palavra reconhecida pelo
autmato, necessrio explorar todos os caminhos a partir do estado inicial. Para
este m utilizada a transio estendida

que calcula o conjunto de estados
passiveis de serem atingidos a partir de um determinado estado, aps processar
uma sequncia de smbolos do alfabeto.
Note-se que a transio

(s
0
, ) = {s
0
} indica que no caso de no ser consumido
qualquer smbolo (representado por ), no haver lugar transio de estado.
O reconhecimento da palavra 100110 descrito atravs da seguinte sequncia:

(s
0
, ) = {s
0
}

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

(s
0
, 10) = (s
0
, 0) (s
1
, 0) = {s
0
} {s
2
} = {s
0
, s
2
}

(s
0
, 100) = (s
0
, 0) (s
2
, 0) = {s
0
} = {s
0
}

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

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

(s
0
, 100110) = (s
0
, 0) (s
1
, 0) = {s
0
} {s
2
} = {s
0
, s
2
}
A representao grca da sequncia de transies apresentada na gura 4.2.
Relembre-se que, o processamento bem sucedido da palavra implica o consumo
integral de todos os smbolos que a compe, e que aps o consumo do ltimo
smbolo o autmato se encontre num estado nal. Assim, a palavra em questo
(100110) poderia ser integralmente consumida no estado s
0
, no entanto, como s
0
no se trata de um estado nal esse caminho no seria vlido, sendo apenas vlido
o caminho terminado em s
2
.

GFED @ABC
s
0

L
L
L
L
L
L
L
GFED @ABC
s
0
GFED @ABC
s
0
GFED @ABC
s
0

L
L
L
L
L
L
L
GFED @ABC
s
0

L
L
L
L
L
L
L
GFED @ABC
s
0
GFED @ABC
s
0
GFED @ABC
s
1

K
K
K
K
K
K
K
GFED @ABC
s

1
GFED @ABC
s
1

K
K
K
K
K
K
K
GFED @ABC ?>=< 89:;
s

indica um caminho sem sada


GFED @ABC ?>=< 89:;
s
2
Figura 4.2: Representao grca da anlise duma palavra pelo AF
22
4.2 Converso dum AFN num AFD
A diferena mais relevante entre um AFN e um AFD consiste no facto de que, num
AFD sempre possvel determinar qual o estado para que o autmato transita
aps o consumo de um qualquer smbolo, pois o retorno da funo de transio
num AFD um estado nico, enquanto que num AFN um conjunto de estados.
Este facto vericvel gracamente no autmato (no determinstico) da -
gura 4.1, pois no estado s
0
o consumo do smbolo 1 no determina objectivamente
para que estado o autmato transitaria. Alternativamente este facto tambm ve-
ricvel na tabela de transies, pois o resultado dos pares (estado,smbolo) um
conjunto de estados, conforme se constata na tabela 4.1.
Tabela 4.1: Tabela de transies do AFN
0 1
s
0
{s
0
} {s
0
, s
1
}
s
1
{s
2
}
s
2

De forma a converter um AFN num AFD, necessrio converter todos os
conjuntos de estados em estados nicos. Desta forma, os n estados do AFN (tabela
4.1) daro lugar a 2
n
estados no AFD (conforme tabela 4.2).
Tabela 4.2: Tabela de transies do AFD
0 1

{s
0
} {s
0
} {s
0
, s
1
}
{s
1
} {s
2
}
{s
2
}
{s
0
, s
1
} {s
0
, s
2
} {s
0
, s
1
}
{s
0
, s
2
} {s
0
} {s
0
, s
1
}
{s
1
, s
2
} {s
2
}
{s
0
, s
1
, s
2
} {s
0
, s
2
} {s
0
, s
1
}
Nesta tabela a primeira coluna contm todas as combinaes de estados poss-
veis para um autmato com n estados. Como os conjuntos que contenham um
estado nal, neste caso s
2
, sero nais, devem por isso ser anotados em con-
formidade. As restantes colunas, cada uma das clulas contem a reunio dos
estados para os quais o autmato transitaria estando em qualquer um dos es-
tados apresentados na primeira coluna com o smbolo apresentado na primeira
linha da matriz. Por exemplo, a transio

({s
0
, s
1
}, 0) calculada atravs de
(s
0
, 0) (s
1
, 0) = {s
0
} {s
2
} = {s
0
, s
2
}
23
No passo seguinte, cada conjunto de estados ser representado univocamente
por um identicador, conforme se apresenta na tabela 4.3.
Tabela 4.3: Estados do AFD renomeados
0 1
A A A
B B E
C D A
*D A A
E F E
*F B E
*G D A
*H F E
Nesta fase, a partir do estado inicial B, so identicados os estados para os
quais possvel transitar, neste caso B e E. Aps o que, de forma iterativa, se
procede identicao dos estados para os quais se pode transitar a partir destes
ltimos, obtendo-se primeiro F e E, e posteriormente B e E a partir de F. Sero
estas as nicas linhas a considerar da tabela, pois todas as outras correspondem a
transies impossveis. O resultado da aplicao deste algoritmo apresentado na
tabela 4.4.
Tabela 4.4: Tabela de transies nal do AFD
0 1
B B E
E F E
*F B E
Alternativamente, a tabela 4.2 poderia ter sido construda de forma iterativa a
partir do estado inicial, expandindo apenas as transies vlidas, evitando-se assim
a representao de todos os estados inatingveis. Isto :
Do estado {s
0
} so atingveis os estados {s
0
, s
1
} e o prprio ({s
0
});
Expandindo o estado {s
0
, s
1
} podemos chegar aos estados {s
0
, s
2
} e ao pr-
prio ({s
0
, s
1
});
Expandindo o estado {s
0
, s
2
} podemos chegar aos estados {s
0
} e {s
0
, s
1
}.
O resultado destas iteraes apresentado na tabela 4.5.
24
Tabela 4.5: Tabela simplicada da converso de um AFN num AFD
0 1
{s
0
} {s
0
} {s
0
, s
1
}
{s
0
, s
1
} {s
0
, s
2
} {s
0
, s
1
}
{s
0
, s
2
} {s
0
} {s
0
, s
1
}
A representao grca do AFD obtido apresentada na gura 4.3.
start
ONML HIJK
B
1

0
.
ONML HIJK
E
0

ONML HIJK GFED @ABC


F
0

Figura 4.3: Representao grca do AFD


4.3 Minimizao de Autmatos Finitos Deter-
minsticos
O processo de minimizao para um determinado AFD, pretende calcular de forma
expedita o menor autmato possvel equivalente. Considere-se, por exemplo, o
autmato representado na gura 4.4, na exemplicao do algoritmo de simplica-
o.
start
ONML HIJK
s
0
1

ONML HIJK
s
1
0

1
.
ONML HIJK GFED @ABC
s
2
0

1
ONML HIJK
s
3
1

Figura 4.4: Representao grca do AFD a simplicar


Inicialmente necessrio construir a tabela de transies do autmato dividindo-
a em dois grupos distintos, os estados nais e os no nais (ver tabela 4.6).
25
Tabela 4.6: Tabela de transies do AFD, 1
o
passo
0 1
s
0
s
0
s
1
s
1
s
2
s
1
s
3
s
2
s
3
s
2
s
0
s
3
No passo seguinte, cada grupo por sua vez dividido em grupos cuja caracters-
tica cada smbolo implicar transies para o mesmo grupo. No exemplo da tabela
4.6, o grupo dos estados no nais pode ser dividido nos grupos (s
0
) e (s
1
, s
3
), pois
os estados s
1
e s
3
quando recebem o smbolo 0 transitam para s
2
que pertence ao
grupo dos estados nais, enquanto que, quando recebem 1 transitam para o seu
prprio grupo. O mesmo no se passa com o estado s
0
pois este com o smbolo 0
transita para prprio grupo. O resultado deste passo apresentado na tabela 4.7.
Tabela 4.7: Tabela de transies do AFD, 2
o
passo
0 1
s
0
s
0
s
1
s
1
s
2
s
1
s
3
s
2
s
3
*s
2
s
0
s
3
Este processo ter de ser repetido enquanto for possvel proceder a subdivises
dos grupos existentes. No nal escolhido, de forma arbitrria, apenas um estado
por cada grupo. Neste caso, no grupo (s
1
, s
3
), seria eliminado um dos estados,
obtendo-se assim o autmato apresentado na tabela 4.8.
Tabela 4.8: Tabela de transies do AFD mnimo
0 1
s
0
s
0
s
1
s
1
s
2
s
1
*s
2
s
0
s
1
26
4.4 Propostas de exerccios
a) Converta os seguintes AFNs em AFDs.
1)
start
ONML HIJK
A
b

a|b
.
ONML HIJK GFED @ABC
B
2) = {a, b, c, d}; No autmato, \{b} representa todo o alfabeto ex-
cepto o conjunto {b}
start
ONML HIJK
A
a

\{b}
.
ONML HIJK
B
b
ONML HIJK GFED @ABC
C

.
3) = {a, b, c, d, . . . , y, z}
start
ONML HIJK
A
a

.
ONML HIJK
B
e
ONML HIJK
C
i
ONML HIJK
D
o
ONML HIJK
E
u
ONML HIJK GFED @ABC
F

.
b) Minimize os seguintes autmatos.
1) ONML HIJK
E
1

@
@
@
@
@
@
@
@
@
0

start
ONML HIJK
A
1

ONML HIJK
B
0

ONML HIJK GFED @ABC


C
0

1
ONML HIJK
D
1

0
ONML HIJK GFED @ABC
F
1

2) ONML HIJK GFED @ABC


E
ONML HIJK
D
a

start
ONML HIJK
A
c

~
~
~
~
~
~
~
~
~
b
ONML HIJK
B
a
ONML HIJK
C
c

ONML HIJK GFED @ABC


F
c) Implemente um autmato nito determinstico para cada uma das seguintes
gramticas:
1) Para o alfabeto = {a, b, c, d}, qualquer palavra com um nmero par
de smbolos b.
2) Para o alfabeto = {a, b, c, d}, qualquer palavra que contm a sequn-
cia aab
27
3) Para o alfabeto = {0, 1}, qualquer palavra com um nmero par de
zeros e um nmero par de uns.
d) Considere a seguinte tabela de transies:
0 1
S A F
A C B
B F A
C A F
*F B C
1) Represente gracamente o autmato nito determinstico correspon-
dente.
2) Verique se as seguintes palavras pertencem linguagem reconhecida
pelo autmato:
i. 1
ii. 0110110
iii. 001
iv. 1001
v. 10101
vi. 001101
3) Minimize o autmato.
4) Descreva informalmente (por palavras) as linguagem representada pelo
autmato.
e) Para cada um dos seguintes autmatos nitos determinsticos indique uma
expresso regular que reconhea a mesma linguagem.
1)
start
ONML HIJK
1
b

a
.
ONML HIJK GFED @ABC
2
2)
start
ONML HIJK
1
b

a
.
ONML HIJK
2
b
ONML HIJK GFED @ABC
3
b
.
3)
start
ONML HIJK
1
b

ONML HIJK
2
a

a
ONML HIJK
3
b
ONML HIJK GFED @ABC
4
f) Implemente um autmato nito determinstico para cada uma das seguintes
expresses regulares:
28
1) [0-9]+
2) [0-9]+"."[0-9]+
3) [f-o][k-z3-7]*
4) ("---"[a-z]*"\n")|(" "|"\n"|"\t")
g) Outros exerccios
1) Converta o AFN em AFD.
= {a, b, c, d, . . . , y, z}
ONML HIJK
B
e
ONML HIJK
C
b
ONML HIJK GFED @ABC
D
start
ONML HIJK
A
w

s
s
s
s
s
s
s
e

K
K
K
K
K
K
K

ONML HIJK
E
b
ONML HIJK
F
a
ONML HIJK
G
y
ONML HIJK GFED @ABC
H
2) Verique se o autmato para reconhecimento de moedas criado na aula
anterior est minimizado.
3) Represente as seguintes linguagens por uma expresso regular e por um
AFD:
i. Para o alfabeto = {0, 1}
L(A) = {u

: u comea por 1 e tem um nmero par de 1s}


ii. Para o alfabeto = {+, , 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, e, i, .}
L(A) = {u

: u um nmero imaginrio}
iii. Para o alfabeto = {I, V, X, L, C}
L(A) = {u

: u um nmero romano menor que 100}


29

Vous aimerez peut-être aussi