2. automatosfinitos_apont
TRANSCRIPT
-
7/21/2019 2. AutomatosFinitos_Apont
1/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
-
7/21/2019 2. AutomatosFinitos_Apont
2/72
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 44
-
7/21/2019 2. AutomatosFinitos_Apont
3/72
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 decombinao dos caracteres do alfabeto.
Por exemplo a partir do alfabeto = {a, b} e usando a notao de conjuntos poderemos
definir as linguagensL1 = { anb
m | n,m >= 0 }a que pertencem as cadeias : ,aabbbbb, aaaa,
bbbb, ou a linguagem L2 = { anb
n| n >= 0 } a que pertencem as cadeias: ,ab,aabb,
aaabbb, aaaabbbb, ou ainda L3 = {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.
-
7/21/2019 2. AutomatosFinitos_Apont
4/72
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.
LinguagensL
Gramticas GGeram as cadeias de L
AutmatosReconhecem as cadeias
deL
-
7/21/2019 2. AutomatosFinitos_Apont
5/72
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
={0,1}.
Figura 2.2.1 Grafo de um aceitador determinstico.
Vejamos como funciona.
O autmato est no estado inicial, q0, 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 q0 e lendo 1, transita para q1. Estando em q2 e lendo 1, transita para q2, isto , fica
onde est. Lendo agora 0, estando em q1, transita para q2. Lendo depois 0 transita para q3 e afica, porque no h mais nada para ler.
O estado q1 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 q0 e aparece um 1, vai para o aceitador; se estiver em q1 e aparece um 1, mantm-se no
aceitador. Se estiver em q2 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.
q0 q1q2
0
1
10
0
1
Incio
-
7/21/2019 2. AutomatosFinitos_Apont
6/72
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 q2. 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.
q0 q1q2
0
1
10
0,1
Incio
-
7/21/2019 2. AutomatosFinitos_Apont
7/72
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,,, q0, F)
em que : Q: o conjunto finito de estados internos
: alfabeto de entrada (conjunto finito de caracteres)
: Qx Q a funo total chamada funo de transio
q0Q 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 Qx.
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 inicialF), teremosP, 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 estadoA.
Figura 2.2.3 Grafo do interruptor do Cap. 1.
Aplicando-lhe a definio 2.1 v-se que
F A
P
P
-
7/21/2019 2. AutomatosFinitos_Apont
8/72
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 50
Q, conjunto de estados internos: {F,A}
, alfabeto de entrada: {P}
, funo de transio:FPA; APF
q0 , 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}
, alfabeto de entrada: {a,b}
, funo de transio: 1 a 2; 1 b 4, 2 b 3, etc.
q0 , 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
-
7/21/2019 2. AutomatosFinitos_Apont
9/72
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 estadoactual
e a entradaactual
o estadoseguinte 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.
-
7/21/2019 2. AutomatosFinitos_Apont
10/72
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. Htrs tipos de vrtices, indicados na Tabela
2.2.2., ao lado
Smbolo Significado
Estado normal
Estado inicial
Estadoaceitador (oufinal)
Aresta
cadeia de entrada a a b b a b
q0
q1q2
estado seguinte,movida,
smbolo na sada(caso a tenha)
carcter de entradaestado actual
[*] carcter
q0
qf
qi
-
7/21/2019 2. AutomatosFinitos_Apont
11/72
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 =
{0,1}. Lendo com ateno as etiquetas das arestas pode-se escrever a seguinte tabela detransies. O DFA pode-se assim definir formalmente como
M= (Q, S,, ,q0,F) com
Q = {q0,q1,q2},= {0,1},F= {q2} e 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
1q2
0
0
1
q1q0
1
Estados
Entradas
0 1
q0
q1
q2
q1 q0
q2
q0q1
q0
-
7/21/2019 2. AutomatosFinitos_Apont
12/72
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 q1 com um 0, ou seja, com (****)0.
Chega-se a q1 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 linguagemL 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 queL 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 q0 q1
0 01
1
Incio q0 q1
0 1
1
0
-
7/21/2019 2. AutomatosFinitos_Apont
13/72
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 = ({q0, q1, q2}, {a,b},, q0, {q2}) cuja funo de transio a seguinte:
(q0, a) = q
1 Tabela de transies
(q0, b) = q2
(q1, a) = q
0
(q1, b) = q
2
(q2, a) = q2
(q2, b) = q2 Nas transies aparecem trs estados q1, q2 e q3. 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
q0 q1 q2
q1 q0 q2
q2 q2 q2
a
a
a,b
q0q1
bb
q2q2
q0 q1 q21 0
0 0,11
-
7/21/2019 2. AutomatosFinitos_Apont
14/72
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
q2. Se estiver em q1 e aparece um b, transita para q2 ; e se estiver em q2 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, *
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 deum conjunto de caracteres ou de uma cadeia completa.
Pode-se estender a noo de transio com esse objectivo. Em vez de escreve-se *,
em que o asterisco quer dizer aps um certo nmero de transies.
A funo de transio estendida assim definida por
*: Q*Q
a
a,b
b
q2q2
q0
-
7/21/2019 2. AutomatosFinitos_Apont
15/72
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
(q0, a) = q1 e (q1, b) = q2 ento *(q0, ab)=q2
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)*(q,)= q
(ii) *(q,wa)=(* (q, w), a)
para todo o qQ, w*, a.
Para o exemplo anterior teremos :
* (q0, ab)=(* (q0, a), b)
*(q0, a)=* (q0, a)=(*(q0,), a)=(q0, a)=q1
*(q0, ab)=( q1, b)=q2
q0 q1 q2a b
a) Funo de transio
q0 q2ab
*
b) Funo de transio estendida
-
7/21/2019 2. AutomatosFinitos_Apont
16/72
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 linguagemL aceite (ou reconhecida) por um DFA M=(Q,,, q0, F) o conjunto de todas
as cadeias em aceites por M, i.e.,
L(M) = {w* : *(q0, w)F}
A funo de transio e * 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 *, aceitando-as ou no.
Quando no aceita uma cadeia, pra num estado no aceitador. O conjunto das cadeiasem que isso se verifica constitui o complemento da linguagem L(M), que se pode definir
formalmente por
Complem(L(M)) = {w* : *(q0, w)F}
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
q0
a,b
q1
a,b
a
b
q0
q1
-
7/21/2019 2. AutomatosFinitos_Apont
17/72
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 Maceita uma linguagemL(M), ento o complemento de L
ser reconhecida pelo autmato que se obtm de Minvertendo 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 expertisepara 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 ={0,1}, aceite todas as cadeias com um nmero
mparde 1s.
-
7/21/2019 2. AutomatosFinitos_Apont
18/72
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 emPe 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: (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 emP. Logo (P,0)=P. Temos ento, para j,
IP
-
7/21/2019 2. AutomatosFinitos_Apont
19/72
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 (I,1)=P. Pela
mesma razo de cima, (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 issoP 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.
.
PI
1
0
PI
10
1
0
IP
10
1
0
Figura 2.3.4. Autmato deum nmero par de 1s.
Notem-se as semelhanas ediferenas relativamente aoanterior
-
7/21/2019 2. AutomatosFinitos_Apont
20/72
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
={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 ={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.
IP
01
0
1
PI
01
0
1
-
7/21/2019 2. AutomatosFinitos_Apont
21/72
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 oII.
Figura 2.3.6. Os estados necessrios para o exemplo 2.3.6.
Se o autmato est emPP porque leu at ao momento um nmero par de 0s e umnmero 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 emPP, 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 paraPI. Podemos ento desenhar as arestas que partem dePP.
Se o DFA est emPI(par 0s mpar 1s) , se l 1 passa aPPe se l 0 passa aII.
II
PP PI
IP
II
PP PI
IP
1
0
II
PP PI
IP
1
00
1
Figura 2.3.7. Transies a partirdePP
Figura 2.3.8. Transies a partirdePI
-
7/21/2019 2. AutomatosFinitos_Apont
22/72
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 estadoinicial (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 nmeropar 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
00
1
0 0
1
1
IP
PP PI
II
1
0
0
1
00
1
1
Figura 2.3.9. Grafo completo doexemplo 2.3.2.
Figura 2.3.10. Grafo completodo exemplo 2.3.3.
-
7/21/2019 2. AutomatosFinitos_Apont
23/72
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 ={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
00
1
0 0
1
1
II
0 1 2a a a 3
Figura 2.3.11. Grafo do DFAaceitador deIIou deIP
-
7/21/2019 2. AutomatosFinitos_Apont
24/72
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 2a a a 3
b a,b
0 1 2a a a 3
b a,b
b
b
-
7/21/2019 2. AutomatosFinitos_Apont
25/72
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 apor 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 2b b b 4
a a,b
aa
3b
a
-
7/21/2019 2. AutomatosFinitos_Apont
26/72
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 oucorridas de trs ou mais bs
a b
0
1a 2aa a 3a
1b 2b
b
b b 3b
a
a b
0
1a 2aa a 3a
1b 2b
b
b b 3b
a
a b
b b
a b
0
1a 2aa a 3a
1b 2b
b
b b 3b
a
bba
a
Figura 2.3.16. A caminhoda soluo do exemplo
2.3.4
Figura 2.3.17. A caminhoda soluo do exemplo
2.3.4
-
7/21/2019 2. AutomatosFinitos_Apont
27/72
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 doexemplo 2.2.4.
-
7/21/2019 2. AutomatosFinitos_Apont
28/72
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 npassos 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, ={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
-
7/21/2019 2. AutomatosFinitos_Apont
29/72
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. Nestecaso teremos a Fig. 2.3.23.
0 1
0
1
0 1
0
1
1
0
Figura 2.3.21. Incio daconstruo do DFA contador emmdulo 2
Figura 2.3.22. Continuao daconstruo do DFA contador em
mdulo 2
-
7/21/2019 2. AutomatosFinitos_Apont
30/72
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 72
Figura 2.3.23. DFA da linguagemL(M)={w{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 emprincpio 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
23
0
1
01
Figura 2.3.24. Construo doDFA contador em mdulo 4.
-
7/21/2019 2. AutomatosFinitos_Apont
31/72
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
23
0
1
0
1
1
0
01
0
1 2
3
4
5
6
0
0
11
01
Figura 2.3.25. DFA contador em mdulo 4.
Figura 2.3.26. Construo doDFA contador em mdulo 7.
-
7/21/2019 2. AutomatosFinitos_Apont
32/72
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
11
01
0
0
1
0
101
0
1 2
3
4
5
6
0
0
11
01
0
0
1
0
1
Figura 2.3.27. Continuao daconstruo do DFA contador
em mdulo 7.
-
7/21/2019 2. AutomatosFinitos_Apont
33/72
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 funode 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 ={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 linguagemL diz-se regular se e s se existir um DFA Mque a reconhea, ou seja,
L=L(M)
A famlia das linguagens regulares composta por todas as linguagens que so aceites
por algum DFA.
1a
a,b
b
0
-
7/21/2019 2. AutomatosFinitos_Apont
34/72
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 = {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 L(M)
10101000, 111100010
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 caminhosalternativos, 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.
-
7/21/2019 2. AutomatosFinitos_Apont
35/72
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,,, q0, F)
em que a funo de transio definida por
: Q({}) 2Q
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 a potncia 2Q do conjunto Q, e no Q, precisamente porque o
resultado de pode ser no limite um qualquer subconjunto de Q. A potncia 2Q de um
conjunto composta por todos os seus subconjuntos possveis, incluindo o vazio.
2- O conjunto (qi, a) pode ser vazio, significando que no h qualquer transio nesta
situao. No grafo no h uma aresta partindo de qi com o smbolo a. No obrigatrio que
exista uma aresta a partir de qipara cada um dos smbolos do alfabeto.
a
a
Figura 2.5.1 Parte de umautmato finito com doiscaminhos alternativos paraa mesma leitura na entrada.
-
7/21/2019 2. AutomatosFinitos_Apont
36/72
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 78
3- tambm pode ser argumento de , 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 (q1, a) = {q2, q3} s pode existir num NFA,
dado que h dois caminhos alternativos: de q1 lendo a ou se transita para q2 ou se transita para
q3. 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 qi depois de ler o prefixo aba da cadeia ababb.
Lendo agora o carcter b o autmato transita par o estado qj.
a
a
q1 q2
q3
qi qjb
Figura 2.5.2. Grafo da transio(q1, a) = {q2, q3}
Figura 2.5.3. Grafo (NFA) da transio(qi, b) = qj
-
7/21/2019 2. AutomatosFinitos_Apont
37/72
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 qipara ele mesmo.
O mesmo ir depois acontecer em qj . 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 NFAchega a um estado q1, da figura seguinte, e se lhe apresenta de seguida o carcter b. O NFA
tem dois caminhos alternativos: ou consome b e vai para q2, ou no consome b (consome
que est implcito na cadeia aabab, aabab) e vai para q3.
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.
qi qjb
q1
b q2
q3
aabab
aabab
aabab
Figura 2.5.4. Grafo (NFA) da transio(qi, b) = qj , com explicitao (em relao
ao da Fig. 2.5.3) das transies com .
Figura 2.5.5.
-
7/21/2019 2. AutomatosFinitos_Apont
38/72
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. Casonenhum 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 nmerode configuraes vai aumentado em cada ramificao da rvore supra. Cada configurao est
aceita ou rejeita
Computaodeterminstica
aceita
Computao nodeterminstica
-
7/21/2019 2. AutomatosFinitos_Apont
39/72
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 *
Tal como no caso do DFA, tambm num NFA se pode introduzir o conceito de funo de
transio estendida *. Ela resulta da leitura de uma cadeia w que o seu segundo argumento
(em vez de um carcter),
* (qi, w) = Qj
sendo Qj o conjunto de todos os estados possveis do autmato que podem ser alcanados a
partir de qi e pela leitura de w. Isto * (qi, w) contm o estado qj se e s se existir um
caminho no grafo de transies desde qi at qj com etiqueta w, para todos os qi, qj Q e
w*, como na Fig. 2.5.7.
Definio 2.5.2. Linguagem aceite por um NFA
A linguagemL aceite pelo NFA M= (Q,, , q0, F) definida como o conjunto de todas as
cadeias w que levem o autmato a um estado final aceitador, ou seja,
L(M) = {w* :*(q0, w)F }
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:
qi qjw
Figura 2.5.7.
-
7/21/2019 2. AutomatosFinitos_Apont
40/72
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 82
- de q1partem duas arestas etiquetadas por 0
- de q0parte uma aresta etiquetada por
- de q2 no definida qualquer transio, (q2, 0) =
- existe sempre a transio (qi,) = { qi}, para todo o i, mesmo se no desenhada.
Figura 2.5.8. Um aceitador no-determinstico
Se escrevermos todas as transies possveis, teremos:
(q0, 1) = {q1}
(q0, 0) =
(q1, 0) = {q0, q2}
(q1, 1) = {q2}
(q1,) = {q1}
(q0,) = { q0, q2}
(q2, 0) =
(q2, 1) =
(q2,) = {q2}
O autmato aceita:
10, porque dos dois estados alcanados um final.
q1 q2q0
0
1
0, 1
-
7/21/2019 2. AutomatosFinitos_Apont
41/72
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 q2. Como no est definida a transio (q2, 0), obtm-se uma
configurao morta (dead configuration), em que se transita para o estado vazio, . Mais
formalmente
* (q0, 110)=.
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 ={a}. Ele no-determinsticoporque (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?
q1q3
q5
a
a
a a
a
a
q2
q0
q4
-
7/21/2019 2. AutomatosFinitos_Apont
42/72
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, , a2n, n1
O conjunto das duas, ou seja a unio das duas, d a linguagem aceite pelo autmato
L(M) = {a3} {a2n: n1}
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 {a3}{a2n : n1}.
- 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.
-
7/21/2019 2. AutomatosFinitos_Apont
43/72
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 M1 e M2 so equivalentes se
L(M1) =L(M2)
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 Qw de estados possveis
Qw={qi, qj, ..., qk}.
Em contrapartida depois de um DFA ler a mesma cadeia tem que estar num estado bemdefinido, qw.
-
7/21/2019 2. AutomatosFinitos_Apont
44/72
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
Qw, isto , etiqueta-se, no DFA, um estado por Qw. 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 26=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 ={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
q0
qf
q1q2
-
7/21/2019 2. AutomatosFinitos_Apont
45/72
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 q0 at ao nono carcter e depois
transita sucessivamente para q1, q2 e qf, 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 q1, ele acaba
por morrer porque lhe aparece um 1 em q1 ou em q2 e no est a definida qualquer transio
com 1.
Se o autmato no tivesse a possibilidade de ficar em q0 com 0, avanaria sempre para
q1 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 q1 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 q0, 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).
11 1
0,1
qf
q0
q1 q2
1
0,1
1,0
0
0
0
0,1
q0
q3
q1q2
1
1 1q4 q5
1
Figura 2.6.3. Exemplo 2.6.1.completo
-
7/21/2019 2. AutomatosFinitos_Apont
46/72
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
N 0 1
q0 q0, q1 q0, q4
q1 q2 -
q2 q3 -
q3 q3 q3
q4 - q5
q5 - q3
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 q2 e q3 do NFA co-alcanveis pela transio aproduzem um s estado q23 no DFA equivalente.
a
a
q1 q2
q3
a
q1 q23
-
7/21/2019 2. AutomatosFinitos_Apont
47/72
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 q0 com 0, pode-se ir ou para q0 ou para q1, ou seja para o conjunto {q0,
q1} Crie-se um estado equivalente a este conjunto. Vamos chamar-lhe q01para sabermos a que
corresponde.
De q0 com 1, pode-se ir ou para q0 ou para q4, ou seja para o conjunto {q0, q4} Crie-se de
igual modo um estado equivalente a este conjunto, q04.
Estes estados q01 e q04vo 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.
0 1
q0 {q0, q1} = q01 {q0, q4}= q04
q01
q04
Agora temos que imaginar o seguinte: se o DFA est em q01 e aparece 0, o que se
passar?
Sabemos que q01
corresponde do conjunto {q0, q
1} do NFA. E portanto aquela pergunta
equivalente a: se o NFA est ou em q0 ou em q1 e aparece um 0, o que se passar?
Se est em q0pode ir para q0 ou para q1. Se est em q1pode ir para q2. Portanto estando
em {q0, q1} pode ir para {q0, q1, q2}. Crie-se por isso no DFA o estado q012.
E se o DFA est em q01 e aparece 1, o que se passar? Fazendo uma anlise semelhante
conclui-se que estar em q04. Neste caso h uma nuance que convm realar: se est em q1,
com 1 vai para o vazio,
.Mas{
, q0, q4}={q0, q4}.
-
7/21/2019 2. AutomatosFinitos_Apont
48/72
-
7/21/2019 2. AutomatosFinitos_Apont
49/72
-
7/21/2019 2. AutomatosFinitos_Apont
50/72
-
7/21/2019 2. AutomatosFinitos_Apont
51/72
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
Estadoactual
0 1
0 0 01
01 03 01
03 0=0 0=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 ={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 0010
1 0,1
03
-
7/21/2019 2. AutomatosFinitos_Apont
52/72
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 0 0
013 02 012
023 03 013
0123 023 0123
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
-
7/21/2019 2. AutomatosFinitos_Apont
53/72
-
7/21/2019 2. AutomatosFinitos_Apont
54/72
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. Natabela 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 245 4
245 2 45
4 46
2 2
45 46
46 46
1
2
3
4
a
a
ab
b
5
6
b
-
7/21/2019 2. AutomatosFinitos_Apont
55/72
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
q0 q1
a, b
q0
-
7/21/2019 2. AutomatosFinitos_Apont
56/72
-
7/21/2019 2. AutomatosFinitos_Apont
57/72
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 q34 com b, quer de q1, quer de q2. Por outro lado de q1 com
a vai-se para q2 e de q2 com a vai-se para q2. Se fundirmos q1 e q2 em q12, 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 numalgoritmo de minimizao do nmero de estados de um DFA. Para o seu desenvolvimento
vejamos algumas definies prvias.
Estados indistinguveis
Dois estadosp 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,
* (p,w)F * (q,w)F, para todas as cadeias w *.
e
- se a partir de um deles se chega a um estado no aceitador com uma cadeiax, tambm
se chega a um estado no aceitador a partir do outro com a mesma cadeiax:
* (p,x)F * (q,x)F, para todas as cadeiasx *.
q0
q34b q2
a
b
a, b
q1a
b
a
q0q34
a, bq12
a
a, b b
-
7/21/2019 2. AutomatosFinitos_Apont
58/72
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 estadosp 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,
* (p,w)F * (q,w )F
ou tal que dep se chegue a um no aceitador e de q a um aceitador,
* (p,w)F * (q,w )F
ento os estadosp 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 Rp (reflexiva)
2.p Rqq Rp (simtrica)
3.p Rq e q Rr p Rr (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
pu
w
wv q
pu x
x
-
7/21/2019 2. AutomatosFinitos_Apont
59/72
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-seenumerando 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, pF, e se q no
aceitador, qF, 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 dep e de q com a.
Se houver pelo menos um carcter a tal que o par (pa, qa) 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 Q1={qi,qj,, qk},Q2={ql,qm,, qn} , , Qx={qo,qp,, qr} tais que
p
q
pa
qa
a
a
-
7/21/2019 2. AutomatosFinitos_Apont
60/72
-
7/21/2019 2. AutomatosFinitos_Apont
61/72
-
7/21/2019 2. AutomatosFinitos_Apont
62/72
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.
-
7/21/2019 2. AutomatosFinitos_Apont
63/72
-
7/21/2019 2. AutomatosFinitos_Apont
64/72
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-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
c h a
5
v e
1 2 3 4 6
-c
c h a
5v e
-h
-a
-a
-e
-v
-c
c
Figura 2.8.2. DFAequivalente ao NFA
da Fig. 2.8.1.
-
7/21/2019 2. AutomatosFinitos_Apont
65/72
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.
= { a, b, c, ...., z}.
Desenhar o DFA equivalente.
Exerccio 2.8.2.
Desenhar o DFA que aceita as palavras amarga e carta.= { 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
qk
Ficheiro de entrada
Memria
Ficheiro de sada
0
1 2 3
5 6
4
7
dc e
m
e l
o
Figura 2.9.1. Esquemageral da um autmato
finito
Figura 2.8.3 NFA parao exemplo 2.8.1.
-
7/21/2019 2. AutomatosFinitos_Apont
66/72
-
7/21/2019 2. AutomatosFinitos_Apont
67/72
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2009/@ADC Documento de trabalho 109
- transita para o estado qj
- 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
yk=f(qk)
q0
q1
0/q2
1/
0/0
0/11/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 q1,- l 0, escreve 1, passando a q2- l 1, escreve 0, passa a q1,- l 1, escreve 1, mantm-se em q1,
- l 1, escreve 1, mantm-se em q1
No fim da leitura est em q1 e escreveu nasada 1011.
-
7/21/2019 2. AutomatosFinitos_Apont
68/72
-
7/21/2019 2. AutomatosFinitos_Apont
69/72
-
7/21/2019 2. AutomatosFinitos_Apont
70/72
-
7/21/2019 2. AutomatosFinitos_Apont
71/72
-
7/21/2019 2. AutomatosFinitos_Apont
72/72