Agora para se saber se 25 o cdigo de um palndromo, basta calcular o valor da
funo caracterstica _(25) que 1, e assim se conclui que aba um palndromo.
Claro que para cada caso necessrio desenvolver o engenho para encontrar a forma
de implementar o princpio da inter-redutibilidade. O que importa saber que sempre
possvel encontrar uma soluo.
Mas este princpio muito importante: ele permite que se use o problema da
identificao de linguagens em teoria da computao como representativo dos trs
paradigmas. Por isso o que usaremos ao longo da cadeira.
Teoria da Computao Captulo 1 Introduo e Definies Bsicas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
42
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.
Anexo 1. Tabela de nmeros primos
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139
149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281
283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 389 397 401 409 419 421 431 433 439 443
449 457 461 463 467 479 487 491 499 503 509 521 523 541 547 557 563 569 571 577 587 593 599 601 607 613
617 619 631 641 643 647 653 659 661 673 677 683 691 701 709 719 727 733 739 743 751 757 761 769 773 787
797 809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907 911 919 929 937 941 947 953 967 971
977 983 991 997 1009 1013 1019 1021 1031 1033 1039 1049 1051 1061 1063 1069 1087 1091 1093 1097 1103
1109 1117 1123 1129 1151 1153 1163 1171 1181 1187 1193 1201 1213 1217 1223 1229 1231 1237 1249 1259
1277 1279 1283 1289 1291 1297 1301 1303 1307 1319 1321 1327 1361 1367 1373 1381 1399 1409 1423 1427
1429 1433 1439 1447 1451 1453 1459 1471 1481 1483 1487 1489 1493 1499 1511 1523 1531 1543 1549 1553
1559 1567 1571 1579 1583 1597 1601 1607 1609 1613 1619 1621 1627 1637 1657 1663 1667 1669 1693 1697
1699 1709 1721 1723 1733 1741 1747 1753 1759 1777 1783 1787 1789 1801 1811 1823 1831 1847 1861 1867
1871 1873 1877 1879 1889 1901 1907 1913 1931 1933 1949 1951 1973 1979 1987 1993 1997 1999 2003 2011
2017 2027 2029 2039 2053 2063 2069 2081 2083 2087 2089 2099 2111 2113 2129 2131 2137 2141 2143 2153
2161 2179 2203 2207 2213 2221 2237 2239 2243 2251 2267 2269 2273 2281 2287 2293 2297 2309 2311 2333
2339 2341 2347 2351 2357 2371 2377 2381 2383 2389 2393 2399 2411 2417 2423 2437 2441 2447 2459 2467
2473 2477 2503 2521 2531 2539 2543 2549 2551 2557 2579 2591 2593 2609 2617 2621 2633 2647 2657 2659
2663 2671 2677 2683 2687 2689 2693 2699 2707 2711 2713 2719 2729 2731 2741 2749 2753 2767 2777 2789
2791 2797 2801 2803 2819 2833 2837 2843 2851 2857 2861 2879 2887 2897 2903 2909 .
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@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/2011/@ADC Documento de trabalho
44
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@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/2011/@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/2011/@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
1
e lendo 1, transita para q
1
, isto , fica
onde est. Lendo agora 0, estando em q
1
, transita para q
2
. Lendo depois 0 transita para q
1
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/2011/@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, como
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/2011/@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/2011/@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 P F
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 a 2; 1 b 4, 2 b 3, etc.
q
0
, o estado inicial: 1
F, o estado final: {3}
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/2011/@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 ? aba
n
, n > 0
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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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 existe, 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/2011/@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/2011/@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/2011/@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/2011/@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 pelo 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/2011/@ADC Documento de trabalho
81
no estado consequente da escolha feita e na sua entrada esto os 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/2011/@ADC Documento de trabalho
82
- de q
1
partem duas arestas etiquetadas por 0
- de q
0
parte uma aresta etiquetada por
- de q
2
no definida qualquer transio, o (q
2
, 0) = C
- existe sempre a transio o (q
i
, ) = { q
i
}, para todo o i, mesmo se no desenhada.
Figura 2.5.8. Um aceitador no-determinstico
Se escrevermos todas as transies possveis, teremos:
o (q
0
, 1) = {q
1
}
o (q
0
, 0) = C
o (q
1
, 0) = {q
0
, q
2
}
o (q
1
, 1) = {q
2
}
o (q
1
, ) = {q
1
}
o (q
0
, ) = { q
0
, q
2
}
o (q
2
, 0) = C
o (q
2
, 1) = C
o (q
2
, ) = {q
2
}
O autmato aceita:
10, porque dos dois estados alcanados um final.
q
1
q
2
q
0
0
1
0, 1
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
83
1010, 101010,
No aceita : 1, 11, 01,
A sua linguagem composta palas cadeias de potncias de 10, ou seja,
L(M) = { (10)
n
: n > 0 }
E se aparece a cadeia 110 ?
Depois de ler 11 chega a q
2
. Como no est definida a transio o (q
2
, 0), obtm-se uma
configurao morta (dead configuration), em que se transita para o estado vazio, C. Mais
formalmente
o * (q
0
, 110)=C.
Como no se pode atingir um estado final processando 110, esta cadeia no aceite pelo
NFA.
Exemplo 2.5.2.: (Linz).
Considere-se o autmato da Fig. 2.5.9, com o alfabeto E={a}. Ele no-determinstico
porque (i) no estado inicial h mais do que uma escolha possvel com o carcter a e (ii) no
esto definidas todas as transies possveis.
Figura 2.5.9. Exemplo 2.5.2
Qual a linguagem aceite pelo autmato?
q
1
q
3
q
5
a
a
a a
a
a
q
2
q
0
q
4
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
84
Pela parte de cima aceita a cadeia aaa e s essa.
Pela parte de baixo aceita aa, aaaa, aaaaaa, , a
2n
, n1
O conjunto das duas, ou seja a unio das duas, d a linguagem aceite pelo autmato
L(M) = {a
3
} {a
2n
: n>1}
Se o NFA pode escolher, na prtica com o se constri? Para que servem?
Os NFA so construes matemticas que no passam disso: no se pode construir um
NFA para uma aplicao prtica. Pense-se por exemplo o que aconteceria a um autmato que
controlasse uma porta automtica se ele no fosse determinstico
No entanto tm uma grande utilidade em Teoria da Computao. Usam-se como um
ferramenta matemtica muito til para
- modelizar algoritmos em que tem que se fazer escolhas (search-and-backtracking, por
exemplo)
- definir linguagens compostas por conjuntos bastante diferentes (como no exemplo
anterior {a
3
}{a
2n
: n >1}.
- descrever de forma simples e concisa linguagens complicadas. Na definio de uma
gramtica pode existir um elemento de no-determinismo, como na produo
S aSb |
em qualquer ponto pode-se escolher a primeira ou a segunda produo. Podemos assim
especificar um grande nmero de cadeias usando apenas duas regras. Se quisermos construir
um autmato equivalente (estudaremos como num captulo posterior) ser mais fcil atravs
de um NFA.
- construir DFAs complicados. Como veremos de seguida no h nenhuma diferena
essencial entre NFAs e DFAs: dado um NFA possvel encontrar um DFA equivalente. Se
quisermos construir um DFA, poderemos numa primeira etapa construir um NFA, mais fcil
de desenhar, e depois obter, pela tcnica que estudaremos, um DFA equivalente.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
85
2.6. Equivalncia entre autmatos (aceitadores) finitos determinsticos e
no-determinsticos
Como vamos ver, a partir de um qualquer NFA com um dado alfabeto pode-se obter um DFA
que aceita as mesmas cadeias e rejeita as mesmas cadeias no mesmo alfabeto. Diz-se que o
DFA equivalente ao NFA. Vejamos mais formalmente a definio de equivalncia entre
autmatos.
Definio 2.6.1. Aceitadores equivalentes : dois aceitadores M
1
e M
2
so equivalentes se
L(M
1
) = L(M
2
)
isto , se ambos aceitam a mesma linguagem.
Existem geralmente muitos aceitadores para uma dada linguagem, e por isso qualquer
DFA ou NFA tem muitos aceitadores equivalentes.
Os DFA podem-se considerar casos especiais de NFA, em que os caminhos possveis se
reduzem sempre a um. Por isso se uma linguagem aceite por um DFA ento existe um NFA
que tambm a aceita.
E o contrrio? Se uma linguagem aceite por um NFA, existir um DFA que a aceite?
Ser que o no-determinismo eliminou esta possibilidade ?
De facto no eliminou: se uma linguagem aceite por um NFA ento existe um DFA
que tambm a aceita.
Como encontr-lo ? Como converter um NFA num DFA ? Como transformar uma
situao de multi-escolha numa escolha nica ?
Um NFA pode escolher vrios caminhos. Depois de um NFA ler uma cadeia w, no se
sabe precisamente em que estado est, mas sabe-se apenas que est num estado entre um
conjunto Q
w
de estados possveis
Q
w
={q
i
, q
j
, ..., q
k
}.
Em contrapartida depois de um DFA ler a mesma cadeia tem que estar num estado bem
definido, q
w
.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
86
Como encontrar uma correspondncia entre estas duas situaes?
Pode-se conceber um truque simples: cria-se um estado no DFA equivalente ao conjunto
Q
w
, isto , etiqueta-se, no DFA, um estado por Q
w
. Se isso for possvel temos o problema
resolvido.
Mas resultar isso num autmato finito? Qual o nmero mximo de estados do DFA que
se podem obter por este processo?
Se no NFA existem no total Q estados, o nmero mximo de estados que se podem obter
no DFA igual potncia de conjuntos de Q, isto 2
|Q|
, e portanto finito. No caso extremo de
total indeterminismo no NFA, o nmero de estados no DFA ser 2
|Q|
.Se tivermos 6 estados
no NFA teremos 2
6
=64 estados no DFA ! Como geralmente o indeterminismo apenas
parcial, o DFA equivalente tem um nmero de estados substancialmente inferior.
Vejamos um exemplo.
Exemplo 2.6.1.
Construir um DFA que aceite a linguagem L composta pelas cadeias em E={0,1} que
contenham trs 0s seguidos ou trs 1s seguidos , como por exemplo
000, 111, 10100010, 00111101000.
A procura directa deste DFA pode tornar-se numa operao bastante complicada, mesmo
para um projectista experiente. relativamente fcil desenhar um DFA para o caso de 000, ou
para o caso de 111, mas no assim para ambos os casos simultaneamente. No entanto
usando o no determinismo a soluo surge de forma bastante simples.
Primeiro, poderemos desenhar o NFA que aceita as cadeias com 000. O NFA, vendo um
zero, decide uma de duas coisas: ele no o incio de 000 (e neste caso deixa-se ficar onde
est), ele o incio de 000 (e ento transita para o estado seguinte na corrida de trs zeros).
Ser ento:
Figura 2.6.1. Primeira parte do exemplo 2.6.1
1,0
0
0
0
0,1
q
0
q
f
q
1
q
2
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
87
Este NFA aceita todas as cadeias que contenham 000, e s essas. De facto:
- se uma cadeia contm 000, h sempre um caminho aceitador para ela. Por exemplo no
caso da cadeia 1001110110001101010 deixa-se ficar em q
0
at ao nono carcter e depois
transita sucessivamente para q
1
, q
2
e q
f,
ficando a at ao fim da cadeia.
- se uma cadeia no contm 000 no possvel chegar ao estado aceitador. Por exemplo
para a cadeia 1100101001, se o NFA transita com algum dos zeros para o estado q
1
, ele acaba
por morrer porque lhe aparece um 1 em q
1
ou em q
2
e no est a definida qualquer transio
com 1.
Se o autmato no tivesse a possibilidade de ficar em q
0
com 0, avanaria sempre para
q
1
quando lesse um 0 (por exemplo em 1010001). Mas se a seguir aparece 1, ele entra numa
configurao morta, dado que no h sada de q
1
com 1, e por isso terminaria a computao
no aceitando a cadeia 1010001). Ora acontece que a sequncia 000 aparece mais frente e a
cadeia deveria ser aceite. O facto de poder esperar em q
0
, palpitando-lhe que aquele 0 no
ainda da sequncia pretendida, evita esta situao.
Segundo, desenhamos o NFA que aceita as cadeias com 111 (e s essas). Por razes
anlogas ele ser
Figura 2.6.2. Segunda parte do exemplo 2.6.1
Agora, para termos a possibilidade das duas situaes, basta-nos juntar os dois
autmatos, a partir do estado inicial comum, obtendo-se a Fig 2.6.3. O estado final aceitador
pode tambm ser comum (embora este facto no seja obrigatrio).
1
1
1
0,1
q
f
q
0
q
1
q
2
1
0,1
1,0
0
0
0
0,1
q
0
q
3
q
1
q
2
1
1
1
q
4
q
5
1
Figura 2.6.3. Exemplo 2.6.1.
completo
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
88
E temos o NFA procurado.
Vamos agora procurar um DFA equivalente.
Para isso construa-se a tabela de transies:
Tabela 2.6.1. Transies da Fig. 2.6.3
o
N
0 1
q
0
q
0
, q
1
q
0
, q
4
q
1
q
2
-
q
2
q
3
-
q
3
q
3
q
3
q
4
- q
5
q
5
- q
3
A primeira dificuldade deriva do facto de algumas transies terem vrios estados
alternativos de chegada, que so por isso co-alcanveis. O significado dos estados definido
pelo projectista. Assim sendo, nada nos impede de criarmos estados no DFA que
correspondam a conjuntos de estado do NFA. E ser lgico que todos os estados do NFA co-
alcanveis pela mesma transio componham um estado do DFA alcanvel por essa mesma
transio, como na Fig. 2.6.4.
a) no NFA b) no DFA equivalente
Figura 2.6.4. Pormenor do clculo do DFA equivalente: dois estados q
2
e q
3
do NFA co-
alcanveis pela transio a produzem um s estado q
23
no DFA equivalente.
a
a
q
1
q
2
q
3
a
q
1
q
23
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
89
Para definir as transies no DFA, etiquetem-se os seus estados com ndices agrupando
os ndices dos estados do NFA co-alcanveis pelas mesmas transies.
Na Fig. 2.6.3 de q
0
com 0, pode-se ir ou para q
0
ou para q
1
, ou seja para o conjunto {q
0
,
q
1
} Crie-se um estado equivalente a este conjunto. Vamos chamar-lhe q
01
para sabermos a que
corresponde.
De q
0
com 1, pode-se ir ou para q
0
ou para q
4
, ou seja para o conjunto {q
0
, q
4
} Crie-se de
igual modo um estado equivalente a este conjunto, q
04
.
Estes estados q
01
e q
04
vo integrar o DFA. Temos que saber o que se passa neles quando
aparece 1 ou 0. Para isso colocamo-los na primeira coluna da tabela de transies, como
indicado na Tabela 2.6.2..
Tabela 2.6.2. Transies do DFA equivalente.
o 0 1
q
0
{q
0
, q
1
} = q
01
{q
0
, q
4
}= q
04
q
01
q
04
Agora temos que imaginar o seguinte: se o DFA est em q
01
e aparece 0, o que se
passar?
Sabemos que q
01
corresponde do conjunto {q
0
, q
1
} do NFA. E portanto aquela pergunta
equivalente a: se o NFA est ou em q
0
ou em q
1
e aparece um 0, o que se passar?
Se est em q
0
pode ir para q
0
ou para q
1
. Se est em q
1
pode ir para q
2
. Portanto estando
em {q
0
, q
1
} pode ir para {q
0
, q
1
, q
2
}. Crie-se por isso no DFA o estado q
012
.
E se o DFA est em q
01
e aparece 1, o que se passar? Fazendo uma anlise semelhante
conclui-se que estar em q
04
. Neste caso h uma nuance que convm realar: se est em q
1
,
com 1 vai para o vazio, C. Mas {C, q
0
, q
4
}={q
0
, q
4
}.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
90
Nesta segunda etapa surgiu o novo estado do DFA, q
012
, que deve ser colocado na
primeira coluna. q
04
j l estava.
Tabela 2.6.3. Mais transies do DFA equivalente
o 0 1
q
0
{q
0
, q
1
} = q
01
{q
0
, q
4
}= q
04
q
01
{q
0
, q
1
, q
2
}= q
012
{C, q
0
, q
4
}=q
04
q
04
q
012
E agora continua-se a anlise. De q
04
com 0 para onde se vai? E com 1? E de q
012
?
Sempre que aparece um novo estado do DFA (v-se palas etiquetas) tem que se colocar
na primeira coluna na linha seguinte ainda no ocupada.
Termina-se quando s se obtm estados do DFA que j existem na 1 coluna.
Tabela 2.6.4. Todas as transies do DFA equivalente
o 0 1
q
0
{q
0
, q
1
} = q
01
{q
0
, q
4
}= q
04
q
01
{q
0
, q
1
, q
2
}= q
012
{C, q
0
, q
4
}= q
04
q
04
q
01
q
045
q
012
q
0123
q
04
q
045
q
01
q
0345
q
0123
q
0123
q
034
q
0345
q
013
q
0345
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
91
q
013
q
0123
q
034
q
034
q
013
q
0345
Resta-nos identificar o(s) estado(s) aceitador(es) para termos o DFA completamente
definido. O NFA aceita uma cadeia quando existe pelo menos uma computao que leve a um
estado final.
Um autmato, seja DFA, seja NFA, pode ter vrios estados finais aceitadores.
Os estados do DFA, deduzido do NFA, correspondem a conjuntos de estados do NFA. Se
num desses conjuntos existir um estado aceitador (no NFA) ento quer dizer que o estado
correspondente do DFA tambm ser aceitador. De facto para se chegar a esse conjunto de
estados (no NFA), leu-se uma certa cadeia. Se um dos estados do conjunto aceitador, quer
dizer que depois de lida essa cadeia se chegou a um aceitador, e portanto a cadeia aceite
pelo NFA. Para que o DFA seja equivalente, tem tambm que a aceitar, e em consequncia o
novo estado criado no DFA correspondente ao conjunto de estados do DFA tem que ser
aceitador.
Portanto, neste exemplo, sero aceitadores no DFA todos os estado que contenham o
estado q
3
do NFA, ou seja, q
0123
, q
0345
, q
013
, q
034.
A partir da tabela de transies desenha-se o grafo do DFA:
Figura 2.6.4. Autmato determinstico equivalente com vrios estados finais
0
1
0
0 0
1
1
0
1
1
0
0
q
01
q
0
q
012
q
0123
q
04
q
045
1
q
034
q
0345
1
q
013
0
1
0
1
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
92
Depois de o autmato entrar num dos estados aceitadores, apenas pode transitar entre
estados aceitadores e por isso todos os estados aceitadores se podem fundir num s, como no
grafo seguinte. As etiquetas dos estados foram escolhidas de modo sugestivo, indicando como
se chega ao estado (qual ou quais os ltimos caracteres lidos). Excepto para o estado final,
que poderamos etiquetar por 000 ou por 111, ou por ambas.
Figura 2.6.5. Simplificao do grafo da Fig. 2.6.4, com um s estado final
Olhando agora com ateno para o grafo do DFA poderemos ver que ele est de acordo
com as orientaes que vimos para desenhar DFAs no pargrafo 2.3. As etiquetas dos estados
na Fig. 2.6.5 reflectem esse facto.
Exerccio 2.6.1. Calcular o DFA equivalente ao NFA da Figura 2.6.6.
Figura 2.6.6. Exerccio 2.6.1
Exemplo 2.6.2.
Desenhar o DFA que aceita em E={0,1} todas as cadeias que terminam em 10.
Em primeiro lugar desenha-se um NFA, por ser mais simples. Depois procura-se o DFA
equivalente.
1
F
0
0
0
1
1
0,1
1
1
0
0
0 00
1
11
0
0, 1
0, 1
0
1
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@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/2011/@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/2011/@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
6
b
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
97
O DFA equivalente ter 7 estados, dos quais dois sero aceitadores: 136 e 46. Fica ao
cuidado do leitor o seu desenho e a identificao da linguagem que ele aceita.
2.7. Reduo do nmero de estados em Autmatos Finitos
Qualquer DFA define uma nica linguagem. Mas uma linguagem no define um nico DFA.
Para uma linguagem existem muitos possveis DFAs, isto , existem muitos DFAs
equivalentes, cujo nmero de estados pode ser bem diferente. Por razes de simplicidade,
importa obter o de menor nmero de estados. Por exemplo se quisermos programar um DFA,
o espao necessrio para computar proporcional ao nmero de estados. Por razes de
eficincia deve-se reduzir o nmero de estados ao mnimo possvel.
Vejamos alguns exemplos simples.
Exemplo 2.7.1
O autmato da Fig. 2.7.1 aceita todas as cadeias no seu alfabeto, porque todos os estados so
aceitadores.
Figura 2.7.1.
Ele tem um equivalente com um s estado:
Figura 2.7.2. Autmato equivalente ao da Fig. 2.7.1
Exemplo 2.7.2.
No autmato DFA seguinte h estados a mais.
a, b
a, b
q
0
q
1
a, b
q
0
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
98
Figura 2.7.3. Exemplo 2.7.2.
Se se chega a q
3
com b quer seja a partir de q
1
quer seja a partir de q
2
, coloca-se a
possibilidade de fundir q
1
com q
2
no estado q
12
.
Figura 2.7.4. DFA equivalente ao da Fig. 2.7.3.
Tm que se introduzir as transies que mantenham a equivalncia com o autmato
original.
No autmato seguinte, Fig. 2.7.2 tambm se podem eliminar alguns estados.
Figura 2.7.5
Em primeiro lugar os dois estados finais podem-se fundir num s, dado que as transies
a partir deles so reflexivas (voltam a eles): seja ele q
34
.
q
0
q
4
b
q
2
a
b
a, b
q
1
a
b a, b
q
3
a
q
0
q
3
b q
12
a
a, b b
a
a
q
0
q
3
b q
2
a
b
b
q
1
a
b
a
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
99
Figura 2.7.6. Simpificao do DFA da Fig. 2.7.5.
Em segundo lugar chega-se a q
34
com b, quer de q
1
, quer de q
2
. Por outro lado de q
1
com
a vai-se para q
2
e de q
2
com a vai-se para q
2
. Se fundirmos q
1
e q
2
em q
12
, mantendo essas
transies, o DFA resultante, Fig. 2.7.7 com apenas 3 estados, equivalente ao inicial.
Figura 2.7.7. DFA final no exemplo 2.7.2
Este procedimento heurstico, baseado na nossa habilidade, pode formalizar-se num
algoritmo de minimizao do nmero de estados de um DFA. Para o seu desenvolvimento
vejamos algumas definies prvias.
Estados indistinguveis
Dois estados p e q dizem-se indistinguveis se:
- se a partir de um deles se chega a um estado aceitador com uma cadeia w , tambm se
chega a um estado aceitador a partir do outro com a mesma cadeia w, formalmente,
o* (p,w) eF o* (q,w)eF, para todas as cadeias w e E*.
e
- se a partir de um deles se chega a um estado no aceitador com uma cadeia x, tambm
se chega a um estado no aceitador a partir do outro com a mesma cadeia x:
o* (p,x) eF o* (q,x)eF, para todas as cadeias x e E*.
q
0
q
34
b
q
2
a
b
a, b
q
1
a
b
a
q
0
q
34
a, b
q
12
a
a, b b
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
100
Num grafo teremos a seguinte situao:
Figura 2.7.8. Os estados p e q so indistinguveis.
Estados distinguveis por uma cadeia
Se existir uma cadeia w tal que de p se chegue a um estado aceitador e de q a um no
aceitador,
o* (p,w) eF o* (q,w )eF
ou tal que de p se chegue a um no aceitador e de q a um aceitador,
o* (p,w) eF o* (q,w )eF
ento os estados p e q so distinguveis pela cadeia w.
Dois estados ou so distinguveis ou so indistinguveis. A indistino tem as
propriedades de uma relao de equivalncia R:
1.p R p (reflexiva)
2. p R q q R p (simtrica)
3. p R q e q R r p R r (transitiva)
Para reduzir a dimenso de um DFA, procuram-se os estados indistinguveis e
combinam-se entre si. A racionalidade desta operao evidente: se so indistinguveis para
que se ho-de ter l ambos?
O algoritmo divide-se em duas etapas:
- primeiro marcam-se os estados distinguveis,
v q
p
u
w
w
v q
p
u
x
x
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
101
- segundo, fundem-se os estados indistinguveis.
Procedimento de marcao dos estados distinguveis
1- Removem-se todos os estados inacessveis (limpeza do DFA). Pode fazer-se
enumerando todos os caminhos simples no grafo (caminhos sem ciclos fechados) que partem
do estado inicial. Um estado acessvel tem que estar num desses caminhos. Se um estado no
est em qualquer caminho, quer dizer que no se pode l chegar a partir do estado inicial, e
portanto inacessvel.
2 Consideram-se todos os pares de estados (p, q). Se p aceitador, peF, e se q no
aceitador, qeF, ento o par (p, q) distinguvel. De facto que maior distino poderia haver
entre dois estados? Marcam-se todos esses pares como distinguveis. Marcam-se os pares, no
os estados individualmente. Um estado individual pode pertencer a um par distinguvel e ao
mesmo tempo a um par indistinguvel.
3 Considere-se um par de estados (p, q). Calculem-se as transies a partir deles para
todos os caracteres do alfabeto, tomados um de cada vez.
Figura 2.7.9. Transies de p e de q com a.
Se houver pelo menos um carcter aeE tal que o par (p
a
, q
a
) resultante dessas transies
seja distinguvel, ento o par (p, q) distinguvel.
Este procedimento faz-se para todos os pares de estados (p, q) em Q.
No fim todos os pares distinguveis esto marcados como tal. Ver a demonstrao por
exemplo em Linz, Teorema 2.3 (pg. 64). Note-se que a marcao para os pares, no para os
estados individualmente.
Depois de se fazer a marcao dos estados distinguveis, particiona-se o conjunto Q dos
estados do DFA num certo nmero de subconjuntos disjuntos Q
1
={q
i
,q
j
,, q
k
},
Q
2
={q
l
,q
m
,, q
n
} , , Q
x
={q
o
,q
p
,, qr} tais que
p
q
p
a
q
a
a
a
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
102
- qualquer estado q pertence a um e s a um deles,
- os estados do mesmo subconjunto so indistinguveis entre si,
- qualquer par de estados, tal que um dos elementos pertence a um dos subconjuntos e
o outro pertence a outro, distinguvel.
Esta partio sempre possvel.
A partir desta partio aplica-se o procedimento seguinte.
Dado o DFA M=(Q,E,o,q
0
,F) calcula-se o equivalente
0
( , , , , ) M Q q F o
. . . . .
= E por:
1 Para cada um dos conjuntos indistinguveis Q
1
, Q
2
, Q
x
cria-se um estado
equivalente etiquetado apropriadamente (a sua etiqueta o conjunto das etiquetas dos estados
do subconjunto, por exemplo para Q
1
ser o estado equivalente q
ijk
.)
2 No autmato original M considera-se a transio o(q
r
, a)=q
p
do estado q
r
para o estado
q
p
. Procuram-se os dois subconjuntos a que pertencem q
r
e q
p
. Traa-se a transio a entre os
estados equivalentes a esses subconjuntos. Isto , se q
r
e Q
1
={q
i
,q
j
,, q
k
}, e q
p
e
Q
2
={q
l
,q
m
,, q
n
} ento desenhar no grafo a transio
... ...
( , )
ij k lm n
q a q o
.
=
3 O estado inicial de
0
, M q
. .
, o que contm a etiqueta 0 do autmato original.
4 O conjunto dos estados aceitadores de , M F
. .
, o conjunto de todos os estados em
cuja etiqueta entra um estado aceitador do DFA original.
Exemplo 2.7.3 .Minimizar o conjunto de estados do DFA da Figura 2.7.10.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
103
Figura 2.7.10. DFA a minimizar.
1 Marcao dos estados distinguveis
Havendo um s estado final, ele distinguvel de todos os outros. Portanto qualquer par que o
contenha distinguvel.
Vamos agora considerar a segunda etapa: ver as transies de cada par com um a e com
um b. Obteremos as duas tabelas seguintes.
Tabela 2.7.1. Transies com a Tabela 2.7.2 Transies com b
a 1 2 3 4 5 6 7
1 2,2 2,4 2,6 2,4 2,6 2,4 2,6
2 4,2 4,4 4,6 4,4 4,6 4,4 4,6
3 6,2 6,4 6,6 6,4 6,6 6,4 6,6
4 4,2 4,4 4,6 4,4 4,6 4,4 4,6
5 6,2 6,4 6,6 6,4 6,6 6,4 6,6
6 4,2 4,4 4,6 4,4 4,6 4,4 4,6
7 6,2 6,4 6,6 6,4 6,6 6,4 6,6
b 1 2 3 4 5 6 7
1 3,3 3,5 3,7 3,5 3,7 3,5 3,7
2 5,3 5,5 5,7 5,5 5,7 5,5 5,7
3 7,3 7,5 7,7 7,5 7,7 7,5 7,7
4 5,3 5,5 5,7 5,5 5,7 5,5 5,7
5 7,3 7,5 7,7 7,5 7,7 7,5 7,7
6 5,3 5,5 5,7 5,5 5,7 5,5 5,7
7 7,3 7,5 7,7 7,5 7,7 7,5 7,7
1
6
b
3
a
b
2
a
b
a
5
b
4
a
a
b
7
a
a
b
b
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
104
Da 1 etapa, nestas duas tabelas todos os pares que contenham o estado 6 devem ser
marcados como distinguveis (colorido), dado que 6 o nico aceitador, excepto o par (6,6)
que indistinguvel.
Os pares que correspondem s clulas sombreadas sero agora marcados distinguveis.
Na tabela de transies com b marcam-se todos os distinguveis com a. Basta faz-lo na
metade superior (ou inferior) da tabela. Neste caso no h nenhum..
Ser o par (1,2) distinguvel ? (1,2) com a d (2,4), (2, 4) com a d (4, 4), nenhum
distinguvel; portanto no se marca. Vai-se ver tabela de b se o par (2,4) distinguvel.
Para o par (3,4): (3,4) com a d (6,4), j marcado e portanto (3,4) marca-se como
distinguvel.
O mesmo para todos os outros pares. Obtm-se a tabela seguinte, em que 1 identifica os
distinguveis.
Tabela 2.7.3. Estados distinguveis (1)e indistinguveis (0)
1 2 3 4 5 6 7
1 0 0 1 0 1 0 1
2 0 0 1 0 1 0 1
3 1 1 0 1 0 1 0
4 0 0 1 0 1 0 1
5 1 1 0 1 0 1 0
6 0 0 1 0 1 0 1
7 1 1 0 1 0 1 0
Agora particiona-se o conjunto dos estados em subconjuntos que obedeam s trs
condies acima enunciadas. No uma tarefa fcil.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
105
O estado 6 s indistinguvel de si prprio, portanto tem que ficar isolado num
subconjunto.
Para os restantes desenhe-se o grafo da propriedade indistinguvel. Os vrtices do grafo
sero os estados. Entre dois estados existir uma aresta se eles pertencerem a um par
indistinguvel, isto , se na ltima tabela a respectiva clula tiver 0. No necessrio desenhar
a aresta reflexiva (do estado para ele mesmo).
Figura 2.7.11. Partio dos estados
bem visvel a formao de dois sub-grafos conexos : {1,2,4}, {3,5,7}.
A partio {1, 2, 4} {3, 5, 7} {6} verifica as condies. O DFA mnimo ter 3 estados.
Figura 2.7.12. o DFA mnimo equivalente ao da Fig. 2.7.10.
As linguagens dos dois autmatos, o original e o reduzido, so equivalentes. Para um
autmato com um elevado nmero de estados, este procedimento manual de inspeco para se
identificarem os pares distinguveis no fcil. No entanto este algoritmo pode programar-se.
Ele tambm conhecido pelo algoritmo de enchimento da tabela (table- filling algorithm, por
exemplo em Hopcroft p.156).
2.8 Um aplicao dos DFA: busca de texto (text search, Hopcroft, 68)
Os autmatos finitos encontram na busca de texto uma aplicao interessante. Como sabemos
a pesquisa de cadeias de caracteres uma das operaes mais executadas na web. Dado um
6
357
b
b
a
b a
a
124
1 2 3
4 5
7
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
106
conjunto de palavras, que poderemos chamar palavras chave, queremos encontrar todas as
ocorrncias delas num certo texto. Os autmatos finitos no determinsticos permitem faz-lo
de um modo expedito e simples. Para uma palavra chave, por exemplo chave, desenha-se um
autmato com:
- um estado inicial que transita para si prprio com todo e qualquer carcter do alfabeto,
- uma corrida de estados aos quais se chega depois de ler sucessivamente um carcter da
palavra chave
Figura 2.8.1. NFA para busca da palavra chave.
Para se implementar o NFA, pode-se escrever um programa que simula o seu
funcionamento, calculando os estados em que est aps ler um carcter. Sempre que h uma
escolha, faz-se uma ou vrias rplicas do NFA.
no entanto mais prtico calcular o DFA equivalente e ento simul-lo. Para isso aplica-se
a tcnica padro: constri-se a tabela de transies e desenha-se o grafo depois.
Se o alfabeto for composto pelos 26 caracteres do portugus (a b c d e f g h i j k l m n o p q
r s t u v w x y z), teremos muitas etiquetas para as arestas do autmato. Para simplificar a sua
escrita poderemos usar a notao E-a-e querendo dizer todos os caracteres do alfabeto menos
a e e. Esta notao aceite pelo DEM (Deus Ex-Mquina).
Assim sendo, o DFA equivalente ao NFA da Fig. 2.8.1 tem o aspecto da Fig. 2.8.2. Fica ao
cuidado do leitor verificar, construtivamente, que assim .
1 2 3 4
6
E
c
h a
5
v e
1 2 3 4
6
E-c
c
h a
5
v e
E-h
E-a
E-a
E-e
E-v
E-c
c
Figura 2.8.2. DFA
equivalente ao NFA
da Fig. 2.8.1.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
107
Exerccio 2.8.1
O seguinte NFA encontra num texto as palavras doce e mel. Desenhar o o DFA equivalente. E
= { a, b, c, ...., z}.
Desenhar o DFA equivalente.
Exerccio 2.8.2.
Desenhar o DFA que aceita as palavras amarga e carta. E = { a, b, c, ...., z}.
2.9 Autmatos finitos transdutores
Os DFA e NFA que estudmos at aqui so aceitadores e no tm sada. Apenas lem cadeias,
reconhecendo-as ou no como pertencentes a uma dada linguagem.
H outros tipos de autmatos, como vimos j no Cap. 1, que tm um registo de sada, cujo
contedo pode variar conforme a evoluo da configurao do autmato. So os transdutores,
de que se conhecem dois tipos: as mquinas de Mealy e de Moore. Ambos se podem
enquadrar no esquema geral que vimos no Cap. 1 e aqui se reproduz na Fig. 2.9.1
Unidade de Controlo
q
k
Ficheiro de entrada
M
e
m
r
i
a
S
Ficheiro de sada
0
1 2 3
5 6
4
7
E
d
c e
m
e l
o
Figura 2.9.1. Esquema
geral da um autmato
finito
Figura 2.8.3 NFA para
o exemplo 2.8.1.
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@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/2011/@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/2011/@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/2011/@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/2011/@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/2011/@ADC Documento de trabalho
113
Teoria da Computao Captulo 2 . Autmatos Finitos
LEI/DEI/FCTUC/2011/@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.
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 115
CAPTULO 3
EXPRESSES REGULARES, LINGUAGENS REGULARES E
GRAMTICAS REGULARES
3.1 Introduo 117
3.2 Expresses Regulares 117
3.3 Regras algbricas para expresses regulares 126
3.4 Relao entre expresses regulares e linguagens regulares 130
3.5 Gramticas regulares 140
3.6 Sntese das equivalncias 151
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 116
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 117
3.1. Introduo
Vimos que uma linguagem regular se for aceite por um DFA ou um NFA. Poderemos assim
representar uma linguagem pelo seu autmato. Se o autmato tiver um elevado nmero de
estados, no possvel, por simples inspeco visual, ver qual a sua linguagem. Interessa por
isso uma forma mais simples de representar uma linguagem regular, que seja de utilizao
expedita, de modo anlogo ao de uma frmula qumica de uma substncia: olhando para ela
extrai-se logo uma grande quantidade de informao sobre a sua natureza.
esse o objectivo das expresses regulares: so formas simples, expeditas, com muita
informao, de representar linguagens regulares.
Mas se assim , e se a uma expresso regular corresponde sempre uma linguagem
regular, para uma expresso regular h-de haver um autmato finito que represente a mesma
linguagem, dado que toda a linguagem regular tem o seu DFA ou NFA.
H portanto uma estreita relao entre expresses regulares e linguagens regulares.
Estud-la-emos neste captulo.
J vimos que uma linguagem pode ser definida por uma gramtica. Dada uma linguagem
regular, pode interessar conhecer uma gramtica que a gere, e neste caso diz-se gramtica
regular. E sempre possvel encontr-la, com recurso aos autmatos finitos. Autmatos
finitos, gramticas regulares, expresses regulares, so trs formas de representar o mesmo
conjunto: uma certa linguagem regular. Estudaremos neste captulo a forma como essas trs
representaes se relacionam.
3.2. Expresses regulares
Uma expresso regular uma forma de descrever linguagens regulares. So expresses com
smbolos de um dado alfabeto e caracteres operadores sobre as cadeias, isto , so expresses
algbricas. Dado um alfabeto E, uma expresso regular desenvolvida a partir de
- os smbolos do alfabeto
- os operadores de
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 118
unio : ou +
concatenao:
fecho-estrela : *
- de parnteses
Exemplo 3.2.1.
Consideremos o alfabeto E={a, b, c, ..., z}.
Nele a linguagem finita L = {a} definida pela expresso regular : a
A linguagem L = {a, b, c }, definida pela expresso regular: abc ou a+b+c. O
operador unio em conjuntos corresponde ao operador adio nas expresses regulares.
Muitas linguagens so infinitas e no se podem por isso escrever por enumerao
explcita. A linguagem definida pela expresso regular (a+bc)
*
uma linguagem infinita
devido ao fecho-estrela. Por definio de *, teremos
L= {(a+bc)
0
(a+bc)
1
(a+bc)
2
(a+bc)
3
}
= {, a+b.c, (a+bc)(a+b.c), (a+bc)(a+b.c)(a+b.c), }
= {, a, bc, aa, abc, bca, bcbc, aaa, aabc, abcbc, abca, bcbcbc, }
No alfabeto E = {a, b, c} a linguagem (a + b)* composta pelas cadeias cadeias , a,
b, aa, bb, ab, ba, aaa, abbaa, bbbaabab, .Qualquer cadeia que contenha s as e bs pode
ser obtida desta expresso regular. Como obter ababaa ? Fica o desafio ao leitor.
No mesmo alfabeto a linguagem a*b* composta pelas cadeias a
n
b
m
, n,m> 0 ou seja
, a,b, aab, aabb, abb, bbb, aabbbb,...
Finalmente, ainda no mesmo alfabeto, a linguagem (c+C) contm apenas a cadeia c.
As expresses regulares so formas sintticas de exprimirmos as operaes sobre
cadeias que estudmos no Cap. 1. So como que expresses algbricas num dado alfabeto. No
entanto poderemos defini-las formalmente.
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 119
3.2.1. Definio formal, recursiva, de expresso regular
Uma definio por recursividade usa como sabemos um conjunto de primitivas e uma
recurso. Assim tambm para as expresses regulares:
Definio 3.2.1. Seja um E um dado alfabeto. Ento:
1. As expresses regulares primitivas so compostas por zero ou um carcter:
C, e ae E (para aeE ) so todas expresses regulares primitivas
2. Recurso: indica como se obtm expresses regulares a partir umas das outras:
Se r
1
e r
2
so expresses regulares, tambm o sero
2.1 r
1
+r
2
, (soma de duas expresses regulares)
2.2 r
1
r
2
, (concatenao de duas expresses regulares)
2.3 r
1
* , r
2
* (fecho-estrela de uma expresso regular)
2.4 (r
1
), (r
2
) (parntese de uma expresso)
3. Uma cadeia uma expresso regular se e s se ela puder ser derivada a partir das
expresses regulares primitivas e pela aplicao de um nmero finito de vezes das
regras de 2 (princpio da recursividade)
Exemplo 3.2.2
Seja o alfabeto E={0,1}
A expresso regular seguinte define a linguagem indicada
01* = {0, 01, 011, 0111,}, 0 concatenado com um nmero arbitrrio de 1s.
Se concatenarmos toda e qualquer cadeia desta linguagem com 01 obtm-se
(01*)(01) = {001, 0101, 01101, 011101, ..}
Por outro lado
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 120
(0+1)* = {, 0, 1, 00, 01, 10, 11, ..}, i.e., toda e qualquer as cadeias com 0 e 1.
Analisemos agora a expresso regular
(0+1)*00(0+1)*
esquerda temos (0+1)*, qualquer cadeia de 0s e 1s. direita temos a mesma coisa.
Mas no centro temos o par 00. Quer dizer que esta expresso regular representa qualquer
cadeia que contenha o par 00 precedido por qualquer nmero de 0s e 1s e seguido de
qualquer nmero de 0s e 1s, ou seja,
{00, 1001, 00110, 10100, 010101000111000..},
i.e., todas as cadeias de 0 e 1 contendo 00 em qualquer posio. O par 00 tem que aparecer
uma vez, mas pode aparecer alm disso qualquer nmero de vezes.
Exemplo 3.2.3
No alfabeto E = {a,b,c}, ser (a+bc)*(c+C) uma expresso regular ?
Para responder temos que ver se ela se pode obter a partir das expresses regulares
primitivas por uma recurso:
Os smbolos a,b,c,C so expresses regulares primitivas.
b.c uma expresso regular (er) , do item 2.2. da definio,
a+b.c uma er, do item 2.1 da definio,
(a+b.c) uma er, do item 2.4 da definio,
(a+b.c)* uma er, do item 2.3 da definio,
(c+C) uma er, dos itens 2.1 e 2.4 da definio,
(a+bc)*(c+C) uma er do item 2.2 da definio. q.e.d
E (a + c + ) expresso regular ?
a , c so er primitivas
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 121
a+c uma er
a+c+ no er, logo (a+c+) no expresso regular.
Exemplo 3.2.4.
Seja a expresso regular (1+10)*. Que linguagem define ?
Pela definio de fecho-estrela teremos sucessivamente:
(1+10)*= (1+10)
0
(1+10) (1+10)
2
(1+10)
3
= (1+10) (1+10) (1+10)
(1+10) (1+10) (1+10)
= {,1+10, (1+10) (1+10)
, (1+10) (1+10) (1+10)
, }
=
{,1+10, 11,110,101,1010, (11+110+101+1010)(1+10), }
=
{,1,10, 11,110,101,1010, 111,1110,1101,11010, 1011,10110,10101,101010,}
Qual a caracterstica comum a todas estas cadeias?
Elas comeam todas por 1 e podem ter um nmero arbitrrio de 1s seguidos. Os 0s so
introduzidos pela parcela 10 quando esta potenciada. Mas sendo potenciada, introduz 10,
1010, 101010, , ou seja, quando introduz um zero mete sempre 1 antes, e por isso no
possvel introduzir dois zeros seguidos. O facto de ambas as parcelas da soma se iniciarem
por 1 faz com que todas as suas concatenaes possveis se iniciem por 1. Poderemos concluir
que a linguagem composta por todas as cadeias em {0,1} que se iniciam por 1 e no tm
qualquer par de zeros.
Exemplo 3.2.5
E no caso (0+1)*011 ?
A primeira parte (0+1)* produz todas as cadeias. A segunda parte, 011, concatena o
sufixo 011 a todas as cadeias da primeira parte. Portanto temos a linguagem de todas as
cadeias em {0,1} que terminam em 011.
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 122
Exemplo 3.2.6. Para 0*1*:
Teremos um nmero arbitrrio de 0s (de 0*) seguido de um nmero arbitrrio de 1s (de 1*).
Podemos resumir dizendo que a linguagem de todas as cadeias que no tm um 0 depois
de 1.
Exemplo 3.2.7. Seja agora 00*11*.
Esta obteve-se da anterior colocando um 0 obrigatrio no incio, e um 1 obrigatrio no meio.
Portanto tem pelo menos um 0 e um 1.Alm disso no aparece qualquer 0 depois de 1.A
linguagem portanto composta por todas as cadeias com pelo menos um 0 e um 1, e
nenhum 0 depois de 1.
3.2.2. Linguagem associada a uma expresso regular
Definio 3.2.2. Se r uma expresso regular, L(r) denota a linguagem associada com r.
Esta linguagem definida pelas regras seguintes:
1. r=C uma expresso regular , o conjunto vazio
2. r= uma expresso regular, o conjunto {} com um elemento
3. Para todo o aeE, r=a uma expresso regular denotando {a}
Se r
1
e r
2
so expresses regulares, ento
4. L(r
1
+r
2
) = L(r
1
) L(r
2
) , unio de duas linguagens
5. L(r
1
r
2
) = L(r
1
) L(r
2
) , concatenao de L(r
1
) com L(r
2
)
6. L((r
1
)) = L(r
1
)
7. L(r
1
*) = (L(r
1
))*
As regras 4 a 7 usam-se para reduzir recursivamente uma linguagem L a expresses mais
simples.
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 123
As regras 1 a 3 so as condies terminais para esta recurso.
Para se verificar qual a linguagem que corresponde a uma dada expresso regular,
aplicam-se aquelas regras tantas vezes quantas as necessrias.
A precedncia dos operadores a seguinte
1- fecho- estrela (*),
2- concatenao (),
3- (+) unio
Exemplos 3.2.8:
i) Seja o alfabeto E={x}.
A linguagem de xx
*
ser L(xx*) ={x, xx, xxx,...}= L(x
+
).
ii) E L(x(xx)*) ={x, xxx, xxxxx,..} =L(x
mpar
).
Em E = { a, b, c }
iii) A linguagem de (a+c)b* ser
L((a+c)b*) = L(a+c)L(b*) (regra5)= (L(a) L(c)) (L(b))* (regra 4 e regra 7) =
= { a, c } { , b, bb, bbb, } (regra 3) =
={ a, c, ab, cb, abb, cbb, abbb,..}
iv) L(c+C) = { c } (regra 4 e regra 3)
Em E = {a, b}
iv) L((a+b).(a+b).(a+b)) = L(a+b) L(a+b) L(a+b) (regra 4)
= {a,b} {a,b} {a,b} (regra 3)
= {aaa, aba, abb, baa, bba,..}
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 124
v) Em E = {0,1} escrever a expresso regular para a linguagem das cadeias que contm
um nmero mpar de zeros, ou seja,
L ={w : w contm um nmero mpar de zeros }
Nota:
(a+b)*= (a+b)*+(a+b)* (a unio de um conjunto consigo prprio d o prprio conjunto)
(a+b)* = (a+b)*(a+b)* (a concatenao de qualquer cadeia de as e bs com qualquer
outra cadeia de as e bs d sempre uma cadeia de as e bs;
por outro lado =).
(a+b)* = a(a+b)*+b(a+b)*+ (a unio de todas as cadeias comeadas por a com todos as
cadeias comeadas por b e com a cadeia vazia d o conjunto
de todas as cadeias com as e bs mais .
Exerccios:
1. Qual a linguagem representada pela expresso regular:
i) (1+01+001)*(+0+00)
ii) ((0+1)(0+1))*+((0+1)(0+1)(0+1))*
2. Exemplos de linguagens complementares
Seja E = {0,1}.Encontrar uma expresso regular para as linguagens:
i) L(r) = {we E* : w tem pelo menos um par de zeros consecutivos }
ii) L (r) = {we E* : w no tem qualquer par de zeros consecutivos }
Resoluo:
i) Uma cadeia da linguagem tem que conter 00 em algum lado. Antes ou depois do par
de zeros pode conter qualquer cadeia arbitrria. Como sabemos uma cadeia arbitrria de zeros
e uns dada por (0+1)*.
A soluo tem por isso trs partes; o par 00 precedido e sucedido por (0+1)* ou seja,
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 125
r
1
= (1+0)*00(1+0)*
Note-se que o enunciado no impede a existncia de mais pares de zeros para alm do
obrigatrio. Nunca confundir ter um par de zeros com ter um s par de zeros.
ii) Esta linguagem a complementar da anterior. No caso dos autmatos sabemos como
desenhar o autmato do complemento a partir do autmato original: basta trocarmos a misso
dos estados, passando os aceitadores a no aceitadores e os no aceitadores a aceitadores.
Com expresses regulares no h nenhuma tcnica assim expedita de encontrar o
complemento. Tem que se pensar na questo desde a base.
Se a linguagem no tem qualquer par de zeros consecutivos, quer dizer que sempre que
aprece um 0 ele deve ser seguido imediatamente por um 1, i.e., o 0 s pode aparecer na
cadeia 01
Antes ou depois de 01 pode aparecer um nmero arbitrrio de 1s, produzindo a cadeia
1....1011.....1. Portanto a linguagem contm (1...1011...1)*, ou, equivalentemente, (1*011*)*.
Note-se que ao fecharmos (fecho-estrela) a expresso estamos a replic-la um nmero
arbitrrio de vezes, permitindo assim gerar cadeias com um nmero arbitrrio de zeros. Mas
cada zero aparece acompanhado esquerda e direita por um nmero qualquer de 1s. Note-
se que obrigamos todas estas cadeias a terminar em 1, o que limitativo.
No esto ainda includas as cadeias que terminam em 0. Poderemos obt-las da
expresso anterior concatenando-lhe um zero no fim, obtendo-se (1*011*)*0 .
Faltam tambm as cadeias que s tm 1s; para elas basta adicionar 1*.
Finalmente juntam-se as cadeias que s tm 1s excepto o ltimo que 0, 1*0.
Teremos a unio destes subconjuntos todos, pelo operador + em expresses regulares:
(1*011*)* + (1*011*)*0 + 1* + 1*0
Este resultado responde pergunta. Por uma questo de elegncia podemos procurar
simplificar a expresso.
Pondo em evidncia os factores comuns s parcelas obtm-se a
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 126
r
2
= (1*011*)* (+0) + 1* (+0)
Pensando de outro modo, talvez mais simples, as cadeias sem zeros consecutivos so a
repetio arbitrria das subcadeias 1 e 01, isto , (1+01)*, s quais se pode ou no
adicionar um zero no fim , obtendo-se r
3
r
3
= (1+01)*(0+)
equivalente anterior, mas ainda mais elegante.
Para uma dada linguagem existe um nmero ilimitado de expresses regulares
equivalentes. Importa no entanto obter uma que seja simples.
No existe nada na forma de r
1
e r
2
ou r
1
e
r
3
que sugira que definem linguagens
complementares. Este facto indica uma das limitaes das expresses regulares.
3.3.Regras algbricas para expresses regulares
As expresses regulares so expresses algbricas sobre as quais se podem fazer algumas
operaes (unio, concatenao, fecho estrela). Essas operaes devem obedecer a um certo
nmero de regras. Podemos agrup-las em regras comutativas, regras associativas, regras
distributivas, identidades e anuladores, regras de fecho.
Duas expresses regulares so equivalentes se elas denotam a mesma linguagem.
Quando se simplifica uma expresso regular, obtm-se sucessivamente expresses regulares
equivalentes.
3.3.1 Regras comutativas e associativas
Sejam L, M e N expresses regulares.
A unio de duas expresses regulares comutativa
L + M = M + L
A demonstrao desta propriedade faz-se atendendo natureza da operao em causa.
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 127
De facto a unio de duas linguagens o conjunto das cadeias de ambas, postas no
mesmo saco, por qualquer ordem. Podemos colocar primeiro as de L e depois as de M, ou
ao contrrio, que o conjunto resultante da unio no se altera. Portanto a unio comutativa.
A unio de linguagens associativa
(L + M) + N = L + (M + N)
Se queremos fazer a unio de trs conjuntos, poderemos unir os primeiros dois e depois
unir o resultante com o terceiro; ou podemos unir os dois ltimos, unindo depois o primeiro
com o conjunto resultante.
A concatenao de expresses regulares associativa
(LM)N = L(MN)
A concatenao de trs cadeias pode fazer-se indiferentemente de dois modos:
concatenar as duas primeiras e depois a terceira direita; ou concatenar as duas ltimas e
depois a primeira esquerda.
Mas no comutativa
LMML
A prova imediata.
3.3.2 Regras distributivas
A concatenao tem alguma analogia com o produto algbrico e a unio com a adio. A
concatenao distributiva esquerda em relao unio:
L (M + N) = LM + LN
Por exemplo aba(bba+abb)=ababba+abaabb. Atendendo ao significado de +, unio,
temos que concatenar o prefixo aba com cada uma das cadeias dentro do parntese. O
resultado a unio dessas concatenaes.
E tambm distributiva direita
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 128
(M + N)L = ML + NL
Prova semelhante, agora com um sufixo em vez de prefixo.
A unio no distributiva em relao concatenao nem direita nem esquerda
(MN) + L (M + L)(N + L)
L + (MN) (L + M)(L + N)
Para provar que assim , faz-se prova por contradio: supe-se que igual e procura-se
um caso em que no o seja. As propriedades tm que ser gerais, vlidas para todas as
linguagens e todas as cadeias em cada linguagem.
(ab)+c= (a+c)(b+c)
Ora (a+c)(b+c)=ab+ac+cb+cc por definio de unio e de concatenao. Mas isto
diferente de (ab)+c, o que suficiente para a prova por contradio.
3.3.3 Identidades e anuladores (zeros)
Numa certa lgebra, a identidade o elemento que operado com qualquer outro elemento d
esse elemento, tal como 1 na multiplicao numrica.
O conjunto vazio, C , a identidade para a unio porque
C + L = L + C = L
J para a concatenao, a identidade a cadeia vazia porque
L = L = L
O anulador o elemento que operado com outro elemento d sempre o conjunto vazio.
No caso da concatenao o conjunto vazio
C L = LC = C
Para a unio no existe anulador. E para a interseco?
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 129
3.3.4. Regras do fecho-estrela
O fecho estrela uma operao muito importante em expresses regulares quando se trata de
linguagens infinitas.
Ele goza de algumas propriedades cuja demonstrao fica ao cuidado do leitor.
(i) (L*)* = L*
(ii) L+ = LL* = L*L
(iii) L* = L
+
+
(iv) C * =
(v) * =
(vi) ( L+M )* = (L* M*)*
Esta ltima merece alguns comentrios, j que as restantes so mais ou menos evidentes.
Vejamos um exemplo de duas cadeias:
(a+b)* = (a*b*)*
esquerda temos qualquer cadeia com qualquer nmero de as e bs e por qualquer
ordem. Qualquer destas cadeias tambm pode ser obtida pela parte direita. Se comea por bs,
faz-se primeiro a
0
b*, depois a
*
b
0
para os as, novamente a
0
b* para bs e assim
sucessivamente. Repare-se que o fecho externo permite faz-lo tantas vezes quantas as
necessrias.
Poderemos ver que qualquer cadeia gerada pela expresso da direita pode ser gerada
pela expresso da esquerda e vice-versa. Para uma prova mais formal ver Hopcroft p. 118.
3.3.5. Outras regras algbricas
Para provar uma regra algbrica qualquer, por exemplo
L + ML = (L + M)L
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 130
tem que se provar que qualquer cadeia gerada pela er da esquerda tambm gerada pela RE
da direita.
Para provar que falsa, basta dar um contra exemplo.
Para auxiliar a prova podem-se substituir os smbolos das er por caracteres de um alfabeto,
no caso por exemplo
(a+ba) = (a + b)a
que facilmente se v ser falso ( e portanto aquela propriedade falsa).
3.4. Relao entre expresses regulares e linguagens regulares
As expresses regulares so, como vimos, uma forma de especificar linguagens regulares.
Assim sendo para toda a linguagem regular existe uma expresso regular e, vice-versa, para
toda a expresso regular existe uma linguagem regular.
Faamos a prova em duas etapas.
3.4.1 De uma expresso regular a um NFA: expresses regulares definem linguagens
regulares
Uma linguagem regular, como vimos no Cap.2, se for aceite por um DFA ou por um NFA
(dado que estes so equivalentes a DFA).
Se pudermos construir um NFA a partir de uma expresso regular r qualquer, ento essa
expresso regular denotar uma linguagem regular L(r). De facto assim . Para o provar,
recorre-se definio recursiva de L(r) e segue-se a definio 3.1 de expresso regular.
1 Definem-se NFA para as expresses regulares primitivas ( os trs primeiros
elementos da definio 3.2.2)
i) NFA aceitador de L
1
=C :
r=C
q
0
q
1
Figura 3.4.1. Aceitador do conjunto vazio
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 131
No havendo possibilidade de alcanar o estado aceitador, e linguagem o vazio.
ii) NFA aceitador de L
2
={}
r=
iii) NFA aceitador de L
3
={a}
r=a
2 Admitamos que temos uma expresso regular r e que o NFA que aceira L(r)
representado pela Figura 3.4.4 genrica,
Figura 3.4.4 Um antmato M genrico
com o estado inicial q
0
e o estado final q
F
. Note-se que qualquer NFA pode ser representado
com um s estado final.
3 Suponhamos agora que temos dois NFAs M(r
1
) e M(r
2
) que aceitam as linguagens
L(r
1
) e L(r
2
) definidas pelas expresses regulares r
1
e r
2
. Construam-se os NFA para a
segunda parte da Definio 3.2.2 do modo seguinte:
iv) L(r
1
+r
2
)
M (r)
q
0
q
f
q
0
q
1
Figura 3.4.2. Aceitador de
a
q
0
q
1
Figura 3.4.3. Aceitador de a
M (r
1
)
q
0
q
f
M (r
2
)
Figura 3.4.5. Autmato da soma de expresse regulares
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 132
O NFA aceita a unio das linguagens, L
1
pela parte de cima e L
2
pela de baixo.
v) L(r
1
r
2
)
O NFA aceita uma cadeia que resulte da concatenao de uma cadeia de L
1
(que leva o
autmato ao estado aceitador de M(r
1
)) com uma cadeia de L
2
que leva depois a q
f
.
vi) L(r
1
*)
Este NFA j no to evidente. Repare-se que
r
1
*
=+r
1
+r
1
r
1
+r
1
r
1
r
1
+
O vai pela parte de baixo do NFA directamente para o aceitador, portanto est includo
na linguagem do NFA.
O r
1
vai atravs da mquina desde q
0
at q
f
.
J r
1
r
1
parte de q
0
, vai at q
f
e volta para q
0
pela parte de cima, com .
As outras potncias de r
1
do tantas voltas quantas as necessrias at ao estado final.
M (r
1
)
q q
f
M (r
2
)
Figura 3.4.6. Autmato da concatenao de duas expresses regulares
M (r
1
)
q
q
f
Figura 3.4.7. Autmato do fecho-estrela de uma expresso regular.
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 133
Usando estas mquinas possvel construir um NFA para qualquer expresso regular.
Pode-se por isso enunciar o teorema:
Teorema 3.4.1. L(r) uma linguagem regular
Se r uma expresso regular, existe algum autmato finito no-determinstico que aceita
L(r). Logo L(r) uma linguagem regular.
Exemplo 3.4.1.1
r=1*
Sendo 1 uma expresso regular primitiva, desenha-se o seu autmato. Depois aplica-se-
lhe a regra do fecho estrela.
Agora pode-se demonstrar que este NFA equivalente a
Calculando o DFA equivalente obtm-se, em E={0,1}
1
q
0
Figura 3.4.10. Autmato
equivalente de 1*
1
q
0
0
0,1
DFA
Figura 3.4.11. DFA de 1*
Figura 3.4.8 Autmato NFA de 1*
q
f
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 134
Exemplo 3.4.1.2.
r=a+a*b
Desenham-se os NFA de a e de b, expresses regulares primitivas. A partir do de a
desenha-se o de a* que se concatena com o de b. Finalmente coloca-se um outro de a em
paralelo com o de a*b.
r=ab+(b+ab)*
Desenha-se o de a que se concatena com o de b. Desenha-se novamente o de b que se
paraleliza com o de ab. Agora aplica-se o fecho estrela ao conjunto obtido. Desenha-se depois
um outro de a e um outro de b que se concatenam, colocando-se o conjunto em paralelo com
o anterior.
3.4.2. De um NFA a uma expresso regular: expresses regulares para linguagens
regulares
A toda a linguagem regular se pode associar um NFA e portanto um grafo de transies.
Partindo do estado q
0
, procuram-se todos os caminhos possveis at ao estado final e as suas
etiquetas.
possvel depois encontrar uma expresso regular que gere todas essas etiquetas. Para
facilitar esta operao, usam-se os grafos de transio generalizados.
Grafos de transio generalizados so grafos de transio em que as arestas podem ser
etiquetadas por expresses regulares (e no s por caracteres). No Cap. 2 chammos-lhe o*. A
etiqueta de um caminho desde o estado inicial at ao estado final a concatenao das
etiquetas das arestas do caminho, i.e., a concatenao de expresses regulares e portanto
uma expresso regular. As cadeias expressas por essa expresso regular so um subconjunto
da linguagem aceite pelo grafo de transio generalizado; a linguagem total ser a unio de
todos os subconjuntos gerados deste modo.
Temos ento o seguinte caminho pata encontrar uma expresso regular para uma dada
linguagem
NFA grafos de transio generalizados expresses regulares
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 135
O grafo de um NFA pode considerar-se um grafo generalizado desde que se interpretem
apropriadamente as suas etiquetas.
Uma aresta etiquetada com um nico carcter a interpreta-se como etiquetada pela
expresso regular a.
Uma aresta etiquetada por vrios caracteres a, b, ..., interpreta-se como etiquetada pela
expresso regular a + b + ....
Pode-se assim afirmar que para toda a linguagem regular existe um grafo de transio
generalizado que a aceita. Por outro lado toda a linguagem aceite por um grafo generalizado
uma linguagem regular.
A equivalncia entre grafos generalizados define-se em termos da linguagem aceite.
Consideremos o exemplo da figura 3.4.12 de um grafo generalizado com estados
Q= {q, q
i
, q
j
, ... }, em que q no nem um estado inicial nem um estado final.
Pode-se obter um grafo generalizado equivalente, com menos um estado, eliminando o
estado q.
No proceddimento tem que se assegurar que no se altera a linguagem aceite pelo NFA
e denotada pelo conjunto das etiquetas que se podem gerar desde o estado inicial at ao estado
final.
Para que isso acontea temos que analisar com ateno as etiquetas (expresses
regulares) das arestas das transio possveis entre os estados que ho-de restar. Por exemplo
para ir de q
i
at q
i
, um ciclo fechado, vai-se com a at q, com um nmero qualquer de es, ou
e
c
d
a b
q
i
q q
j
Figura 3.4.12. Grafo genrico de trs estados. O do
meio pode ser eliminado.
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 136
seja e*, mantm-se em q
e depois com d regressa a q; concatenando d ae*d. Para ir de q
i
at
q
j
passa-se em q e a pode ler-se um nmero arbitrrio de es, seguindo depois para q
j
com b.
E de modo anlogo para as outras transies. Resumindo,
q
i
q
i
: ae*d
q
i
q
j
: ae*b
q
j
q
j
: ce*d
q
j
q
i
: ce*b
Obtm-se assim o grafo de transio generalizado sem o estado q, Fig. 3.4.13.
Note-se que no estado q entram e saem arestas para ambos os estados adjacentes e para
si prprio. No caso de alguma delas no existir, omite-se o correspondente no grafo
simplificado.
Este procedimento assegura que a linguagem aceite no alterada. Num grafo com mais
estados, mais complicado, o processo completo exige que este procedimento seja feito
sucessivamente para todos os pares (q
i
, q
j
) em Q {q} antes de se remover q (i.e., todos os
pares que estejam ligados a q). Por outro lado elimina-se um estado de cada vez, at restarem
apenas dois. As transies generalizadas permitem-nos reduzir qualquer autmato finito a um
outro com apenas dois estados.
ce*b
ce*d ae*d
ae*b
q
i
q
j
Figura 3.4.13. Grafo resultante da eliminao do
estado intermdio da Fig. 3.4.12.
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 137
Pode provar-se que a construo seguida produz um grafo generalizado equivalente ao
inicial.
Pode agora, e em consequncia, enunciar-se o teorema seguinte.
Teorema 3.4.2 (3.2). Seja L uma linguagem regular. Ento existe uma expresso regular r tal
que L=L(r).
Demonstrao:
Existe um NFA que aceita L, com um s estado final e tal que o estado inicial q
0
no
estado final. Pode-se interpretar como um grafo de transio generalizado
Aplica-se-lhe o procedimento anterior de eliminar sucessivamente vrtices q, at que se
fique apenas com o estado inicial e o estado final, obtendo-se o grafo da Figura 3.4.14
seguinte, em que r
1
, r
2
, r
3
, r
4
so expresses regulares.
A expresso regular que denota a linguagem aceite pelo grafo
r=r
1
*r
2
(r
4
+ r
3
r
1
*r
2
)*
De facto, para se ir de q
0
a q
f
, pode-se ir por r
1
(um nmero arbitrrio de vezes),
seguido de r
2
,
r
4
r
1
r
3
r
2
q
0
q
f
Figura 3.4.14, Qualquer NFA pode ser reduzido a
esta forma.
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 138
- seguido de r
4
ou, voltando para trs, de r
3
seguido de r
1
* seguido de r
2
, e esta
volta um nmero arbitrrio de vezes.
No caso de se obter um grafo em que o estado inicial tambm estado final,
a expresso regular
r=(r
1
*
+ (r
2
r
4
*r
3
))*
Exemplo 3.4.2.1
Calcular a expresso regular do autmato da Fig. 3.4.16.
Antes de aplicar a construo subjacente ao teorema 3.2, necessrio introduzir uma
pequena alterao no autmato para que o estado inicial no seja o aceitador. Basta para isso
introduzir um estado adicional q que passa a ser o inicial e do qual se transita para A atravs
de . Resulta um NFA equivalente.
r
2
r
4
r
1
r
3
q
f
Figura 3.4 15. Caso em que o estado inicial aceitador.
1
0
0
0
1
A
B
C
1
Figura 3.4.16. Exemplo 3.4.2.1
1
0
0
0
1
A
B
C
1
q
Figura 3.4.17. Introduo de um
estado inicial na Fig. 3.4.16
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 139
Elimine-se o estado C. O caminho de A para B, passando por C 11*0. De B para B
passando por C 11*0. De B para A passando por C no h. Teremos por isso
Elimine-se agora B. Basta calcular o caminho de A para A passando por B, que
11*0(11*0)*0. Ainda de A para A temos 0 que se soma ao anterior. Logo os caminhos totais
de A para A so 0+11*0(11*0)*0 um nmero arbitrrio de vezes, ou seja (0+11*0(11*0)*0)*.
Logo teremos o autmato
Aplicando agora o resultado geral obtm-se a expresso regular do autmato inicial,
r=(r
4
+ C)* =r
4
*= r
4
3.5. Gramticas Regulares
J vimos duas maneiras de especificar linguagens regulares: autmatos finitos (DFA ou
NFA), e expresses regulares. Ambos tm as suas vantagens e inconvenientes. De uma
podemos obter a outra. As gramticas so uma terceira forma de especificao de linguagens,
r
4
= ( 0 + 11*0(11*0)*0 )*
r
4
A
q
0
0
0
11*0
A
11*0
B q
Figura 3.4.17. Eliminao do estado C.
Figura 3.4.18. Eliminao do estado B
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 140
como vimos no Cap. 1. No caso das linguagens regulares teremos gramticas regulares, uma
classe de gramticas lineares.
3.5.1. Gramticas lineares esquerda e direita
Definio 3.5.1. Gramtica regular
Uma gramtica G = (V,T,S,P) diz-se linear direita se todas as suas produes so da forma
A xB,
A x,
em que
A, B e V, variveis do conjunto das variveis
xe T, smbolo do conjunto dos smbolos terminais
O seu nome deriva do facto de a varivel aparecer direita do smbolo terminal, e por
isso as cadeias vo sendo produzidas da esquerda para a direita. linear por ter apenas uma
varivel, tal como uma equao A=xB, linear em B se x for uma constante.
Uma gramtica diz-se linear esquerda se todas as suas produes tm a forma
A Bx,
A x,
Uma gramtica diz-se regular se ela ou linear esquerda ou linear direita. Na parte
direita das produes aparece no mximo uma varivel e ela situa-se sempre na posio mais
direita ou sempre na posio mais esquerda do lado direito das produes.
Exemplos de gramticas regulares:
Exemplo 3.5.1.1
G
1
= ({S}, {a,b}, S, P
1
) , linear direita
P
1
: S abA
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 141
P
2
: S a
Tambm se pode escrever em forma mais compacta por
P
: S abA|a
Como derivar ababa de G
1
?
S abS ababS ababa
Aplicando P
1
sucessivamente duas vezes e depois P
2
para terminar.
De cada vez que se aplica P
1
introduz-se ab. Aplicando duas vezes, fica (ab)
2
S depois
para eliminar S tem que se aplicar P
2
resultando em (ab)
2
a. Aplicando trs vezes P
1
fica
(ab)
3
S e depois P
2
termina a derivao em (ab)
3
a.
Generalizando conclui-se que a gramtica G
1
produz a linguagem (regular) definida pela
expresso regular
r=(ab)*a
Exemplo 3.5.1.2
G
2
=({S,A,B}, {a,b}, S, P
2
} , linear esquerda
P
1
S Aab
P
2
A Aab | B
P
3
B a
Como derivar aababab de G
2
?
S Aab Aabab Aababab Bababab aababab
Aplicando P
2
sucessivamente conclui-se que esta gramtica gera a linguagem regular
definida pela expresso regular r=aab(ab)*.
Exemplos de gramticas no-regulares
Exemplo 3.5.1.3.
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 142
G
3
=({S,A,B}, {a,b}, S, P }
P
1
S A
P
2
A aB
P
3
A
P
4
B Ab
Esta tem produes lineares direita (P
2
) e outras lineares esquerda (P
4
) (P
1
e P
3
tanto
so lineares esquerda como direita) por isso linear mas no regular. Uma gramtica
linear se do lado direito de cada produo aparece no mximo uma varivel, seja direita seja
esquerda. Se regular linear, mas nem todas as lineares so regulares.
Exemplo 3.5.1.4.
G
4
=({S}, {a,b}, S, P }
P: S aSSa |
no linear porque do lado direito de uma produo aparecem duas variveis (no caso duas
vezes S ).
As gramticas regulares esto associadas com linguagens regulares. Para toda a
linguagem regular existe uma gramtica regular.
3.5.2. Gramticas lineares direita geram linguagens regulares
Uma linguagem gerada por uma gramtica linear direita regular. Para o provar, constri-se
um NFA que imite as derivaes da gramtica linear direita. Se se conseguir, suficiente
para provar que a linguagem regular.
Numa gramtica linear direita, qualquer forma sentencial tem uma e uma s varivel
que o smbolo mais direita. Uma passo numa derivao resultante de uma produo resulta
em
ab...cD ab...cdE
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 143
Um NFA pode imitar esta produo se tiver um estado D e um estado E e entre os dois
uma aresta etiquetada por d :
Estando no estado D e aparecendo d transita para E. como se o autmato estivesse a
ler as cadeias geradas pela gramtica.
Os estados do autmato correspondem s variveis das formas sentenciais. A parte da
cadeia j processada foi obtida por construes semelhantes anteriores. Da o teorema 3.5.1
Teorema 3.5.1.(3.3) Uma gramtica linear direita produz uma linguagem regular
Seja G = (V,T,S,P) uma gramtica linear direita. Ento L(G) uma linguagem regular.
Para o demonstrar constri-se um NFA que imite as produes da gramtica como visto
acima.
Sejam
V = {V
0
, V
1
, ..., V
n
} o conjunto das variveis da gramtica
S = V
0
a varivel inicial (axioma)
P : V
0
v
1
V
i
V
i
v
2
V
j
V
n
v
l
em que os vs so sub-cadeias de um ou mais smbolos terminais.
Se w uma cadeia em L(G), ento, necessariamente, a sua produo ser
V
0
v
1
V
i
v
1
v
2
V
j
E
d D
Figura 3.5.1 Produo D dE
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 144
....
*
v
1
v
2
...v
k
V
n
v
1
v
2
...v
k
v
l
= w
O NFA a ser construdo imita cada derivao consumindo um v de cada vez. V
0,
V
i
, V
j
,
..., V
n
so estados do autmato, mas existem outros entre eles quando os vs so cadeias com
mais de um carcter. Alm disso preciso acrescentar o estado final.
Por exemplo se tivermos a produo:
V
i
a
1
a
2
a
3
...a
m
V
j
ento o NFA ter um caminho ligando V
i
a V
j
, ou seja o (V
i
, V
j
) existe e ser definida por
o*(V
i
, a
1
a
2
a
3
...a
m
) = V
j
Para uma produo
V
i
a
1
a
2
a
3
...a
m
a funo de transio generalizada ser o estado final V
f
.
o*(V
i
, a
1
a
2
a
3
...a
m
) = V
f
V
i
a
1
a
m
V
j
a
2
Figura 3.5.2. Produo V
i
a
1
a
2
a
3
...a
m
V
j
V
i
a
1
a
m
V
f
a
2
Figura 3.5.3. Produo V
i
a
1
a
2
a
3
...a
m
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 145
Se uma cadeia weL(G) ento ela foi gerada por um conjunto de produes definidas
acima. No NFA existe, por construo, um caminho etiquetado w que vai de V
0
at V
f
ou seja,
w aceite pelo NFA.
Se uma cadeia w aceite pelo NFA, ento, pelo modo como este foi construdo, para
aceitar w o autmato tem que passar por uma sequncia de estados V
0,
V
i
,... at V
f
usando
caminhos etiquetados v
1
, v
2
, ...., ou seja, w tem necessariamente a forma
w= v
1
v
2
...v
k
v
l
e por isso a derivao
V
0
v
1
V
i
v
1
v
2
V
j
*
v
1
v
2
...v
k
V
n
v
1
v
2
...v
k
v
l
= w
possvel e em consequncia w pertence a L (G).
q.e.d.
Exemplo 3.5.2.1
Seja G = ( {S, A, B}, {a,b}, S, P )
com P: S aA | aB ,
A bB | b ,
B aA | bB .
Derivao da cadeia ababab :
S aA abB abaA ababBababaA ababab
Para se construir o NFA corresondente, cria-se um estado por cada varivel mais um
estado final, resultando em 4 estados S,A,B,F. Depois as transies entre cada dois estados
extraem-se das produes: a etiqueta o smbolo terminal da produo repectiva. As
produes que permitem completar a derivao, as que tm no lado direito apenas caracteres
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 146
do alfabeto ou , levam necessariamente a uma estado final; no caso apenas a produo A
b. Resulta o autmato seguinte da Fig.3.5.4.
3.5.3. Gramticas lineares direita a partir de autmatos finitos
Para provar que toda a linguagem regular pode ser gerada por uma gramtica linear direita
(i) constri-se o DFA para a linguagem e
(ii) inverte-se a construo apresentada no teorema anterior 3.3. Os estados do DFA
transformam-se nas variveis da gramtica, e os smbolos produtores das transies so os
terminais do lado direito das produes. Teremos assim o
Teorema 3.5.2.(3.4) Se L uma linguagem regular no alfabeto E, ento existe uma gramtica
linear direita G=(V,E, S,P) tal que L=L(G).
Demonstrao:
Seja M=(Q,E,o, q
0
,F) o DFA que aceita L, tal que
Q= {q
0
,q
1
,...q
n
}
E ={a
1
, a
2
, ..., a
m
}
Vamos fazer a prova do teorema construindo uma gramtica linear direita a partir do
DFA. Para isso
S a A
B
F
b
a
b
a
b
Figura 3.5.4. Autmato da gramtica do exemplo 3.5.2.1.
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 147
1 Construa-se a gramtica linear direita G = (V, E, S, P), tal que
V= {q
0
,q
1
,...q
n
} as variveis da gramtica so os estados do DFA
S = q
0
2 Para cada transio o (q
i
, a
j
) = q
k
no DFA M , introduz-se em P a produo
q
i
a
j
q
k
cria-se uma produo por cada transio entre dois estados
3 Se q
k
faz parte de F, acrescenta-se a P a produo
q
k
cria-se uma produo que permite terminar as derivaes.
A gramtica G gerada deste modo pode produzir toda e qualquer cadeia de L.
Por outro lado, se uma cadeia w pertence a L, ento ela pode ser derivada pela gramtica
G. A demonstrao mais detalhada ser vista por exemplo em Linz p. 94.
Se partirmos de um NFA, em vez de um DFA, o teorema igualmente vlido. A
construo anloga, com as pequenas diferenas; agora teremos
2 Para cada transio o (q
i
, a
j
) = q
k
no NFA M , introduz-se em P a produo
q
i
a
j
q
k
cria-se uma produo por cada transio entre dois estados
Se existir tambm o (q
i
, a
j
) = q
l
, introduz-se em P a produo ou seja, neste caso,
q
i
a
i
q
l
,ou seja q
i
a
j
q
k
| a
j
q
l
Para cada transio o (q
i
, ) = q
k
no NFA M, introduz-se em P a produo q
i
q
k
(mais
alm chamaremos unitria a esta produo)
A nica diferena advm da escolha possvel a partir de um estado, que se reflecte em
duas produes possveis.
Exemplo 3.5.3.1
Construir a gramtica linear direita pata a linguagem L(aab*a).
Comeando por desenhar o NFA respectivo obtm-se
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 148
A tabela de transies no NFA e das produes da gramtica a seguinte:
Tabela 3.5.3.1.Exemplo 3.5.3.1
Transies em M Produes em G
o (q
0
, a)={q
1
} q
0
aq
1
o (q
1
, a)={q
2
} q
1
aq
2
o (q
2
,b)={q
2
} q
2
bq
2
o (q
2
, a)={q
f
} q
2
aq
f
q
f
e F q
f
Para gerar por exemplo a cadeia aaba usam-se as formas sentenciais
q
0
aq
1
aaq
2
aabq
2
aabaq
f
aaba
Exemplo 3.5.3.2.
Construir a gramtica linear direita para a linguagem L(aab*a+aa+ab*a)
A linguagem a unio de trs:
aab*a+aa
a a a
b
q
f
q
0
q
1
q
2
Figura 3.5.5.NFA para aab*a
a a a
b
q
4
q
1
q
2
q
3
a
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 149
ab*a
Reduz-se a um NFA com um s estado inicial e um s estado final criando um estado inicial
global e um estado final global com as necessrias transies -
Poderemos construir a tabela 3.5.3.2. das transies e das produes da gramtica
equivalente:
Tabela 3.5.3.2.
Transies em M
Produes em G
o (q
0
, )={q
1
, q
5
} q
0
q
1
| q
5
o (q
1
, a)={q
2
} q
1
aq
2
o (q
2
,a)={q
3
, q
4
} q
2
aq
3
| aq
4
o (q
3
, a)={q
4
} q
3
aq
4
o (q
3
, b)={q
3
} q
3
bq
3
q
4
q
f
o (q
5
, a)={q
6
} q
5
aq
6
o (q
6
, b)={q
6
} q
6
bq
6
o (q
6
,a)={q
7
} q
6
aq
7
o (q
7
, )={q
f
} q
7
q
f
q
f
e F q
f
o (q
4
, )={q
f
}
a
a
b
q
7
q
5
q
6
Figura 3.5.6. Resoluo por partes do exemplo 3.5.3.2
a a a
b
q
4
q
1
q
2
q
3
a
a
b
q
7
q
5
q
6
q
q
f
a
Figura 3.5.7. NFA resultante para o exemplo 3.5.3.2
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 150
3.5.4. Equivalncia entre linguagens regulares e gramticas regulares
Nos pargrafos anteriores vimos a equivalncia entre linguagens regulares, autmatos finitos
e gramticas lineares direita. Que se passa com as gramticas lineares esquerda ?
Tal como para as gramticas lineares direita, tambm para as gramticas lineares
esquerda se pode enunciar o teorema de equivalncia:
Teorema 3.5.3 (3.5.)A linguagem L regular se e s se existir uma gramtica linear
esquerda G tal que L=L(G).
Para demonstrar este teorema recorre-se construo de uma gramtica linear
esquerda que gera a linguagem reversa de L. Assim se prova que a reversa de L regular.
Mas se a reversa de L regular, tambm o , porque a reverso preserva a propriedade de
regular. Para mais detalhes ver p. ex. em Linz p. 98.
Podemos finalmente enunciar o teorema de equivalncia entre linguagens regulares e
gramticas regulares:
Teorema 3.5.4.(3.6) Uma linguagem L regular se e s se existir uma gramtica regular G
tal que L=L(G).
Este teorema a conjugao dos dois anteriores.
3.6. Sntese das equivalncias
Vimos neste captulo que dada uma expresso regular, poderemos construir um autmato
finito NFA ou DFA, e vice-versa. Vimos tambm que dado um DFA ou um NFA podemos a
partir deles extrair uma gramtica regular; e dada uma gramtica regular poderemos construir
um autmato finito equivalente. Temos assim diversas equivalncias possveis (note-se que
qualquer relao de equivalncia uma relao transitiva). Estas equivalncias esto
esquematizadas na figura seguinte.
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 151
Figura 3.6.1. Vrias formas de descrever as linguagens regulares (LR)
Teorema 3.1.(3.4.1) ER NFA
Teorema 3.2 LR ER (LR DFA GTG ER)
Teorema 3.3 Gramticas lineares direita LR
( Gramticas lineares direita NFA LR )
Teorema 3.4 LR Gramticas Lineares direita
(LR DFA Gramticas lineares direita)
Expresses regulares (ER)
DFA ou NFA
Gramticas regulares (GR)
Teorema
3.1
Teorema
3.2
Teorema
3.3
Teorema
3.4
Teoria da Computao Cap. 3 Expresses regulares, linguagens e gramticas
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 152
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.
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 153
CAPTULO 4
PROPRIEDADES DAS LINGUAGENS REGULARES
4.1. Introduo 155
4.2.Propriedades de fecho das linguagens regulares 155
4.3 Propriedades de deciso das linguagens regulares 161
4.4 Identificao das linguagens regulares: o lema da bombagem 163
The pumping lema 176
Bibliografia 177
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 154
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 155
4.1. Introduo
Nos captulos anteriores estudmos fundamentalmente o contexto regular para linguagens,
gramticas e autmatos. O esquema de equivalncias a que se chegou define um universo de
linguagens interessante e til. Importa agora conhecer mais pormenorizadamente as
propriedades dessa famlia de linguagens. Qual o seu grau de generalidade ? So fechadas em
relao a certas operaes sobre conjuntos? Uma linguagem finita ou no? Outra importante
questo como se pode saber se uma dada linguagem regular. Se conhecermos uma
propriedade geral que todas as linguagens regulares tm obrigatoriamente, e se uma dada
linguagem no a verifica, ento ela no regular. Veremos uma tal propriedade geral.
4.2. Propriedades de fecho das linguagens regulares
As propriedades de fecho das linguagens regulares sob diferentes operaes tm um interesse
terico considervel. Do uma perspectiva da natureza genrica das famlias de linguagens e
ajudam na resposta a questes prticas. Um conjunto fechado em relao a uma operao
(sobre os seus elementos) se o resultado da aplicao dessa operao a quaisquer dos seus
elementos resulta num seu elemento. A figura 4.44. seguinte ilustra esta propriedade para uma
operao unria e uma operao binria (com dois argumentos): o resultado d sempre um
elemento do mesmo conjunto.
4.2.1. Fecho em relao a operaes de conjuntos
Algumas conhecidas operaes sobre conjuntos quando aplicadas a linguagens regulares
produzem linguagens regulares.
Figura 4.1.1. Fecho de um conjunto em relao a
uma operao entre os seus elementos.
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 156
Teorema 4.1. Se L
1
e L
2
so linguagens regulares, ento tambm o so
(i) L
1
L
2
, propriedade de fecho em relao unio
(ii) L
1
L
2
, propriedade de fecho em relao interseco
(iii) L
1
L
2
, propriedade de fecho em relao concatenao,
(iv) Compl(L
1
), Compl (L
2
), fecho em relao complementao
(v) L
1
*, L
2
*, fecho em relao ao fecho-estrela
(vi) L
1
L
2
=L
1
Compl(L
2
), fecho em relao diferena
Demonstrao:
A demonstrao destas propriedades faz-se recorrendo ao que estudmos nos captulos
anteriores.
(i) (iii) (v):
Vimos que se L
1
e L
2
so regulares, existem expresses regulares r
1
e r
2
que lhes
correspondem, isto L
1
= L
1
(r
1
), L
2
= L
2
(r
2
).
Vimos tambm que por definio de expresses regulares, r
1
+r
2
, r
1
r
2
, r
1
* , r
2
* so
expresses regulares denotando respectivamente as linguagens L
1
L
2
, L
1
L
2
, L
1
*, L
2
*
Em consequncia o fecho em relao unio(i), concatenao (iii), ao fecho-estrela (v)
evidente e est demonstrado.
(iv)
Em relao complementao (iv), no assim to imediato, mas j o vimos no Cap. 2.
Seja M = (Q, E, o, q
0
, F) o DFA que aceita L
1
. Ele tem estados finais F. Se considerarmos
agora o autmato que se obtm deste invertendo a qualidade aceitador/no aceitador de cada
estado, teremos o DFA complementar M
c
.
Ento o DFA M
c
= (Q, E, o, q
0
, Q - F) aceita Compl(L
1
).
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 157
De facto, num DFA a funo de transio generalizada o* uma funo total, isto , ela
definida para todas as cadeias de E
*
. Portanto, dada uma cadeia w e o estado inicial q
0
, o*(q
0
,
w) existe, e ou um estado final (pertence e F, caso em que weL
1
) ou um estado no
aceitador e portanto pertencente a Q-F e neste caso we Compl(L
1
). Havendo um DFA que
aceita Compl(L
1
), ela regular e verifica-se o fecho em relao complementao.
(ii)
Em relao interseco, faz-se uma prova construtiva: constri-se um DFA especial a
partir dos DFA de L
1
e L
2
, respectivamente M
1
e M
2
.
Sejam M
1
= (Q, E, o
1
, q
0
, F
1
) e M
2
= (P, E, o
2
, p
0
, F
2
) os DFA de L
1
e L
2
.
Vamos construir o DFA interseco destes dois e chamemos-lhe M
12
: ele aceitar uma
cadeia se e s se essa cadeia for aceite por M
1
e por M
2
. Tomamos um carcter do alfabeto
(que o mesmo nas duas linguagens) e seguimo-lo num e noutro autmato. Se ele est num
estado q
i
de M
1
e num estado p
j
de M
2
, criamos um estado q
ij
em M
12
. Se ele transita em M
1
para q
k
e em M
2
para p
l
, cria-se o estado q
kl
em M
12
. Assim os estados de M
12
correspondem a
pares de estados de (Q, P).
Suponhamos o alfabeto E={a,b} e o carcter a. A Fig. 4.2.1 ilustra a demonstrao.
De seguida v-se para onde se transita com b, em q
i
de M
1
e p
j
de M
2
, e cria-se em M
12
o
estado respectivo.
q
i
q
k
a
p
j
p
l
a
(q
i
, p
j
)
a
(q
k
, p
l
)
q
ij
q
kl
Ento em M
12
Em M
2
Em M
1
Figura 4.2.1 Autmato da interseco de duas linguagens
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 158
O conjunto dos estados de M
12
um subconjunto do produto cartesiano dos estados de M
1
com os de M
2
, QxP, composto por pares (q
i
, p
j
), com q
i
eQ
j
e p
j
eP.
A funo de transio do DFA M
12
, o , obtm-se sabendo que M
12
est no estado (q
i
, p
j
)
sempre que M
1
est no estado q
i
e M
2
est no esto q
j
, ou seja,
o ((q
i
, p
j
), a)= (q
k
, p
l
)
Sempre que
o
1
(q
i
, a)= q
k
e
o
2
(p
j
, a)= p
l
E quais sero os estados aceitadores em M
12
?
Queremos obter o DFA que aceita a interseco das linguagens L
1
e L
2
, isto , as cadeias
que levam M
1
a um estado aceitador e ao mesmo tempo M
2
tambm a um estado aceitador.
Para que isso acontea, fazemos aceitadores em M
12
os estados compostos por estados
aceitadores, isto , os estados (q
i
, p
j
) tais que q
i
aceitador em M
1
(q
i
eF
1
) e p
j
aceitador em
M
2
(p
j
eF
2
).
Deste modo o DFA M
12
aceita todas as cadeias, e s essas, weL
1
L
2
.
Alternativamente a esta demonstrao construtiva, e usando os nossos conhecimentos de
lgica, poderemos usar a Lei de DeMorgan
1 2
1 2
L L L L =
Se L
1
regular, tambm o o seu complemento. Se L
2
regular, tambm o o seu
complemento. Se os dois complementos so regulares, tambm o a sua unio. Se a unio
regular, tambm o o seu complemento. Logo a interseco regular.
vi) Quanto diferena, escrevamo-la de outra forma
2
1 2 1
L L L L =
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 159
Sendo L
2
regular, tambm o o seu complemento. Sendo L
1
regular, a interseco com
outra regular d uma regular, como acabmos de provar. Logo a diferena regular (sendo L
1
e L
2
regulares, naturalmente).
H uma outra operao interessante sobre uma linguagem - a reverso-, que se opera
revertendo toda e qualquer cadeia da linguagem. Ora a reversa de uma linguagem regular
uma linguagem regular.
Teorema 4.2. A famlia das linguagens regulares fechada em relao reverso.
Para demonstrar, construirmos o DFA da linguagem e depois procuramos, a partir dele, um
DFA que aceita a linguagem reversa. Se conseguirmos, est a prova feita.
Uma cadeia reverte-se lendo-a do fim para o princpio. Tendo um NFA que aceita uma
cadeia, ele vai-a lendo, partindo do estado inicial, at chegar ao estado aceitador. Se agora
andarmos para trs, partindo do estado final aceitador, percorrendo as arestas em sentido
contrrio, chegaremos ao estado inicial depois de lermos a cadeia ao contrrio. Portanto para a
reverso, faz-se uma prova construtiva atravs dos passos seguintes:
- constri-se um NFA com um s estado final para a linguagem L.
- transforma-se o estado inicial em final e o final em inicial
- inverte-se o sentido das setas em todas as arestas do grafo do NFA.
- o NFA resultante aceita L
R
Logo o NFA da reversa existe, porque acabmos de o construir, e por isso L
R
regular.
4.2.2. Fecho em relao a outras operaes
4.2.2.1. Homomorfismo
Um homomorfismo uma correspondncia biunvoca entre dois conjuntos. Dois elementos
so homomorfos (ou homomrficos) se so semelhantes na forma ou compostos por partes
semelhantes entre si (homo-a mesma, morfo-forma).
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 160
h (abc) = h(a)h(b)h(c) = (01)(11)(101)=0111101
Uma cadeia no conjunto origem homomrfica de uma cadeia no conjunto de chegada. A
relao de semelhana resulta da transformao h.
Teorema 4.3. Seja h um homomorfismo. Se L uma linguagem regular, ento a sua imagem
homomrfica tambm regular. A famlia das linguagens regulares por isso fechada em
relao a qualquer homomorfismo.
Podemos imaginar uma prova construtiva deste teorema. Seguindo o exemplo, construmos
o NFA da linguagem original. Nele existem arestas com etiquetas a, b e c.
Substituamos cada aresta a por uma aresta 0 seguida de um estado seguido de uma aresta
1. Substituamos cada aresta b por uma aresta 1 seguida de um estado seguido de uma aresta 1.
E substituamos cada aresta c por uma aresta 1 seguida de um estado seguido de uma aresta 0
seguida de um estado 1.
O NFA obtido aceita a linguagem que resulta da original depois do homomorfismo h, que
por isso mesmo uma linguagem regular.
a
b
c
01
11
101
E
1
E*
2
h
h
h
Figura 4.2.2. Ilustrao do homomorfismo
1 2
c
1 2
1 0 1
Figura 4.2.3. O autmato de um homomorfismo
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 161
Pode-se tambm demonstrar a partir das expresses regulares. Escreve-se uma expresso
regular da linguagem original L. Nela substituem-se os caracteres a, b, c, pelas suas imagens
homomrficas 01, 11, 101. O que resulta ainda uma expresso regular e portanto denota
uma linguagem regular. Esta a imagem homomrfica de h.
4.2.2.2 Quociente direita
Considerem-se duas linguagens L
1
e L
2
no mesmo alfabeto. Tomemos agora todas as cadeias
de L
1
que se podem decompor em duas partes: um sufixo y e um prefixo x, tal que o sufixo y
constitui uma cadeia de L
2
.
O conjunto dos prefixos x compe a linguagem quociente de L
1
por L
2
direita. Isto ,
L
1
/L
2
={x: xyeL
1
para algum y eL
2
}
Teorema 4.4. Se L
1
e L
2
so linguagens regulares, ento L
1
/L
2
tambm regular. A famlia
das linguagens regulares fechada em relao ao quociente direita por uma linguagem
regular.
Para demonstrar o teorema constri-se o DFA do quociente. Ver por exemplo em Linz 107.
4.3. Propriedades de deciso de linguagens regulares
H questes importantes sobre linguagens regulares s quais temos que saber responder. No
se trata naturalmente de analisar todas as cadeias de uma linguagem, tipicamente infinita, e
ver se elas tm alguma caracterstica especial. Essa resposta obtm-se analisando uma das
formas de representao estudadas: um autmato finito (determinstico ou no
determinstico), uma expresso regular ou uma gramtica regular. Uma questo diz-se
decidvel se formos capazes de lhe dar uma resposta genrica, aplicvel a todas as linguagens
x y
L
1
L
2
L
1
/L
2
Figura 4.2.4. Quociente direita
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 162
(neste caso regulares), isto , se existir um algoritmo para ela. Veremos de seguida algumas
dessas questes fundamentais.
4.3.1. A questo da pertena
Dada uma linguagem qualquer, uma dada cadeia w pertence-lhe?
Teorema 4.5. Dada uma representao padro de qualquer linguagem regular L em E e dada
uma qualquer cadeia weE*, existe um algoritmo para determinar se w pertence ou no a L.
Demonstrao (construtiva):
Representa-se a linguagem por um DFA, e depois testa-se se o DFA aceita ou no w. Este
o algoritmo.
4.3.2. A questo de finitude ou infinitude de uma linguagem.
Como saber se uma linguagem finita ou infinita?
Teorema 4.6. Existe um algoritmo para verificar se uma linguagem, dada numa forma
padro, vazia, finita ou infinita.
A demonstrao construtiva:
1 Representa-se a linguagem por um grafo de transio de um DFA, o que sempre
possvel por ser regular.
2 Analisam-se os caminhos do grafo.
Se existe um caminho do estado inicial ao estado final, a linguagem no vazia.
3 Procuram-se todos os vrtices que so base de um ciclo.
Se algum desses vrtices base est num caminho do estado inicial ao estado final, a
linguagem infinita. Se no, finita.
De facto poderemos dar um nmero infinito de voltas ao ciclo, e por cada volta aceita-se
uma cadeia; logo o nmero de cadeias aceites infinito.
4.3.3. A questo da igualdade de linguagens
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 163
Como verificar se duas linguagens so ou no iguais?
Teorema 4.7. Dadas duas linguagens regulares L
1
e L
2
numa forma padro, existe um
algoritmo para determinar se L
1
=L
2
.
Demonstrao construtiva:
Constri-se o DFA para a unio das diferenas das linguagens
L = (L
1
- L
2
) (L
2
L
1
)
e testa-se a se a linguagem resultante vazia. Se sim, as linguagens so iguais, se no, so
diferentes. De facto se L
1
=L
2
ento
L
1
- L
2
=C e L
2
L
1
=C e C C =C. Por outro lado se
L no vazia, ento ou L
1
- L
2
ou
L
2
L
1
no-vazia e por isso L
1
L
2
.
4.4. Identificao de linguagens no regulares: lema da bombagem
A questo bsica sobre uma linguagem- ser ela regular ? a de resposta mais difcil.
Sabemos que se formos capazes de construir um NFA para ela, ela regular. E se no formos
? No ser por falta de engenho e arte? Haver um algoritmo para saber se uma linguagem
no regular? Disso trata o to estranho (numa primeira abordagem) lema da bombagem.
4.4.1. O princpio do pombal (pigeonhole)
O princpio do pombal usado pelos matemticos para se referirem seguinte situao: se
dispusermos n objectos em m caixas (gaiolas no pombal) e se n>m, ento pelo menos uma
caixa tem que conter mais do que um objecto.
A analogia com os autmatos finitos reside no facto de estes, por terem um nmero finito de
estados, terem memria limitada. Assim sendo eles no so capazes de distinguir prefixos (de
cadeias) de comprimentos arbitrrios.
Figura 4.4.1. O princpio do pombal.
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 164
Por exemplo, num grafo de transio com n vrtices, qualquer caminho de comprimento igual
ou superior a n tem que repetir algum vrtice, isto , tem que conter um ciclo. Se cada estado
for considerado uma gaiola, ele ter mais de uma passagem.
Exemplo 4.4.1. Seja L=L(aba*b)
O seu NFA fcil de desenhar (Figura 4.4.2) :
A cadeia abb leva o DFA do estado inicial ao final aceitador, passando uma vez em cada
estado. O caminho abaab passa duas vezes no estado 3. Qualquer caminho aceitador maior
passar mais vezes em 3. Temos aqui uma ilustrao do princpio do pombal.
Considere-se a cadeia abab de L. Poderemos decomp-la em trs partes - x, y e z- da
seguinte forma:
Tabela 4.4.1
ab a b
x y z
Se tivermos agora a cadeia abaab tambm a poderemos decompor em trs partes mas de
modo ligeiramente diferente,
Tabela 4.4.2
ab aa b
x y
2
z
e abaaab
1
2
3
4
a
b
a
b
Figura 4.4.2. Exemplo 4.4.1
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 165
Tabela 4.4.3
ab aaa b
x y
3
z
E assim sucessivamente, qualquer cadeia aceite se pode decompor em trs partes xy
i
z como
na Tabela 4.4.4 seguinte:
Tabela 4.4.4
i w=xy
i
z
0 abb
1 abab
2 abaab
3 abaaab
4 abaaaab
Podem-se desenhar os caminhos correspondentes, como na figura 4.4.3: partindo de q
0
,
com o segmento ab chega-se ao ponto (estado) m; a podem-se tirar as da cartola, tantos
quantos se quiser, ou, dito de outro modo, podem-se bombear as de um poo sem fundo, at
que decidimos prosseguir, percorrendo o segmento b at ao fim. Todas as cadeias bombeadas
(isto , no caso com as bombeados) pertencem linguagem, dado que levam ao estado
aceitador
Analisemos em detalhe a decomposio xyz das cadeias desta linguagem. Ela possvel
para qualquer cadeia da linguagem de comprimento igual ou maior do que 4 (abab, abaab,
). A decomposio verifica as condies seguintes:
w=xyz
com
|xy|=aba = 3
a
q
0
m
a b
b
q
k
e F
Figura 4.4.3. A decomposio para o exemplo
1. Nesta decomposio x=ab, z=b.
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 166
e
|y| = 1
Se bombearmos y obtemos
w
i
=xy
i
z
a cadeia w
i
pertence a L para todo o i=0, 1, 2, ...
Se m for o comprimento da menor cadeia que contm uma vez o ciclo, neste caso m=4 e
|xy| = 3 s m.
Pode-se fazer uma construo semelhante para uma qualquer linguagem regular infinita.
Como representada por um autmato finito, para ser infinita tem que ter cadeias
arbitrariamente grandes, e portanto tem que ter pelo menos um ciclo que o permita.
Exemplo 4.4.2.
Seja a linguagem L=abb(baa)*bb regular e infinita.
Se olharmos atentamente para o NFA verificamos que o nico ciclo existente 4-5-6. Ser
a que se faz a bombagem. Bombeia-se baa um nmero arbitrrio de vezes. A decomposio
xyz neste caso tem y=bab. As outras partes sero x=abb, z=bb. Por outro lado a menor cadeia
que contm xy abbbaabb e portanto m= 8.
Existe assim uma decomposio que verifica as condies seguintes:
w=xyz
com
1 2 3 4
5
6
7 8
a b b b b
b a
a
Figura 4.4.4. Autmato de L=abb(baa)*bb
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 167
|xy|=abbbaa = 6 s m
e
|y| = 3
Se bombearmos y obtemos
w
i
=xy
i
z
a cadeia w
i
pertence a L para todo o i=0, 1, 2, ...
Exemplo 4.4.3
No caso da linguagem regular L=a(abb)*bb(baa)*bb, cujo grafo do NFA o da Fig 4.4.5,
existem dois ciclos que fazem a linguagem infinita. Se procurarmos uma decomposio xyz
das cadeias da linguagem onde possamos fazer a bombagem, encontraremos duas
possibilidades, conforme o ciclo que escolhermos:
- escolhendo o 1 ciclo, ser xyz= a(abb)bbbb ou a(abb)bbbaabb ou a(abb)bb(baa)
2
bb
Tabela 4.4.6
x y z
a abb bbb
a abb bbbaabb
a abb bbbaabaabb
a abb
temos que x e y so bem definidos mas z pode ter muitas composies.
1 2 3 4
5
6
7 8
a b b b b
b a
a
5
6
a
b
b
Figura 4.4.5. Autmato de L=a(abb)*bb(baa)*bb
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 168
- escolhendo o 2 ciclo, ser xyz= abb(baa)bb ou a(abb)bb(baa)bb ou
Tabela 4.4.7
x y z
abb baa bb
aabbbb baa bb
aabbabbbb baa bb
aabbabbabbbb baa
temos agora que y e z so bem definidos mas x pode ter muitas composies.
Para todas as cadeias da linguagem de comprimento maior do que 8 existe pelo menos um
ciclo. Para que uma cadeia contenha os dois ciclos pelo menos uma vez, ter um comprimento
de pelo menos 11. Podemos assim afirmar que para todas as cadeias maiores do que 11 existe
pelo menos uma decomposio xyz que verifica as propriedades
w=xyz
com
|xy| s 11
e
|y| 1
Se bombearmos y obtemos
w
i
=xy
i
z
a cadeia w
i
pertence a L para todo o i=0, 1, 2, ...
Estamos agora em condies de enunciar esse to famoso quanto incompreendido lema da
bombagem para linguagens regulares.
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 169
4.4.2. O Lema da bombagem (pumping lema)
A propriedade das linguagens regulares que acabmos de analisar formalizada pelo lema
da bombagem.
Teorema 4.8. Seja L uma linguagem regular infinita. Ento existe algum inteiro positivo m tal
que qualquer cadeia weL com |w| > m se pode decompor em
w=xyz
com
|xy| s m
e
|y| > 1
tal que
w
i
=xy
i
z
tambm pertence a L para todo o i=0, 1, 2, ...
Quer dizer que qualquer cadeia suficientemente longa de L se pode partir em trs partes de
tal modo que um nmero arbitrrio de repeties da parte do meio produz outra cadeia de L.
Pode-se dizer por isso que a sub-cadeia do meio bombeada, e da o nome do lema.
Qual o interesse do lema ? Provar que uma linguagem regular ? Ser que s as
linguagens regulares o verificam ? O lema no diz que se aplica s a elas.
Exemplo 4.4.4.
Consideremos a linguagem L = {aa
p
ab
q
a
q
, p>0, q>1}
Existe um m = 5 tal que para toda a cadeia |w|> 5 possvel encontrar uma decomposio
w=xyz tal que |xy|s4, |y|>1, e a cadeia w
i
=xy
i
z pertence linguagem para todo o i > 0.
Demonstrao:
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 170
Seja a cadeia de L aaaba. Nela podemos fazer a decomposio
xyz= |aa|a|ba| obedecendo s restries de tamanho. Bombeando agora y obtm-se
Tabela 4.4.8
i w=xy
i
z
0 aaba
1 aaba
2 aaaba
3 aaaaba
4 aaaaaba
cadeias que pertencem todas a L.
Para cadeias de L maiores do que 5, por exemplo aaaaba, aabababa, pode-se sempre fazer
a decomposio com x=a, y=a, de tal modo que bombeando o y se obtm cadeias da
linguagem para todo o valor de i.
No entanto esta linguagem livre de contexto no regular, como veremos posteriormente.
O leitor pode tentar desenhar um autmato finito, ou escrever uma expresso regular para ela
que no conseguir faz-lo devido ao termo a
q
b
q
que tem forosamente um nmero de as
igual ao nmero de bs . Por isso as linguagens regulares so um subconjunto das linguagens
que verificam o Lema da Bombagem.
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 171
Figura 4.4.6. As linguagens regulares verificam o Lema da Bombagem. Mas h outras, no regulares,
que tambm o verificam.
O Lema diz-nos que se a linguagem regular (proposio A) ento existe um m apropriado
(proposio B),
A B (implicao)
mas isto no nos autoriza a dizer que se existe um tal m ento a linguagem regular, isto
no verdade que
B A
O que sabemos com toda a certeza que
Se (A B) ento (noB noA)
isto , se no existe um tal m, a linguagem no regular, com toda a certeza.
O Lema usa-se precisamente com noBnoA: procura-se demonstrar com ele que uma
linguagem no regular.
Para isso temos que provar que impossvel a existncia de um m apropriado. Como fazer
a prova ? Por contradio: supe-se que existe e tenta-se reduzir ao absurdo.
Vejamos a lgica do Lema e do seu contrrio:
Linguagens
que verificam
o Lema da
Bombagem
Linguagens
regulares
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 172
Tabela 4.4.9.
O Lema pela afirmativa O Lema pela negativa
- existe um m tal que para
- para qualquer valor de m sou capaz de
encontrar
- qualquer cadeia |w| > m pertencente a L
existe
- (pelo menos) uma cadeia |w| > m
pertencente a L em que
- uma decomposio xyz que produz, pela
bombagem de y, |xy|sm
- qualquer decomposio xyz produz, pela
bombagem de y, |xy|sm
- todas cadeias pertencentes a L
i > 0, xy
i
z e L
- (pelo menos) uma cadeia que no pertence
linguagem
- i > 0, xy
i
z e L
O que temos ento que provar, para uma linguagem qualquer, a fim de podermos concluir
que no regular, tudo o que se encontra na segunda coluna desta Tabela 4.4.9.
A prova pode transformar-se num jogo entre duas pessoas, tal como na Tabela 4.4.10.
Tabela 4.4.10. O jogo do lema da bombagem
Jogador 1 Jogador 2
Define a linguagem L
Escolhe um m
Indica uma cadeia de L
Define uma decomposio |xy|sm
Indica um i que bombeie para fora
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 173
O jogador 1 tenta provar que no regular e o jogador 2 o contrrio (procurando o m).
O jogo s conclusivo se o jogador 1 ganhar, concluindo-se que a linguagem no
regular. A vitria do jogador 2 no permite qualquer concluso (trata-se de um jogo pouco
cavalheiresco ).
O jogador 1 tem que ter uma estratgia para a escolha da cadeia concreta para um qualquer
valor de m que o jogador 2 coloque sobre a mesa, e aqui reside o cerne da prova.
Para um qualquer m que o meu adversrio proponha, qual a estrutura da cadeia que devo
escolher de modo que ele fique impossibilitado de a definir uma decomposio apropriada?
Como o posso encost-lo parede?
Esta o desafio do jogador 1.
Exemplos de aplicao do Lema da Bombagem.
Exemplo 4.4.5. Provar que L={a
n
b
n
} no regular
J encontrmos esta linguagem em diversas ocasies. Para que um autmato finito a
pudesse reconhecer, teria que ser capaz de memorizar o nmero de as que j entraram e
depois contar um igual nmero de bs at aceitar a cadeia. S se o autmato pudesse ter um
nmero arbitrariamente grande de estados, at ao infinito, ele ser capaz de reconhecer esta
linguagem.
Por aqui legtima a suspeita de que a linguagem no regular. Mas provemo-lo
formalmente com o lema da bombagem
Tem que se provar que: para qualquer valor de m por muito grande que este seja, existe
uma cadeia em que qualquer decomposio |xy|s m bombeia para fora da linguagem.
Se me do um m=10, por exemplo, eu apresento a cadeia a
10
b
10
. A decomposio xy tem
que ser tal que todos elementos de y so as, pelo facto de |xy|s 10. Logo bombeando y por
exemplo duas vezes, aumenta o nmero de as, que fica assim maior do que o nmero de bs e
por conseguinte a cadeia no pertence linguagem.
Se me do m=20, escolho a
20
b
20
e acontece coisa semelhante.
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 174
E para um m qualquer eu escolho a cadeia a
m
b
m
. Qualquer decomposio xyz bombeia para
fora da linguagem.
Exemplo 4.4.6.
Seja o alfabeto E={0} e a linguagem composta por cadeias apenas de zeros e com um nmero
de zeros igual sequncia dos quadrados perfeitos, isto 0, 1, 4, 9, 16, , ou seja, L= {0
i
2
, i
eN}.
Vejamos outra perspectiva da prova, que no recorre directamente ao Lema da Bombagem,
mas ainda assim prova por contradio.
Admitamos que a linguagem regular. Existe por isso um NFA que a aceita. Seja n o seu
nmero (finito) de estados. Ora este NFA tem que aceitar a cadeia com n
2
zeros. Mas como
tem apenas n estados, para ler esta cadeia toda tem que passar pelo menos duas vezes por um
estado, isto , tem que ter um percurso fechado, um anel, que passa pelo menos em um
estado. Assim pelo facto indiscutvel de que n
2
>n , h pelo menos dois estados iguais desde o
incial q
0
at ao final aceitador q
n2
. Sejam eles q
i
e q
j
, definindo-se i-j= p s n. O anel da figura
tem comprimento p. Mas se dermos duas voltas ao anel, a cadeia resultante tambm ser
aceite pela DFA. Essa cadeia ter ( n
2
+p) zeros. Ser este um quadrado perfeito ? Se for bem
faz o autmato em a aceitar. Mas se no for ela no pertence linguagem.
Depois de n
2
, o prximo quadrado perfeito (n+1)
2
=n
2
+2n+1. Ora n
2
+p < n
2
+2n+1 porque
p s n e por isso n
2
+p no um quadrado perfeito e portanto no pertence linguagem.
Logo no pode existir um tal NFA, ou seja, a linguagem no pode ser regular.
q
0
q
i
= q
j
q
n2
e F
Anel de
comprimento p
Figura 4.4.7.Ilustrao do exemplo 4.4.6
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 175
Esta prova geomtrica bastante intuitiva. Se quisermos uma prova baseada no lema da
bombagem, poderemo-nos inspirar na prova grfica.
A contraprova aqui tem que procurar destruir a caracterstica essencial da linguagem: os
quadrados perfeitos dos seus zeros.
Se me ds um certo m, apresento-te a cadeia com um nmero de zeros igual ao quadrado
perfeito m
2
. Fazendo agora uma decomposio xyz, tal que |xy|sm, bombeando y, obtm-se
sempre, qualquer que seja y, cadeias com um nmero de zeros que no um quadrado
perfeito. Isto , bombeia-se para fora (embora para algumas bombagens se possa
eventualmente fazer para dentro). De facto, o y ficar sempre nos primeiros m zeros, e ter no
mximo m zeros (nesta caso x vazia). Analise-se este caso, em que y fica com os m zeros.
Bombeando uma vez, o nmero total de zeros ser m
2
+m. Ora m
2
+m no um quadrado
perfeito; se fosse m
2
+2m+1 s-lo-ia porque seria (m+1)
2
. Isto basta para negar o Lema da
Bombagem e concluir que a linguagem no regular.
Exemplo 4.4.7
Seja a linguagem dos nmeros primos de zeros L= {0
p
, em que p um nmero primo}
Vamos ao jogo !
Ds-me um m qualquer e eu apresento-te a cadeia com p zeros, sendo p o nmero primo
igual ou imediatamente superior a m. Isto possvel porque a quantidade de nmeros primos
infinita, e portanto por muito grande que seja m posso encontrar sempre um primo superior.
Agora a decomposio xyz coloca y nos primeiros m zeros. Seja r o comprimento de y. Se
bombear y um nmero de vezes igual a p, resulta uma cadeia com p+rp zeros, ou seja p(1+r)
zeros, que no um nmero primo (porqu? Note-se que r1).
Tambm se pode fazer uma prova grfica, por contradio, admitindo que existe um DFA
com n estados que aceita a linguagem. Tomamos um nmero primo p superior a n e
conclumos que o DFA ter que conter um anel que fecha no estado q
i
=q
j
. Fazendo agora j-
i=r e bombeando p vezes obtm-se um nmero de zeros igual a p+rp que no primo e
portanto a cadeia bombeada no pertence linguagem.
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 176
Exerccio 4.4.1.
Provar que a linguagem L={ww, weE , E } no regular.
O Lema da Bombagem por alguns considerado um dos mais interessantes tpicos em
Teoria da Computao. O Professor Harry Mairson, da Universidade de Brandeis (
http://www.cs.brandeis.edu/~mairson/poems/node1.html) dedica-lhe mesmo um inspirado
poema, que aqui se reproduz com autorizao.
The Pumping Lemma by Harry Mairson
Any regular language L has a magic number p
And any long-enough word in L has the following property:
Amongst its first p symbols is a segment you can find
Whose repetition or omission leaves x amongst its kind.
So if you find a language L which fails this acid test,
And some long word you pump becomes distinct from all the rest,
By contradiction you have shown that language L is not
A regular guy, resilient to the damage you have wrought.
But if, upon the other hand, x stays within its L,
Then either L is regular, or else you chose not well.
For w is xyz, and y cannot be null,
And y must come before p symbols have been read in full.
As mathematical postscript, an addendum to the wise:
The basic proof we outlined here does certainly generalize.
So there is a pumping lemma for all languages context-free,
Although we do not have the same for those that are r.e.
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 177
Outros exemplos
0
n
1
m
, n>m
Para qualquer m que me ds apresento a cadeia 0
m+1
1
m
, que pertence linguagem e maior
do que m. A decomposio xyz tem que ser feita de tal modo que o y composto apenas por
zeros (pelo menos um zero). Bombeando com i=0 apaga-se um 0 e ficando n=m e destruindo-
se assim a condio n>m
Normalmente em problemas deste tipo, com um desigualdade, segue-se esta estratgia:
escolhe-se uma cadeia legtima no limite da desigualdade e depois apaga-se uma parte,
bombeando y
0
de modo a destruir a desigualdade.
Bibliografia
An Introduction to Formal Languages and Automata, Peter Linz, 3rd Ed., Jones and Bartelett
Computer Science, 2001
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.
Teoria da Computao Cap. 4 Propriedades das linguagens regulares
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho 178
Teoria da Computao Cap.5 Linguagens Livres de Contexto
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
179
CAPTULO 5
LINGUAGENS LIVRES DE CONTEXTO
5.1. Introduo 181
5.2 Gramticas livres de contexto 181
5.2.1. Definio e exemplos 183
5.2.2 Derivao pela extrema direita e pela extrema esquerda 188
5.2.3.rvores de derivao (parse trees) 190
5.3. Parsing 194
5.3.1.Parsing e ambiguidade 194
5.3.2 Ambiguidade nas gramticas e nas linguagens 203
5.4. Gramticas livres de contexto e linguagens de programao 210
Biliografia 211
Teoria da Computao Cap.5 Linguagens Livres de Contexto
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
180
Teoria da Computao Cap.5 Linguagens Livres de Contexto
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
181
5.1. Introduo
Conclumos o captulo anterior provando que h algumas linguagens que no so regulares.
De facto h muitas linguagens no regulares, e so tantas que se podem classificar em vrias
famlias, como veremos posteriormente.
As linguagens livres de contexto constituem a famlia mais importante de linguagens, a ela
pertencendo as linguagens de programao. As linguagens regulares so um caso particular de
linguagens livres de contexto, constituindo uma sub-famlia destas.
Figura 5.1.1. Relao entre as linguagens regulares e as linguagens livres de contexto.
Neste captulo estudaremos as linguagens livres de contexto usando sobretudo as
gramticas (livres de contexto) e suas propriedades. Como veremos no Captulo 6 os
autmatos finitos no so capazes de reconhecer linguagens livres de contexto no-regulares
por no terem memria.
5.2. Gramticas livres de contexto
Nas gramticas lineares que estudmos anteriormente existem duas restries fundamentais:
- na parte esquerda das produes existe apenas uma varivel
- na parte direita existe apenas uma varivel na posio mais esquerda ou mais
direita.
Relaxando a segunda restrio, e permitindo que a existam diversas variveis em qualquer
posio, obtm-se as gramticas livres de contexto.
Linguagens livres de contexto
Linguagens
regulares
Teoria da Computao Cap.5 Linguagens Livres de Contexto
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
182
5.2.1. Definio e exemplos
Definio 5.2.1. Gramtica livre de contexto e linguagem livre de contexto.
Uma gramtica G = ( V, T, S, P ) chamada livre de contexto se todas as produes em P tm
a forma
A x
em que AeV e xe(VT)*, isto , x uma expresso qualquer composta por variveis e/ou
caracteres terminais ambos em nmero arbitrrio.
Uma linguagem livre de contexto se e s se existir uma gramtica livre de contexto tal
que L = L(G).
Note-se que toda a gramtica regular tambm livre de contexto, e portanto toda a
linguagem regular tambm livre de contexto.
O nome de livre de contexto advm do seguinte facto: a substituio de uma varivel na
parte esquerda de uma produo pode fazer-se em qualquer altura em que essa varivel
aparea numa forma sentencial. Essa substituio no depende dos smbolos do resto da
forma sentencial, ou seja, no depende do seu contexto. Esta caracterstica resulta da
existncia de uma s varivel na parte esquerda das produes. Se existissem duas como por
exemplo em
AB x
a produo s se poderia aplicar quando aparecesse o par AB ou seja, quando fosse esse o
contexto de A e de B. Esta gramtica diz-se por isso dependente do contexto.
Exemplo 5.2.1.
A gramtica G=({S}, {a,b}, S, P} com produes
S aSa
S bSb
S
livre de contexto.
Teoria da Computao Cap.5 Linguagens Livres de Contexto
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
183
Uma derivao possvel,
S aSa aaSaa aabSbaa aabbaa
Cada S introduz ou um par de as ou um par de bs, sempre no meio da forma sentencial, e
por isso no final a cadeia obtida par e simtrica em relao ao seu centro.
A linguagem desta gramtica L(G) ={ww
R
: we {a,b}*}, uma linguagem livre de
contexto no regular. Tente o leitor desenhar para ela um autmato finito.
Exemplo 5.2.2.
A gramtica G com produes
S abB
A aaBb
B bbAa
A
livre de contexto.
Uma derivao dela:
S abB abbbAa abbbaaBba abbbaabbAaba abbbaabbaaBbaba
abbbaabbaabbAababa abbbaabbaabbaaBbababa abbbaabbaabbaabbAabababa
abbbaabbaabbaabbaaBbabababa abbbaabbaabbaabbaabbAababababa
abbbaabbaabbaabbaabbababababa
No fcil, olhando para as produes, generalizar a forma das cadeias obtidas pela
gramtica. Fazendo uma anlise experimental, produzindo cadeias de vrios comprimentos,
ou construindo uma rvore de derivao, verifica-se que L(G)= {ab(bbaa)
n
bba(ba)
n
: n> 0 }.
Exemplo 5.2.3.
Mostrar que a linguagem L = {a
n
b
m
: n= m } livre de contexto. Note-se que pela definio
da linguagem o nmero de as tem que ser diferente do nmero de bs.
Para isso tem que se encontrar uma gramtica livre de contexto que a produza. Para o caso
n = m viu-se no exemplo 1.3.2 do Cap. 1, obtendo-se
Teoria da Computao Cap.5 Linguagens Livres de Contexto
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
184
G =({S}, {a,b}, S, P)
S aSb|
Seja agora o caso n > m.
Primeiro forma-se uma cadeia com um nmero igual de as e de bs; de seguida
acrescente-se um a adicional esquerda. Para isso usam-se aquelas produes do caso n=m e
alm disso uma para introduzir um ou mais as adicionais:
S AS
1
,
S
1
aS
1
b | ,
A aA | a
Note-se que a segunda produo gera um nmero igual de as e de bs. A ltima acrescenta
as esquerda. A primeira, ao criara o A logo de incio, torna possvel a ltima.
Esta gramtica no linear porque na primeira produo aparecem duas variveis no lado
direito. Mas livre de contexto porque do lado esquerdo aparece s uma varivel.
Tomemos agora o caso n < m. Aqui temos uma situao contrria anterior: introduzem-
se tantos as como bs e depois introduzem-se direita um ou mias bs. Teremos as produes
S S
1
B,
S
1
aS
1
b | ,
B Bb | b.
Para o caso n = m, juntam-se os dois conjuntos de produes, obtendo-se:
S AS
1
| S
1
B,
S
1
aS
1
b | ,
A aA | a,
B Bb | b.
Note-se que para juntar os dois conjuntos de produes basta pr as duas primeiras
alternativas a partir de S.
Teoria da Computao Cap.5 Linguagens Livres de Contexto
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
185
Exemplo 5.2.4
Considere-se a gramtica com produes
S aSb | SS |
Trata-se de uma gramtica livre de contexto e no linear (porqu?).
Algumas cadeias geradas:
S SS SSSS aSbaSbaSbaSb abababab
S aSb aSSb aaSbSb aaaSbbaSbb aaaSSbbaaSbbb
aaaaSbaSbbbaaSbbb aaaababbbaabb.
Gera cadeias com um nmero de as igual ao nmero de bs (porqu ?) e em que o nmero
de as em qualquer prefixo de qualquer cadeia maior ou igual ao n de bs, i.e.
L = {w e {a,b}* : n
a
(w) = n
b
(w) e n
a
(v) > n
b
(v), v um prefixo qualquer de w}
e em que o nmero de bs em qualquer sufixo de qualquer cadeia maior ou igual ao n de
as, i.e.
L = {w e {a,b}* : n
a
(w) = n
b
(w) e n
a
(u) n
b
(u), u um sufixo qualquer de w}
Substituindo a por parntese esquerda e b por parntese direita, obtm-se a linguagem
para descrever a regra dos parnteses nas linguagens de programao. Ela contm por
exemplo os casos (), (()), ((()())), ()()()(); etc. Esta situao dada pela gramtica
G=({S}, {(,)}, S, P)
com produes
S (S) | SS |
Uma derivao ser
S (S) (SS) ((S)S) (( )S) (( ))
Teoria da Computao Cap.5 Linguagens Livres de Contexto
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
186
Neste exemplo os parnteses fazem parte do alfabeto da linguagem. J no captulo 1 vimos
que um alfabeto pode ser composto por qualquer tipo de objectos.
Exemplo 5.2.5
Palndromos em {0, 1}, (Hopcroft, 170).
A linguagem dos palndromos pode-se definir por induo:
Base da induo: , 0 e 1 so palndromos (palndromos elementares)
Induo: se w um palndromo, tambm o so 0w0 e 1w1.
Nenhuma cadeia um palndromo de 0s e 1s a menos que seja formada a partir destas
regras, que se podem traduzir pelas produes seguintes:
1. P
2. P 0
3. P 1
4. P 0P0
5. P 1P1
Exemplo 5.2.6
Seja o alfabeto E={x, y, z, +, - , ( , )}. Encontrar uma gramtica que gere todas as expresses
aritmticas possveis com este alfabeto, com por exemplo { x, y, z, x+y, x-y, x+(y-z), }.
Uma soluo possvel:
G=({E,V}, { x, y ,z, +, - , (, ), E, P)
Em que o conjunto P composto pelas seguintes 7 produes
1. E E + E
2. E E - E
3. E (E)
4. E V
5. V x
Teoria da Computao Cap.5 Linguagens Livres de Contexto
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
187
6. V y
7. V z
Como se poder gerar x+(y-z) ?
E E + E (prod. 1)
V + E (prod. 4)
x + E (prod. 5) x + (E)
(prod. 3)
x + (E - E) (prod. 2)
x + (V - E) (prod. 4)
x + (y - E) (prod. 6)
x + (y - V) (prod. 4)
x + (y - z) (prod. 7)
Exerccio 5.2.1.
Considere a gramtica com as produes
S 0B | 1A
A 0 | 0S | 1AA
B 1 | 1S | 0BB
Gere cinco cadeias com a gramtica. Que linguagem lhe est associada?
5.2.2. Derivao pela extrema direita e pela extrema esquerda
Nas gramticas livres de contexto no lineares aparece mais do que uma varivel na parte
direita das produes. Tem-se por isso uma escolha na ordem pela qual se substituem as
variveis. Por exemplo,
G=({A,B,S}, {a,b}, S, P} com produes
1. S AB
2. A aaA
3. A
4. B Bb
Teoria da Computao Cap.5 Linguagens Livres de Contexto
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
188
5. B
Exemplo de derivao (o nmero da produo aplicada est indicado sobre a seta):
S
1
AB
2
aaAB
3
aaB
4
aaBb
5
aab
S
1
AB
4
ABb
2
aaABb
5
aaAb
3
aab
A linguagem correspondente L(G) = {a
2n
b
m
: n>0, m> 0 }
Nestas duas derivaes obtm-se o mesmo resultado, usando precisamente as mesmas
derivaes mas por ordem diferente. Ser sempre assim? Se se usam as mesmas derivaes,
ainda que por diferente ordem, introduzem-se os mesmos caracteres nas formas sentenciais e
na sentena final, mas pode acontecer de diferentes ordens de aplicao das produes
resultem em cadeias diferentes. Por exemplo as produes
1. S aSb
2. S bSa
3. S
A produo 1-2-3 d
S
1
aSb
2
abSab
3
abab
e a produo 2-1-3
S
2
bSa
1
baSba
3
baba
d uma cadeia diferente. Portanto a ordem das produes importa. Neste caso aplicando a
produo 1 em primeiro lugar produzem-se cadeias que comeam por a, e aplicando a 2 em
primeiro lugar cadeias que comeam por b.
Definio 5.2.2
Uma derivao diz-se pela extrema esquerda se em cada passo se substitui a varivel mais
esquerda na forma sentencial.
Se se substituiu a varivel mais direita, a derivao diz-se pela extrema direita.
Teoria da Computao Cap.5 Linguagens Livres de Contexto
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
189
Exemplo 5.2.7
Seja a gramtica com as produes
S aAB,
A bBb,
B A |
Ento
S aAB aA abBb abAb abbBbb abbbb
uma derivao pela direita e
S aAB abBbB abAbB abbBbbB abbbbB abbbb
uma derivao pela esquerda.
5.2.3.rvores de derivao (parse trees)
As rvores de derivao so uma alternativa escrita das produes, permitindo uma
visualizao grfica do processo de gerao de cadeias. Por outro lado, lidas de forma inversa,
permitem reconstruir as produes a partir da cadeia.
Um rvore de derivao uma rvore ordenada em que
- os vrtices iniciais e intermdios so as variveis da gramtica, etiquetados pelo
lado esquerdo das produes
- os filhos de um vrtice representam os lados direito correspondente ao n pai.
Por exemplo a rvore da Fig. 5.2.1corresponde s produes:
S abABc
A
B c
Teoria da Computao Cap.5 Linguagens Livres de Contexto
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
190
A partir da raiz aplica-se a primeira produo, dando 5 filhos, dos quais 3 so folhas e 2
so vrtices interiores (variveis). Depois do vrtice A resulta a folha c pela segunda produo
e do vrtice B a folha pela terceira produo. Na rvore nada indica a ordem de aplicao
das segunda e terceira produes.
Uma rvore de derivao inicia-se na raiz, com o smbolo inicial (em geral S), e termina
em folhas que so terminais (smbolos do alfabeto). Em cada nvel mostra como se substitui
cada varivel nas derivaes. Quando um vrtice contm um smbolo terminal, dele no parte
qualquer aresta. Apenas dos vrtices com variveis, chamados vrtices interiores (no raiz),
partem arestas.
Vejamos a definio formal.
Definio 5.2.3. rvore de derivao
Seja G = (V, T, S, P) uma gramtica livre de contexto. Uma rvore ordenada uma rvore de
derivao para a gramtica G se e s se tiver as seguintes propriedades:
1. A raiz etiquetada pelo smbolo inicial, em geral S.
2. Todas as folhas tm uma etiqueta de T {}, isto , um smbolo terminal
3. Todos os vrtices interiores (vrtices que no so folhas) tm uma etiqueta de V,
i.e., uma varivel.
4. Se um vrtice tem uma etiqueta A e V, e se os seus filhos so etiquetados (da
esquerda para a direita) a
1
, a
2
,..., a
n
ento P deve conter a produo da forma
S
a b B c A
c
vrtice raiz
5 filhos da
raiz
folha
vrtice interior
Figura 5.2.1. Uma rvore de derivao.
Teoria da Computao Cap.5 Linguagens Livres de Contexto
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
191
A a
1
a
2
..., a
n
em que a
i
pode ser um smbolo terminal ou uma varivel.
5. Uma folha etiquetada no tem irms, i.e., um vrtice com um filho no pode
ter outros filhos.
Se uma rvore verifica as propriedades 3, 4 e 5, mas a propriedade 1 no se verifica
necessariamente e a propriedade 2 substituda por
2a. Todas as folhas tm etiquetas de V T {}, i.e., uma varivel ou um smbolo
terminal,
diz-se uma rvore de derivao parcial, sendo parte de uma rvore maior. Isto , se
extrairmos de uma rvore de derivao uma sub-rvore interior, esta ser uma rvore de
derivao parcial, podendo ter variveis nas folhas. Uma rvore de derivao parcial deriva
formas sentenciais e pode no derivar cadeias terminais. Pelo contrrio uma rvore de
derivao total d sempre cadeias terminais. Uma rvore de derivao por defeito total, e
portanto no necessrio adjectiv-la.
Lendo as folhas da rvore, da esquerda para a direita, omitindo quaisquer que se
encontrem, obtm-se o fruto (yield) da rvore. O fruto a cadeia de terminais obtida quando
se percorre a rvore de cima para baixo, tomando sempre o ramo inexplorado mais
esquerda.
Exemplo 5.2.8
Seja a gramtica G=({S,A,B}, {a,b}, S, P} com produes
S aAB,
A bBb,
B A |
A rvore de derivao parcial da Fig. 5.2.2 corresponde a
S aAB abBbB
Teoria da Computao Cap.5 Linguagens Livres de Contexto
LEI/DEI/FCTUC/2011/@ADC Documento de trabalho
192
A rvore de derivao Fig. 5.2.3 corresponde derivao pela esquerda
S aAB abBbB abbA abbbBb abbbb
ou derivao pela direita
S aABaAA aAbBb aAbbabBbbbabbbb
Uma outra rvore de derivao Fig 5.2.4 corresponde a (pela esquerda)
S aAB abBbB abbB abb
ou a (pela direita)
S aAB aA abBb abb
S
a B
b
A
B b
b
A
B b
b
A
B b
S
a B
S
S
S
a S
b
a S
b
S
S
ux
n
A y
n
v
*
ux
n
zy
n
v
*
uzv A xAy
*
S
C
B
A
Grafo de dependncias
Teoria da Computao Cap. 8 Propriedades das Linguagens Livres de Contexto
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
296
S bAAa
A bBB
B aC
C c
Figura 8.3.2.2. Uma linguagem finita
8.3.3. Algumas propriedades indecidveis de CFLs (Hopcroft, 302).
No existe nenhum algoritmo (no possvel resolver com um computador) algumas questes
que so aparentemente simples, com por exemplo:
a) uma dada gramtica CFG ambgua ?
b) uma dada linguagem CFL inerentemente ambgua ?
c) vazia a interseco de duas linguagens CFLs ?
d) so duas linguagens CFLs iguais ?
e) uma linguagem CFL igual a E * ?
Isto no quer dizer que para uma linguagem concreta no se possa obter resposta a
qualquer daquelas questes. Quer dizer sim que no h nenhum algoritmo geral que d
resposta (em tempo til) para toda e qualquer linguagem livre de contexto.
S
C
B
A
Grafo de dependncias
Teoria da Computao Cap. 8 Propriedades das Linguagens Livres de Contexto
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
297
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.
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
299
CAPTULO 9
MQUINAS DE TURING
9.1. Introduo 301
9.2. A Mquina de Turing padro 302
9.3. Diagrama de estados ou de transio da MT 309
9.4. MT como aceitador de linguagens 311
9.5. MT como transdutores 319
9.6. Combinaes de mquinas de Turing para tarefas complicadas 324
9.7. A tese de Turing 325
Bibliografia 328
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
300
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
301
9.1. Introduo
Uma pesquisa no Google em 6 de Dezembro de 2007 com turing machine deu 1.820.000
resultados. Este nmero mostra a importncia do tema.
As Mquinas de Turing (MT) estiveram no centro do desenvolvimento dos computadores e
da computao durante os ltimos 70 anos. Alain Turing (1912-1954) foi um brilhante
matemtico, em Cambridge, Inglaterra, numa poca efervescente de desenvolvimento da
lgica e da matemtica que haveria de resultar no computador digital, os anos 30 e 40 do
sculo passado. geralmente considerado como o fundador das cincias da computao.
Outros matemticos famosos, como Gdel, Bertrand Russel na Europa, Church nos EUA,
foram contemporneos de Alain Turing. Existe em Portugal um blog como seu nome,
http://turing-machine.weblog.com.pt, que merece uma visita.
Em 1940 Alan Turing procura formalizar a noo de algoritmo, identificando as operaes
fundamentais e primitivas que possam servir de base ao clculo matemtico. Depois, definiu
uma mquina abstracta capaz de executar essas operaes segundo regras bem definidas. A
MT foi assim concebida para ser um modelo de computao, formalizando um conjunto de
operaes bsicas s quais se pode reduzir qualquer computao.
Os autmatos finitos so para as linguagens regulares, os autmatos de pilha para as
linguagens livres de contexto. E as MT? Com que linguagens se relacionam?
J encontrmos linguagens que no so livres de contexto, como por exemplo a
n
b
n
c
n
. Por
isso no possvel construir um autmato de pilha que as aceite.
Ser que uma MT suficientemente poderosa para aceitar linguagens dependentes do
contexto? Todas elas? Qual o autmato mais poderoso? Quais os limites da computao?
So questes s quais as MT respondem.
Mquina de Turing
Um modelo abstracto de computao
Problemas resolveis e
irresolveis
Figura 9.1.1. Importncia da Mquina
de Turing. At hoje no foi ainda
inventado um computador capaz de
resolver um problema que a MT no
possa resolver. Este facto mantm ainda
vlida a tese de Church-Turing
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
302
9.2. A mquina de Turing padro
A mquina de Turing um autmato, com uma unidade de controlo e com um dispositivo
especial que funciona simultaneamente como entrada (onde l), armazenamento, e sada (onde
escreve). Esse dispositivo uma fita unidimensional que contm um nmero ilimitado de
clulas cada uma das quais pode conter um nico smbolo. Essa a sua caracterstica
distintiva em relao aos autmatos finitos (que no tm dispositivo de armazenamento) e
aos autmatos de pilha (que armazenam numa pilha ).
A fita da MT prolonga-se indefinidamente em ambos os sentidos e por isso pode conter
uma quantidade infinita de informao. Esta informao pode ser lida e alterada em qualquer
ordem e da o potencial da MT.
Associada fita est uma cabea de leitura-escrita que se pode mover sobre a fita para a
esquerda ou para a direita, podendo escrever ou ler um nico smbolo em cada movida.
Figura 9.2.1 Componentes da Mquina de Turing
Definio 9.2.1.
Uma mquina de Turing M definida pelo septeto
M = (Q, E, I, o, q
0
, , F)
em que
Q o conjunto de estados internos da unidade de controlo
E o alfabeto de entrada
UNIDADE
DE
CONTROLO
FITA
R/W
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
303
I o conjunto finito alfabeto da fita
o a funo de transio
q
0
o estado inicial
e I o carcter branco, smbolo especial de I
F _ Q o conjunto de estados finais (aceitadores)
O alfabeto de entrada igual ao alfabeto da fita, com excepo do smbolo (branco, um
carcter novo, no confundir com ) que no existe no alfabeto de entrada. Portanto
E = I - {}
A funo de transio em geral uma funo parcial em QI
o : QI QI {L, R}
em que R significa movida para a direita e L movida para a esquerda. Os dois argumentos de
entrada da funo de transio e os trs de sada so os seguintes:
Figura 9.2.2 Funo de transio de uma Mquina de Turing
A movida da cabea faz-se depois da escrita do novo smbolo na fita.
Exemplo 9.2.2.1
Sejam
E = { a, b }
I= { a, b, }
o: ( Q I ) ( Q I { L, R } )
e a transio
o ( q
0
, a ) = ( q
1
, b, R )
Esta transio ilustrada na figura seguinte.
estado actual unidade de
controlo
carcter de fita a ser lido no
momento
q, prximo estado da unidade de controlo
escrever na fita um novo smbolo em
substituio do presente
fazer uma movida para a direita ou para a
esquerda
R/
o
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
304
Figura 9.2.3. Movida da MT do exemplo 9.2.1.
Lendo a,
-apaga-o e escreve b no seu lugar
-move a cabea de leitura uma clula para a direita, ficando a apontar para b.
Uma mquina de Turing pode ser encarada como um computador muito simples. De facto:
- tem uma unidade de processamento com memria finita (nmero finito de estados);
- tem uma segunda unidade de armazenamento de capacidade infinita;
- a funo de transio o programa do computador. uma funo parcial.
O autmato inicializado (no estado inicial q
0
) com alguma coisa j escrita na fita.
Executa depois uma sequncia de operaes, uma computao, definidas pela funo o.
Como o uma funo parcial, pode chegar a uma configurao para a qual no est
definida nenhuma transio. O autmato fica ento no estado parado (halt).
Nunca se definem transies a partir dos estados finais e por isso uma mquina de Turing
pra sempre que atinge um estado final.
Exemplo 9.2.2.
Seja a mquina de Turing definida por
Q = {q
0
, q
1
}
E = {a, b}
I = {a, b, }
F = {q
1
}
a b c
q
0
b b c
q
1
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
305
e
o (q
0
, a) = (q
0
, b, R)
o (q
0
, b) = (q
0
, a, R)
o (q
0
, ) = (q
0
, , R)
Figura 9.2.4. Movidas do exemplo 9.2.2
No fim obtm-se o seguinte contedo da fita
Se para a mesma mquina a funo de transio for
o (q
0
, a) = (q
0
, a, R)
b b a a a b
a
q
3
b b b a
q
0
b a b b b a
q
0
o (q
0
, a) = (q
0
, b, R)
b b b b b a
q
0
b b a b b a
q
0
o (q
0
, b) = (q
0
, a, R)
b b a a b a
q
0
b b a a a a
q
0
o (q
0
, b) = (q
0
, a, R)
b b a a a b
q
0
b b a a a b
q
0
o (q
0
, ) = (q
0
, , R)
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
306
o (q
0
, b) = (q
1
, b, R)
o (q
0
, ) = (q
0
, , R)
o (q
1
, a) = (q
0
, b, L)
o (q
1
, b) = (q
0
, b, L)
o (q
1
, ) = (q
0
, , L)
obtm-se um funcionamento em ciclo infinito, como se pode ver para a cadeia aabbba:
Figura 9.2.5 Movidas para o exemplo 9.2.2, segundo caso.
A mquina de Turing padro tem as seguintes caractersticas:
1- Uma fita ilimitada em ambas as direces, permitindo um nmero arbitrrio de
movidas esquerda e direita.
2- determinstica na medida em que o define no mximo uma movida para cada
configurao, no havendo escolhas possveis.
3- No existe qualquer ficheiro de entrada especial. Pressupe-se que no instante inicial a
fita tem algum contedo especificado a introduzido pelo programador. Parte deste
a a b b b a
q
0
q
0
q
0
o (q
0
, a) = (q
0
, a, R)
a a b b b a
q
0
q
1
o (q
0
, b) = (q
1
, b, R)
o (q
1
, b) = (q
0
, b, L)
a a b b b a
q
1
q
0
a a b b b a
q
0
q
1
o (q
0
, b) = (q
1
, b, R)
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
307
pode ser considerado a entrada. Sempre que a mquina pare (halt), algum do contedo
da fita pode ser considerado como sada.
Como veremos posteriormente, existem outras verses de mquinas de Turing mas que se
baseiam neste modelo base, estendendo algumas caractersticas (mas no aumentando o seu
potencial limite de computao).
A configurao da mquina de Turing definida pela sua descrio instantnea composta
por trs partes:
- estado actual da unidade de controlo
- o contedo da fita
- a posio da cabea de leitura/escrita.
Utiliza-se a notao seguinte para a descrever uma configurao
x
1
qx
2
ou
a
1
a
2
...a
k-1
qa
k
a
k+1
...a
n
correspondente figura seguinte. A cabea aponta para a clula que contm o smbolo que
segue q, i.e., a
k
.
Figura 9.2.6 Configurao de uma MT
A descrio instantnea s mostra uma parte da fita. Assume-se que a restante parte
contm apenas smbolos brancos, que so considerados irrelevantes e por isso no
necessrio mostr-los. No entanto se a posio dos brancos for relevante, deve ser
especificada na descrio instantnea.
Para representar as movidas de uma MT utiliza-se a notao de configurao em configurao
a
1
a
2
a
k
.
a
n
q
x
1
x
2
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
308
configurao (k) | configurao (k+1)
Por exemplo para a transio
o (q
1
, c) = (q
2
, e, R)
em termos de configuraes escreve-se, admitindo que na fita temos por exemplo abcd e que
a cabea aponta para c,
abq
1
cd | abeq
2
d
Figura 9.2.7. Uma movida entre duas configuraes instantneas
O smbolo
-
, indica um nmero arbitrrio de movidas. Se houver necessidade de
distinguir entre diversas MTs, usa-se
-
,
M
.
Definio 9.2.2 Movida
Seja M = ( Q, E, I, o, q
0
, , F) uma MT.
Ento qualquer cadeia a
1
a
2
.....a
k-1
q
1
a
k
a
k+1
...a
n
com a
i
e I e q
1
e Q, uma descrio
instantnea de M.
possvel uma movida
a
1
a
2
.....a
k-1
q
1
a
k
a
k+1
...a
n
| a
1
a
2
.....a
k-1
bq
2
a
k+1
...a
n
se e s se existir a transio
configurao (k) | configurao (k+1)
a b c d
q
1
a b e d
q
2
o (q
1
, c) = (q
2
, e, R) abq
1
cd | abeq
2
d
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
309
o (q
1
, a
k
) = (q
2
, b, R)
possvel uma movida
a
1
a
2
.....a
k-1
q
1
a
k
a
k+1
...a
n
| a
1
a
2
.....q
2
a
k-1
ba
k+1
...a
n
se e s se existir a transio
o (q
1
, a
k
) = (q
2
, b, L)
Diz-se que M parou partindo de alguma configurao inicial x
1
q
i
x
2
se
x
1
q
i
x
2
-
,y
1
q
j
ay
2
para algum q
j
e algum a, para os quais o (q
j
, a) seja indefinido.
Chama-se computao sequncia das configuraes que levam a MT do estado inicial ao
estado de paragem (halt).
A situao em que a MT entra num ciclo infinito, nunca parando, nem de l podendo sair,
denota-se por
x
1
qx
2
-
,
Esta situao, de ciclo infinito, em que a mquina nunca mais pra, muito importante na
aplicao da teoria das MT.
9.3. Diagrama de estados ou de transio da MT
A notao da funo de transio da MT diferente no JFLAP e no DEM:
JFLAP e Linz o: ( Q I ) ( Q I { L, R } ) i.e. o (q
0
, b) = (q
1
, b, R)
DEM e Taylor o : ( Q I ) (I {L, R }) Q i.e. o (q
0
, ) = (R, q)
So necessrias, no DEM, mais instrues para a mesma funcionalidade : primeiro escreve,
e depois desloca-se. Usaremos preferencialmente a do JFLAP.
Os diagramas de estados so uma forma alternativa escrita da funo de transio, tal
como nos outros autmatos estudados.
Exemplo 9.3.1.
Consideremos a MT, com uma fita completamente em branco, que faz o seguinte:
- inicializada lendo uma casa em branco,
- escreve os caracteres ab e
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
310
- pra lendo o carcter a.
Figura 9.3.1a Movidas e grafo no JFLAP da MT do Exemplo 9.3.1
No DEM teremos um grafo diferente:
a
q
1
a b
q
f
q
0
q
0
q
1
; a, R
q
1
q
f
; b, L
; b, L
q
0
q
1
; a, R
q
f
a
q
2
a b
q
3
a b
q
f
q
0
a
q
1
DEM
q
0
q
1
: a
q
2
q
3
a : R
: b
q
f
b : L
Figura 9.3.1b.
Movidas e
grafo no DEM
do exemplo
9.3.1
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
311
Exemplo 9.3.2.
Para uma MT com a fita inicial vazia
que faz a MT da Figura seguinte ?
Figura 9.3 2a. MT do exemplo 9.3.2, no JFLAP.
Figura 9.3.2b. MT do exemplo 9.3.2 no DEM
Estando no estado inicial q
0
lendo branco, escreve a, passa ao estado q
1
e vai para a direita,
ficando assim a apontar para branco. Estando em q
2
apontando para branco, escreve b , passa
a q
0
desloca-se para a esquerda. Agora est em q
0
lendo a na fita; no estando nada previsto
para este caso, faz halt e a fica para sempre.
9.4. MT como aceitador de linguagens.
Tal como nos autmatos anteriores, tambm as MT podem funcionar como aceitadores de
linguagens.
O processo de aceitao de uma linguagem pela MT o seguinte:
q
0
q
1
q
2
q
3
: a a : R : b
b : R
q
0
q
1
; a, R
; b, R
JFLAP
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
312
- dada uma cadeia w de caracteres do alfabeto de entrada (note-se que este no inclui
, o carcter vazio), escrita na fita. A cadeia w no contm brancos,
- antes de w esto brancos e depois de w brancos esto,
- a MT inicializa-se no estado q
0
com a cabea de leitura-escrita posicionada no
carcter mais esquerda de w,
- d-se uma sequncia de movidas,
- se a MT entrar num estado final e parar (halt), w aceite,
- se a MT parar (halt) num estado no final, w no aceite,
- se a MT no parar (entrando num crculo infinito), w no aceite.
Note-se que h estados que tm caractersticas especiais, so os estados finais aceitadores.
Definio 9.4.1. Linguagem aceite pela MT.
Seja M = ( Q, E, I, o, q
0
, , F) uma MT. Ento a linguagem aceite por M
L(M) = { w e E
+
: q
0
w
-
,x
1
q
f
x
2
para algum q
f
e F e x
1
, x
2
e I* }
Se a cadeia tivesse brancos, a MT no saberia quando ela terminaria e teria que continuar a
percorrer a fita at ao infinito.
Segundo Taylor (def. 1.3. p. 76), MT aceita uma linguagem se aceita todas as palavras de L
e s essas (all and only the words in L).
Nota: a definio de Linz e de Hopcroft equvoca quanto necessidade de a MT ler toda
a cadeia de entrada antes de fazer halt. A definio de Taylor (tem que parar apontando para
um 1, com o resto da fita em branco, e 1 no pertence ao alfabeto de entrada) implica que toda
a cadeia tenha que ser lida para ser, eventualmente, aceite.
Exemplo 9.4.1
Seja o alfabeto E = {0, 1} e nele a linguagem L= L(00*), composta por todas as cadeias
com um ou mais zeros (sem 1s).
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
313
Construir uma MT que aceite esta linguagem.
Trata-se de uma linguagem regular (porqu, caro leitor ?) e por isso no seria necessria
uma MT para a aceitar. No entanto o exemplo tem objectivos didcticos.
Soluo:
A primeira operao a fazer no projecto da MT (de qualquer MT) definir um algoritmo,
ou seja, uma estratgia de operaes elementares que levem ao fim pretendido.
Admitamos que uma cadeia de zeros est escrita na fita, com brancos e s brancos
esquerda e direita. Admitamos tambm que A MT se inicializa com a cabea de leitura
apontando para o primeiro carcter da cadeia. Estas hipteses so as normalmente aceites.
Ns queremos que a mquina varra a cadeia, da esquerda para a direita, e a aceite se s
tiver zeros e a rejeite de tiver algures algum 1. Ento pode ser assim:
1 L o primeiro zero, deixa estar e desloca-se para a direita
o (q
0
, 0) = (q
0
, 0, R)
Havendo vrios zeros, ela ficou a apontar para o segundo zero. Ento esta transio d-se
novamente, porque ela se mantm no estado q
0
, indo por a alm, at acabarem os zeros. Se
existisse um 1 algures no meio dos zeros a MT pararia (no est definida uma transio para
essa eventualidade).
2 Depois de ler todos os zeros h-de chegar ao primeiro branco direita da cadeia. A
pode seguir para a direita, deixando o branco tal como est. Como correu tudo bem at aqui,
j leu a cadeia toda, deve passar a um estado aceitador, q
f
:
o (q
0
, ) = (q
f
, , R).
Para desenharmos um diagrama de estados para esta funo de transio, no JFLAP ou no
DEM, temos que ter em ateno a notao a usar . A notao de Taylor para a funo de
transio no igual de Linz:
Linz: o: ( Q I ) ( Q I { L, R } ) i.e. o (q
0
, b) = (q
1
, b, R)
Taylor: o : ( Q I ) (I {L, R }) Q i.e. o (q
0
, ) = (R, q)
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
314
O que obriga criao de um estado adicional no DEM.
Por isso o diagrama de estados seguindo Linz e o JFLAP ser
Figura 9.4.1. Grafo JFLAP da MT do exemplo 9.4.1.
Seguindo Taylor e o DEM teremos que criar mais estados:
o (q
0
, 0) = (q
1
, 0)
o (q
1
, 0) = (q
1
, R)
o (q
1
, ) = (q
f
, )
Figura 9.4.2. Grafo DEM da MT do exemplo 9.4.1
Note-se que o uma funo parcial. No definida por exemplo o (q
0
, 1). Se aparece um
1, no estado q
0
, a MT pra (halt) para sempre, indicando que w no aceite, a menos que q
0
fosse um estado final. Mas a definio de estado final deve ser feita previamente resoluo
do problema: um estado final se antes dele s apareceram 0s e se j se chegou ao fim da
cadeia, i.e., se a cabea apontar para um branco. No pode ser q
0
e por isso cria-se um outro
estado q
f
para estado final. Chega-se a ele apenas quando se leu a cadeia toda sem encontrar
qualquer 1.
As MT podem reconhecer algumas linguagens que no so livres de contexto. So
mquinas mais poderosas do que os autmatos estudados anteriormente. Voltaremos a este
assunto mais tarde.
Exemplo 9.4.2. MT aceitadora de Linguagem n
a
=n
b
Seja o alfabeto E={a,b} e a linguagem composta pelas cadeias com um nmero de as igual
ao nmero de bs, em qualquer ordem., por exemplo
ab, ba, abaaabbabbbb, bbaabababbaaa, etc.
q
0
q
f
: : R
0 : 0 : R
q
0
q
1
1
q
f
0 : 0
0 : R
:
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
315
Desenhar o grafo de uma MT capaz de reconhecer esta linguagem
No projecto de uma MT a questo primeira e decisiva a da concepo do algoritmo a
programar: como que uma MT pode contar as e bs ?
Uma soluo possvel: a mquina apaga um a e um b de cada vez; se no fim no sobrar
nenhum carcter, porque o nmero de as era igual ao nmero de bs. Se sobrar um ou mais
as (ou bs) a cadeia no pertence linguagem.
Podemos imaginar varrimentos sucessivos da cadeia , da direita para a esquerda) de tal
modo que em cada varrimento substitui um a e um b por um* (uma forma de apagar).
Chegando ao fim da cadeia (encontra um branco) volta ao princpio, deslocando-se para a
esquerda at encontrar um branco.
Por exemplo para ababab teremos sucessivamente na fita
aaababbb *aa*abbb **a*a*bb ****a**b ********
bbabaa *b*baa ***b*a ******
aabbbabb *a*bbabb ****babb ****b**b
Programa da MT
- Carrega-se a cadeia na fita
- Desloca-se a cabea at ao primeiro carcter, que ser a ou b. Suponhamos que a.
- Apaga-se o a e substitui-se por *. Segue para a direita. A encontra a, b (ou *).
O grafo est na pgina seguinte.
Exemplo 9.4.3.
Seja a MT com E = {a, b}, I = {a, b, }, F = {q
f
}, Q = {q
0
, q
1,
q
f
}
o (q
0
, ) = (q
0
, , R),
o (q
0
, b) = (q
1
, b, R),
o (q
1
, a) = (q
1
, a, R),
o (q
1
,b) = (q
1
, b, R),
o (q
1
, ) = (q
f
, , R).
Que linguagem aceita ?
Analisando as transies, verifica-se que em q
0
com b passa a q
1
(e em q
0
com a pra). Em q
1
l as e bs por qualquer ordem e em qualquer nmero, avanando at ao fim da cadeia. Por
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
316
isso a linguagem aceita pela MT L= L[b(a+b)*], todas as cadeias que se iniciam por b em
{a,b}.
Exemplo 9.4.4
Construir no JFLAP uma MT que aceite a linguagem L = { a
n
b
m
: n > 1, m = n }
Um algoritmo possvel: depois de escrita a cadeia na fita
- em cada viagem da esquerda para a direita apaga um a e um b, marcando-os com *. Vai at
ao fim e volta ao princpio.
a : *
q
0
q
1
q
2
q
4
q
5
q
6
q
7
* : R
* : R
* : R
a : R
b : *
: R
* : L
a : L
b : L
: L
* : R
b : R
* : R
: L
* :
: R
b : *
a : *,R
q
0
q
1
q
2
q
3
q
4
q
5
q
f
* : *, R
* : *, R
a : a, R
b : *, L
: , R
* : *, L
a :a, L
b :b, L
:
,L
a : *, L
b : b, R
* :*, R
: , L
* : , L
: ,L
JFLAP
DEM
Figura 9.4.3. MT
do exemplo 9.4.2.
n
a
=n
b
no JFLAP e
no DEM.
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
317
- recomea o ciclo at que ou acabem os as ou os bs. Se sobrarem as ou bs (ou exclusivo)
a cadeia aceite, terminando a computao no estado SIM. Caso contrrio termina no
estado NO.
A Figura 9.4.5 apresenta um grafo possvel.
Figura 9.4.4. Esta MT decide se uma cadeia pertence linguagem (termina em SIM) ou se
no pertence linguagem (termina em NO).
Exemplo 9.4.5. Desenhar uma MT que aceite a linguagem L = { a
n
b
n
a
n
b
n
: n > 0 }
- procura o prximo a , marca-o, muda de estado e vai para a direita
- encontra o primeiro b, marca-o e muda de estado
- continua at ao prximo a, marca-o e muda de estado
- procura o prximo b, marca-o, muda de estado e regressa ao incio
- continua at que acabem os as e os bs
- aceita quando marcar todos e no sobrar nenhum
- no aceita de ou os as ou ao bs acabarem num dos segmentos da cadeia, sobrando nos
outros.
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
318
Figura 9.4.5. Implementao FLAPP do exemplo 9.4.5 pelo aluno Antnio Damasceno em
2004-5.
Exemplo 9.4.6 O mesmo para o caso L = { a
n
b
2n
: n > 1}
- por cada a apaga dois bs, usando para isso dois estados (a forma de contar dois bs)
- repete at que acabem todos os as e bs
-se sobrar algum a ou algum b no aceita
Figura 9.4.6a. JFLAP do exemplo 9.4.6 pelo aluno Antnio Damasceno em 2004-5.
Uma outra implementao possvel
Figura 9.4.6b.
Implementao JFLAP
pelo aluno Cristvo Pires
em 2004-5 (exemplo
9.4.6).
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
319
Exemplo 9.4.7 Para L = { a
n
b
m
a
n+m
: n > 0, m>1 } temos o algoritmo
- 1 apaga n as esquerda e n cs direita; se os cs no chegarem no aceita;
- 2 apaga m bs esquerda e m cs direita; se os cs no chegarem ou se sobrarem, no
aceita.
Para apagar os n as tem que percorrer n vezes um ciclo de apagar um; por isso cria-se um
ciclo apaga um a e vai apagar um c regressa. Se os cs acabarem antes dos as no aceita.
Analogamente para apagar os bs.
Para distinguir as diversas situaes criam-se estados afectos a cada situao.
Figura 9.4.7. JFLAP do ex. 9.4.7 pelo aluno Antnio Damasceno no ano lectivo 2004-5.
9.5 TM como transdutores
As MT so um modelo abstracto de computadores digitais em geral. Ora um computador
sobretudo um transdutor: transforma uma entrada numa sada, por exemplo fazendo um
clculo. As MT podem funcionar tambm como transdutores.
A entrada para uma computao composta por todos os smbolos no brancos escritos na
fita no instante inicial.
A sada da computao o que resultar escrito na fita, depois de todas as movidas da MT.
Com estes conceitos pode-se encarar a MT M, enquanto transdutor, como implementando
uma funo f definida por
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
320
w= f (w),
e portanto com sada
Figura 9.5.3
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
322
Caso 4&6
11110111111 *1110*11111**110**1111***10***111****0****11
Agora quando procura mais 1 do lado esquerdo no encontra, passa pelo zero e continua at
ao ltimo 1, o que provoca a transio para o estado x<y.
Caso 6&4
11111101111*111110*111**11110**11***11101*******110****
Agora ao apagar mais um 1 do lado esquerdo e procurar o outro 1 do lado direito, no o
encontra, chega ao branco e passa ao estado x>y.
No caso de igualdade, quando acabam os 1s em ambos os lados, passa ao estado x=y.
Fica o leitor desafiado a desenhar o respectivo grafo, usando o JFLAP.
Exemplo 9.5.4
Que faz ?
1 Inicializando-se numa fita vazia, l um branco, substitui-o por um a, desloca-se para a
direita e repete estas operaes indefinidamente.
2 Percorre a fita at ao infinito sem escrever nada.
Exemplo 9.5.5. E esta ?
Escreve sucessivamente abababababab.......
q
0
q
1
: a
a : R
q
0
q
1
q
2
q
3
: a a : R : b
b : R
Figura 9.5.4
Figura 9.5.5
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
323
Exemplo 9.5.6.
Construa uma MT que decida a linguagem em E={a,b} composta por todas as cadeias que
contenham a subcadeia baa (isto , que diga se sim ou no uma cadeia pertence linguagem).
Note-se que esta linguagem regular, e por isso tambm se pode desenhar um DFA que faz o
mesmo.
Exemplo 9.5.7
Desenhe uma MT que calcula a funo f(x)=2x, estando x em unrio.
Primeiro devemos conceber um algoritmo que resolva o problema. No existe uma nica
soluo. Uma delas poder ser
1- substituir cada 1 por um x e de seguida adicionar um y no fim da cadeia. Por exemplo para
f(111)= 111111 a fita ter sucessivamente
111 x11yxx1yyxxxyyy
2 - substituir cada x por 1 e cada y por 1
xxxyyyxxxyy1xxxy11 xxx111
xx1111 x11111111111
O grafo da MT ser o da Figura.
Figura 9.5.6
Figura 9.5.7
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
324
Exemplo 9.5.8 Desenhar uma MT que conte o nmero de aa em cadeias no alfabeto {m, a, r,
g, a, r, i, d, a}.
9.6. Combinaes de mquinas de Turing para tarefas complicadas
Muitas funes complicadas podem-se decompor em sequncias de funes simples
computveis (toda a anlise numrica visa esse fim). Tal conceito tambm se pode aplicar ao
nvel da Turing-computabilidade.
Pode-se projectar uma mquina de Turing composta por combinaes de mquinas de
Turing elementares a fim de realizar operaes mais complexas.
Exemplo 9.6.1 (Linz)
Seja a funo f definida por
Podemos decomp-la em trs operaes: uma comparao, uma soma, a um apagamento, que
se podem implementar pelos trs blocos da Figura 9.6.1.
f (x, y)
Somadora
Apagadora
Comparadora
x >
x < y
x, y
f (x, y) =
x + y , se x > y
0, se x< y
Figura 9.5.8. MT
que conta os as
em cadeias de
{m,a,r,g,a,r,i,d,a}
Figura 9.6.1.
Implementao
da funo do
exemplo 9.6.1.
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
325
Agora cada bloco pode ser executado por uma MT. A funo total resulta da combinao
das trs MTs.
9.7. A tese de Turing
Nos anos 30 do sc. XX Turing conjecturou que qualquer computao que possa ser
implementada por processos mecnicos (i.e., por uma mquina) pode tambm ser
implementada por uma mquina de Turing. Pode ser interpretado ao contrrio: uma
computao mecnica se e s se puder ser executada por uma mquina de Turing.
Alguns argumentos a favor da tese de Turing:
1- Qualquer computao que possa ser feita por qualquer computador digital existente
tambm pode ser feita por uma mquina de Turing.
2- Ningum conseguiu ainda encontrar um problema, resolvel por um qualquer
algoritmo, para o qual no possa ser escrito um programa para uma mquina de
Turing.
3- Foram propostos modelos alternativos para a computao mecnica, mas nenhum
deles mais poderoso do que a mquina de Turing.
A tese de Turing (ainda ) uma lei bsica das cincias da computao. Nesses tempos o
desenvolvimento de um algoritmo consistia fundamentalmente na escrita de um programa de
uma MT que o resolvesse. Mesmo actualmente um algoritmo pode-se definir como uma MT,
Se considerarmos uma funo qualquer, f, com um domnio D e o contradomnio R, para
um elemento d do domnio escrito na fita de uma MT, escreve-se um programa tal que
iniciando-se a MT apontando para o primeiro smbolo de d, termina uma computao depois
de escrever na fita o valor de f(d). Teremos assim a seguinte definio de algoritmo.
Definio 9.7.1. Algoritmo.
Um algoritmo para uma funo f : D R uma mquina de Turing M que,
- dada como entrada um qualquer d e D na sua fita
- pra (halt) com uma resposta correcta para f (d) e R na sua fita. Requer-se que
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
326
q
0
d
-
,
M
q
f
f (d), q
f
e F
para todo o d e D.
No DEM existe uma livraria de MTs que executam diversos algoritmos. A tabela seguinte
enumera-os. Alguns deles recorrem a uma MT especial, com vrias fitas (tapes). No Captulo
10 abordaremos essas arquitecturas especiais da MT, que no entanto no alteram as suas
capacidades computacionais, apenas tornam mais fcil a programao de algoritmos.
Tabela 9.7.1 Lista de exemplos do DEM. Os exemplos esto em Taylor.
balpatent balanced parenthesis
beaver busy beaver function w/ 5 arguments
c-interp C- language Compiler/Interpreter Prototype
Cnfsat CNF- Sat (Example 8.5.1) (5 tapes)
Convert Convert to unary
Copying Copia cadeia de caracteres
Cvp Circuit Value Problem (example 8.8.1)
div2mult f(n)=n div 2 (multitape machine)
div2single f(n)=n div 2 (single tape)
Ex12-3-1 Language Emulator (Example 12.3.1)
Ex2-2-3 Example 2.2.3 w=w
R
, odd palindromes
Ex2-6-2 nondeterm accepter a**(2n)+a**(3n), n>0
Ex2-6-3 nondeterm accepter a**(n**2) n>0
Ex2-6-5 nondeterm f(n) = cubicroot(n), se cubo perfeito, indefinida caso contrrio
Ex4.5.1 Markov algorithm simulator 4 tapes
Factoria f(n)= n!
Fspacon f(n) = n**2 is fully space-constructible
God Exodus 3.13-14 I am who I am
Multiply f(n,m)=nm the multiplication machine
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
327
N^n n
n
, the n to n power
Nntravsa Nearest-Neighboor Traveling Salesman Machnine/Exxample 8.10.2
Palindro Palindromes
Recdesct Recursive-descent Parser
Recognzr Reconhecimento da cadeias (pares, impares, carter do meio, palindromes)
Reverse reverse word
Reverse2 reverse word multitape
Samenumb same numbare of as as bs single tape
Samenumb4t same number of as and bs 4 tapes
Selctstr select a string
Sqrt square root (perfect square)
Exemplo 9.7.1 Desenvolver um algoritmo para calcular n
3
Uma soluo possvel:
1 - Escreve-se na fita n0n0n.
2 - Copia n direita um nmero n de vezes, obtendo-se assim nxn=m.
3 - Copia depois m um nmero n de vezes, obtendo-se mxn=nxnxn.
Exemplo 9.7.2. Desenvolver as linhas gerais de um algoritmo para calcular n!
Com sabemos n!=nx(n-1)x..x2x1. Para isso na MT
- escreve-se n na fita, em unrio
- copia-se n direita
- decrementa-se n, (subrao de 1)
- multiplica-se (n-1)n = p
- decrementa-se n-1, vindo n-2
- multiplica-se (n-2)p obtendo-se um novo valor de p.
-
- at se atingir n-i=1, e nesta altura o valor de p o factorial.
Um programa para isso ter uma extenso considervel
Teoria da Computao Cap. 9 Mquinas de Turing
LEI/DEIFCTUC/2011/@ADC Documento de trabalho
328
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 th the Theory of Computation, Michael Sipser, PWS Publishing Co, 1997.
http://www.turing.org.uk/turing/Turing.html (Alan Turing Home Page).
http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Turing.htm.