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
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
a
b
b
5
6
b
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.