Anda di halaman 1dari 72

Teoria da Computao Captulo 2 .

Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
43
CAPTULO 2
AUTMATOS FINITOS
2.1. Introduo 45
2.2.Aceitadores determinsticos 46
2.3. A arte de construir DFAs 59
2.4. Linguagens regulares 75
2.5. Autmatos finitos no-determinsticos (DFAs) 83
2.6 Equivalncia entre DFAs e NFAs 85
2.7. Reduo do nmero de estados em Autmatos Finitos 97
2.8 Aplicao dos DFAs na busca de texto 105
2.9 Autmatos transdutores 107
Mquinas de Mealy 108
Mquinas de More 109
Bibliogafia 112
Apndice: Software de autmatos finitos 112
JFLAP
Deus ex-mquina
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
44
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
45
2.1. Introduo
No Cap.1 estudmos as noes bsicas de linguagens, gramticas e autmatos. Podem-se
definir muitas linguagens a partir de um mesmo alfabeto, conforma as regras particulares de
combinao dos caracteres do alfabeto.
Por exemplo a partir do alfabeto E = {a, b} e usando a notao de conjuntos poderemos
definir as linguagens L
1
= { a
n
b
m
| n,m >= 0 }a que pertencem as cadeias : ,aabbbbb, aaaa,
bbbb, ou a linguagem L
2
= { a
n
b
n
| n >= 0 } a que pertencem as cadeias: ,ab,aabb,
aaabbb, aaaabbbb, ou ainda L
3
= {a,b}
*
composta por qualquer cadeia de as e bs ,incluindo
.. Quantas linguagens se podem definir com este alfabeto ?
As linguagens podem ser definidas por uma gramtica, que indica como se formam as
cadeias de caracteres. Conhecidas as suas produes fcil derivar cadeias da linguagem.
Pode-se agora pr o problema ao contrrio: dada uma cadeia de caracteres, como saber se
pertence a uma dada linguagem ? Se a cadeia for pequena pode ser relativamente simples, por
inspeco visual, decidir se pertence ou no. Mas para uma cadeia grande de um gramtica
mais elaborada, no fcil decidir.
aqui que entram os autmatos finitos. Vimos no Cap. 1 um autmato aceitador da
cadeia pai. Se fosse possvel construir um autmato que aceitasse todas as cadeias de uma
dada linguagem (e s essas), ento para se saber se uma cadeia pertence a uma linguagem
bastaria d-la a ler ao autmato. Se ele parasse no estado aceitador depois de concluir a sua
leitura, a cadeia pertenceria linguagem. Caso contrrio no pertenceria.
Infelizmente no possvel desenhar um autmato para uma qualquer linguagem. H
linguagens para as quais ainda hoje no possvel decidir se uma cadeia lhe pertence ou no.
Num mesmo alfabeto pode-se definir um nmero infinito de linguagens, cada uma delas
com caractersticas prprias. Felizmente para algumas classes de linguagens possvel
construir autmatos finitos aceitadores: o caso por exemplo das linguagens regulares, cujas
propriedades veremos mais frente. Por agora basta-nos saber que possvel construir um
autmato finito aceitador para uma linguagem regular.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
46
Teremos assim a Figura 2.1.1.
Figura 2.1.1. Relao entre linguagens, gramticas e autmatos.
Existem outras classes de linguagens, que no regulares, para as quais possvel
tambm construir autmatos aceitadores, naturalmente distintos dos das linguagens regulares.
Vemos assim que h diferentes classes de linguagens e diferentes classes correspondentes de
autmatos.
Para as linguagens regulares, as mais simples, constroem-se autmatos finitos
determinsticos, os autmatos tambm mais simples. Quando um autmato usado para
reconhecer uma linguagem, mais exacto chamar-lhe aceitador. No entanto usaremos com
frequncia o termo autmato, distinguindo-se a sua funo de aceitador dentro do contexto em
que usado. Como veremos existem autmatos que no so aceitadores, isto , no so
construdos para aceitar ou no uma linguagem, mas antes para executarem sobre as cadeias
de caracteres uma dada operao (como alis j vimos no Cap. 1).
2.2. Aceitadores determinsticos
Um aceitador determinstico define-se como uma estrutura matemtica e desenha-se como um
grafo.
Exemplo 2.2.1.
Linguagens L
Gramticas G
Geram as cadeias de L
Autmatos
Reconhecem as cadeias
de L
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
47
Por exemplo o grafo seguinte representa um aceitador determinstico. O seu alfabeto
E={0,1}.
Figura 2.2.1 Grafo de um aceitador determinstico.
Vejamos como funciona.
O autmato est no estado inicial, q
0
, e apresenta-se-lhe entrada uma cadeia de 0s e
1s, com por exemplo 1100.
Ele vai ler os caracteres da esquerda para a direita, isto 1 >1 > 0 >0. As arestas
representam as transies de estado quando o autmato l o carcter etiqueta da aresta.
Estando em q
0
e lendo 1, transita para q
1
. Estando em q
2
e lendo 1, transita para q
2
, isto , fica
onde est. Lendo agora 0, estando em q
1
, transita para q
2
. Lendo depois 0 transita para q
3
e a
fica, porque no h mais nada para ler.
O estado q
1
tem uma forma especial. Ele o estado aceitador. Se o autmato, partindo
do estado inicial, leu a cadeia 1100 e terminou no estado aceitador, ento aceita essa cadeia.
Poderemos ver outras que tambm aceita. Por exemplo 001, 0100, 1110001, etc. Se estiver
em q
0
e aparece um 1, vai para o aceitador; se estiver em q
1
e aparece um 1, mantm-se no
aceitador. Se estiver em q
2
e aparece um 1, vai para o aceitador.
Ento conclui-se que qualquer cadeia que termine num 1 aceite pelo autmato: de facto
qualquer que seja o seu penltimo estado, o seu ltimo ser sempre o aceitador de ele ler
apenas mais um 1. Mas h cadeias de outro tipo, como por exemplo 0100, que tambm, so
aceites. Se depois do ltimo 1 aparecem dois zeros seguidos (e mais nada) ele termina
tambm no estado aceitador. Portanto o autmato aceita as cadeias que terminam num 1 ou
em 00 depois do ltimo 1.
q
0
q
1
q
2
0
1
1
0
0
1
Incio
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
48
Note-se que em cada estado o aceitador determinstico sabe exactamente o que deve
fazer, porque tido lhe dito: de cada estado h duas arestas definindo as duas transies
possveis, uma para cada carcter do alfabeto. Essas duas transies podem ser iguais, com
acontece no estado q
2
. Pode-se simplificar o grafo colocando apenas uma aresta com duas
etiquetas, com o na figura seguinte.
Figura 2.2.2 Grafo do mesmo aceitador da Fig. 2.2.1
Se tivssemos uma alfabeto com trs caracteres (por exemplo {a,b,c}, ento de cada
estado teriam que partir sempre trs arestas explicitamente definidas (ainda que pudessem ser
iguais). Um aceitador determinstico no tem qualquer capacidade de decidir em qualquer
circunstncia, da o nome de determinstico. Consequentemente todas as transies possveis
tm que estar explicitamente definidas. A funo de transio por isso uma funo total, isto
, est explicitamente definida para todos os valores do seu domnio.
Note-se que esta definio que estamos a adoptar no seguida por todos os autores.
Alguns admitem que possam existir transies no definidas. Nestes, se aparecer entrada,
num dado estado, um carcter para o qual no esteja explicitamente definida uma transio, o
DFA morre, isto , passa a um estado no aceitador e no sai mais de l, quaisquer que sejam
os caracteres seguintes na cadeia lida (mais tarde chamaremos ratoeira a este estado).
Vimos que um autmato finito determinstico facilmente definido e descrito por um
grafo. Tem cinco partes: um conjunto de estados, um conjunto de regras para transitar entre
eles, um alfabeto de entrada que define os caracteres aceitveis entrada, um estado inicial,
um estado final. Veremos casos que tm vrios estados finais. Para definir formalmente o
autmato, usaremos todas essas cinco partes que compem um quinteto.
q
0
q
1
q
2
0
1
1
0
0,1
Incio
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
49
Definio 2.2.1 Aceitador determinstico
Um aceitador determinstico (usaremos o acrnimo dfa-, de deterministic finite
accepter) definido pelo quinteto
M=(Q,E, o, q
0
, F )
em que : Q: o conjunto finito de estados internos
E: alfabeto de entrada (conjunto finito de caracteres)
o : QxE Q a funo total chamada funo de transio
q
0
eQ o estado inicial
F _ Q o conjunto de estados finais ou aceitadores
Uma funo total quando definida para todos os valores possveis dos seus
argumentos; caso contrrio diz-se parcial. Ao dizer-se que a funo de transio total,
atendendo sua definio, isso quer dizer que ela tem que estar definida para todas as
combinaes possveis de um estado e um carcter do alfabeto, isto , para todos os elementos
do produto cartesiano QxE.
Exemplo 2.2.2. O interruptor do Cap. 1
Retomemos aqui o exemplo do interruptor do Cap. 1. Se definirmos a linguagem das
sequncias de Press(P) tais que o interruptor fica ligado aps a sua aplicao (partindo do
estado inicial F), teremos P, PPP, PPPPP, etc., ou seja, um nmero mpar de accionamentos
do interruptor. Agora poderemos definir o autmato como um aceitador dessa linguagem,
colocando a dupla circunferncia no estado A.
Figura 2.2.3 Grafo do interruptor do Cap. 1.
Aplicando-lhe a definio 2.1 v-se que
F A
P
P
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
50
Q, conjunto de estados internos: {F, A}
E , alfabeto de entrada: {P}
o , funo de transio: F P A; A PF
q
0
, o estado inicial: F
F, o estado final: {A}
Exemplo 2.2.3.
Seja o autmato da Fig. 2.2.4.
Figura 2.2.4. Autmato do exemplo 2.2.3
Aplicando-lhe de igual modo a definio 2.1 v-se que:
Q, conjunto de estados internos: {1,2,3,4}
E , alfabeto de entrada: {a,b}
o , funo de transio: 1 a2; 1 b4, 2 b3, etc.
q
0
, o estado inicial: 1
F, o estado final: {4}
Neste caso a funo de transio tem muitos elementos. Usando uma tabela especifica-se
mais facilmente.
Note-se que pelo facto de a funo de transio der total, a tabela tem que ter todas as clulas
preenchidas. Neste caso para cada estado existem duas arestas possveis, uma para a e outra
para b.
1 2 3
4
a
b
b
a
a
b
b a
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
51
Tabela 2.2.1. Tabela de transies do DFA da Fig. 2.2.3.
Se estado
actual
e a entrada
actual
o estado
seguinte ser
1 a 2
1 b 4
2 a 4
2 b 3
3 a 3
3 b 4
4 a 4
4 b 4
Qual ser a linguagem aceite por este autmato ?
O estado 4 tem uma caracterstica: se o autmato l chegar, nunca mais de l sai, e por
isso chama-se estado ratoeira, ou armadilha (trap) ou poo.
A figura seguinte reduz o esquema geral de um autmato que vimos no Cap. 1 ao caso
particular de um dfa.
Note-se que um dfa no tem nem dispositivo de memria nem cadeia de sada. Tem apenas
dispositivo de leitura e unidade de controlo. Conforme o contedo actual da clula lida, d-se
ou no uma transio de estado dentro da unidade de controlo.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
52
Figura 2.2.5. O esquema de um DFA. Note-se a ausncia de qualquer dispositivo de
memria.
A transio de um estado para outro depende do estado actual (antes da transio) e do
carcter lido entrada no instante actual.
Figura 2.2.6. A funo de transio de um DFA.
Tabela 2.2.2
Um autmato representa-se por um
grafo em que os vrtices (ns)
representam os estados e as arestas
orientadas tm como etiquetas os
caracteres lidos na cadeia de entrada. H
trs tipos de vrtices, indicados na Tabela
2.2.2., ao lado
Smbolo Significado
Estado normal
Estado inicial
Estado
aceitador (ou
final)
Aresta
cadeia de entrada a a b b a b
q
0
q
1
q
2
estado seguinte,
movida,
smbolo na sada
(caso a tenha)
o
carcter de entrada
estado actual
[*] carcter
q
0
q
f
q
i
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
53
Exemplo 2.2.4
Figura 2.2.7 DFA do exemplo 2.2.4.
Temos um autmato com trs estados, um de cada tipo. O alfabeto do autmato E=
{0,1}. Lendo com ateno as etiquetas das arestas pode-se escrever a seguinte tabela de
transies. O DFA pode-se assim definir formalmente como
M= (Q, S, E, ,q
0
,F) com
Q = {q
0
,q
1
,q
2
}, E = {0,1}, F = {q
2
} e o definida pela Tabela 2.2.4.
Tabela 2.2.3. Funo de transio do exemplo 2.2.4.
Qual ser a linguagem aceite pelo autmato? Um bom desafio para o leitor ...
No Captulo 3 estudaremos as expresses regulares, uma tcnica de especificao de
linguagens que tem uma lgebra prpria muito adequada para deduzir a definio da
linguagem a partir de um DFA qualquer. Neste momento poderemos fazer o seguinte
procedimento heurstico:
-colocamo-nos no estado aceitador e vemos como l poderemos chegar,
incio
0
1
q
2
0
0
1
q
1
q
0
1
Estados
Entradas
0
1
q
0
q
1
q
2
q
1 q
0
q
2
q
0
q
1
q
0
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
54
-depois andamos para trs e em cada estado vemos o mesmo. At que se consiga
visualizar mentalmente a linguagem do autmato.
Chega-se ao estado final a partir de q
1
com um 0, ou seja, com (****)0.
Chega-se a q
1
com um 0 depois de 1: (***10)0. De modo que sempre que uma
cadeia termine em 100, termina no estado aceitador. Se terminar em 1000 no aceita a cadeia.
Mas aceita se terminar em 10000, 1000000, ou qualquer nmero par de zeros
precedido de 1.
Poderemos definir formalmente linguagem de um autmato finito.
Definio 2.2.2a. Linguagem de um DFA
Dado um DFA qualquer, M, a linguagem L aceite (ou reconhecida) por M o conjunto
de todas as cadeias que, comeando a ser lidas no estado inicial, fazem com que o autmato
alcance um dos estados finais depois de toda a cadeia ter sido lida. Escreve-se L(M) para
dizer que L a linguagem aceite ou reconhecida por M.
Que linguagens aceitam os seguintes autmatos ?
Exmplo 2.2.5
Fig. 2.2.8.
Exemplo 2.2.6
Fig. 2.2.9.
Exemplo 2.2.7
Incio
q
0
q
1
0 0 1
1
Incio
q
0
q
1
0 1
1
0
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
55
Fig. 2.2.10
Um DFA pode ser definido pela explicitao da funo de transio e, a partir dela,
facialmente se desenha o seu grafo.
Exemplo 2.2.8
Seja o DFA M = ({q
0
, q
1
, q
2
}, {a,b}, o, q
0
, {q
2
}) cuja funo de transio a seguinte:
o (q
0
, a) = q
1
Tabela de transies
o (q
0
, b) = q
2
o (q
1
, a) = q
0
o (q
1
, b) = q
2
o (q
2
, a) = q
2
o (q
2
, b) = q
2
Nas transies aparecem trs estados q
1
, q
2
e q
3
. O grafo do autmato
desenha-se graficando as transies, depois de se desenharem os seus trs estados. Obtm-
se assim a Fig. 2.2.11.
Fig. 2 .2.11
Ser possvel simplificar este DFA, isto , encontrar um outro com menos estados que
aceite a mesma linguagem (e s a mesma) ?
a b
q
0
q
1
q
2
q
1
q
0
q
2
q
2
q
2
q
2
a
a
a,b
q
0
q
1
b
b
q
2
q
2
q
0
q
1
q
2
1 0
0 0,1 1
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
56
Veremos em captulos posteriores algoritmos para simplificar autmatos, reduzindo ao
mnimo possvel o nmero de estados. Neste momento poderemos apenas olhar com ateno
para o DFA e verificar o que ele faz. Se aparecer um b, no estado inicial, vai para o aceitador
q
2
. Se estiver em q
1
e aparece um b, transita para q
2
; e se estiver em q
2
e aparecer um b,
mantm-se a. Portanto qualquer que seja o seu estado se parecer um b na cadeia de entrada,
ele aceita-a: a sua linguagem portanto o conjunto de todas as cadeias em {a,b}* que
contenham pelo menos um b. O autmato seguinte aceita essa linguagem.
Fig. 2.2.12. Grafo equivalente ao
da Fig. 2.2.11.
Funo de transio estendida a cadeias de caracteres, o*
Na definio do DFA a funo de transio definida de tal forma que ela activada por um
carcter. Se quisermos calcular a transio do DFA de uma configurao inicial para outra
configurao aps um conjunto de transies, seria interessante dispor de uma forma de
representao sucinta, compacta, que exprimisse essa transio salto resultante da leitura de
um conjunto de caracteres ou de uma cadeia completa.
Pode-se estender a noo de transio com esse objectivo. Em vez de o escreve-se o*,
em que o asterisco quer dizer aps um certo nmero de transies.
A funo de transio estendida assim definida por
o*: Q E* Q
a
a,b
b
q
2
q
2
q
0
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
57
em que
- o seu segundo argumento uma cadeia em vez de um carcter, e
- o seu valor de sada d o estado do autmato depois de ler a (sub)cadeia.
Por exemplo, se tivermos num autmato tal que
o(q
0
, a) = q
1
e o(q
1
, b) = q
2
ento o*(q
0
, ab)=q
2
Representando por grafos, teremos a Fig. 2.2.13.
Figura 2.2.13. Ilustrao da funo de transio estendida. Em a) grafo normal; em b) grafo
compactado usando uma transio estendida.
A funo de transio estendida pode definir-se recursivamente do modo seguinte:
(i) o*(q,)= q
(ii) o*(q,wa)=o (o* (q, w), a)
para todo o qe Q, weE*, aeE.
Para o exemplo anterior teremos :
o
*
(q
0
, ab)=o (o* (q
0
, a), b)
o*(q
0
, a)=o* (q
0
, a)=o (o*(q
0
, ), a)=o (q
0
, a)=q
1
o*(q
0
, ab)=o ( q
1
, b)=q
2
q
0
q
1
q
2
a b
o
o
a) Funo de transio
q
0
q
2
ab
o*
b) Funo de transio estendida
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
58
Definio 2.2.2b.Linguagens de um DFA (definio formal)
A linguagem L aceite (ou reconhecida) por um DFA M =(Q, E, o, q
0
, F) o conjunto de todas
as cadeias em E aceites por M, i.e.,
L(M) = {weE* : o*(q
0,
w)eF }
A funo de transio o e o* so funes totais (definidas para todos os elementos do
seu domnio). Em cada passo define-se um e um s movimento, e por isso o autmato se
chama determinstico, no podendo fazer escolhas. Um autmato processa todas as cadeias
em E*, aceitando-as ou no.
Quando no aceita uma cadeia, pra num estado no aceitador. O conjunto das cadeias
em que isso se verifica constitui o complemento da linguagem L(M), que se pode definir
formalmente por
Complem(L(M)) = {weE* : o*(q
0,
w)eF }
Consideremos os autmatos da Fig. 2.2 14, diferentes apenas na identificao do estado
final.
O primeiro reconhece, como vimos, a linguagem das cadeias em {a,b}* que tenham pelo
menos um b. O segundo aceita, no mesmo alfabeto, as cadeias que tenham apenas as. Isto ,
a linguagem do segundo o complemento da linguagem do primeiro: se uma cadeia s tem
as no tem nenhum b, e se tem pelo menos um b no contm s as.
Figura. 2.2.14. Autmatos complementares no alfabeto {a,b}.
a
b
q
0
a,b
q
1
a,b
a
b
q
0
q
1
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
59
Repare-se que o estado no aceitador do primeiro autmato o estado aceitador do
segundo; e o estado aceitador do primeiro o estado no aceitador do segundo. De facto,:
- se uma cadeia aceite pelo primeiro no o pode ser pelo segundo: uma cadeia que
termine no estado aceitador do primeiro tem que terminar no estado no aceitador do
segundo;
- e se uma cadeia recusada pelo primeiro tem que ser aceite pelo segundo: se uma
cadeia termina no estado no aceitador do primeiro tem que terminar no estado aceitador do
segundo.
Para este autmato com dois estados, fcil de ver a relao entre os autmatos de
linguagens complementares.
Ser assim no geral ?
De facto . Se um autmato M aceita uma linguagem L(M), ento o complemento de L
ser reconhecida pelo autmato que se obtm de M invertendo neste a funo dos estados: os
no aceitadores passam a aceitadores e os aceitadores passam a no aceitadores.
2.3. A arte de construir DFAs
Os exemplos de autmatos que vimos at aqui parecem simples, e a sua construo (em grafo)
relativamente expedita.
Casos h em que bem mais difcil obter uma soluo simples (na medida do possvel) e
apropriada para uma dada funo.
A expertise para desenhar DFAs depende mais da arte aprendida e treinada do que de
uma teoria sofisticada.
Vejamos um exemplo:
Exemplo 2.2.9 Paridade individual
Desenhar um autmato que, no alfabeto E ={0,1}, aceite todas as cadeias com um nmero
mpar de 1s.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
60
Podemos comear a desenhar estados e arestas, por tentativa e erro, at que consigamos,
com mais ou menos remendos, uma soluo. Se o conseguirmos, muito provavelmente
obteremos um autmato confuso, com mais estados do que o necessrio, difcil de interpretar
por outrem.
Em vez disso, pensemos numa abordagem mais sistemtica, partindo de um algoritmo
mental para a folha de papel.
Em primeiro lugar quantos estados ter que ter o nosso autmato ? Lembremo-nos do
significado de um estado: o autmato chega l depois de um certo nmero de transies
resultantes da leitura de uma cadeia. O estado contm por isso a histria at a um certo ponto
da cadeia. Ora num problema qualquer, o que deve memorizar o autmato? Apenas a
informao mnima para ser capaz de responder ao que se lhe pede: neste caso lembrar-se da
paridade do nmero de 1s entrados at ao momento. Se for par deve estar num certo estado, se
no for deve estar noutro. O estado que corresponde a mpar deve ser aceitador porque se no
h mais nada para ler, a cadeia deve ser aceite porque entrou at ao momento um nmero
mpar de 1s. Temos ento (pelo menos) dois estados: Par (P) e mpar (I), que podemos desde
j desenhar.
Figura 2.3.1. Os estados do autmato de paridade individual
Se o DFA est em P e l 1 na entrada, o que acontece ? Se est em P, porque at ao
momento entrou um nmero par de 1s. Se agora entra mais um, passa a mpar, naturalmente.
E ento desenhe-se a transio correspondente: o (P,1)=I. E se l um zero estando em P ?
Como nada lhe pedido em relao aos zeros, -lhe perfeitamente indiferente e por isso deve
manter-se em P. Logo o (P,0)=P. Temos ento, para j,
I
P
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
61
Figura 2.3.2. Transies a partir de P
Faa-se de seguida o mesmo raciocnio par ao estado I. Ele est l porque entrou um
nmero mpar de 1s. Entrando mais um, fica um nmero par, e por isso o (I,1)=P. Pela
mesma razo de cima, o (I,0)=I. Todas as transies possveis esto agora identificadas. O
estado aceitador tambm. Falta apenas identificar o estado inicial, onde o DFA deve estar
antes de iniciar a leitura da cadeia, ou seja, quando entraram zero 0s e zero 1s. Ora zero
nmero par, e por isso P o estado inicial, pelo que se lhe coloca a setinha.
Conclumos assim o desenho do DFA requerido na Fig. 2.3.3
Figura 2.3.3 Autmato de paridade de 1s completo.
Simulando o seu funcionamento verifica-se que cumpre a sua misso.
E se quisssemos um DFA que aceitasse, no mesmo alfabeto, todas as cadeias com um
nmero par de 1s ? Facilmente se obtm, seguindo o mesmo algoritmo mental, o autmato da
Fig. 2.3.4.
.
P
I
1
0
P
I
1
0
1
0
I P
1
0
1
0
Figura 2.3.4. Autmato de
um nmero par de 1s.
Notem-se as semelhanas e
diferenas relativamente ao
anterior
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
62
Fica o leitor desafiado a verificar que os autmatos seguintes aceitam, ainda no alfabeto
E ={0,1}, as cadeias com um nmero mpar de zeros e um nmero par de zeros.
a) b)
Figura 2.3.5. Autmatos de paridade de zeros. a) mpar, b) par
Exemplo 2.3.2 Paridade de grupo
Desenhar um DFA que no alfabeto E={0,1} aceite todas as cadeias com um nmero mpar de
0s e um nmero mpar de 1s.
Temos aqui uma situao mais complicada porque a imparidade exigida
simultaneamente aos dois caracteres do alfabeto.
A primeira questo, e a decisiva: quantos estados deve ter o autmato ? Ele tem que
saber identificar a situao de paridade entre todas as situaes de paridade possveis. E quais
so ? Tendo em conta que temos que medir simultaneamente a paridade de 0s e de 1s, elas
so:
- nmero par de 0s e nmero par de 1s;
- nmero par de 0s e nmero mpar de 1s;
- nmero mpar de 0s e nmero par de 1s;
- nmero mpar de 0s e nmero mpar de 1s.
I P
0
1
0
1
P
I
0
1
0
1
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
63
No havendo mais nenhuma situao relevante para o caso, conclumos que quatro
estados sero suficientes; chamem-se PP, PI, IP, II, sendo aceitador o II.
Figura 2.3.6. Os estados necessrios para o exemplo 2.3.6.
Se o autmato est em PP porque leu at ao momento um nmero par de 0s e um
nmero par de 1s, se esto em PI, leu um nmero par de 0s e um nmero mpar de 1s; etc.
Calculemos agora as suas transies.
Estando em PP, at a leu um nmero par de 0s e um nmero par de 1s. Se aparece agora
um 0, fica um nmero mpar de zeros e um nmero par de 1s e por isso tem que transitar para
IP. Se pelo contrrio aparece um 1, fica um nmero mpar se 1s e um nmero par de zeros e
vai assim para PI. Podemos ento desenhar as arestas que partem de PP.
Se o DFA est em PI (par 0s mpar 1s) , se l 1 passa a PP e se l 0 passa a II.
II
PP PI
IP
II
PP PI
IP
1
0
II
PP PI
IP
1
0
0
1
Figura 2.3.7. Transies a partir
de PP
Figura 2.3.8. Transies a partir
de PI
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
64
agora fcil de ver que o autmato completo representado pelo grafo seguinte. O estado
inicial (zero 0s e zero 1s) PP porque zero um nmero par.
Exemplo 2.3.3. Desenhar o autmato aceitador da linguagem composta por todas as cadeias
com um nmero mpar de 0s e um nmero mpar de 1s.
Se quisermos o DFA que aceita as cadeias com um nmero impar de 0s e um nmero
par de 1s (IP), basta mudar o estado aceitado no autmato anterior, obtendo-se
E juntando as duas condies, mpar-mpar ou mpar-par, obtm-se o autmato com dois
estados finais:
II
PP PI
IP
1
0
0
1
0
0
1
1
IP
PP PI
II
1
0
0
1
0
0
1
1
Figura 2.3.9. Grafo completo do
exemplo 2.3.2.
Figura 2.3.10. Grafo completo
do exemplo 2.3.3.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
65
Exemplo 2.2.3. Contagem de sequncias (corridas) de caracteres.
Desenhe-se um DFA que em E ={a,b} aceite todas as cadeias que tenham corridas de trs ou
mais as. Uma corrida de trs aaa. No caso aaaa temos uma corrida de 4.Portanto
baabbaaababab, bbbbbbabababaaaaabab, pertencem linguagem, mas baabaababbabbbb,
aabbbbbaabbabbbaab, no pertencem.
A questo aqui mais complicada do que a simples paridade. O autmato tem que ser
capaz de contar uma corrida de trs as : zero, um, dois, trs. Como pode contar ? Tem que ter
memria para isso (contar tem memria implcita). A memria de um DFA s existe nos
estados, e por isso para contar at trs so precisos quatro estados a que chamaremos 0, 1, 2 e
3. O nmero do estado o nmero de as seguidos contados at a.
Figura 2.3.12. Como contar 3 as.
Sero estes quatro estados suficientes? o que vamos ver.
IP
PP PI
1
0
0
1
0
0
1
1
II
0 1 2
a a a
3
Figura 2.3.11. Grafo do DFA
aceitador de II ou de IP
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
66
Se depois de 3 as vier um quarto, a cadeia continua aceite. De facto depois da corrida
de trs as a cadeia aceite independentemente do que acontecer a partir da, venham mais as
ou mais bs. Por isso pode-se colocar uma aresta do estado 3 para si mesmo com a ou com b.
Por outro lado, se a cadeia comea por b, bb, bbb, o autmato conta sempre zero as e
por isso existe uma aresta de 0 para 0 com b. Temos para j a Fig. 2.3.13.
Figura 2.3.13.
E o autmato j vai tomando forma.
E se aparece bab?
Interessam-nos as corridas de as. Se aparece um a temos uma corrida de um a, mas se
de seguida aparece um b ele anula a corrida, obrigando ao reincio da contagem. Quer isso
dizer que do estado 1 se volta ao estado 0 se aparecer um b na entrada.
Se aparece baab este ltimo b obriga de igual modo ao reincio da contagem. Teremos
portanto completo o grafo do autmato na Fig. 2.3.14.
Figura 2.3.14. DFA que conta corridas de 3 ou mais as.
0 1 2
a a a
3
b
a,b
0 1 2
a a a
3
b
a,b
b
b
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
67
Fica o leitor desafiado a encontrar uma qualquer cadeia com uma corrida de trs as que
no seja aceite por este autmato.
Se em vez de uma corrida de trs tivssemos uma corrida de quatro ou cinco, o autmato
teria uma forma semelhante, com cinco ou seis estados, respectivamente.
Se em vez de corridas de as quisssemos corridas de b, bastaria trocar os as pelos bs e
os bs pelos as nas arestas do grafo.
Figura 2.3.15. DFA aceitador das cadeias com corridas de quatro ou mais bs.
Exemplo 2.3.4.
Desenhar o autmato que aceita no mesmo alfabeto {a, b} qualquer cadeia que tenha uma
corrida de trs as ou uma corrida de trs bs.
A situao aqui complicou-se um pouco. Vejamos o problema por partes.
Para corridas de trs as, sabemos como fazer. No autmato respectivo, quando surge
um b, reinicia-se a contagem com retorno ao estado 0. Mas agora quando aparece um b duas
coisas tm que acontecer: por um lado a anulao da contagem de as e por outro lado o incio
da contagem de bs.
Para corridas de trs bs tambm sabemos como fazer. E de modo anlogo, quando
aparece um a por um lado anula-se a contagem de bs e por outro lado inicia-se a contagem de
as.
Para iniciar, cria-se um estado inicial 0. Se aparece um a, inicia-se a contagem de as, se
for um b, inicia-se a contagem de bs, como na Fig.2.3.16. Os nomes dos estados foram
alterados para os relacionar com a sua funo: chega a 2a depois de uma corrida de dois as e
chega a 2b depois de uma corrida de dois bs.
0
1 2
b
b
b
4
a
a,b
a
a
3
b
a
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
68
Agora vamos corrida de as e quando aparece l um b transita-se para o estado
correspondente a um b, ou seja, 1b.
Finalmente, na corrida de bs procede-se de modo semelhante quando aparece um a e obtm-
se o autmato da Fig. 2.3.18 que completa a resoluo do exemplo.
Figura 2.3. 18. Autmato completo do exemplo 2.3.4: aceita corridas de trs ou mais as ou
corridas de trs ou mais bs
a,b
0
1a 2a
a a
3a
1b 2b
b
b b
3b
a
a,b
0
1a 2a
a a
3a
1b 2b
b
b b
3b
a
a,b
b
b
a,b
0
1a 2a
a a
3a
1b 2b
b
b b
3b
a
a b
b
b
a b
a
a
Figura 2.3.16. A caminho
da soluo do exemplo
2.3.4
Figura 2.3.17. A caminho
da soluo do exemplo
2.3.4
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
69
Exemplo 2.2.4 Deteco de uma sub cadeia de caracteres
Pretende-se um autmato que aceite todas as cadeias no alfabeto {0,1} que contenham a sub
cadeia 001.
Por exemplo 10010, 010010, 1010101010001111 pertencem a esta linguagem; mas
11010100 e 0101010 no pertencem.
A primeira tarefa determinar quais os estados que o autmato deve ter. Ele tem que
reconhecer 001. Pode ainda no ter encontrado nenhum dos caracteres da sequncia, ou pode
j ter encontrado um, dois ou os trs. So por isso necessrios pelo menos quatro estados.
Chamem-se Nada, 0, 00, 001. O Nada ser o estado inicial.
Iniciado, se l um 1 isso no lhe interessa e deixa-se ficar. Se l um 0, ento pode ser o
primeiro da sequncia procurada e por isso transita para o estado de j ter lido um 0; o estado
0. Se de seguida lhe aparece um outro 0, est no bom caminho e transita para o estado 00.
Mas se em vez do 0 lhe aparece um 1, ento no leu um nmero suficiente de zeros e tem que
reiniciar o escrutnio, voltando assim ao estado inicial. Estamos na Fig. 2.3.19
Estando em 00 se aparece 1 ento apareceu 001 e a cadeia deve ser desde j aceite,
independentemente do que acontecer depois, transitando por isso para o estado aceitador
001 e no saindo de l mais. Este ltimo requisito alcana-se colocando uma aresta de
001 para si mesmo, seja com 0 seja com 1.
Figura 2.3.20. DFA que reconhece a sub-cadeia 001.
Ini 0 00
1
0 0
1
Ini 0 00
001
1
0 0 1
1
0, 1
Figura 2.3.19.Incio da resoluo do
exemplo 2.2.4.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
70
Contagem em mdulo n.
A contagem em mdulo n uma contagem de nmeros inteiros cclica que se inicia em zero
e volta a zero n passos frente.
Por exemplo a contagem mdulo 3 0, 1, 2, 0, 1, 2, . A tabela seguinte ilustra a
contagem em mdulo para nmeros inteiros positivos e negativos.
Tabela 2.3.1 . Contagem em mdulo.
N Contagem dos nmeros inteiros positivos e negativos
-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10
M

d
u
l
o
2 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
5 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0
6 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4 5 0 1 2 3 4
7 4 5 6 0 1 2 3 4 5 6 0 1 2 3 4 5 6 0 1 2 3
10 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
12 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10
Exemplo 2.2.5. Desenhar um autmato que seja capaz de contar em mdulo 2.
Sem perda de generalidade consideraremos apenas os nmeros positivos. Os nmeros a
contar so codificados em binrio, E ={0, 1}, ou seja, teremos a Tabela 2.3.2.
Tabela 2.3.2 Contagem em mdulo 2
N 0 1 2 3 4 5 6 7 8 9 10
Cdigo 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 10010
Mod2 0 1 0 1 0 1 0 1 0 1 0
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
71
A contagem em mdulo dois tem dois resultados possveis: 0 ou 1. Por isso o autmato
s necessita de dois estados, o 0 (para contar 0) e o 1 (para contar 1). O nmero a contar est
codificado em binrio, iniciando-se a sua leitura da esquerda para a direita: o DFA l, por
exemplo, 10101111 pela ordem 1-0-1-0-1-1-1-1. Isto quer dizer que o LSB (Least Significant
Bit) o lido mais direita, e s conhecido no fim da leitura. O DFA conta com qualquer
nmero de bits: s quando a cadeia acaba se conhece o seu tamanho.
Inicialmente est no estado 0. Se aparece um 0, mantm-se no estado 0; se aparece um 1,
conta 1 e por isso vai para o estado 1.
Estando no estado 1, se aparece um 0 (leu at agora 10, modulo 2 d 0), transita para o
estado 0. Se aparece um 1 (leu at agora 11=3, modulo 2 d 1) mantm-se no estado 1.
Estando no estado 0 depois de ler 10: se aparece 1 (101=5, mod2(5)=1) vai para o estado
1; se aparece 0 (100=4, mod2(4)=0), mantm-se no estado 0.
Estando no estado 1 depois de ler 11: se aparece 0 (110) vai para o estado 0), se aparece
1 (111) mantm-se no estado 1.
Para que o DFA esteja completo, falta definir o estado aceitador, que depende da
linguagem especificada:
- se forem as cadeias que em mdulo 2 dem zero, o estado final ser o estado 0
- se forem as cadeias que em mdulo 2 dem um, o estado final ser o estado 1. Neste
caso teremos a Fig. 2.3.23.
0
1
0
1
0
1
0
1
1
0
Figura 2.3.21. Incio da
construo do DFA contador em
mdulo 2
Figura 2.3.22. Continuao da
construo do DFA contador em
mdulo 2
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
72
Figura 2.3.23. DFA da linguagem L(M)={we{0,1}* : mod2(w)=1}
Exemplo 2.2.6. Desenhar o DFA capaz de contar os nmeros inteiros (no negativos)
correctamente em mdulo 4.
A contagem mdulo 4 tem quatro valores possveis: 0, 1, 2, 3. Quatro estados sero em
princpio suficientes. O nome do estado o valor da contagem que lhe corresponde. A leitura
da cadeia feita da esquerda para a direita.
No incio temos o estado inicial 0.
Aparece 0, mantm-se no estado 0; aparece 1, vai para o estado 1.
Estando no estado 1 (depois de ler 1): aparece 0 (10) vai para o estado 2, aparece 1 (11)
vai para o estado 3.
Estando no estado 2 (depois de ler 10): aparece 0 ( 100) vai para o estado 0, aparece 1
(101=5, mod4(5)=1) vai para o estado 1.
Estando no estado 3 (depois de ler 11): aparece 0 (110=6, mod4(6)=2) vai para o estado
2, aparece 1 (111=7, mod4(7)=3) vai para o estado 3.
0
0
1
1
0
1
0 1
2
3
0
1
0 1
Figura 2.3.24. Construo do
DFA contador em mdulo 4.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
73
Se continuarmos veremos que o autmato no se engana. O estado final ser
determinado pela linguagem requerida. Se for por exemplo 2, ela ser composta pelas cadeias
(binrias, em que o LSB o primeiro direita) que valem 2 em mdulo 4.
curioso verificarmos esta periodicidade, quando a cadeia binria lida da direita para
a esquerda. E se fosse lida da esquerda para a direita ?
Exemplo 2.2.7. Contagem mdulo 7
Neste caso precisaremos de um autmato com 7 estados 0,1,2,3,4,5,6,7, sendo 0 o estado
inicial.
Estando em 0: se aparece 0 mantm-se em zero, se aparece 1 vai para 1.
Estando em 1 (lido 1): com 0 (10) vai para 2, com 1 (11) vai para 3.
Estando em 2 (lido 10): com 0 (100) vai para 4, com 1 (101) vai para 5.
0 1
2
3
0
1
0
1
1
0
0
1
0
1
2
3
4
5
6
0
0
1
1
0
1
Figura 2.3.25. DFA contador em mdulo 4.
Figura 2.3.26. Construo do
DFA contador em mdulo 7.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
74
Continuando,
Estando em 3 (lido 11): com 0 (110) vai para 6, com 1 (111) vai para 0.
Estando em 4 (lido 100): com 0 (1000=8, 8mod7=1) vai para 1, com 1 (1001=9,
9mod7=2) vai para 2.
Estando em 5 (lido 101): com 0 (1010=10, 10mod7=3) vai para 3, com 1 (1011=11,
11mod7=4) vai para 4.
Falta apenas definir o que acontece no estado 6.
Estando em 6 (lido 110): com 0 (1100=12, 12mod7=5) vai para 5, com 1 (1101=13,
13mod7=6) vai para 6.
Testemos o DFA para :
1110101 =64+32+16+4+1=117 117mod7=5; d certo.
0
1
2
3
4
5
6
0
0
1
1
0
1
0
1
0
1
0
1 0 1
0
1
2
3
4
5
6
0
0
1
1
0
1
0
1
0
1
0
1
Figura 2.3.27. Continuao da
construo do DFA contador
em mdulo 7.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
75
1010101011=512+128+32+8+2+1=683, 683mod7=4; confere.
Em resumo, numa boa estratgia de projecto de um DFA:
- A primeira e decisiva operao determinar quanto estados ter o DFA e qual a funo
de cada um.
- A etiqueta que atribumos a cada estado deve exprimir a funo do estado.
- Depois colocamo-nos dentro de cada estado e imaginamo-nos a ler a cadeia de entrada
e a imitar o DFA.
2.4. Linguagens regulares
Qualquer DFA reconhece uma linguagem. Tal afirmao fcil de provar: uma linguagem
um conjunto de cadeias. Um DFA aceita sempre alguma cadeia, mesmo que seja a cadeia
nula, como o caso do autmato seguinte, em E={a,b}:
Figura 2.4.1. DFA aceitador da linguagem L={}, s com a cadeia vazia.
E dada uma linguagem qualquer, definida por um conjunto de cadeias, existir sempre
um DFA, autmato finito determinstico, que a reconhea ? Nem sempre.
H uma famlia de linguagens em que tal acontece sempre: as linguagens regulares.
Uma linguagem L diz-se regular se e s se existir um DFA M que a reconhea, ou seja,
L=L(M)
A famlia das linguagens regulares composta por todas as linguagens que so aceites
por algum DFA.
1
a
a,b
b
0
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
76
E como se pode provar que uma linguagem regular? Por prova construtiva: se formos
capazes de construir um autmato que a reconhea, ento ela regular. E se no formos
capazes? Aqui que a porca torce o rabo, pois pode ser por falta de percia nossa. Mas
tambm pode ser porque impossvel (o que acontece se a linguagem for no regular).
Exerccios de construo de DFAs.
1. Construir um DFA que aceite a linguagem L em E = {0, 1} tal que
(a) L contm apenas 010 e 1.
(b) L o conjunto de todas as cadeias que terminam com 00.
(c) L o conjunto de todas as cadeias sem 1s consecutivos nem 0s consecutivos.
2. Desenhar o DFA que aceita todas as cadeias em {0,1}, com excepo das que contm 010:
0111101100 , 0000, 1011000 e L(M)
10101000, 111100010 e L(M)
3. Desenhar o grafo do DFA que aceite as cadeias binrias que valem 5 em mdulo 6.
2.5. Autmatos finitos no-determinsticos
Um DFA sabe sempre o que fazer: o seu caminho est completamente definido no seu grafo,
nunca h qualquer situao em que o DFA exite, por poder escolher entre dois caminhos
alternativos, ou por no saber o que fazer.
Nem todos os autmatos assim so. Poderemos imaginar uma situao em que a partir
de um estado sejam possveis zero, uma ou mais transies com o mesmo smbolo do
alfabeto, isto , em que h caminhos alternativos (para a mesma situao na entrada). Quando
isso acontece o autmato deixa de ser determinstico. Diz-se autmato no-determinstico ou
indeterminstico.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
77
Havendo caminhos alternativos pode haver, entre o estado inicial e o estado aceitador,
zero, um ou vrios caminhos. Pode aceitar uma cadeia seguindo um dado caminho e no
aceitar a mesma cadeia seguindo um outro caminho alternativo.
Como definir neste caso a condio de aceitao de uma cadeia?
Do modo seguinte: uma cadeia de entrada aceite se houver para ela (pelo menos) um
caminho que leve a um estado aceitador quando ela toda lida.
Definio 2.5.1: Um aceitador no-determinstico (NFANondeterministic Finite Accepter)
definido pelo quinteto
M= (Q, E, o, q
0
, F)
em que a funo de transio o definida por
o : Q (E{}) 2
Q
Os restantes membros do quinteto definem-se do mesmo modo que no caso do DFA.
Lendo com ateno a definio constatam-se as seguintes diferenas em relao ao DFA
(definio 2.2.1):
1- O contradomnio de o a potncia 2
Q
do conjunto Q, e no Q, precisamente porque o
resultado de o pode ser no limite um qualquer subconjunto de Q. A potncia 2
Q
de um
conjunto composta por todos os seus subconjuntos possveis, incluindo o vazio.
2- O conjunto o (q
i
, a) pode ser vazio, significando que no h qualquer transio nesta
situao. No grafo no h uma aresta partindo de q
i
com o smbolo a. No obrigatrio que
exista uma aresta a partir de q
i
para cada um dos smbolos do alfabeto.
a
a
Figura 2.5.1 Parte de um
autmato finito com dois
caminhos alternativos para
a mesma leitura na entrada.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
78
3- tambm pode ser argumento de o, ou seja, pode dar-se uma transio sem consumir
um smbolo de entrada ( o mecanismo de leitura pode ficar parado em alguns movimentos).
No grafo do NFA pode existir uma ou mais arestas com o smbolo .
Os NFAs podem representar-se por grafos tal como o DFA. Os ns so os estados e as
arestas as transies. Por exemplo, a transio o(q
1
, a) = {q
2
, q
3
} s pode existir num NFA,
dado que h dois caminhos alternativos: de q
1
lendo a ou se transita para q
2
ou se transita para
q
3
. Com um grafo ser

Num NFA pode dar-se uma transio com o carcter . Este facto parece estranho na
medida em que aceitar o nada numa primeira anlise parece at contrariar a prpria noo de
aceitao. Mas veremos a utilidade deste facto.
Consequncias da possibilidade de transio com
H algumas consequncias da possibilidade de transio com o que convm aqui referir.
1 - de um qualquer estado para ele mesmo pode-se sempre transitar com .
Suponhamos que estamos no estado q
i
depois de ler o prefixo aba da cadeia ababb.
Lendo agora o carcter b o autmato transita par o estado q
j
.
a
a
q
1
q
2
q
3
q
i
q
j
b
Figura 2.5.2. Grafo da transio
o(q
1
, a) = {q
2
, q
3
}
Figura 2.5.3. Grafo (NFA) da transio
o(q
i
, b) = q
j
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
79
Mas repare-se que a cadeia ababb a mesma que ababb ou que ababb ou que
ababb e por a alm. Como representar esse facto no grafo? Simplesmente colocando uma
transio do estado q
i
para ele mesmo.
O mesmo ir depois acontecer em q
j
. Por isso o grafo completo ter a forma da Fig.
2.5.4.
Em qualquer NFA existe essa caracterstica: h uma transio com de um qualquer
estado para ele mesmo. Por ser sempre verdade, geralmente no se desenha, considerando-se
que a transio est l implicitamente.
Nunca esquecer no entanto que no caso de um DFA no h transies-.
2 Quando a transio- for uma alternativa a uma transio com um outro carcter, o
autmato escolhe comer um carcter ou no. Suponhamos, por exemplo, que um NFA
chega a um estado q
1
, da figura seguinte, e se lhe apresenta de seguida o carcter b. O NFA
tem dois caminhos alternativos: ou consome b e vai para q
2
, ou no consome b (consome
que est implcito na cadeia aabab, aabab) e vai para q
3
.
Havendo (por vezes tantas) escolhas, como se pode saber se uma cadeia aceite pelo
DFA? Se ele escolhe um caminho e no consegue chegar ao estado final conclui-se que no
aceita a cadeia? E se ele tivesse escolhido outro, aceitaria ou no? Teria que tentar todos os
caminhos alternativos possveis. Se encontrasse um que o levasse a um estado aceitador ento
aceitaria a cadeia.
q
i
q
j
b

q
1
b
q
2
q
3

aabab
aabab
aabab
Figura 2.5.4. Grafo (NFA) da transio
o(q
i
, b) = q
j
, com explicitao (em relao
ao da Fig. 2.5.3) das transies com .
Figura 2.5.5.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
80
A diferena entre uma computao determinstica (podendo terminar ou no num estado
aceitador) e uma computao no determinstica em que existe um caminho aceitador
ilustrada pela Figura 2.5.6 (de Sipser).
Figura 2.5.6. Uma computao determinstica cria um caminho, enquanto que uma
computao no-determinstica cria uma rvore.
Na computao determinstica nunca h escolhas. A cadeia lida ou aceite ou no,
conforme o ltimo estado seja aceitador ou no. Na computao no determinstica cria-se
uma rvore, com sucessivas ramificaes sempre que haja uma escolha possvel. Se um dos
caminhos de uma computao terminar num estado aceitador, o NFA aceita a cadeia. Caso
nenhum caminho termine num estado aceitador, a cadeia rejeitada.
Uma cadeia aceite pela NFA se houver alguma sequncia de movimentos possveis
que coloquem o autmato num estado final (aceitador) no fim da cadeia. Caso contrrio
rejeitado.
H uma outra forma de concebermos uma computao no determinstica. Sempre que
h uma escolha possvel, o NFA replica-se uma vez por cada escolha, de modo que o nmero
de configuraes vai aumentado em cada ramificao da rvore supra. Cada configurao est
aceita ou rejeita
Computao
determinstica
aceita
Computao no
determinstica
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
81
no estado consequente da escolha feita e na sua entrada esto aos caracteres ainda no lidos.
Se um dos autmatos replicados est numa configurao tal que no pode transitar para
qualquer estado (seja com seja com um outro carcter), e se a leitura ainda no chegou ao
fim, ento esse autmato morre. Se no fim da computao houver algum autmato
sobrevivente e se pelo menos um deles estiver num estado aceitador, a cadeia aceite.
Funo de transio estendida o*
Tal como no caso do DFA, tambm num NFA se pode introduzir o conceito de funo de
transio estendida o*. Ela resulta da leitura de uma cadeia w que o seu segundo argumento
(em vez de um carcter),
o* (q
i
, w) = Q
j
sendo Q
j
o conjunto de todos os estados possveis do autmato que podem ser alcanados a
partir de q
i
e pela leitura de w. Isto o* (q
i
, w) contm o estado q
j
se e s se existir um
caminho no grafo de transies desde q
i
at q
j
com etiqueta w, para todos os q
i
, q
j
eQ e
weE*, como na Fig. 2.5.7.
Definio 2.5.2. Linguagem aceite por um NFA
A linguagem L aceite pelo NFA M = (Q, E, o, q
0
, F) definida como o conjunto de todas as
cadeias w que levem o autmato a um estado final aceitador, ou seja,
L(M) = {weE* : o*(q
0
, w) F = C}
i.e., composta por todas as cadeias w para as quais existe pelo menos um caminho
etiquetado w desde o vrtice inicial at algum vrtice final.
Exemplo 2.5.1 (Linz)
O autmato da Figura 2.5.8 no determinstico porque:
q
i
q
j
w
Figura 2.5.7.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
82
- de q
1
partem duas arestas etiquetadas por 0
- de q
0
parte uma aresta etiquetada por
- de q
2
no definida qualquer transio, o (q
2
, 0) = C
- existe sempre a transio o (q
i
, ) = { q
i
}, para todo o i, mesmo se no desenhada.
Figura 2.5.8. Um aceitador no-determinstico
Se escrevermos todas as transies possveis, teremos:
o (q
0
, 1) = {q
1
}
o (q
0
, 0) = C
o (q
1
, 0) = {q
0
, q
2
}
o (q
1
, 1) = {q
2
}
o (q
1
, ) = {q
1
}
o (q
0
, ) = { q
0
, q
2
}
o (q
2
, 0) = C
o (q
2
, 1) = C
o (q
2
, ) = {q
2
}
O autmato aceita:
10, porque dos dois estados alcanados um final.
q
1
q
2
q
0
0
1
0, 1

Teoria da Computao Captulo 2 . Autmatos Finitos


LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
83
1010, 101010,
No aceita : 1, 11, 01,
A sua linguagem composta palas cadeias de potncias de 10, ou seja,
L(M) = { (10)
n
: n > 0 }
E se aparece a cadeia 110 ?
Depois de ler 11 chega a q
2
. Como no est definida a transio o (q
2
, 0), obtm-se uma
configurao morta (dead configuration), em que se transita para o estado vazio, C. Mais
formalmente
o * (q
0
, 110)=C.
Como no se pode atingir um estado final processando 110, esta cadeia no aceite pelo
NFA.
Exemplo 2.5.2.: (Linz).
Considere-se o autmato da Fig. 2.5.9, com o alfabeto E={a}. Ele no-determinstico
porque (i) no estado inicial h uma escolha possvel com o carcter a e (ii) no esto definidas
todas as transies possveis.
Figura 2.5.9. Exemplo 2.5.2
Qual a linguagem aceite pelo autmato?
q
1
q
3
q
5
a
a
a a
a
a
q
2
q
0
q
4
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
84
Pela parte de cima aceita a cadeia aaa e s essa.
Pela parte de baixo aceita aa, aaaa, aaaaaa, , a
2n
, n1
O conjunto das duas, ou seja a unio das duas, d a linguagem aceite pelo autmato
L(M) = {a
3
} {a
2n
: n>1}
Se o NFA pode escolher, na prtica com o se constri? Para que servem?
Os NFA so construes matemticas que no passam disso: no se pode construir um
NFA para uma aplicao prtica. Pense-se por exemplo o que aconteceria a um autmato que
controlasse uma porta automtica se ele no fosse determinstico
No entanto tm uma grande utilidade em Teoria da Computao. Usam-se como um
ferramenta matemtica muito til para
- modelizar algoritmos em que tem que se fazer escolhas (search-and-backtracking, por
exemplo)
- definir linguagens compostas por conjuntos bastante diferentes (como no exemplo
anterior {a
3
}{a
2n
: n >1}.
- descrever de forma simples e concisa linguagens complicadas. Na definio de uma
gramtica pode existir um elemento de no-determinismo, como na produo
SaSb |
em qualquer ponto pode-se escolher a primeira ou a segunda produo. Podemos assim
especificar um grande nmero de cadeias usando apenas duas regras. Se quisermos construir
um autmato equivalente (estudaremos como num captulo posterior) ser mais fcil atravs
de um NFA.
- construir DFAs complicados. Como veremos de seguida no h nenhuma diferena
essencial entre NFAs e DFAs: dado um NFA possvel encontrar um DFA equivalente. Se
quisermos construir um DFA, poderemos numa primeira etapa construir um NFA, mais fcil
de desenhar, e depois obter, pela tcnica que estudaremos, um DFA equivalente.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
85
2.6. Equivalncia entre autmatos (aceitadores) finitos determinsticos e
no-determinsticos
Como vamos ver, a partir de um qualquer NFA com um dado alfabeto pode-se obter um DFA
que aceita as mesmas cadeias e rejeita as mesmas cadeias no mesmo alfabeto. Diz-se que o
DFA equivalente ao NFA. Vejamos mais formalmente a definio de equivalncia entre
autmatos.
Definio 2.6.1. Aceitadores equivalentes : dois aceitadores M
1
e M
2
so equivalentes se
L(M
1
) = L(M
2
)
isto , se ambos aceitam a mesma linguagem.
Existem geralmente muitos aceitadores para uma dada linguagem, e por isso qualquer
DFA ou NFA tem muitos aceitadores equivalentes.
Os DFA podem-se considerar casos especiais de NFA, em que os caminhos possveis se
reduzem sempre a um. Por isso se uma linguagem aceite por um DFA ento existe um NFA
que tambm a aceita.
E o contrrio? Se uma linguagem aceite por um NFA, existir um DFA que a aceite?
Ser que o no-determinismo eliminou esta possibilidade ?
De facto no eliminou: se uma linguagem aceite por um NFA ento existe um DFA
que tambm a aceita.
Como encontr-lo ? Como converter um NFA num DFA ? Como transformar uma
situao de multi-escolha numa escolha nica ?
Um NFA pode escolher vrios caminhos. Depois de um NFA ler uma cadeia w, no se
sabe precisamente em que estado est, mas sabe-se apenas que est num estado entre um
conjunto Q
w
de estados possveis
Q
w
={q
i
, q
j
, ..., q
k
}.
Em contrapartida depois de um DFA ler a mesma cadeia tem que estar num estado bem
definido, q
w
.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
86
Como encontrar uma correspondncia entre estas duas situaes?
Pode-se conceber um truque simples: cria-se um estado no DFA equivalente ao conjunto
Q
w
, isto , etiqueta-se, no DFA, um estado por Q
w
. Se isso for possvel temos o problema
resolvido.
Mas resultar isso num autmato finito? Qual o nmero mximo de estados do DFA que
se podem obter por este processo?
Se no NFA existem no total Q estados, o nmero mximo de estados que se podem obter
no DFA igual potncia de conjuntos de Q, isto 2
|Q|
, e portanto finito. No caso extremo de
total indeterminismo no NFA, o nmero de estados no DFA ser 2
|Q|
.Se tivermos 6 estados
no NFA teremos 2
6
=64 estados no DFA ! Como geralmente o indeterminismo apenas
parcial, o DFA equivalente tem um nmero de estados substancialmente inferior.
Vejamos um exemplo.
Exemplo 2.6.1.
Construir um DFA que aceite a linguagem L composta pelas cadeias em E={0,1} que
contenham trs 0s seguidos ou trs 1s seguidos , como por exemplo
000, 111, 10100010, 00111101000.
A procura directa deste DFA pode tornar-se numa operao bastante complicada, mesmo
para um projectista experiente. relativamente fcil desenhar um DFA para o caso de 000, ou
para o caso de 111, mas no assim para ambos os casos simultaneamente. No entanto
usando o no determinismo a soluo surge de forma bastante simples.
Primeiro, poderemos desenhar o NFA que aceita as cadeias com 000. O NFA, vendo um
zero, decide uma de duas coisas: ele no o incio de 000 (e neste caso deixa-se ficar onde
est), ele o incio de 000 (e ento transita para o estado seguinte na corrida de trs zeros).
Ser ento:
Figura 2.6.1. Primeira parte do exemplo 2.6.1
1,0
0
0
0
0,1
q
0
q
f
q
1
q
2
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
87
Este NFA aceita todas as cadeias que contenham 000, e s essas. De facto:
- se uma cadeia contm 000, h sempre um caminho aceitador para ela. Por exemplo no
caso da cadeia 1001110110001101010 deixa-se ficar em q
0
at ao nono carcter e depois
transita sucessivamente para q
1
, q
2
e q
f,
ficando a at ao fim da cadeia.
- se uma cadeia no contm 000 no possvel chegar ao estado aceitador. Por exemplo
para a cadeia 1100101001, se o NFA transita com algum dos zeros para o estado q
1
, ele acaba
por morrer porque lhe aparece um 1 em q
1
ou em q
2
e no est a definida qualquer transio
com 1.
Se o autmato no tivesse a possibilidade de ficar em q
0
com 0, avanaria sempre para
q
1
quando lesse um 0 (por exemplo em 1010001). Mas se a seguir aparece 1, ele entra numa
configurao morta, dado que no h sada de q
1
com 1, e por isso terminaria a computao
no aceitando a cadeia 1010001). Ora acontece que a sequncia 000 aparece mais frente e a
cadeia deveria ser aceite. O facto de poder esperar em q
0
, palpitando-lhe que aquele 0 no
ainda da sequncia pretendida, evita esta situao.
Segundo, desenhamos o NFA que aceita as cadeias com 111 (e s essas). Por razes
anlogas ele ser
Figura 2.6.2. Segunda parte do exemplo 2.6.1
Agora, para termos a possibilidade das duas situaes, basta-nos juntar os dois
autmatos, a partir do estado inicial comum, obtendo-se a Fig 2.6.3. O estado final aceitador
pode tambm ser comum (embora este facto no seja obrigatrio).
1
1
1
0,1
q
f
q
0
q
1
q
2
1
0,1
1,0
0
0
0
0,1
q
0
q
3
q
1
q
2
1
1
1
q
4
q
5
1
Figura 2.6.3. Exemplo 2.6.1.
completo
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
88
E temos o NFA procurado.
Vamos agora procurar um DFA equivalente.
Para isso construa-se a tabela de transies:
Tabela 2.6.1. Transies da Fig. 2.6.3
o
N
0 1
q
0
q
0
, q
1
q
0
, q
4
q
1
q
2
-
q
2
q
3
-
q
3
q
3
q
3
q
4
- q
5
q
5
- q
3
A primeira dificuldade deriva do facto de algumas transies terem vrios estados
alternativos de chegada, que so por isso co-alcanveis. O significado dos estados definido
pelo projectista. Assim sendo, nada nos impede de criarmos estados no DFA que
correspondam a conjuntos de estado do NFA. E ser lgico que todos os estados do NFA co-
alcanveis pela mesma transio componham um estado do DFA alcanvel por essa mesma
transio, como na Fig. 2.6.4.
a) no NFA b) no DFA equivalente
Figura 2.6.4. Pormenor do clculo do DFA equivalente: dois estados q
2
e q
3
do NFA co-
alcanveis pela transio a produzem um s estado q
23
no DFA equivalente.
a
a
q
1
q
2
q
3
a
q
1
q
23
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
89
Para definir as transies no DFA, etiquetem-se os seus estados com ndices agrupando
os ndices dos estados do NFA co-alcanveis pelas mesmas transies.
Na Fig. 2.6.3 de q
0
com 0, pode-se ir ou para q
0
ou para q
1
, ou seja para o conjunto {q
0
,
q
1
} Crie-se um estado equivalente a este conjunto. Vamos chamar-lhe q
01
para sabermos a que
corresponde.
De q
0
com 1, pode-se ir ou para q
0
ou para q
4
, ou seja para o conjunto {q
0
, q
4
} Crie-se de
igual modo um estado equivalente a este conjunto, q
04
.
Estes estados q
01
e q
04
vo integrar o DFA. Temos que saber o que se passa neles quando
aparece 1 ou 0. Para isso colocamo-los na primeira coluna da tabela de transies, como
indicado na Tabela 2.6.2..
Tabela 2.6.2. Transies do DFA equivalente.
o 0 1
q
0
{q
0
, q
1
} = q
01
{q
0
, q
4
}= q
04
q
01
q
04
Agora temos que imaginar o seguinte: se o DFA est em q
01
e aparece 0, o que se
passar?
Sabemos que q
01
corresponde do conjunto {q
0
, q
1
} do NFA. E portanto aquela pergunta
equivalente a: se o NFA est ou em q
0
ou em q
1
e aparece um 0, o que se passar?
Se est em q
0
pode ir para q
0
ou para q
1
. Se est em q
1
pode ir para q
2
. Portanto estando
em {q
0
, q
1
} pode ir para {q
0
, q
1
, q
2
}. Crie-se por isso no DFA o estado q
012
.
E se o DFA est em q
01
e aparece 1, o que se passar? Fazendo uma anlise semelhante
conclui-se que estar em q
04
. Neste caso h uma nuance que convm realar: se est em q
1
,
com 1 vai para o vazio, C. Mas {C, q
0
, q
4
}={q
0
, q
4
}.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
90
Nesta segunda etapa surgiu o novo estado do DFA, q
012
, que deve ser colocado na
primeira coluna. q
04
j l estava.
Tabela 2.6.3. Mais transies do DFA equivalente
o 0 1
q
0
{q
0
, q
1
} = q
01
{q
0
, q
4
}= q
04
q
01
{q
0
, q
1
, q
2
}= q
012 {C, q
0
, q
4
}=
q
04
q
012
E agora continua-se a anlise. De q
04
com 0 para onde se vai? E com 1? E de q
012
?
Sempre que aparece um novo estado do DFA (v-se palas etiquetas) tem que se colocar
na primeira coluna na linha seguinte ainda no ocupada.
Termina-se quando s se obtm estados do DFA que j existem na 1 coluna.
Tabela 2.6.4. Todas as transies do DFA equivalente
o 0 1
q
0
{q
0
, q
1
} = q
01
{q
0
, q
4
}= q
04
q
01
{q
0
, q
1
, q
2
}= q
012 {C, q
0
, q
4
}= q
04
q
04
q
01
q
045
q
012
q
0123
q
04
q
045
q
01
q
0345
q
0123
q
0123
q
034
q
0345
q
013
q
0345
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
91
q
013
q
0123
q
034
q
034
q
013
q
0345
Resta-nos identificar o(s) estado(s) aceitador(es) para termos o DFA completamente
definido. O NFA aceita uma cadeia quando existe pelo menos uma computao que leve a um
estado final.
Um autmato, seja DFA, seja NFA, pode ter vrios estados finais aceitadores.
Os estados do DFA, deduzido do NFA, correspondem a conjuntos de estados do NFA. Se
num desses conjuntos existir um estado aceitador (no NFA) ento quer dizer que o estado
correspondente do DFA tambm ser aceitador. De facto para se chegar a esse conjunto de
estados (no NFA), leu-se uma certa cadeia. Se um dos estados do conjunto aceitador, quer
dizer que depois de lida essa cadeia se chegou a um aceitador, e portanto a cadeia aceite
pelo NFA. Para que o DFA seja equivalente, tem tambm que a aceitar, e em consequncia o
novo estado criado no DFA correspondente ao conjunto de estados do DFA tem que ser
aceitador.
Portanto, neste exemplo, sero aceitadores no DFA todos os estado que contenham o
estado q
3
do NFA, ou seja, q
0123
, q
0345
, q
013
, q
034.
A partir da tabela de transies desenha-se o grafo do DFA:
Figura 2.6.4. Autmato determinstico equivalente com vrios estados finais
0
1
0
0 0
1
1
0
1
1
0
0
q
01
q
0
q
012
q
0123
q
04
q
045
1
q
034
q
0345
1
q
013
0
1
0
1
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
92
Depois de o autmato entrar num dos estados aceitadores, apenas pode transitar entre
estados aceitadores e por isso todos os estados aceitadores se podem fundir num s, como no
grafo seguinte. As etiquetas dos estados foram escolhidas de modo sugestivo, indicando como
se chega ao estado (qual ou quais os ltimos caracteres lidos). Excepto para o estado final,
que poderamos etiquetar por 000 ou por 111, ou por ambas.
Figura 2.6.5. Simplificao do grafo da Fig. 2.6.4, com um s estado final
Olhando agora com ateno para o grafo do DFA poderemos ver que ele est de acordo
com as orientaes que vimos para desenhar DFAs no pargrafo 2.3. As etiquetas dos estados
na Fig. 2.6.5 reflectem esse facto.
Exerccio 2.6.1. Calcular o DFA equivalente ao NFA da Figura 2.6.6.
Figura 2.6.6. Exerccio 2.6.1
Exemplo 2.6.2.
Desenhar o DFA que aceita em E={0,1} todas as cadeias que terminam em 10.
Em primeiro lugar desenha-se um NFA, por ser mais simples. Depois procura-se o DFA
equivalente.
1
F
0
0
0
1
1
0,1
1
1
0
0
0 00

1
11
0
0, 1
0, 1
0
1
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
93
O NFA est no estado inicial at que lhe palpita que vm a os dois ltimos caracteres e
que eles sero 10. Logo,
Figura 2.6.7. Exemplo 2.6.2
Vamos agora calcular a tabela de transies do DFA equivalente:
Tabela 2.6.5.Transioes da Fig. 2.6.7
Estado
actual
0 1
0 0 01
01 03 01
03 0C=0 0C=0
O DFA ter 3 estados, os que se obtm na primeira coluna da Tabela 2.6.5.
Figura 2.6.8. O DFA equivalente ao NFA da Fig. 2.6.7.
Exemplo 2.6.3.
Desenhar o DFA que aceita em E={0,1} todas as cadeias em que o 3 smbolo a contar do fim
1. Por exemplo1000101 pertence, mas no 010101011.
Por muito que tenhamos treinado a nossa arte de desenhar DFAs no fcil encontrar de
imediato uma soluo. No entanto no contexto no determinstico simples: imaginemos o
0 1
3
0,1
1
0
0
1
0
01 0
1
0,1
03
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
94
NFA que est a ler a cadeia, no se move at que lhe palpita que o 1 que a vem o
antepenltimo carcter da cadeia e ento avana para o estado aceitador. Teremos ento o
seguinte NFA com trs estados, Fig. 2.6.9.
Figura 2.6.9. NFA do exemplo 2.6.3
Vamos agora calcular o DFA equivalente. Comeamos pela tabela de transies, usando
a tcnica descrita acima, nomeadamente quanto etiquetagem dos estados.
Tabela 2.6.6. Transies do NFA da Fig. 2.6.9.
0 1
0 0 01
01 02 012
02 03 013
012 023 0123
03 0C 0C
013 02C 012C
023 03C 013C
0123 023C 0123C
O DFA ter 9 estados e est desenhado na Fig.2.6.10.
Todos os estados que contenham 3 na sua etiqueta sero aceitadores.
0 1 2
3
0,1
1
0, 1 0, 1
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
95
No seria fcil desenhar directamente no contexto determinstico Compare-se a
simplicidade do NFA com a do DFA. Este caso evidencia de forma clara a utilidade dos
NFAs.
Ser possvel reduzir o nmero de estados aceitadores na Fig. 2.6.10 ?
Caso em que o NFA tem transies-
Se um NFA tem transies-, quando calculamos o DFA equivalente temos que ter
muito cuidado para no cometermos erros.
A figura seguinte representa parte de um NFA. A partir do estado 1 com a, onde
possvel chegar ? V-se imediatamente que ao estado 2. Mas existe tambm uma transio
de 1 para 3, e depois com a transita-se para 4. Portanto partindo de 1 com um simples a, que
o mesmo que a, pode-se chegar a 4. Mais ainda, de 4 para 5 transita-se com . Portanto de 1
at 5 tambm se pode ir com a=a. Por isso a partir de 1 com a chega-se a um elemento do
conjunto {2,3,4,5} e portanto na tabela de transio do DFA equivalente temos que criar o
estado q
2345
.
Figura 2.6.11. NFA com transies-.
0
01 02
03
012
013
023
0
1
0
1
0
1
0
0123
1
0, 1
0
1
0
1
0
1
1
2
3
4
a
a

a
b
b
5

Figura 2.6.10. DFA equivalente


ao NFA da Fig. 2.6.3.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
96
Ao conjunto {2,3,4,5} chama-se o fecho-a (a-closure) do estado 1. Ao conjunto {1,3}
chama-se fecho- ( -closure), sendo composto por todos os estados que se podem alcanar
de 1 com (inclui naturalmente o prprio); pode ter um nmero qualquer de estados,
dependendo do caso, usando transies, at ao nmero total de estados do autmato. Na
tabela de transies, quando calcularmos o DFA equivalente, tem que se ter muita ateno
para com o fecho- de um estado quando estamos a calcular as transies do estado com os
caracteres do alfabeto. Se houver uma transio- a partir do estado inicial no NFA, ento o
estado inicial do DFA equivalente ser o estado composto pelo inicial do NFA mais o fecho-
do estado inicial do NFA.
Exemplo 2.6.4. Seja o autmato anterior com um estado 6 aceitador e uma transio-
do estado inicial para o estado 6, Fig. 2.6.12 . Calcule-se o DFA equivalente. A primeira
tarefa ser vermos qual o estado inicial do DFA. Como se vai de 1 para 6 aceitador com ,
quer isto dizer que o NFA aceita . Ora a nica forma de o DFA tambm aceitar fazendo o
seu estado inicial aceitador. O estado 3 do NFA pode ser alcanado sem consumir caracteres,
ele faz parte do fecho- de 1. Portanto o estado inicial do DFA ser 136 e ser por ele que
iniciaremos a construo da sua tabela de transies.
Figura 2.6.12. Exemplo 2.6.4.
Tabela 2.6.6. Transies da Fig. 2.6.12.
Estado a b
136 245C 4C
245 2C 45C
4 C 46
2C 2C C
45 C 46C
46 C 46C
C C C
1
2
3
4
a
a

a
b
b
5

6
b

Teoria da Computao Captulo 2 . Autmatos Finitos


LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
97
O DFA equivalente ter 7 estados, dos quais dois sero aceitadores: 136 e 46. Fica ao
cuidado do leitor o seu desenho e a identificao da linguagem que ele aceita.
2.7. Reduo do nmero de estados em Autmatos Finitos
Qualquer DFA define uma nica linguagem. Mas uma linguagem no define um nico DFA.
Para uma linguagem existem muitos possveis DFAs, isto , existem muitos DFAs
equivalentes, cujo nmero de estados pode ser bem diferente. Por razes de simplicidade,
importa obter o de menor nmero de estados. Por exemplo se quisermos programar um DFA,
o espao necessrio para computar proporcional ao nmero de estados. Por razes de
eficincia deve-se reduzir o nmero de estados ao mnimo possvel.
Vejamos alguns exemplos simples.
Exemplo 2.7.1
O autmato da Fig. 2.7.1 aceita todas as cadeias no seu alfabeto, porque todos os estados so
aceitadores.
Figura 2.7.1.
Ele tem um equivalente com um s estado:
Figura 2.7.2. Autmato equivalente ao da Fig. 2.7.1
Exemplo 2.7.2.
No autmato DFA seguinte h estados a mais.
a, b
a, b
q
0
q
1
a, b
q
0
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
98
Figura 2.7.3. Exemplo 2.7.2.
Se se chega a q
3
com b quer seja a partir de q
1
quer seja a partir de q
2
, coloca-se a
possibilidade de fundir q
1
com q
2
no estado q
12
.
Figura 2.7.4. DFA equivalente ao da Fig. 2.7.3.
Tm que se introduzir as transies que mantenham a equivalncia com o autmato
original.
No autmato seguinte, Fig. 2.7.2 tambm se podem eliminar alguns estados.
Figura 2.7.5
Em primeiro lugar os dois estados finais podem-se fundir num s, dado que as transies
a partir deles so reflexivas (voltam a eles): seja ele q
34
.
q
0
q
4
b
q
2
a
b
a, b
q
1
a
b a, b
q
3
a
q
0
q
3
b q
12
a
a, b b
a
a
q
0
q
3
b q
2
a
b
b
q
1
a
b
a
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
99
Figura 2.7.6. Simpificao do DFA da Fig. 2.7.5.
Em segundo lugar chega-se a q
34
com b, quer de q
1
, quer de q
2
. Por outro lado de q
1
com
a vai-se para q
2
e de q
2
com a vai-se para q
2
. Se fundirmos q
1
e q
2
em q
12
, mantendo essas
transies, o DFA resultante, Fig. 2.7.7 com apenas 3 estados, equivalente ao inicial.
Figura 2.7.7. DFA final no exemplo 2.7.2
Este procedimento heurstico, baseado na nossa habilidade, pode formalizar-se num
algoritmo de minimizao do nmero de estados de um DFA. Para o seu desenvolvimento
vejamos algumas definies prvias.
Estados indistinguveis
Dois estados p e q dizem-se indistinguveis se:
- se a partir de um deles se chega a um estado aceitador com uma cadeia w , tambm se
chega a um estado aceitador a partir do outro com a mesma cadeia w, formalmente,
o* (p,w) eF o* (q,w)eF, para todas as cadeias w e E*.
e
- se a partir de um deles se chega a um estado no aceitador com uma cadeia x, tambm
se chega a um estado no aceitador a partir do outro com a mesma cadeia x:
o* (p,x) eF o* (q,x)eF, para todas as cadeias x e E*.
q
0
q
34 b
q
2
a
b
a, b
q
1
a
b
a
q
0
q
34
a, b
q
12
a
a, b b
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
100
Num grafo teremos a seguinte situao:
Figura 2.7.8. Os estados p e q so indistinguveis.
Estados distinguveis por uma cadeia
Se existir uma cadeia w tal que de p se chegue a um estado aceitador e de q a um no
aceitador,
o* (p,w) eF o* (q,w )eF
ou tal que de p se chegue a um no aceitador e de q a um aceitador,
o* (p,w) eF o* (q,w )eF
ento os estados p e q so distinguveis pela cadeia w.
Dois estados ou so distinguveis ou so indistinguveis. A indistino tem as
propriedades de uma relao de equivalncia R:
1.p R p (reflexiva)
2. p R q q R p (simtrica)
3. p R q e q R r p R r (transitiva)
Para reduzir a dimenso de um DFA, procuram-se os estados indistinguveis e
combinam-se entre si. A racionalidade desta operao evidente: se so indistinguveis para
que se ho-de ter l ambos?
O algoritmo divide-se em duas etapas:
- primeiro marcam-se os estados distinguveis,
v q
p
u
w
w
v q
p
u
x
x
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
101
- segundo, fundem-se os estados indistinguveis.
Procedimento de marcao dos estados distinguveis
1- Removem-se todos os estados inacessveis (limpeza do DFA). Pode fazer-se
enumerando todos os caminhos simples no grafo (caminhos sem ciclos fechados) que partem
do estado inicial. Um estado acessvel tem que estar num desses caminhos. Se um estado no
est em qualquer caminho, quer dizer que no se pode l chegar a partir do estado inicial, e
portanto inacessvel.
2 Consideram-se todos os pares de estados (p, q). Se p aceitador, peF, e se q no
aceitador, qeF, ento o par (p, q) distinguvel. De facto que maior distino poderia haver
entre dois estados? Marcam-se todos esses pares como distinguveis. Marcam-se os pares, no
os estados individualmente. Um estado individual pode pertencer a um par distinguvel e ao
mesmo tempo a um par indistinguvel.
3 Considere-se um par de estados (p, q). Calculem-se as transies a partir deles para
todos os caracteres do alfabeto, tomados um de cada vez.
Figura 2.7.9. Transies de p e de q com a.
Se houver pelo menos um carcter aeE tal que o par (p
a
, q
a
) resultante dessas transies
seja distinguvel, ento o par (p, q) distinguvel.
Este procedimento faz-se para todos os pares de estados (p, q) em Q.
No fim todos os pares distinguveis esto marcados como tal. Ver a demonstrao por
exemplo em Linz, Teorema 2.3 (pg. 64). Note-se que a marcao para os pares, no para os
estados individualmente.
Depois de se fazer a marcao dos estados distinguveis, particiona-se o conjunto Q dos
estados do DFA num certo nmero de subconjuntos disjuntos Q
1
={q
i
,q
j
,, q
k
},
Q
2
={q
l
,q
m
,, q
n
} , , Q
x
={q
o
,q
p
,, qr} tais que
p
q
p
a
q
a
a
a
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
102
- qualquer estado q pertence a um e s a um deles,
- os estados do mesmo subconjunto so indistinguveis entre si,
- qualquer par de estados, tal que um dos elementos pertence a um dos subconjuntos e
o outro pertence a outro, distinguvel.
Esta partio sempre possvel.
A partir desta partio aplica-se o procedimento seguinte.
Dado o DFA M=(Q,E,o,q
0
,F) calcula-se o equivalente
0
( , , , , ) M Q q F o
. . . . .
= E por:
1 Para cada um dos conjuntos indistinguveis Q
1
, Q
2
, Q
x
cria-se um estado
equivalente etiquetado apropriadamente (a sua etiqueta o conjunto das etiquetas dos estados
do subconjunto, por exemplo para Q
1
ser o estado equivalente q
ijk
.)
2 No autmato original M considera-se a transio o(q
r
, a)=q
p
do estado q
r
para o estado
q
p
. Procuram-se os dois subconjuntos a que pertencem q
r
e q
p
. Traa-se a transio a entre os
estados equivalentes a esses subconjuntos. Isto , se q
r
e Q
1
={q
i
,q
j
,, q
k
}, e q
p
e
Q
2
={q
l
,q
m
,, q
n
} ento desenhar no grafo a transio
... ...
( , )
ij k lm n
q a q o
.
=
3 O estado inicial de
0
, M q
. .
, o que contm a etiqueta 0 do autmato original.
4 O conjunto dos estados aceitadores de , M F
. .
, o conjunto de todos os estados em
cuja etiqueta entra um estado aceitador do DFA original.
Exemplo 2.7.3 .Minimizar o conjunto de estados do DFA da Figura 2.7.10.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
103
Figura 2.7.10. DFA a minimizar.
1 Marcao dos estados distinguveis
Havendo um s estado final, ele distinguvel de todos os outros. Portanto qualquer par que o
contenha distinguvel.
Vamos agora considerar a segunda etapa: ver as transies de cada para com um a e com
um b. Obteremos as duas tabelas seguintes.
Tabela 2.7.1. Transies com a Tabela 2.7.2 Transies com b
. 1 2 3 4 5 6 7
1 2,2 2,4 2,6 2,4 2,6 2,4 2,6
2 4,2 4,4 4,6 4,4 4,6 4,4 4,6
3 6,2 6,4 6,6 6,4 6,6 6,4 6,6
4 4,2 4,4 4,6 4,4 4,6 4,4 4,6
5 6,2 6,4 6,6 6,4 6,6 6,4 6,6
6 4,2 4,4 4,6 4,4 4,6 4,4 4,6
7 6,2 6,4 6,6 6,4 6,6 6,4 6,6
b 1 2 3 4 5 6 7
1 3,3 3,5 3,7 3,5 3,7 3,5 3,7
2 5,3 5,5 5,7 5,5 5,7 5,5 5,7
3 7,3 7,5 7,7 7,5 7,7 7,5 7,7
4 5,3 5,5 5,7 5,5 5,7 5,5 5,7
5 7,3 7,5 7,7 7,5 7,7 7,5 7,7
6 5,3 5,5 5,7 5,5 5,7 5,5 5,7
7 7,3 7,5 7,7 7,5 7,7 7,5 7,7
1
6
b
3
a
b
2
a
b
a
5
b
4
a
a
b
7
a
a
b
b
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
104
Da 1 etapa, nestas duas tabelas todos os pares que contenham o estado 6 devem ser
marcados como distinguveis (colorido), dado que 6 o nico aceitador, excepto o par (6,6)
que indistinguvel.
Os pares que correspondem s clulas sombreadas sero agora marcados distinguveis.
Na tabela de transies com b marcam-se todos os distinguveis com a. Basta faz-lo na
metade superior (ou inferior) da tabela. Neste caso no h nenhum..
Ser o par (1,2) distinguvel ? (1,2) com a d (2,4), (2, 4) com a d (4, 4), nenhum
distinguvel; portanto no se marca. Vai-se ver tabela de b se o par (2,4) distinguvel.
Para o par (3,4): (3,4) com a d (6,4), j marcado e portanto (3,4) marca-se como
distinguvel.
O mesmo para todos os outros pares. Obtm-se a tabela seguinte, em que 1 identifica os
distinguveis.
Tabela 2.7.3. Estados distinguveis (1)e indistinguveis (0)
1 2 3 4 5 6 7
1 0 0 1 0 1 0 1
2 0 0 1 0 1 0 1
3 1 1 0 1 0 1 0
4 0 0 1 0 1 0 1
5 1 1 0 1 0 1 0
6 0 0 1 0 1 0 1
7 1 1 0 1 0 1 0
Agora particiona-se o conjunto dos estados em subconjuntos que obedeam s trs
condies acima enunciadas. No uma tarefa fcil.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
105
O estado 6 s indistinguvel de si prprio, portanto tem que ficar isolado num
subconjunto.
Para os restantes desenhe-se o grafo da propriedade indistinguvel. Os vrtices do grafo
sero os estados. Entre dois estados existir uma aresta se eles pertencerem a um par
indistinguvel, isto , se na ltima tabela a respectiva clula tiver 0. No necessrio desenhar
a aresta reflexiva (do estado para ele mesmo).
Figura 2.7.11. Partio dos estados
bem visvel a formao de dois sub-grafos conexos : {1,2,4}, {3,5,7}.
A partio {1, 2, 4} {3, 5, 7} {6} verifica as condies. O DFA mnimo ter 3 estados.
Figura 2.7.12. o DFA mnimo equivalente ao da Fig. 2.7.10.
As linguagens dos dois autmatos, o original e o reduzido, so equivalentes. Para um
autmato com um elevado nmero de estados, este procedimento manual de inspeco para se
identificarem os pares distinguveis no fcil. No entanto este algoritmo pode programar-se.
Ele tambm conhecido pelo algoritmo de enchimento da tabela (table- filling algorithm, por
exemplo em Hopcroft p.156).
2.8 Um aplicao dos DFA: busca de texto (text search, Hopcroft, 68)
Os autmatos finitos encontram na busca de texto uma aplicao interessante. Como sabemos
a pesquisa de cadeias de caracteres uma das operaes mais executadas na web. Dado um
6
357
b
b
a
b a
a
124
1 2 3
4 5
7
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
106
conjunto de palavras, que poderemos chamar palavras chave, queremos encontrar todas as
ocorrncias delas num certo texto. Os autmatos finitos no determinsticos permitem faz-lo
de um modo expedito e simples. Para uma palavra chave, por exemplo chave, desenha-se um
autmato com:
- um estado inicial que transita para si prprio com todo e qualquer carcter do alfabeto,
- uma corrida de estados aos quais se chega depois de ler sucessivamente um carcter da
palavra chave
Figura 2.8.1. NFA para busca da palavra chave.
Para se implementar o NFA, pode-se escrever um programa que simula o seu
funcionamento, calculando os estados em que est aps ler um carcter. Sempre que h uma
escolha, faz-se uma ou vrias rplicas do NFA.
no entanto mais prtico calcular o DFA equivalente e ento simul-lo. Para isso aplica-se
a tcnica padro: constri-se a tabela de transies e desenha-se o grafo depois.
Se o alfabeto for composto pelos 26 caracteres do portugus (a b c d e f g h i j k l m n o p q
r s t u v w x y z), teremos muitas etiquetas para as arestas do autmato. Para simplificar a sua
escrita poderemos usar a notao E-a-e querendo dizer todos os caracteres do alfabeto menos
a e e. Esta notao aceite pelo DEM (Deus Ex-Mquina).
Assim sendo, o DFA equivalente ao NFA da Fig. 2.8.1 tem o aspecto da Fig. 2.8.2. Fica ao
cuidado do leitor verificar, construtivamente, que assim .
1 2 3 4
6
E
c
h a
5
v e
1 2 3 4
6
E-c
c
h a
5
v e
E-h
E-a
E-a
E-e
E-v
E-c
c
Figura 2.8.2. DFA
equivalente ao NFA
da Fig. 2.8.1.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
107
Exerccio 2.8.1
O seguinte NFA encontra num texto as palavras doce e mel. Desenhar o o DFA equivalente. E
= { a, b, c, ...., z}.
Desenhar o DFA equivalente.
Exerccio 2.8.2.
Desenhar o DFA que aceita as palavras amarga e carta. E = { a, b, c, ...., z}.
2.9 Autmatos finitos transdutores
Os DFA e NFA que estudmos at aqui so aceitadores e no tm sada. Apenas lem cadeias,
reconhecendo-as ou no como pertencentes a uma dada linguagem.
H outros tipos de autmatos, como vimos j no Cap. 1, que tm um registo de sada, cujo
contedo pode variar conforme a evoluo da configurao do autmato. So os transdutores,
de que se conhecem dois tipos: as mquinas de Mealy e de More. Ambos se podem enquadrar
no esquema geral que vimos no Cap. 1 e aqui se reproduz na Fig. 2.9.1
Unidade de Controlo
q
k
Ficheiro de entrada
M
e
m

r
i
a
S
Ficheiro de sada
0
1 2 3
5 6
4
7
E
d
c e
m
e l
o
Figura 2.9.1. Esquema
geral da um autmato
finito
Figura 2.8.3 NFA para
o exemplo 2.8.1.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
108
2.9.1 Mquinas de Mealy
Numa mquina de Mealy a sada depende do estado interno do autmato actual e da entrada
actual
y
k
= f (s
k
, q
k
)
Definio 2.9.1 Mquina de Mealy.
Uma Mquina de Mealy definida pelo sexteto (agora h mais um msico )
M = (Q ,E ,A, o , , q
0
)
em que
Q o conjunto finito de estados internos,
E o alfabeto de entrada (conjunto finito de caracteres),
A o alfabeto de sada (conjunto finito de caracteres),
o : Q xE Q a funo de transio de estado,
: Q xE A a funo de sada,
q
0
e Q o estado inicial
Comparando com a definio de autmato aceitador verificamos que no h aqui estados
aceitadores (F), mas h em contrapartida um alfabeto de sada e uma funo de sada.
Tal como nos aceitadores, tambm um transdutor representado por um grafo. A
etiquetagem dos estados e das arestas no entanto diferente. Numa mquina de Mealy usa-se
a notao da figura seguinte:
Figura 2.9.2 Notao da Mquina de Mealy
Que tem a seguinte interpretao: estando a mquina no estado q
i
e lendo 1 na entrada,
q
i
q
j
Entrada/Sada
1/0
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
109
- transita para o estado q
j
- envia 0 para a sada.
Exemplo 2.9.1
Considere-se a mquina de Mealy da Fig.2.9.3
Figura 2.9.3. Mquina de Mealy do exemplo 2.9.1.
Isto , deslocou a cadeia para a direita uma casa (shift right).
As mquinas de Mealy podem implementar-se por circuitos lgicos, e funcionam em modo
assncrono: logo que a entrada variar pode variar a sada.
2.9.2. Mquinas de Moore
As mquinas de Moore distinguem-se das de Mealy pelo facto de a sua sada depender apenas
do estado actual
y
k
= f (q
k
)
q
0
q
1
0/
q
2
1/
0/0
0/1
1/0
1/1
Figura 2..9.4. Esquema geral de uma mquina de Mealy.
( em http://www2.ele.ufes.br/~ailson/digital2/cld/chapter8/chapter08.doc4.html)
Se lhe dermos a ler a cadeia 10111 ela faz:
- l 1 e escreve na sada transitando
para o estado q
1
,
- l 0, escreve 1, passando a q
2
- l 1, escreve 0, passa a q
1
,
- l 1, escreve 1, mantm-se em q
1
,
- l 1, escreve 1, mantm-se em q
1
No fim da leitura est em q
1
e escreveu na
sada 1011.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
110
isto , no dependem da entrada actual.
Definio 2.9.2. Mquina de Moore.
Uma Mquina de Moore definida pelo sexteto
M = (Q ,E ,A, o , , q
0
)
Sendo
Q o conjunto finito de estados internos,
E o alfabeto de entrada (conjunto finito de caracteres),
A o alfabeto de sada (conjunto finito de caracteres),
o : Q xE Q a funo de transio de estado,
: Q A a funo de sada,
q
0
e Q o estado inicial.
No seu grafo usa-se a notao
Figura 2.9.5.Notao das Mquinas de Moore.
significando que quando entra no estado q
i
escreve 1 na sada, depois com 1 na entrada
transita para q
j
e escreva 0 na sada.
Exemplo 2.9.2
A Mquina de Moore da Fig. 2.9.6 faz, tal como a anterior, o deslocamento direita da
entrada que se lhe fornece.
q
i
/1
Estado/Sada
q
j
/0
Entrada
1
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
111
A mquina de Moore escreve na sada logo aps transitar de estado. Por isso a sua
implementao por hardware faz-se com ilustrado na figura seguinte. Trata-se de uma
mquina sncrona (as mudanas na sada so sincronizadas com as mudanas de estado).
Figura 2.9.7. Esquema geral da Mquina de Moore (de
http://www2.ele.ufes.br/~ailson/digital2/cld/chapter8/chapter08.doc4.html).
Estes dois exemplos indiciam que existe equivalncia entre as mquinas de Mealy e de
Moore: dada uma mquina de Mealy possvel encontrar uma mquina de Moore que, para as
mesmas entradas, d as mesmas sadas. E vice-versa. (Ignorando a sada do estado inicial na
mquina de Moore).
A de Moore equivalente tem em geral um maior nmero de estados.
As mquinas de Mealy e de Moore so os cavalos de batalha no projecto de circuitos
lgicos complexos. Existe at software que simula estas mquinas e gera o circuito lgico a
partir do autmato desenhado com um grafo (ver por ex.
http://www.seas.upenn.edu/~ee201/foundation/foundation_impl4.html ou
http://www.xilinx.com/univ/xse42.html ).
0/
0
1
0
1/
2/
3/1
4/1
5/0
6/0
1
1
0
1
0
0
1
0
0
1
1
D-se-lhe 1110101, estando no estado 0
- l 1, passa a 1 escreve
- l 1, passa a 3, escreve 1
- l 1, mantm 3, escreve 1
- l 0, passa a 4, escreve 1
- l 1, passa a 5, escreve 0
- l 0, passa a 4, escreve 1
- l 1, passa a 5, escreve 0
Portanto escreveu 111010.
Figura 2.9.6
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
112
Bibliografia.
An Introduction to Formal Languages and Automata, Peter Linz, 3rd Ed., Jones and Bartelett
Computer Science, 2001
Models of Computation and Formal Languages, R. Gregory Taylor, Oxford University Press,
1998.
Introduction to Automata Theory, Languages and Computation, 2nd Ed., John Hopcroft,
Rajeev Motwani, Jeffrey Ullman, Addison Wesley, 2001.
Elements for the Theory of Computation, Harry Lewis and Christos Papadimitriou, 2nd Ed.,
Prentice Hall, 1998.
Introduction to the Theory of Computation, Michael Sipser, PWS Publishing Co, 1997.
G. H. Mealy, A Method for Synthesizing Sequential Circuits, Bell System Tech. J. vol 34, pp.
10451079, Sept 1955.
Apndice . O software JFLAP (livre) para desenho e simulao de autmatos.
http://www.cs.duke.edu/csed/jflap
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
113
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho
114
Livre: This work is licensed under a Creative Commons Attribution-NonCommercial-
ShareAlike 2.5 License.
Tem vrias outras funcionalidades muito teis em captulos posteriores (equivalncia de
autmatos, gramticas, etc.).
O software DEM- Deus Ex-Maquina (tambm para a simulao de autmatos) est
disponvel na pgina da cadeira.

Anda mungkin juga menyukai