Escolar Documentos
Profissional Documentos
Cultura Documentos
CAPTULO 3
3.1 Introduo
117
117
126
130
140
151
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
115
Teoria da Computao
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
116
Teoria da Computao
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.
os smbolos do alfabeto
os operadores de
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
117
Teoria da Computao
unio : ou +
concatenao:
fecho-estrela : *
de parnteses
Exemplo 3.2.1.
Consideremos o alfabeto 6={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
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
118
Teoria da Computao
2.2 r1r2,
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 6={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
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
119
Teoria da Computao
(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 6 = {a,b,c}, ser (a+bc)*(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, 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+) uma er, dos itens 2.1 e 2.4 da definio,
(a+bc)*(c+) uma er do item 2.2 da definio.
q.e.d
E (a + c + ) expresso regular ?
a , c so er primitivas
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
120
Teoria da Computao
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
= O(1+10) (1+10) (1+10) (1+10) (1+10) (1+10)
= {O,1+10, (1+10) (1+10) , (1+10) (1+10) (1+10) , }
= {O,1+10, 11,110,101,1010, (11+110+101+1010)(1+10), }
= {O,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.
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
121
Teoria da Computao
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
122
Teoria da Computao
{a, b}
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
123
Teoria da Computao
v) Em 6 = {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+b)* = (a+b)*(a+b)*
Documento de trabalho
124
Teoria da Computao
r1 = (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. Notese 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
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
125
Teoria da Computao
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
126
Teoria da Computao
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
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
127
Teoria da Computao
(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, , a identidade para a unio porque
+L=L+=L
J para a concatenao, a identidade a cadeia vazia porque
OL=LO=L
O anulador o elemento que operado com outro elemento d sempre o conjunto vazio.
No caso da concatenao o conjunto vazio
L = L =
Para a unio no existe anulador. E para a interseco?
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
128
Teoria da Computao
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
129
Teoria da Computao
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).
LEI/DEI/FCTUC/2009/@ADC
q0
q1
Documento de trabalho
130
Teoria da Computao
q0
r=O
q1
q1
q0
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,
M (r)
q0
qf
com o estado inicial q0 e o estado final qF. Note-se que qualquer NFA pode ser representado
com um s estado final.
3 Suponhamos agora que temos dois NFAs M(r1) e M(r2) que aceitam as linguagens
L(r1) e L(r2) definidas pelas expresses regulares r1 e r2. Construam-se os NFA para a
segunda parte da Definio 3.2.2 do modo seguinte:
iv) L(r1+r2)
M (r1)
q0
M (r2)
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
131
Teoria da Computao
O NFA aceita a unio das linguagens, L1 pela parte de cima e L2 pela de baixo.
v) L(r1r2)
M (r1)
q
M (r2)
qf
O NFA aceita uma cadeia que resulte da concatenao de uma cadeia de L1 (que leva o
autmato ao estado aceitador da de M(r1)) com uma cadeia de L2 que lava depois a qf.
vi) L(r1*)
M (r1)
q
qF
O
Figura 3.4.7. Autmato do fecho-estrela de uma expresso regular.
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
132
Teoria da Computao
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-selhe a regra do fecho estrela.
O
O
O
Figura 3.4.8 Autmato NFA de 1*
q0
DFA
0
q0
Figura 3.4.11. DFA de 1*
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
133
Teoria da Computao
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 q0, 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 G*. 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 o grafos de transio generalizados o expresses regulares
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
134
Teoria da Computao
d
q
qi
qj
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 qi at qi, um ciclo fechado, vai-se com a at q, com um nmero qualquer de es, ou
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
135
Teoria da Computao
ae*d
ce*b
ce*d
qi
qj
ae*b
Figura 3.4.13. Grafo resultante da eliminao do
estado intermdio da Fig. 3.4.12.
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 (qi, qj) 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.
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
136
Teoria da Computao
r4
r3
q0
qf
r2
Figura 3.4.14, Qualquer NFA pode ser reduzido a
esta forma.
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
137
Teoria da Computao
r4
r3
qf
r2
Figura 3.4 15. Caso em que o estado inicial aceitador.
a expresso regular
r=(r1*+ (r2r4*r3))*
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 O. Resulta um NFA equivalente.
A
1
1
0
0
Figura 3.4.16. Exemplo 3.4.2.1
LEI/DEI/FCTUC/2009/@ADC
A
1
1
0
Documento de trabalho
138
Teoria da Computao
0
O
11*0
0
Figura 3.4.17. Eliminao do estado C.
O
A
q0
r4 = ( 0 + 11*0(11*0)*0 )*
Figura 3.4.18. Eliminao do estado B
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
139
Teoria da Computao
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 o xB,
A o x,
em que
A, B V, variveis do conjunto das variveis
x 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 o Bx,
A o 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
G1= ({S}, {a,b}, S, P1) , linear direita
P1 : S o abA
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
140
Teoria da Computao
P2 : S o a
Tambm se pode escrever em forma mais compacta por
P : S o abA|a
Como derivar ababa de G1 ?
S abS ababS ababa
Aplicando P1 sucessivamente duas vezes e depois P2 para terminar.
De cada vez que se aplica P1 introduz-se ab. Aplicando duas vezes, fica (ab)2S depois
para eliminar S tem que se aplicar P2 resultando em (ab)2a. Aplicando trs vezes P1 fica
(ab)3S e depois P2 termina a derivao em (ab)3a.
Generalizando conclui-se que a gramtica G1 produz a linguagem (regular) definida pela
expresso regular
r=(ab)*a
Exemplo 3.5.1.2
G2 =({S,A,B}, {a,b}, S, P2 } , linear esquerda
P1
S o Aab
P2
A o Aab | B
P3
Boa
Documento de trabalho
141
Teoria da Computao
G3 =({S,A,B}, {a,b}, S, P }
P1
SA
P2
A aB
P3
AO
P4
B Ab
Esta tem produes lineares direita (P2) e outras lineares esquerda (P4) (P1 e P3 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.
G4 =({S}, {a,b}, S, P }
P:
S aSSa | O
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.
Documento de trabalho
142
Teoria da Computao
Um NFA pode imitar esta produo se tiver um estado D e um estado E e entre os dois
uma aresta etiquetada por d :
D
V0 v1Vi
Vi v2Vj
Vn vl
v1v2Vj
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
143
Teoria da Computao
....
*
v1v2...vkVn
v1v2...vkvl = w
O NFA a ser construdo imita cada derivao consumindo um v de cada vez. V0, Vi, Vj,
..., Vn 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:
Vi o a1a2a3...amVj
ento o NFA ter um caminho ligando Vi a Vj, ou seja G (Vi, Vj) existe e ser definida por
G*(Vi, a1a2a3...am) = Vj
Vi
a1
a2
am
Vj
G*(Vi, a1a2a3...am) = Vf
Vi
a1
a2
am
Vf
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
144
Teoria da Computao
Se uma cadeia wL(G) ento ela foi gerada por um conjunto de produes definidas
acima. No NFA existe, por construo, um caminho etiquetado w que vai de V0 at Vf 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 V0, Vi,... at Vf usando
caminhos etiquetados v1, v2, ...., ou seja, w tem necessariamente a forma
w= v1v2...vkvl
e por isso a derivao
*
P:
So
aA | aB ,
Ao
bB | b ,
Bo
aA | bB .
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
145
Teoria da Computao
a
a
A
a
b
F
B
b
Figura 3.5.4. Autmato da gramtica do exemplo 3.5.2.1.
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
146
Teoria da Computao
S = q0
2 Para cada transio G (qi, aj) = qk no DFA M , introduz-se em P a produo
qi o ajqk
Documento de trabalho
147
Teoria da Computao
b
q0
q1
q2
qf
Produes em G
G (q0, a)={q1}
q0 o aq1
G (q1, a)={q2}
q1 o aq2
G (q2,b)={q2}
q2 o bq2
G (q2, a)={qf}
q2 o aqf
qf F
qf o O
q2
LEI/DEI/FCTUC/2009/@ADC
b
q3
Documento de trabalho
q4
148
Teoria da Computao
ab*a
a
q5
q6
q7
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 Oa
q1
b
a
q2
O
q
q3
q4
O
q5
q6
qf
q7
Produes em G
q0 o q1| q5
G (q1, a)={q2}
q1 o aq2
G (q2,a)={q3, q4}
q2 o aq3| aq4
G (q3, a)={q4}
q3 o aq4
G (q3, b)={q3}
G (q4, O)={qf}
q3 o bq3
q4 o qf
G (q5, a)={q6}
q5 o aq6
G (q6, b)={q6}
q6 o bq6
G (q6,a)={q7}
q6 o aq7
G (q7, O)={qf}
q7 o qf
qf F
LEI/DEI/FCTUC/2009/@ADC
qf o O
Documento de trabalho
149
Teoria da Computao
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
150
Teoria da Computao
Teorema
3.2
DFA ou NFA
Teorema
3.4
Teorema
3.3
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
151
Teoria da Computao
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.
LEI/DEI/FCTUC/2009/@ADC
Documento de trabalho
152