Escolar Documentos
Profissional Documentos
Cultura Documentos
Instituto de Computao
INSTITUTO DE
COMPUTAO
CAMPINAS
2016
Lise Rommel Romero Navarrete
CAMPINAS
2016
Agncia(s) de fomento e n(s) de processo(s): CNPq, 132470/2012-8
Ficha catalogrfica
Universidade Estadual de Campinas
Biblioteca do Instituto de Matemtica, Estatstica e Computao Cientfica
Maria Fabiana Bezerra Muller - CRB 8/6162
Banca Examinadora:
A mis hermanos Freddy, Carlos, Jaime y Flor. Por ser parte de mi vida e ser juntos
partes de un todo, nuestra familia. Por su permanente disposicin para darme auxilo
en las dicultades. Por su preocupacin por m. Los llevo siempre conmigo!
Aristteles
384-322 a.C
Agradecimentos
Agradeo a Deus pela vida, pelo entendimento, pela inspirao para buscar o simples
do mais complexo e tornar esta experincia possvel.
Agradeo aos meus pais Federico e Angelica e aos meus irmos Freddy, Carlos, Jaime
y Flor pelo seu apoio e por me abrigar sempre com seu carinho e ilimitado amor.
Agradeo especialmente ao meu orientador, o professor Guilherme P. Telles, pela
sua interminvel pacincia em cada dia dessa pesquisa, pelas horas de trabalho a
mais, produto da minha diculdade na lngua portuguesa. Agradeo innitamente!
Agradeo aos membros da banca por terem aceitado participar da avaliao deste
trabalho.
Agradeo ao Henrique Vieira pela sua amizade e por ter me acolhido na sua casa
nos momentos mais difceis da minha vida! De corao muito obrigado!
Agradeo ao Renzo Grover e ao Segundo Gamarra pela sua amizade e pela atenci-
osidade na poca em que quei hospitalizado. Muito obrigado!
Agradeo ao Jhonatan Raphael e ao Osvaldo Andrade, pela sua amizade e por ter
sido o suporte necessrio na minha poca de crises. Muito obrigado por el apoio!
Agradeo ao meu grande amigo Hernn Salvador pela sua fraternal amizade, afeto
e apoio. Thanks! Xixio Wallace!
Agradeo aos meus colegas e amigos Jesse Paulino, Edwilson Barros e Lucas Garcia
por me acolher na sua casa na moradia da Unicamp.
Agradeo a todos meus amigos e colegas, de maneira especial a Ricardo Gonz-
lez, Junior Fabian, Edson Ticona, Juan Salamanca, Filomen Incahuanaco, Thierry
Moreira, Ramon Pires, Marlon Alcantara, Jaime Rocca, Diego Chavez, Sheila Ve-
nero, Jael Zela, Atlio Gomes, Karina Bogdan, Jorge Gonzlez, Ruth Rubio, Renzo
Fabin, Viviana Echvez, Samuel Cajahuaringa, Yesica Rumaldo, Carlos Alfaro,
Marleny Luque e David Gutierrez, muito obrigado por estar presentes nos momen-
tos em que precisei.
Agradeo ao professor Joo Meidanis, por ter me permitido ser parte da Scylla
Bioinformtica e enriquecer minha vida prossional.
Agradeo ao professor Fbio Usberti, pela lecionadora experincia no PED.
Agradeo aos professores Rubn Aquize, Marcial Lopez, Cesar Briceo, Humberto
Asmat, Felix Escalante, Pedro Canales e Javier Solano. Obrigado pelo o apoio.
Agradeo aos meus colegas Oswaldo Velasquez, Leopoldo Paredes e William Eche-
garay. Muito obrigado pelo seu apoio.
Agradeo ao Brasil por ter me acolhido.
Agradeo ao pessoal do HC/Unicamp, doutores e enfermeiras que me cuidaram nos
momentos difceis que passei, e porque ainda o fazem.
Agradeo ao CNPq pelos 24 meses de bolsa no tempo dessa pesquisa.
Agradeo ao pessoal do IC/Unicamp pelo apoio e orientao.
Agradeo a todos que de uma ou outra forma zeram parte da minha vida nessa
aventura do mestrado. Muito obrigado! Muchas gracias!
Resumo
2.1 Nmero de estados (E) e transies (T) comparativo entre -NFA e DFA. . 34
2.2 Funo do autmato construdo para o casamento de p = ATATA. . . . . . 38
1 Introduo 18
1.1 A pesquisa em relao arte . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.2 Organizao da dissertao . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2 Definies 21
2.1 Denies bsicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2 Expresses regulares e autmatos nitos . . . . . . . . . . . . . . . . . . . 22
2.2.1 Expresso Regular . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.2 DFA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.3 NFA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.4 -NFA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2.5 Equivalncias entre autmatos . . . . . . . . . . . . . . . . . . . . . 26
2.3 Busca em sequncias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.3.1 Algoritmo ingnuo para casamento exato de sequncia . . . . . . . 36
2.3.2 Casamento exato de sequncia usando autmato . . . . . . . . . . . 36
2.3.3 Casamento exato de expresso regular . . . . . . . . . . . . . . . . 39
2.4 Alinhamento de sequncias . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.4.1 Alinhamento global de duas sequncias . . . . . . . . . . . . . . . . 41
2.4.2 Algoritmo para encontrar um alinhamento global timo . . . . . . . 43
3 Construo do autmato 50
3.1 Construo de Thompson . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.2 Construo de Thompson melhorada . . . . . . . . . . . . . . . . . . . . . 56
3.2.1 Os padres propostos . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.2.2 Ciclos de transies vazias . . . . . . . . . . . . . . . . . . . . . . . 66
3.3 PROSITE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
3.3.1 Sintaxe de padres . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.3.2 -NFA equivalente a R e Rk . . . . . . . . . . . . . . . . . . . . . 74
3.3.3 -NFA equivalente a Rx e Rkx . . . . . . . . . . . . . . . . . . . . . 75
3.3.4 -NFA equivalente a RC e RkC . . . . . . . . . . . . . . . . . . . . . 76
3.3.5 -NFA equivalente a x(k, l) . . . . . . . . . . . . . . . . . . . . . . . 77
3.3.6 -NFA equivalente a y-x(0, l k) . . . . . . . . . . . . . . . . . . . 80
3.3.7 Exemplos de -free NFAs equivalentes a padres PROSITE . . . . . 81
4 Alinhamento restrito 88
4.1 Alinhamento restrito por expresso regular . . . . . . . . . . . . . . . . . . 88
4.2 Autmatos e alinhamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4.2.1 NFA produto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
4.2.2 Computao num NFA . . . . . . . . . . . . . . . . . . . . . . . . 94
4.2.3 Computao num NFA produto . . . . . . . . . . . . . . . . . . . . 94
4.2.4 Alinhamento com o NFA produto . . . . . . . . . . . . . . . . . . . 95
4.3 Algoritmo de Arslan (2007) . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.3.1 NFA produto de Arslan . . . . . . . . . . . . . . . . . . . . . . . . 98
4.3.2 Alinhamento com o NFA produto de Arslan . . . . . . . . . . . . . 100
4.4 Alinhamento restrito por padres PROSITE . . . . . . . . . . . . . . . . . 101
4.4.1 Soluo direta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.4.2 Soluo melhorada . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
5 Concluses 107
Introduo
18
CAPTULO 1. INTRODUO 19
10
10
2007 3
k ||3
tempo
8 (n2 log(k||) )
10
2011 Kucherov et al.
6
10
10
4
O(n2 k 2)
2 Nossa Soluo
10
10
0 (n2)
1 20 40 60 80 100
k
Figura 1.1: Grco comparativo entre os tempos de computao esperados das solues
existentes para o alinhamento restrito e nossa soluo. O eixo do tempo apresentado
em escala logartmica. n considerado constante e = 20.
Definies
21
CAPTULO 2. DEFINIES 22
Seja R uma expresso regular. Ento L(R) representa a linguagem denida por R.
Por exemplo, para R = A(C*)(S|T) a linguagem L(R) o conjunto {AS, AT, ACS, ACT,
ACCS, ACCT, ...}.
Denotamos por |R| o nmero de smbolos usados para representar a expresso regular
R. Por exemplo, para R = A(C*)(S|T), temos que |R| = 10.
Ao escrever uma expresso regular possvel omitir alguns parnteses se assumimos
a seguinte regra de precedncia: o fecho de Kleene possui a maior prioridade, depois a
concatenao e por m a alternncia. Assim a expresso regular A(C*)(S|T) pode ser
escrita como AC*(S|T).
A expresso regular a| representa zero ou um smbolo a, e ser denotada por a?. Da
mesma maneira aa* representa uma ou mais repeties do smbolo a, e ser denotada por
a+.
CAPTULO 2. DEFINIES 23
2.2.2 DFA
Definio 2.2 (DFA). Um autmato finito determinstico ou DFA uma quntupla
(Q, , , q0 , F ) onde:
um alfabeto,
q0 Q o estado inicial,
A parte (i) estabelece que no h transio sem consumir smbolo. A parte (ii)
estabelece como encontrar o estado seguinte depois de ler a cadeia no-vazia wa.
Uma cadeia x aceita pelo autmato M = (Q, , , q0 , F ) se (q0 , x) = p para algum
p F . A linguagem aceita por M L(M) = {x | (q0 , x) F }. Dizemos que uma
linguagem um conjunto regular se ela aceita por algum DFA.
A Figura 2.1 mostra o autmato M com Q = {q0 , q1 , q2 , q3 }, = {A,T,G,C}, F = {q2 }
e denido pela tabela da Figura 2.1. M aceita as sequncias {G, AT, CG, CAT, CCG, CCAT,
...}. A sequncia CCAT aceita pela sucesso de estados: q0 q0 q1 q2 . Como (q0 ,CCAT) =
((((q0 ,C),C),A),T) = q2 , ento CCAT L(M).
q0 G
q2
A T
q1 A A T G C
A T
G C q0 q1 q3 q2 q0
C G q1 q3 q2 q3 q3
q2 q3 q3 q3 q3
q3 q3 q3 q3 q3
T
q3
G
A
T C
C
A T G C
G q0 q1 q2 q0
q0 q2
A q1 q2
T q2
q1
2.2.3 NFA
O autmato nito no-determinstico ou NFA um formalismo que basicamente segue as
mesmas ideias do DFA, exceto que a funo de transio leva a um conjunto de estados.
um alfabeto,
q0 Q o estado inicial,
A parte (i) estabelece que no h transio sem consumir smbolo. A parte (ii)
estabelece que, comeando no estado q e lendo a cadeia wa, o NFA chega ao estado p se
e somente se um dos estados possveis depois de ler w r, e desse r pode-se alcanar p
consumindo a. A parte (iii) estende a denio de para conjuntos de estados.
Observe que a funo recebe na entrada uma cadeia e obtm um conjunto de estados
aps consumir a entrada.
Seja o NFA M = (Q, , , q0 , F ). Se existe alguma sequncia de transies tal que
(q0 , x) F 6= ento a cadeia x aceita por M. A linguagem aceita por M L(M) =
{w | (q0 , w) contm algum estado em F }.
Na Figura 2.3 mostrado um NFA que aceita a linguagem L = {w | w possui
AA ou TT como subcadeia}, considerando = {A,T,G,C}.
A,T,C,G A,T,C,G A T C G
A q1 A q0 {q0 , q1 } {q0 , q2 } {q0 } {q0 }
q1 {qf }
q0 qf q2 {qf }
T T
q2 qf {qf } {qf } {qf } {qf }
Ainda que DFA e NFA possuam denies distintas, Rabin e Scott no ano de 1959
[29] provaram que todo NFA tem um DFA equivalente que aceita a mesma linguagem.
2.2.4 -NFA
Um -NFA um autmato que capaz de realizar transies vazias. Uma transio vazia
uma transio de estado sem consumir um smbolo. Uma transio vazia chamada de
-move.
um alfabeto,
q0 Q o estado inicial,
O uso de transies vazias nos -NFAs cria a necessidade de denir a funo f echo-,
que permite calcular o conjunto de estados aos quais pode-se chegar sem consumir sm-
bolos.
CAPTULO 2. DEFINIES 26
A funo do -NFA pode ser estendida para ser usada sobre um conjunto de estados,
assim, (R, a) = qR (q, a), R Q.
A funo denida para ser usada sobre uma cadeia. Assim (q, w) so todos os
estados p Q alcanveis aps consumir a cadeia w no -NFA partindo do estado q.
A parte (i) estabelece o conjunto de estados alcanveis com transies vazias a partir
de q, o caso base da denio recursiva em (ii). (ii) dene recursivamente para ser
aplicado ao consumir a cadeia wa, que dene o conjunto de estados alcanveis depois de
ter consumido wa partindo do estado q. (iii) estende a denio de para um conjunto
de estados.
O uso dos -moves facilita a construo de autmatos. A incluso de -moves no
autmato no aumenta o poder de representao de linguagens e qualquer -NFA pode
ser representado por um DFA. Por exemplo, o autmato que representa a linguagem
L = {w | w possui AA ou TT como subcadeia} sobre = {A,T,G,C}, pode ser
construdo a partir dos NFAs para as linguagens L1 = {w | w possui AA como
subcadeia} e L2 = {w | w possui TT como subcadeia}. Essa construo feita pela
unio de L1 e L2 usando -moves, tal como se mostra na Figura 2.4.
Como um NFA no contm -moves, para tornar esse fato explcito, todo NFA pode ser
chamado de -free NFA. Na Figura 2.3 mostra-se um -free NFA equivalente ao -NFA
da Figura 2.4.c.
1. Seja L uma linguagem aceita por um NFA, ento existe um DFA que aceita L
(Teorema 2.1 [17]).
2. Se L aceita por um -NFA, ento L aceita por um NFA (Teorema 2.2 [17]).
CAPTULO 2. DEFINIES 27
A,T,C,G A,T,C,G
A A A,T,C,G A,T,C,G
q1 q2 q3
q1 A q2 A q3
(a)
A,T,C,G A,T,C,G qf
q0
A,T,C,G A,T,C,G T T
q4 q5 q6
T T (c)
q4 q5 q6
(b)
Figura 2.4: (a) NFA para L1 = {w | w possui AA como subcadeia}. (b) NFA
para L2 = {w | w possui TT como subcadeia}. (c) Construo do -NFA para
L = {w | w possui AA ou TT como subcadeia} usando -moves e os autmatos (a) e
(b).
3. Seja R uma expresso regular, ento existe um -NFA que aceita a mesma linguagem
de R (construo de Thompson, Teorema 2.3 [17]).
4. Se a linguagem L aceita por um DFA, ento L pode ser denida por uma expresso
regular (Teorema 2.4 [17]).
2
-NFA NFA
3 1
4
RE DFA
Figura 2.5: Equivalncias entre os formalismos NFA, -NFA, DFA e RE (expresso regu-
lar) [17].
F {q0 } se fecho-(q0 ) F 6=
G =
F em outro caso.
A
T
C
G
A A A A
A T T A T T
C C C G C C C G
q0 q1 q2 q3 q4 q5 q0 q1 q2 q3 q4 q5
G G G G
T T
A
T
(a) C
A
T
(b)
No autmato da Figura 2.6 parte (a), partindo do estado q0 aps consumir o smbolo
A o estado q1 alcanado e a existncia de -moves permite alcanar tambm os estados q2
e q3 , da mesma forma, partindo de q1 aps consumir o smbolo C o estado q2 alcanado
e pelos -moves tambm os estados q3 e q4 so alcanados. O uso da funo na denio
de permite adicionar os estados alcanveis pelos -moves. No exemplo anterior, para o
estado q0 temos que (q0 ,A) = {q1 }, mas (q0 ,A) = {q1 , q2 , q3 }, para o estado q1 temos que
(q1 ,C) = {q2 }, mas (q1 ,C) = {q2 , q3 , q4 }. Assim mesmo, partindo de q0 aps consumir AC
os estados q2 , q3 e q4 so alcanados, dado que (q0 ,AC) = {q2 , q3 , q4 }.
No caso em que o autmato aceita a cadeia vazia e q0 no estado nal, existem
-moves saindo de q0 at algum estado nal. Nesse caso, pode no existir uma transio
que alcance q0 e permita substituir o -move com o uso da funo . Para considerar esse
caso, q0 includo como estado nal no novo autmato. Essa condio representada na
primeira linha de denio de G.
CAPTULO 2. DEFINIES 29
Na Figura 2.7 parte (a) se mostra um -NFA que possui dois -moves. Um -free NFA
equivalente mostrado na parte (b). Para o estado q0 , como E (q0 ,A) = {q2 } e no existem
mais smbolos para consumir desde q0 , ao vez do -move que sai dele considerada uma
nova transio consumindo A. Para o estado q2 , temos que E (q2 ,T) = {q3 , q4 }, ento so
consideradas duas novas transies no-vazias ao vez do -move.
E A B
q0 {q1 }
q0 q1 A q2 T q3 q4 q1 {q2 }
q2 {q3 }
q3 {q4 }
q4
(a)
A B
T q0 {q2 }
q0 q1 A q2 q3 q4 q1 {q2 }
q2 {q3 , q4 }
A T q3
q4
(b)
Figura 2.7: (a) Um -NFA. (b) -free NFA equivalente ao -NFA (a).
Note que os estados q1 e q3 podem ser eliminados do -free NFA na parte (b), dado
que q1 no pode ser alcanado por nenhum estado partindo do estado inicial q0 e q3 nunca
pode levar a um estado de aceitao.
Implementao
Detalhes de implementao podem ser encontrados no Apndice B.1.
no -free NFA so 34. Note que o nmero de transies no -free NFA quadrtico em
relao ao nmero de transies no -NFA.
q0 A q1 q2 C q3
q8 q9 q10 T q11 q12 A q13
q4 A q5 q6 G q7
(a)
C
C q3
A q2 C T T
q0 A T
C T
A q1 C q9 T
A G T q11 A
q8
A C G T T q
A q13
12
A q5 q10 T T
G
q4 A G T
q6 q7 T
A G
G
(b)
Figura 2.8: (a) -NFA equivalente a R = (AC|AT)TA?. (b) -free NFA construdo a partir
do -NFA da parte (a).
G = {p | p P e p F 6= }
p0 = {q0 }
A Figura 2.9 mostra o -free NFA N equivalente expresso regular R = (AC)|(AG),
denido como N = (Q, , , q0 , F ). Na Seo A.1 do apndice apresentamos o detalhe
da construo do DFA D equivalente ao NFA N segundo essa construo. A Figura 2.10
mostra o DFA D.
Implementao
Detalhes de implementao podem ser encontrados no Apndice B.2.
CAPTULO 2. DEFINIES 31
Q = {q0 , q1 .q2 , q3 }
= {A,T,G,C} A q1 C
q0 G q3
(q0 ,A) = {q1 , q2 } A
q2
(q1 ,C) = {q3 }
(q2 ,G) = {q3 }
F = {q3 }
Figura 2.9: -free NFA para R = (AC)|(AG).
A T C G
p0 p7 A C
p0 p7 p3
p3 G
p7 p3 p3
Figura 2.10: DFA equivalente simplicado para R = (AC)|(AG).
P = 2Q
G = {p | p P e p F 6= }
p0 = fecho-(q0 )
Por exemplo, vamos a construir o DFA equivalente para o -NFA mostrado na Fi-
gura 2.12 parte (a). O -NFA aceita a linguagem da expresso regular R = (AC)|(AG).
Como fecho-(q0 ) {q0 , q1 , q2 }, ento p0 = {q0 , q1 , q2 }. p0 adicionado na lista de
estados do DFA e marcado como no processado.
Comea-se processando p0 . Como (p0 ,A) = {q3 , q4 , q5 , q6 }, ento p1 = {q3 , q4 , q5 , q6 }.
O estado p1 adicionado na lista. A transio p0 p1 adicionada na tabela de transies
do DFA. Como (p0 ,T) = (p0 ,C) = (p0 ,G) = , no existem transies nem outros estados
para adicionar na lista. Logo p0 marcado como processado.
Para p1 , encontra-se p2 = (p1 ,C) = {q7 , q9 }. A transio p1 p2 adicionada. O
estado p2 adicionado na lista. Em seguida, encontra-se p3 = (p1 ,G) = {q8 , q9 }. A
transio p1 p3 adicionada. O estado p3 adicionado na lista. Como (p1 ,A) =
(p0 ,T) = , ento no existem transies nem outros estados para adicionar na lista.
Logo, p1 marcado como processado.
Como (p2 , x) = (p3 , x) = para todo x {A,T,G,C} e a lista no tem mais estados
no processados, ento o processo termina.
A parte (b) da Figura 2.12 mostra o DFA construdo.
CAPTULO 2. DEFINIES 33
q1 A q3 q5 C q7
q0 q9
q2 A q4 q6 G q8
p3 = (p1 ,G)
(a)
p2
C
p0 A p1
G p3
(b)
Implementao
Detalhes de implementao podem ser encontrados no Apndice B.2.
Minimizao de um DFA
A minimizao de um DFA estudado na literatura com o objetivo de construir um
DFA mais compacto a partir de outro DFA. O Teorema 3.10 de [17] arma que existe
CAPTULO 2. DEFINIES 34
A
T A
A
T
(a)
A
A
T A
T T
A
T T
A
(b)
A
A A
T A
T T
(c)
T A
T
A T A
T A
T A
A T T A
T A
T
A
(d)
Figura 2.13: (a) -NFA equivalente a R1 = (A|T)*A(A|T). (b) DFA equivalente a (a).
(c) -NFA equivalente a R2 = R1 (A|T). (d) DFA equivalente a (c).
Tabela 2.1: Nmero de estados (E) e transies (T) comparativo entre -NFA e DFA.
-NFA DFA
Expresso Regular
E T E T
R1 (A|T)*A(A|T) 16 19 5 10
R2 (A|T)*A(A|T)(A|T) 22 26 9 18
R3 (A|T)*A(A|T)(A|T)(A|T) 28 33 17 34
R4 (A|T)*A(A|T)(A|T)(A|T)(A|T) 34 40 33 66
R5 (A|T)*A(A|T)(A|T)(A|T)(A|T)(A|T) 40 47 65 130
R6 (A|T)*A(A|T)(A|T)(A|T)(A|T)(A|T)(A|T) 46 54 129 258
R7 (A|T)*A(A|T)(A|T)(A|T)(A|T)(A|T)(A|T)(A|T) 52 61 257 514
R8 (A|T)*A(A|T)(A|T)(A|T)(A|T)(A|T)(A|T)(A|T)(A|T) 58 68 513 1026
R9 (A|T)*A(A|T)(A|T)(A|T)(A|T)(A|T)(A|T)(A|T)(A|T)(A|T) 64 75 1025 2050
R10 (A|T)*A(A|T)(A|T)(A|T)(A|T)(A|T)(A|T)(A|T)(A|T)(A|T)(A|T) 70 82 2049 4098
Apndice A.2.
t
A T A C A T A T A C A T A C A T A T A G
1 A C A T A
2 A C A T A
i=3
ocorrncias
3 A C A T A
4 A C A T A
5 A C A T A
6 A C A T A
7 A C A T A
8 A C A T A
9 A C A T A i=9
10 A C A T A
11 A C A T A
12 A C A T A
13 A C A T A i = 13
14 A C A T A
15 A C A T A
i =nm+1 A C A T A
Figura 2.14: Algoritmo ingnuo para o casamento exato de sequncia com p = ACATA e
t = ATACATATACATACATATAG.
Q = {0, 1, ..., m}
CAPTULO 2. DEFINIES 37
q0 = 0, estado inicial
Input: padro p
Output: funo
1 begin
2 m |p|
3 for q 0 to m do
4 foreach a do
5 k min(m + 1, q + 2)
6 repeat
7 k k1
8 until p[1, k] prefixo de p[1, q]a
9 (q, a) k
10 end
11 end
12 end
A T C G
0 1 0 0 0
1 1 2 0 0
2 3 0 0 0
3 1 4 0 0
4 5 0 0 0
5 1 4 0 0
A,T,C,G
A T A T A
0 1 2 3 4 5
Observa-se que o DFA obtido em tempo O(||2m ) o mesmo apresentado por Cormen
et al. [11] em tempo O(||m). A construo feita por Cormen et al. [11] mantm a
linearidade no nmero de estados do -NFA e do DFA no caso de expresses regulares do
tipo R = (a1 |a2 |...|a|| ) b1 b2 ...bm , onde ai e bi .
C,G
A
T,C,G C,G A A
A T A T A
0 1 2 3 4 5
T,C,G T
C,G
T,C,G
A,T,C,G
A A,T A,T A,T A,T A,T
0 1 2 3 4 5 6
A Figura 2.19 mostra o mnimo DFA equivalente para R2 que possui 64 estados e 256
transies. Pode-se observar que o DFA obtido exponencialmente mais complexo que
o seu correspondente NFA equivalente. Motivados por essa diferena de complexidade
construmos um algoritmo de busca de padres usando NFA.
q1 q6
q10
q2
q18
q5
q34 q3
q8
q14 q50
q26
q7
q63 q12
q49
q22
q42
q11
q41
q17
q13
q60
q25 q47
q16
q9 q15
q58
q30
q46
q20
q38
q24
q54 q57
q28
q0
q37
q40
q45 q36
q53
q55 q27
q52 q21 q39 q44 q51 q19
q56 q29 q23
q35
q43
e F Q o conjunto dos estados nais. A funo pode ser estendida para ser aplicada
num conjunto de estados. Se Q1 (Q2 , a) com Q1 , Q2 2Q , ento (Q2 , a) resolvida
como a unio dos (qi , a), onde qi Q2 .
Na Figura 2.20 mostrado em alto nvel um algoritmo de busca usando NFA. A
cada vez que um smbolo consumido, um novo conjunto de estados alcanado com
Q1 (Q1 , t[i]).
1 a t[i]
2 Q2
3 foreach q Q1 do
4 Q2 Q2 (q, a)
5 end
6 Q1 Q2
Quando s e t estiveram claras pelo contexto, usaremos apenas A por A(s, t). Denotamos
o tamanho do alinhamento como |A(s, t)| ou |A|.
Existe mais de uma forma de construir um alinhamento. Por exemplo, para as sequn-
cias s = bbaba e t = acbaa, as sequncias s = bbab-a- e t = acbaa mostradas na
Figura 2.21 so um alinhamento. Note que |s | = |t | = 7 e que s [i] e t [i] no so
simultaneamente espaos para todo 1 i 7.
A coluna i de A o par (s [i],t [i]), com 1 i |A|. A coluna i de A(s, t) denotada
por A(s, t)[i] ou simplesmente A[i] quando s e t estiveram claras pelo contexto.
colunas 1 2 3 4 5 6 7
s b b a b - a -
t - - a c b a a
Pontuao de uma coluna. Para dar pontuao a uma coluna de A usada uma
funo : ( , ) R que associa um valor numrico a cada par de smbolos em
. Uma das vrias formas de denir a pontuao das colunas usando uma matriz de
pontuaes M que associa um valor numrico para cada par de smbolos do alfabeto e
por um valor numrico constante chamado gap no caso que um desses smbolos seja um
CAPTULO 2. DEFINIES 42
a b c d
a 4 -2 -2 -2
M= b -2 4 -2 -2 , gap = 1
c -2 -2 4 -2
d -2 -2 -2 4
pode ser usado para pontuar as colunas de um alinhamento sobre o alfabeto = {a, b, c, d}.
O uso da matriz e do gap na pontuao de uma coluna consideram unicamente a
coluna que est sendo pontuada. Nesse caso, a pontuao de uma coluna independente
das outras colunas.
s b b a - b a -
t - - a c b a a
1 1 4 1 4 4 1
Duas sequncias quaisquer podem ter vrios alinhamentos com pontuao mxima.
A pontuao de um A(s, t) timo denotado por score(s, t) ou simplesmente por score
quando s e t estiveram claras pelo contexto.
A coluna A[a] tem apenas trs valores possveis: (s[|s|], ) ou (s[|s|], t[|t|]) ou (, t[|t|]).
Como o score mximo, a soma sem A[a] necessariamente o score dos prexos de s
e t usados em A[1]A[2]...A[a 1]. Assim considerando as trs nicas opes para A[a] e
o fato do score ser mximo, temos que,
(s[|s|], ) + score(s[1, |s|-1], t)
score(s, t) = max (s[|s|], t[|t|]) + score(s[1, |s|-1], t[1, |t|-1])
(, t[|t|]) + score(s, t[1, |t|-1])
A expresso anterior dene uma recurso para calcular o score(s, t) considerando que
|s| > 0 e |t| > 0.
O caso base dessa recurso acontece quando pelo menos uma das sequncia vazia.
Se uma das sequncias vazia, cada smbolo da sequncia no-vazia alinhado com um
espao. Se |s| = 0 e |t| > 0, temos que:
|t|
X
score(, t) = (, t[i])
i=1
|s|
X
score(s, ) = (s[i], )
i=1
T(n,m)
A repetio de clculo mostrada anteriormente traz como consequncia que uma im-
plementao recursiva direta seja uma soluo ineciente. A programao dinmica sobre
essa recurso resolve a diculdade de clculo. Analisando a recurso podemos observar
que todos os subproblemas tm a forma score(s[1, k], t[1, j]), o que corresponde a calcular
o score de todo par de prexos de s e t.
O nmero total de pares de prexos existentes entre s e t (n + 1) (m + 1). Orga-
nizando adequadamente esses pares, possvel usar uma matriz M de tamanho (n + 1)
(m + 1) para armazenar o score de cada um desses pares de prexos. A Figura 2.24 mos-
tra como organizada a matriz M. So mostrados os scores dos casos base da recurso:
primeira linha e primeira coluna para um valor gap = 2. As sequncias s e t e os seus
prexos aparecem de forma natural com os ndices da matriz.
t
t[1] t[2] t[3] t[4] t[5] t[6] t[7]
M
0 1 2 3 4 5 6 7
s 0 0 4 8 12 16 20 24 28
s[1] 1 4 linha 1
s[2] 2 8 linha 2
s[3] 3 12
s[4] 4 16
s[5] 5 20
s[6] 6 24
Para encontrar o score preenchemos a matriz comeando pelos scores dos prexos
menores de s e t at alcanar o score para as sequncias completas. Assim M[0][0] 0,
dado que representa o score(, ). A linha zero representa os scores entre os prexos de t
e a cadeia vazia, se a funo associa o mesmo valor gap para todo par (espao,smbolo),
CAPTULO 2. DEFINIES 45
A matriz completada linha por linha comeando na linha 1, aps a linha 2 e assim por
diante. Na Figura 2.25 mostra-se a matriz M(7 8) preenchida, no caso das sequncias
s = aaaabb e t = bbaaaab e a funo que associa 4 para um match, 2 para um
mismatch e 4 para o gap. O score(s, t) est na posio M[6][7] e 8. Alternativamente,
a matriz poderia ser preenchida coluna por coluna.
t
M b b a a a a b
0 1 2 3 4 5 6 7
s 0 0 4 8 12 16 20 24 28
a 1 4 2 6 4 8 12 16 20
a 2 8 6 4 2 0 4 8 12
a 3 12 10 8 0 2 4 0 4
a 4 16 14 12 4 4 6 8 4
b 5 20 12 10 8 0 2 4 12
b 6 24 16 8 12 4 2 0 8
(s
(s[i], )
[i]
,t
avano
[j
av ago
])
di
an na
vertical
o l
M[i][j 1] M[i][j]
(, t[j])
avano
horizontal
Figura 2.27: Algoritmo para preencher a matriz de scores dos prexos, segundo a pro-
gramao dinmica.
CAPTULO 2. DEFINIES 48
t t
b b a a a a b b b a a a a b
0 -4 -8 -12 -16 -20 -24 -28 0 -4 -8 -12 -16 -20 -24 -28
a -4 -2 -6 -4 -8 -12 -16 -20 a -4 -2 -6 -4 -8 -12 -16 -20
a -8 -6 -4 -2 0 -4 -8 -12 a -8 -6 -4 -2 0 -4 -8 -12
s - - a a a a b b s - - a a a a b b
t b b a a a a - b t b b a a a a b -
(a) (b)
t t
b b a a a a b b b a a a a b
0 -4 -8 -12 -16 -20 -24 -28 0 -4 -8 -12 -16 -20 -24 -28
a -8 -6 -4 -2 0 -4 -8 -12 a -8 -6 -4 -2 0 -4 -8 -12
s - a a a a b b s a - a a a b b
t b b a a a a b t b b a a a a b
(c) (d)
Figura 2.28: Sequncias de avanos que geram uma pontuao global tima.
CAPTULO 2. DEFINIES 49
Figura 2.29: Algoritmo para recuperar um alinhamento global timo, depois do clculo
dos scores de prexos pela programao dinmica da Figura 2.27.
Captulo 3
Construo do autmato
A equivalncia entre expresso regular e -NFA foi desenvolvida por McNaughton e Ya-
mada no ano de 1960 [25]. No ano de 1968, Thompson [34] apresentou um algoritmo de
construo de um -NFA equivalente a uma expresso regular.
A construo de Thompson usada em diferentes reas na computao, como anali-
sadores lxicos, algoritmos de busca, minimizao de NFAs e construo de -free NFAs.
Entre os algoritmos de busca que usam como base a construo de autmatos, encontram-
se o algoritmo para o casamento exato de sequncia usando autmato apresentado na
Seo 2.3.2, o algoritmo para casamento exato de expresso regular apresentado na Se-
o 2.3.3, o algoritmo Aho-Corasick [1, 12] e os algoritmos para o alinhamento restrito
por expresso regular [3, 10, 23], que sero apresentados no Captulo 4. A minimizao
de NFAs estudada na literatura em diversos trabalhos tais como a minimizao de Xing
[35], a minimizao de Bal et al. [6], o algoritmo de Brzozowski [8, 9] e o algoritmo
de Glushkov [14, 9]. A construo de um -free NFA equivalente a uma expresso re-
gular com n smbolos estudada por Hromkovic et al. [20], que conseguiram construir
um -free NFA com O(n log2 n) transies, por Geert [13], que conseguiu construir um
-free NFA com O(n|| log n) transies e por Schnitger [30], que conseguiu construir um
-free NFA com O(n log n log ||) transies.
Neste captulo, estudamos a construo de um NFA a partir de uma expresso regular.
Na Seo 3.1 estudamos a construo clssica de Thompson que permite construir aut-
matos nitos equivalentes a uma expresso regular. Na Seo 3.2 propomos um algoritmo
melhorado para a construo de Thompson que permite obter autmatos mais compactos.
Na Seo 3.3 estudamos a nomenclatura dos padres PROSITE e propomos uma forma
de construir expresses regulares equivalentes que, ao serem usados pela construo de
Thompson melhorada, produzem diretamente -free NFAs.
50
CAPTULO 3. CONSTRUO DO AUTMATO 51
Teorema 3.1.1 Se R uma expresso regular ento existe um -NFA que aceita L(R).
Prova: Vamos provar por induo no nmero de operadores em R que existe um -NFA
M tal que L(M) = L(R) e que possui apenas um estado nal.
Caso base (zero operadores). A expresso regular R pode ser , e x para algum
x . Os -NFAs correspondentes so mostrados na Figura 3.1.
q0 q0 qf q0 x qf
R= R= R=x
(a) (b) (c)
qa Ma fa
q0 f0
qb Mb fb
Caso da concatenao, R = Ra Rb
Sejam Ma e Mb como no caso da alternncia. Construmos o -NFA:
M = (Qa Qb , a b , , qa , {fb })
qa Ma fa qb Mb fb
q0 qa Ma fa f0
q1 A q2 q3 T q4 q5 C q6 q7 G q8
MA MT MC MG
Figura 3.5: Autmatos das expresses regulares: A, T, C e G.
Implementao
Detalhes de implementao podem ser revisados no Apndice B.4.
CAPTULO 3. CONSTRUO DO AUTMATO 55
MA MT
(a) M1 q1 A q2 q3 T q4
MC
q02 q5 C q6 f02
(b) M2
MG
q7 G q8
(c) M3 q03 f03
q1 A q2 q3 T q4
MA MT
Figura 3.6: Autmatos das expresses regulares: R1 = AT, R2 = C* e R3 = G|AT.
M2 M3
MG
q7 G q8
MC
q0
q02 q5 C q6 f02 3 f03
q1 A q2 q3 T q4
MA MT
n smbolos do alfabeto,
n| smbolos de alternncia,
n smbolos do Fecho de Kleene e
n( smbolos de parnteses, incluindo ) e (.
Ento n = n + n| + n + n( . Note que a concatenao no tem operador explcito
na expresso regular. Considerando que nC o nmero de vezes que a concatenao
aplicada, ento 0 nC n . Na expresso regular a concatenao pode ser aplicada no
mximo n 1 vezes. Nos passos de induo, os parnteses no contribuem nem com
estados, nem com transies. A Figura 3.8 mostra a contribuio de estados e transies
do padro base e dos padres para o passo da induo.
Considerando que E o nmero de estados e T o nmero de transies do -NFA
equivalente, aps o processo de construo de Thompson: E = 2n +2n| +0nC +2n +0n( =
O(n) e T = n + 4n| + nC + 4n + 0n( = O(n).
CAPTULO 3. CONSTRUO DO AUTMATO 56
+2 estados n
Base +1 transio
+2 estados n|
Alternncia +4 transies
+0 estados nC
Concatenao +1 transies
+2 estados n
Fecho de Kleene +4 transies
+0 estados n(
Parnteses +0 transies
Ma
Ma
Ma
fa qa
(a) (b) (c)
Figura 3.9: -NFA Ma : (a) Construo clssica (Teorema 3.1.1). (b) Construo usando
dois -moves. (c) Construo fundindo os estados inicial e nal, sem -moves.
= L(Ma ).
A C T A
qa fa
A T Ma
(a)
C T
T
A C T A A C T A A
A
q0 qa fa f0 q0 f0
A
A T Ma A T Ma
q0
Figura 3.10: (a) -NFA Ma . (b) Ma segundo construo clssica; (c) -NFA M1 segundo
a construo com dois -moves; (d) -NFA M2 segundo construo sem -moves.
T C T A
qb A fb
A T Mb
(a)
C T
T
T C T A T C T A
q0 fb f0 f0
A
qb A q0 A A A
A T Mb
A T Mb q0
T
(b) (c) (d)
Figura 3.11: (a) -NFA Mb. (b) Mb segundo construo clssica; (c) -NFA M3 segundo
a construo com dois -moves; (d) -NFA M4 segundo construo sem -moves.
Um estado inicial sem ciclo signica ter apenas transies saindo dele. Um estado
nal sem ciclo signica ter apenas transies entrando nele. Por exemplo, o autmato
Mb da Figura 3.11 possui o seu estado inicial qb com ciclo e fb sem ciclos, fb no possui
transies saindo. O -NFA da parte (d) da Figura 3.11 um autmato ciclo.
um estado nal sem transies saindo dele, condio que no necessria para nossa
formulao.
A construo do fecho de Kleene adiciona ciclos se consideramos usar o autmato ciclo
da parte (d) da Figura 3.11. Esses ciclos podem ser adicionados no longo da construo
e terminar em qualquer estado do -NFA nal. No passo de induo, apenas os estados
iniciais e nais dos -NFAs da hiptese esto envolvidos na adio de transies vazias,
ento necessrio saber se esses estados possuem ciclos para poder fundi-los ou evitar
adicionar transies vazias. Como a operao do fecho de Kleene a nica construo
que adiciona ciclos, a cada vez que essa construo for usada podemos marcar o estado
que ganhou o ciclo.
Ma
qa fa qa fa q0 qa fa
Ma Ma Ma
qa
(i) (ii) (iii) (iv)
Figura 3.12: Padres para o fecho de Kleene quando Ma no um autmato ciclo (cons-
truo melhorada).
a (q, x) no inclui {fa } e em (ii) quando a (q, x) inclui {fa }. Em (iii) e (iv) so adici-
onadas as transies do estado qa , como a unio das transies dos estados qa e fa de
Ma . Nesta construo, o nmero de estados decresce em 1 e o nmero de transies se
mantm.
Como qa e fa no possuem ciclos em Ma ento o estado qa = fa em M no possui ciclo.
Logo, qualquer sequncia de transies que saindo de qa alcana novamente qa consome
necessariamente uma cadeia de L(Ma ). Todo ciclo em qa de M consome necessariamente
uma cadeia de L(Ma ). Note que, se Ma no representa a L() ou L(), ento qa de M
possui pelo menos um ciclo.
Em M, qualquer sequncia de transies que partindo de qa e consumindo uma cadeia
x alcana qa consiste de nenhuma transio se x = ou algum nmero (pode ser zero) de
ciclos em qa , seguido por um ciclo em qa = fa . Logo, existe uma sequncia de transies
que partindo de qa e consumindo uma cadeia x alcana qa se e somente se x = x1 x2 ...xj
para todo j 0 (j = 0 quando x = ) tal que cada xi L(Ma ). Ento L(M) = L(Ma )
como desejado.
M = (Qa , a , , qa , {qa })
M = (Qa , a , , fa , {fa })
CAPTULO 3. CONSTRUO DO AUTMATO 61
ciclos em q0 , seguido por um ciclo em q0 . Logo, existe uma sequncia de transies que
partindo de q0 e consumindo uma cadeia x alcana q0 se e somente se x = x1 x2 ...xj para
todo j 0 (j = 0 quando x = ) tal que cada xi L(Ma ). Ento L(M) = L(Ma ) como
desejado.
M = Ma
(a) (b)
Ma Ma
(i) qb fb
Mb Mb
ciclo ciclo
qa Ma Ma
fa
(ii)
qb Mb
fb
Mb
qa Ma
fa
Ma
(iii)
qb Mb
fb
Mb
ciclo ciclo
ciclo ciclo
qa Ma Ma
fa
(iv) q0 f0
qb Mb Mb
fb
ciclo ciclo
(ii)(a) qi = qb , ou continua com uma transio vazia at qa seguida por alguma sequncia
de transies em Ma (inclui os ciclos em qa ), ou continua por alguma sequncia de
transies em Mb .
(iv)(a) qi = q0 , ou continua com uma transio vazia at qa seguida por alguma sequncia
de transies em Ma (incluindo os ciclos em qa ), ou continua por uma transio
vazia at qb seguida por alguma sequncia de transies em Mb (inclui os ciclos em
qb ).
Toda sequncia de transies nos casos anteriores avana por uma sequncia de tran-
sies em Ma ou em Mb at alcanar o seu correspondente estado nal fa ou fb . Em
CAPTULO 3. CONSTRUO DO AUTMATO 64
ciclo
Ma
fa
qb f0
fb
Mb
ciclo
qa fa fb qa fa qb fb
Ma Mb Ma Mb
(i) (ii)
Caso (i)
Segundo as construes da Figura 3.15, construmos o -NFA:
(q, x) = a (q, x), para q Qa \ {fa } e x a {} (i)
(fa , x) = a (fa , x) b (qb , x), para x a b {} e qb
/ b (qb , x) (ii)
(fa , x)
= a (fa , x) (b (qb , x) \ {qb }) {fa },
para x a b {} e qb b (qb , x) (iii)
(q, x) = b (q, x), para q Qb \ {qb } e x b {} e qb / b (q, x) (iv)
(q, x) = (b (q, x) \ {qb }) {fa },
para q Qb \ {qb } e x b {} e qb b (q, x) (v)
Caso (ii)
Corresponde a construo clssica da alternncia do Teorema 3.1.1.
qa fa
Ma
qa fa qa fa qa fa qa fa Ma
Ma Ma Ma Ma
qa
f0 q0 q0 f0
(i) (ii) (iii) (iv) (v)
C C
A A
A A
(a) (b) (c) (d)
Figura 3.18: (a) (c), exemplos de ciclo de -moves com 2 estados. (b) (d), simplicao
dos casos (a) e (b).
Exemplos do caso (2) para fundir 2 estados so mostrados na Figura 3.19. Os casos
so produzidos ao aplicar o fecho de Kleene ao autmato M. O autmato M da linha
(i) corresponde expresso regular (T|A*). O autmato M da linha (ii) corresponde
expresso regular (T|A*|C*|G*). O autmato M da linha (iii) corresponde expresso
regular ((ATT*)*|T|(AGG*)*). Na terceira coluna so mostrados os -NFAs resultantes
aps fundir os estados que formam um ciclo de -moves.
M M M simplicado
T A T
q0 T q1 A
(i) A q0 q1
q0
q2
T A
A G
q2
q2 C
q0 T C T
(ii) C q1
q0 q3 A
q3
G
G q0
q1
q4
A q1 T T T
q2 A q1 T T q1 T
q0 T q0 q2 T A q2
(iii) q3 T q4 q0 G
q3 G
A q6 G q4
q7 A q6 G G q4 q5 A
q5 q3 G
Figura 3.19: Exemplos para fundir estados no -NFA, caso de ciclos de -moves com 2
estados.
(iii) terceira coluna da Figura 3.19 e possui apenas 5 estados e 9 transies das quais s
2 so -moves.
T
A T
T
G
G
A
A A C
C T
q0 q0 q1
q2 q1 q2
q3
(a) (b)
C
A A q4
T T q3
q1 q2 G
A q5 T A
A q9 q8
T
q0 q6 q7
q10 T
(c)
Figura 3.21: (a) Ciclo de -moves com 3 estados. (b) Ciclo de -moves com 4 estados. (c)
Ciclo de -moves com 5 estados.
Implementao
Detalhes de implementao podem ser revisados no Apndice B.5.
n smbolos do alfabeto,
n| smbolos de alternncia,
n smbolos do Fecho de Kleene,
n( smbolos de parnteses,
n+ smbolos do operador + , e
n? smbolos do operador ?.
+2 +4 -2 +0 +2 +4 n|
+0 +1 -1 +0 +0 +1 nC
+2 +4 -1 +0 +1 +2 n
+2 +3 +0 +1 +0 +1 n+
+2 +3 +0 +0 +2 +3 n?
Como, 0 nC n , ento:
2n 2n| nC 2n E
n 2n| 2n E
n + n+ T n + 4n| + nC + 2n + n+ + n?
De 0 nC n , substituindo nC = n para o pior caso:
n + n+ T 2n + 4n| + 2n + n+ + n?
Comparativamente temos que:
A Tabela 3.2 mostra uma comparao numrica dos -free NFA obtidos para algumas
expresses regulares. Pode-se observar que em todos os casos os -free NFA construdos
com base nos padres de Thompson melhorados so menores. No caso da expresso
regular R = (A|T)(A|T|C|G)?(A|T|C|G)?CG o nmero de transies melhora de 858
para 22, a economia em transies de 39 vezes. Para os casos considerados, o ganho
em nmero de estados e transies superior metade. Para o caso da expresso regular
(A|T)(A|T|C|G)?(A|T|C|G)?CG a reduo de -moves caiu de 38 para 2 e em alguns
casos a construo melhorada constri um -free NFA diretamente, fato que ser usado
ao construir os -NFAs equivalentes s sequncias de PROSITE mais frente.
O -NFA para R = (A|T)(A|T|C|G)?(A|T|C|G)?CG mostrado na Figura 3.22. Na
parte (a) a construo clssica e na parte (b) a construo melhorada.
A A
T T
A A
C C A T T
C C C G
G
G
A G
T G
C G
T (a) (b)
3.3 PROSITE
As protenas so polmeros lineares de aminocidos chamados tambm polipeptdeos, co-
nectados por ligaes amida. Na Figura 3.23 mostrada uma sequncia polipeptdica,
onde os blocos cinzas representam os resduos que caraterizam o tipo de aminocido, nas
extremidades as terminaes N-terminal e C-terminal [28].
resduo resduo
carboxyl terminus
...
amino terminus C-terminal
N-terminal
resduo
resduo
Na biologia computacional, uma protena pode ser representada como uma sequncia
de smbolos, onde cada um desses smbolos representa um aminocido. Uma medida
da similaridade entre duas sequncias pode ser obtida pela pontuao do alinhamento
timo entre elas. A insero, remoo ou substituio de um smbolo numa sequncia
chamada de operao de edio. A distncia entre duas sequncias uma medida do
menor nmero de operaes de edio que devem ser feitas sobre uma sequncia para
obter a outra. Quanto mais similares so duas sequncias a distncia entre elas menor.
Diversos bancos de dados com informaes de protenas esto disponveis e permitem
caraterizar uma protena desconhecida em funo da sua similaridade ou distncia com
CAPTULO 3. CONSTRUO DO AUTMATO 72
protenas conhecidas.
O PROSITE uma longa coleo de motivos biologicamente signicativos dedicada
identicao de famlias e domnios de protenas, criada em 1988 por Amos Bairoch [21].
Esses motivos so descritos como padres (patterns) ou pers (profiles), os quais foram
derivados de alinhamentos mltiplos de sequncias. Padres descrevem regies evolucio-
nariamente conservadas e importantes na funo biolgica de uma protena. Muitas vezes
protenas desconhecidas possuem pontuaes muito baixas ao serem alinhadas com pro-
tenas conhecidas e o conhecimento dos padres traz uma grande vantagem para detectar
similaridade nesses casos. Padres tipicamente tm em torno de 10 a 30 aminocidos de
comprimento. Expresses regulares permitem representar esses padres. Pers descrevem
domnios funcionais mal conservados de protenas onde incompatibilidades em algumas
posies so permitidas, sempre e quando a similaridade restante seja alta. Pers so ma-
trizes que fornecem pesos numricos para cada combinao possvel ou incompatibilidade
em cada posio ao longo do domnio [5, 21].
Neste trabalho estamos interessados em estudar a representao de padres PROSITE
com expresses regulares e com NFAs para serem usados no alinhamento restrito por
expresso regular denido por Arslan [3].
2. Cada aminocido representado pela sua letra da nomenclatura IUPAC. Uma letra
pode representar um elemento simples se naquela posio o aminocido o nico
aceitvel. Uma letra pode ser usada para compor uma lista de aminocidos aceitveis
em uma posio. Na Tabela 3.3 mostrada a lista dos 20 aminocidos conhecidos
com a letra da nomenclatura IUPAC que o representa.
P-x(2)-G-E-S-G(2)-[AS]-x(0,200) no vlido,
P-x(2)-G-E-S-G(2)-[AS]-x(0,200)-> vlido.
Proposio 3.3.1 Um padro PROSITE pode ser representado por uma expresso regu-
lar.
CAPTULO 3. CONSTRUO DO AUTMATO 74
prova:
Considerando que o alfabeto = {todas as letras da nomenclatura IUPAC que repre-
sentam um aminocido} {<,>}, construmos s expresses regulares equivalentes aos
elementos segundo:
8. Para x(k, l), como x(k, l) x(k) seguido de x(0, lk), construmos a expresso regular
Rkx (Rx ?)lk . Como Rx ? representa zero ou uma ocorrncia de Rx a concatenao
de l k vezes Rx representa no mnimo zero e no mximo l k ocorrncias de Rx .
Ento (Rx ?)lk representa x(0, l k).
(a) (b)
(i) q0 V q1 q0 V q1 q2 V q3 q4 V q5 q6 V q7 q8 V q9
(ii) q0
V q1 q0 V q1 V q2 V q3 V q4 V q5
Figura 3.24: Coluna (a) -NFAs equivalentes a V, coluna (b) -NFAs equivalentes a V(5).
Linha (i) -NFAs produzidos pela construo clssica, linha (ii) construo melhorada.
sem -moves. E o -NFA equivalente a x(4) possui 5 estados e 80 transies sem -moves.
Observe que a construo melhorada gera diretamente um -free NFA.
A A A A A
C C C C C
D D D D D
E E E E E
F F F F F
G G G G G
H H H H H
I I I I I
K K K K K
q0 L q1 q0 L q1 L q2 L q3 L q4
M M M M M
N N N N N
P P P P P
Q Q Q Q Q
R R R R R
S S S S S
T T T T T
V V V V V
W W W W W
Y Y Y Y Y
(a) (b)
Figura 3.26: -NFAs produzidos pela construo melhorada de Thompson. (a) equivalente
a x, (b) equivalente a x(4).
R1 = x?x?x?x?
x? representa zero ou uma ocorrncia de x.
Como a concatenao de 4 vezes x? representa no mnimo zero e no mximo quatro
ocorrncias de x.
Ento R1 representa x(0, 4).
R2 = (xxxx|xxx|xx|x)?
Como R2 representa zero, uma, duas, trs ou quatro ocorrncias de x,
ento R2 representa x(0, 4).
R3 = (((xx|x)x|x)x|x)?
Fatorando R2 pode-se conseguir R3 .
R2 = (xxxx|xxx|xx|x)? = ((xxxx|xxx|xx)|x)? = ((xxx|xx|x)x|x)?, logo
R2 = (((xxx|xx)|x)x|x)? = (((xx|x)x|x)x|x)? = R3 .
Ento R3 representa x(0, 4).
R4 = (x|x(x|x(x|xx)))?
Fatorando R2 pela esquerda de forma similar a R3 pode-se conseguir R4 .
R2 = (xxxx|xxx|xx|x)? = (x|(xxxx|xxx|xx))? = (x|x(xxx|xx|x))?, logo
CAPTULO 3. CONSTRUO DO AUTMATO 78
R2 = (x|x(x|(xxx|xx)))? = (x|x(x|x(xx|x)))? = R4 .
Ento R4 representa x(0, 4).
A
C
D
E
F
G
H
I
K
L
q0 q1 q0 q1
M
N
P (b)
Q
R
S
T
V
W
Y
(a)
R3
R4
Tabela 3.5: Nmero de estados e transies dos -free NFAs construdos para diversos
valores de l k.
-free NFA -free NFA -free NFA -free NFA
da expresso regular da expresso regular da expresso regular da expresso regular
lk tipo R1 tipo R2 tipo R3 tipo R4
estados transies estados transies estados transies estados transies
4 5 10|| 8 10|| 5 7|| 5 7||
8 9 36|| 30 38|| 9 15|| 9 15||
12 13 78|| 68 78|| 13 23|| 13 23||
16 17 136|| 122 136|| 17 31|| 17 31||
20 21 210|| 192 210|| 21 39|| 21 39||
24 25 300|| 278 300|| 25 47|| 25 47||
s
do
|
ta
150 150 150
/|
es
es
|
s/
e
si
100
an
100 100
si
tr
an
tr
50 es/||
transi
50 50
estados
estados
5 10 15 20 5 10 15 20 5 10 15 20
lk lk lk
(a) (b) (c)
C
y-x(0, 1)
C
C
y-x(0, 2) C
C
y-x(0, 3)
C
y-x(0, 4) C
A Figura 3.34 mostra a construo do -free NFA para 5 padres PROSITE. Os aut-
matos obtidos so basicamente uma sequncia linear de estados, com regies de aparncia
mais densa, produzidos pela presena de elementos da forma x(0,k). Nos -free NFAs da
Figura 3.34, as transies anotadas pelo smbolo representam || transies, uma para
cada smbolo do alfabeto.
Implementao
Detalhes de implementao podem ser revisados no Apndice B.6.
(
F
I
F K
E
I G L I I F
V P M D L L M
I W S V E M
V N Y K
V P Y V Y N V
[VI]-P-[FYWVI]-x-[GPSV]-x(2)-[LIVMFYK]-x-[DNE]-[LIVM]-x(13,35)-[IVL]-N-[FYME]-x-K
Figura 3.33: Expresso regular e -free NFA equivalente ao padro PROSITE PS00720.
P
que |P[i]| ni e m 1 ni = n, ento |P| n. Um padro PROSITE que representa no
mximo n elementos simples pode ser representado por uma expresso regular equivalente
com O(n||) smbolos, dado que um elemento simples pode ser escolhido de uma lista de
estados aceitveis que no mximo contm || aminocidos (no caso do elemento x).
Na Tabela 3.4 so mostrados os nmeros de estados dos -free NFAs obtidos para
os distintos elementos, a tabela no considera o elemento x(0, l k). Em todos esses
casos, o nmero de estados obtidos para o termo P[i] ni + 1 estados. Para o elemento
y-x(0, l k) temos que |y-x(0, l k)| l k +1. Na Figura 3.31 mostrado que o nmero
de estados do -free NFA equivalente a y-x(0, l k) (l k + 1) + 1. Considerando as
m 1 concatenaes dos m elementos de P e que o algoritmo melhorado de Thompson
funde um estado ao aplicar cada concatenao, ento o nmero de estados do -free NFA
P Pm
equivalente a P m 1 (ni + 1) (m 1) = 1 ni 1 = n + 1 = O(n).
CAPTULO 3. CONSTRUO DO AUTMATO 84
PS00315
EG
KR KR KR KR
EG
S S S S DS DE DE EGV
S(4)-[SD]-[DE]-x-[DE]-[GVE]-x(1,7)-[GE]-x(0,2)-[KR](4)
PS00396
I LSTV ST Y R ST DENQS
EQ L Y DELMQST
[EQ]-x-L-Y-[DEQSTLM]-x(3,12)-[LIVST]-[ST]-Y-x-R-[ST]-[DEQSN]
PS00720
N
P
ILV EFMY K
IV FIVWY GPSV FIKLMVY DEN ILMV
[VI]-P-[FYWVI]-x-[GPSV]-x(2)-[LIVMFYK]-x-[DNE]-[LIVM]-x(13,35)-[IVL]-N-[FYME]-x-K
PS00845
LY
DG
DFI LMVY G HN W ACRSTV
CF
DG
DG AFWY I L MV KN HN W G ACRSTV
DFI LMVY
AFWY G ILMV
DG
[GD]-x(0,10)-[FYWA]-x(0,1)-G-[LIVM]-x(0,2)-[LIVMFYD]-x(0,7)-G-[KN]-[NHW]-x(0,1)-G-[STARCV]-x(0,2)-[GD]-x(0,2)-[LY]-[FC]
PS01186
C
C C GP F WY
C-x-C-x(2)-[GP]-[FYW]-x(4,8)-C
Figura 3.34: Padres PROSITE e seu -free NFA equivalente, obtidos pela construo
de Thompson melhorada sobre a expresso regular proposta, usando as construes da
Figura 3.31.
Tabela 3.7: Detalhe em nmeros dos 20 padres PROSITE mais longos de um total
de 1294 processados. A construo melhorada de Thompson foi usada para construir
os -free NFAs equivalentes, em seguida usando os algoritmos clssicos so construdos os
DFAs equivalentes e DFAs mnimos equivalentes a esses -free NFAs. As colunas mostram
transies (T), estados (E), e o tempo usado pelo processo em milissegundos (ms).
PROSITE -free NFA DFA DFA mnimo
P |P| |R| E T (ms) E T (ms) E T (ms)
PS01254 121 4745 122 2312 0 130,7 429 8296 555,2 406 7836 93,9
PS01351 113 4973 114 2408 0 135,8 722 14047 1849,3 722 14047 369,3
PS00495 85 2829 86 1378 0 40,8 90 1388 9,6 90 1388 2,5
PS01352 84 3456 85 1669 0 64,2 2055 40726 9584,2 1574 31106 3294,7
PS01359 77 4825 78 2288 0 132,4 NC NC NC NC NC NC
PS01282 70 2698 71 1304 0 37,8 636 12241 392,3 468 8881 283,4
PS01353 63 2903 64 1396 0 40,7 1781 35250 5084,4 783 15290 3768,4
PS00633 63 2637 64 1266 0 43,8 13235 264227 442278,5 4705 93627 292891,2
PS01208 61 3325 62 1587 0 82,4 NC NC NC NC NC NC
PS00077 57 2159 58 1049 0 24,3 64 1052 3,7 64 1052 1,4
PS00983 56 2850 57 1363 0 37,5 591 11568 346,3 394 7628 184,2
PS00078 55 2323 56 1126 0 25,9 459 8937 345,5 459 8937 136,2
PS00350 55 1429 56 690 0 11,5 56 690 2,5 56 690 0,8
PS00903 55 2905 56 1385 0 43,4 3469 68914 20794,7 2580 51134 11346,0
PS00479 54 2372 55 1142 0 29,9 735 14377 656,9 651 12697 325,4
PS00223 53 1847 54 898 0 18,3 54 898 2,6 54 898 1,0
PS01360 52 2538 53 1214 0 31,4 6642 132367 55246,0 4356 86647 35976,2
PS00720 51 2683 52 1275 0 39,9 172 3140 34,4 172 3140 13,8
PS60022 51 2881 52 1364 0 38,9 1277 25121 1667,2 502 9621 1510,6
PS00351 50 1344 51 653 0 9,8 51 653 1,9 51 653 0,6
Tabela 3.8: Detalhes em nmeros dos 20 padres PROSITE com maior nmero de tran-
sies no seu -free NFA equivalente. As colunas mostram transies (T), estados (E), e
o tempo usado pelo processo para construir o autmato em milissegundos (ms).
PROSITE -free NFA DFA DFA mnimo
P |P| |R| E T (ms) E T (ms) E T (ms)
PS01351 113 4973 114 2408 0 135,8 722 14047 1849,3 722 14047 369,3
PS01254 121 4745 122 2312 0 130,7 429 8296 555,2 406 7836 93,9
PS01359 77 4825 78 2288 0 132,4 NC NC NC NC NC NC
PS01352 84 3456 85 1669 0 64,2 2055 40726 9584,2 1574 31106 3294,7
PS01208 61 3325 62 1587 0 82,4 NC NC NC NC NC NC
PS01353 63 2903 64 1396 0 40,7 1781 35250 5084,4 783 15290 3768,4
PS00903 55 2905 56 1385 0 43,4 3469 68914 20794,7 2580 51134 11346,0
PS00495 85 2829 86 1378 0 40,8 90 1388 9,6 90 1388 2,5
PS60022 51 2881 52 1364 0 38,9 1277 25121 1667,2 502 9621 1510,6
PS00983 56 2850 57 1363 0 37,5 591 11568 346,3 394 7628 184,2
PS01282 70 2698 71 1304 0 37,8 636 12241 392,3 468 8881 283,4
PS00720 51 2683 52 1275 0 39,9 172 3140 34,4 172 3140 13,8
PS00633 63 2637 64 1266 0 43,8 13235 264227 442278,5 4705 93627 292891,2
PS01360 52 2538 53 1214 0 31,4 6642 132367 55246,0 4356 86647 35976,2
PS00479 54 2372 55 1142 0 29,9 735 14377 656,9 651 12697 325,4
PS00078 55 2323 56 1126 0 25,9 459 8937 345,5 459 8937 136,2
PS60000 50 2340 51 1120 0 28,7 1876 37046 3078,3 1876 37046 2360,2
PS00652 48 2324 49 1113 0 40,2 10845 216609 145390,4 1555 30809 274768,2
PS00077 57 2159 58 1049 0 24,3 64 1052 3,7 64 1052 1,4
PS00472 48 1922 49 923 0 17,7 330 6208 86,9 240 4408 58,0
CAPTULO 3. CONSTRUO DO AUTMATO 87
Tabela 3.9: Detalhes em nmeros dos 20 padres PROSITE com maior nmero de transi-
es no seu DFA equivalente. As colunas mostram transies (T), estados (E), e o tempo
usado pelo processo para construir o autmato em milissegundos (ms).
PROSITE -free NFA DFA DFA mnimo
P |P| |R| E T (ms) E T (ms) E T (ms)
PS01208 61 3325 62 1587 0 82,4 NC NC NC NC NC NC
PS01359 77 4825 78 2288 0 132,4 NC NC NC NC NC NC
PS00633 63 2637 64 1266 0 43,8 13235 264227 442278,5 4705 93627 292891,2
PS00652 48 2324 49 1113 0 40,2 10845 216609 145390,4 1555 30809 274768,2
PS01360 52 2538 53 1214 0 31,4 6642 132367 55246,0 4356 86647 35976,2
PS00903 55 2905 56 1385 0 43,4 3469 68914 20794,7 2580 51134 11346,0
PS01352 84 3456 85 1669 0 64,2 2055 40726 9584,2 1574 31106 3294,7
PS60000 50 2340 51 1120 0 28,7 1876 37046 3078,3 1876 37046 2360,2
PS01353 63 2903 64 1396 0 40,7 1781 35250 5084,4 783 15290 3768,4
PS01187 37 1849 38 880 0 17,2 1702 33686 2254,5 779 15226 3524,2
PS60022 51 2881 52 1364 0 38,9 1277 25121 1667,2 502 9621 1510,6
PS00041 46 1702 47 816 0 14,9 891 17230 811,0 853 16470 682,9
PS00479 54 2372 55 1142 0 29,9 735 14377 656,9 651 12697 325,4
PS01351 113 4973 114 2408 0 135,8 722 14047 1849,3 722 14047 369,3
PS00463 37 1589 38 764 0 12,2 650 12786 444,3 300 5786 245,3
PS01177 38 1574 39 756 0 12,5 642 12577 420,8 422 8177 222,0
PS01282 70 2698 71 1304 0 37,8 636 12241 392,3 468 8881 283,4
PS00983 56 2850 57 1363 0 37,5 591 11568 346,3 394 7628 184,2
PS00478 40 1612 41 779 0 12,7 470 9047 231,0 470 9047 165,0
PS00078 55 2323 56 1126 0 25,9 459 8937 345,5 459 8937 136,2
Tabela 3.10: Detalhes em nmeros dos 20 padres PROSITE com maior nmero de
transies no seu DFA mnimo equivalente. As colunas mostram transies (T), estados
(E), e o tempo usado pelo processo para construir o autmato em milissegundos (ms).
PROSITE -free NFA DFA DFA mnimo
P |P| |R| E T (ms) E T (ms) E T (ms)
PS00633 63 2637 64 1266 0 43,8 13235 264227 442278,5 4705 93627 292891,2
PS01360 52 2538 53 1214 0 31,4 6642 132367 55246,0 4356 86647 35976,2
PS00903 55 2905 56 1385 0 43,4 3469 68914 20794,7 2580 51134 11346,0
PS60000 50 2340 51 1120 0 28,7 1876 37046 3078,3 1876 37046 2360,2
PS01352 84 3456 85 1669 0 64,2 2055 40726 9584,2 1574 31106 3294,7
PS00652 48 2324 49 1113 0 40,2 10845 216609 145390,4 1555 30809 274768,2
PS00041 46 1702 47 816 0 14,9 891 17230 811,0 853 16470 682,9
PS01353 63 2903 64 1396 0 40,7 1781 35250 5084,4 783 15290 3768,4
PS01187 37 1849 38 880 0 17,2 1702 33686 2254,5 779 15226 3524,2
PS01351 113 4973 114 2408 0 135,8 722 14047 1849,3 722 14047 369,3
PS00479 54 2372 55 1142 0 29,9 735 14377 656,9 651 12697 325,4
PS60022 51 2881 52 1364 0 38,9 1277 25121 1667,2 502 9621 1510,6
PS00478 40 1612 41 779 0 12,7 470 9047 231,0 470 9047 165,0
PS00078 55 2323 56 1126 0 25,9 459 8937 345,5 459 8937 136,2
PS01282 70 2698 71 1304 0 37,8 636 12241 392,3 468 8881 283,4
PS01177 38 1574 39 756 0 12,5 642 12577 420,8 422 8177 222,0
PS01254 121 4745 122 2312 0 130,7 429 8296 555,2 406 7836 93,9
PS00983 56 2850 57 1363 0 37,5 591 11568 346,3 394 7628 184,2
PS00463 37 1589 38 764 0 12,2 650 12786 444,3 300 5786 245,3
PS00759 41 1473 42 707 0 13,2 316 5674 97,7 315 5654 70,2
Captulo 4
Alinhamento restrito
Assim, para a sequncia s = ab-c-ab, temos que (s ) = abcab. Note que, para as
sequncias s e t de A(s, t), s = (s ) e t = (t ).
88
CAPTULO 4. ALINHAMENTO RESTRITO 89
Definio 4.2 (A restrito por expresso regular: AR). Sejam s e t duas sequncias
sobre o alfabeto , : ( , ) R uma funo de pontuao de colunas e R uma
expresso regular. Definimos AR (s, t) como um alinhamento A = (s , t ) com pontuao
mxima, tal que existem um i e um j para os quais (s [i, j]) L(R) e (t [i, j]) L(R).
HCHxxxHxxx(A|G)(L|M)
A -LH H C H A G L H HH H A L G- K ---M - P
(a)
A GL H H - H - -- H HC H A L GH K R PGM KP
HCHxxxHxxx(A|G)(L|M)
A1
A- L-- - H H CH AG L- H HH H A L GK M P
(b)
AG LHH H H H CH A- LG H KR P G M - K- P
HCHxxxHxxx(A|G)(L|M)
restrio
HCH(A|C|D|E|F|G|H|I|K|L|M|N|P|Q|R|S|T|V|W|Y)(A|C|D|E|F|G|H|I|K|L|M|N|P|Q|R|S|T|V|W|Y)(A
|C|D|E|F|G|H|I|K|L|M|N|P|Q|R|S|T|V|W|Y)H(A|C|D|E|F|G|H|I|K|L|M|N|P|Q|R|S|T|V|W|Y)(A|C|D
|E|F|G|H|I|K|L|M|N|P|Q|R|S|T|V|W|Y)(A|C|D|E|F|G|H|I|K|L|M|N|P|Q|R|S|T|V|W|Y)(A|G)(L|M)
(a)
A A A A A A
C C C C C C
D D D D D D
E E E E E E
F F F F F F
G G G G G G
H H H H H H
I I I I I I
K K K K K K A L
H C H L L L H L L L
q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12
M M M M M M
N N N N N N G M
P P P P P P
Q Q Q Q Q Q
R R R R R R
S S S S S S
T T T T T T
V V V V V V
W W W W W W
Y Y Y Y Y Y
(b)
Figura 4.2: (a) Expresso regular expandida equivalente a R = HCHxxxHxxx(A|G)(L|M).
(b) NFA equivalente a R obtido pela construo melhorada de Thompson.
P = (Q Q, ( ) \ {(-,-)}, np , (q0 , q0 ), F F )
(i) adiciona transies que consomem o par (smbolo, -), para um smbolo em s. (ii)
adiciona transies que consomem o par (-, smbolo), para um smbolo em t. (iii) adiciona
transies que consomem o par (smbolo, smbolo), para um smbolo em cada sequncia.
Se consideramos que (p,-) = {p}, ento np pode ser redenida de maneira mais compacta
como np ((p, q), (a, b)) = (p, a) (q, b). O NFA P chamado do NFA produto de N ou
simplesmente do NFA produto se N estiver claro pelo contexto. O NFA N usado para
construir P chamado do NFA base de P ou simplesmente do NFA base se P estiver claro
pelo contexto.
Considerando que ne e nt so o nmero de estados e transies do NFA N, ento
nmero de estados do NFA P n2e = |Q|2 .
Considerando que qi Q um estado do NFA N, as transies que saem do estado
qi podem ser representadas pelo conjunto de estados alcanados i = {(qi , a) | a }.
P
Assim nt = |Q|1i=0 |i |.
No NFA P as transies que saem do estado (qi , qj ) podem ser representadas pelo
conjunto de estados alcanados i,j = { np ((qi , qj ), (a, b)) | (a, b) ( ) \ {(-,-)}}.
Assim o nmero total de transies em P pode ser calculado como a soma de todas
P P|Q|1
as transies saindo de cada estado em P e est representado por |Q|1 i=0 j=0 |i,j |.
Usando a denio de , i,j = {(qi , a) (qj , b) | (a, b) ( ) \ {(-,-)}}
np
os conjuntos de estados produzidos pelo avano diagonal, pelo avano horizontal e pelo
avano vertical respectivamente. Assim |i,j | = |i,j D H
| + |i,j V
| + |i,j | e o nmero total de
transies em P :
|Q|1 |Q|1 |Q|1 |Q|1 |Q|1 |Q|1 |Q|1 |Q|1
X X X X X X X X
D H V
|i,j | = |i,j | + |i,j | + |i,j |
i=0 j=0 i=0 j=0 i=0 j=0 i=0 j=0
|Q|1 |Q|1
X X
= |i | |j |
i=0 j=0
= n2t
= ne nt
= nt ne
|Q|1 |Q|1
X X
|i,j | = n2t + 2nt ne (4.1)
i=0 j=0
Para facilitar a visualizao na Figura 4.3 um estado (qi , qj ) de P est anotado como
qi qj . As transies na linha diagonal superior que partem do estado q0 q0 at o estado
q0 q12 , correspondem a consumir colunas do tipo (-,smbolo). Para maior simplicidade
nas anotaes das transies usado o smbolo para representar qualquer smbolo do
alfabeto e representar de maneira compacta um conjunto de transies, assim por exemplo
(,C) equivalente a {(A,C), (C,C), (D,C), ..., (Y,C)}.
(-,L) q0 q12
(-,M)
(H,L) q1 q12
(-,A) q0 q11 (H,M)
(-,G)
(H,-) q1 q0
(C,-)
Na Figura 4.3 transies que consomem (smbolo, smbolo) esto desenhadas hori-
zontalmente, transies desenhadas diagonalmente subindo da esquerda para a direita
correspondem a consumir (-, smbolo) e transies desenhadas diagonalmente descendo
da esquerda para a direita correspondem a consumir (smbolo, -). Na gura esto anota-
das as transies da diagonal superior desde q0 q0 at o q0 q12 , duas transies da diagonal
inferior desde q0 q0 at q1 q0 , e transies horizontais. As anotaes das diagonais interiores
no anotadas so equivalentes s diagonais superior e inferior da mesma linha diagonal.
Assim, as anotaes das transies q1 q6 at q1 q7 , q2 q6 at q2 q7 , q3 q6 at q3 q7 , q4 q6 at q4 q7
so equivalentes anotao (-,H) mostrada na transio q0 q6 at q0 q7 . Da mesma forma
as anotaes das transies q0 q1 at q1 q1 , q0 q3 at q1 q3 , q0 q4 at q1 q4 , q0 q5 at q1 q5 , q0 q6 at
q1 q6 , q0 q7 at q1 q7 , q0 q8 at q1 q8 , q0 q9 at q1 q9 so equivalentes anotao (H,-) mostrada
na transio q0 q0 at q1 q0 .
CAPTULO 4. ALINHAMENTO RESTRITO 94
A computao em P comea com o nico estado (q0 , q0 ) como estado ativo, depois em
cada passo de computao algum smbolo consumido e um novo conjunto de estados
CAPTULO 4. ALINHAMENTO RESTRITO 95
ativos gerado.
Seja o estado (qx , qy ) um estado ativo alcanado num passo de computao em P, no
qual o smbolo (a, b) ( ) \ {(-,-)} ser consumido, aps consumir o smbolo (a, b)
sero alcanados os novos estados ativos produzidos por (qx , a) (qy , b) (lembrando que
(qx ,-) = qx e (qy ,-) = qy ). A parte (qx , a) de (qx , a) (qy , b) na computao em P
corresponde a um passo da computao em N no qual o estado qx um estado ativo e
(qx , a) o conjunto de estados aps consumir o smbolo a partindo de qx . A parte (qy , b)
de (qx , a) (qy , b) na computao em P corresponde a um passo da computao em N
no qual o estado qy um estado ativo e (qy , b) o conjunto de estados aps consumir o
smbolo b partindo de qy . Logo, cada transio usada num passo da computao em P
construda por transies em N correspondentes a algum passo de alguma computao
em N. Dessa maneira a computao em P est relacionada computao em N. No
nal da computao em P, uma sequncia de transies que alcana um estado ativo
formada por duas sequncias de transies em N, uma que consome s e outra que consome
t. Ambas sequncias de transies em N correspondem a uma computao em N, uma
sobre s e outra sobre t respectivamente.
Na computao em P, como smbolos (a, b) ( ) \ {(-,-)}, so consumidos,
ento a linguagem L(P) formada por uma sequncia de smbolos dos tipos (,-), (-, ) ou
(, ), com , . A sequncia desses smbolos consumidos formam um alinhamento.
As seguintes armaes a respeito do alinhamento so equivalentes:
partindo de (0, 0) alcana (i, j) com a pontuao M(i, j). Ao nal da programao din-
mica o valor do score(s, t) preenchido na posio M(n, m). Usando o valor armazenado
em M(n, m) recuperado pelo menos um alinhamento timo entre s e t.
Observe que o alinhamento recuperado aps a programao dinmica garante que a
pontuao desse alinhamento seja score(s, t). No entanto, qualquer sequncia de avanos
que partindo de (0, 0) alcana (m, n) representa um alinhamento mas no necessariamente
com pontuao mxima. Na matriz da Figura 4.4 esto marcadas duas sequncias de
avanos que alcanam a posio M(n, m), mas apenas a sequncia de avanos
1 tem a
pontuao score(s, t). Todo alinhamento entre s e t pode ser representado em M por
alguma sequncia de avanos. Todas essas sequncias de avanos representam o conjunto
completo de alinhamentos entre s e t. A programao dinmica pelo clculo de M(m, n)
escolhe indiretamente sequncias de avanos que permitiram alcanar o score(s, t).
t
H C H A LG H K R P GM
0 1 2 3 4 5 6 7 8 9 10 11 12
0
H1
2
1
C2 s HC H AG L -H HH HA L
H3 t HC H A- L G H KR PG M
A4
G5
1
2
L
s 67
H s - -HC--- -HAGLHHH HA L
H CHALGH KR-P--GM-- -
H8 t
H9
H 10
A 11
L 12
Computao em P sobre M
Na programao dinmica avanos diagonal, horizontal e vertical alcanam a posio
(i, j) aps consumir (s[i], t[j]),(-, t[j]) e (s[i],-) respectivamente. Cada um desses avanos
representa uma coluna de algum alinhamento entre s e t. Colunas de alinhamentos entre
s e t podem ser consumidos nos passos da computao em P.
Considerando que um avano da programao dinmica corresponde a um passo da
computao em P (que consome a coluna representada pelo avano) e que cada posio
M(i, j) est associada a um conjunto de estados ativos de P (produzidos pela computao
parcial em P), ento a programao dinmica em M pode ser totalmente acompanhada
pela computao em P, de tal forma que partindo do nico estado ativo (q0 , q0 ) na posio
M(0, 0) com pontuao M(0, 0)[q0 , q0 ] = 0, a programao dinmica pelos seus avanos
CAPTULO 4. ALINHAMENTO RESTRITO 97
gera novos estados ativos (com pontuaes mximas em cada estado ativo) em cada nova
posio de M. Chamamos de computao em P sobre M programao dinmica em M
acompanhada pela computao em P.
Se (qx , qy ) um estado ativo em M(i, j) armazenando a pontuao M(i, j)[qx , qy ], ento
(qx , qy ) representa pelo menos uma sequncia de avanos que partindo do estado ativo
(q0 , q0 ) em M(0, 0) alcana (qx , qy ) em M(i, j) com a pontuao M(i, j)[qx , qy ] (pontuao
mxima at esse estado) e essa sequncia de avanos um alinhamento entre s[1, i] e
t[1, j]. No podemos garantir que esse alinhamento seja timo pois possvel que a
posio M(i, j) tenha outros estados ativos com pontuao maior.
Para facilitar a computao em P sobre M, vamos considerar que cada posio M(i, j)
um vetor de nmeros de comprimento |Q Q|. O vetor M(i, j) permitir armazenar
as pontuaes mximas obtidas em cada estado ativo. Todo estado inativo ter uma
pontuao de . Na computao em P sobre M, podem acontecer os seguintes casos:
Pa = (Q Q, ( ) \ {(-,-)}, na , (q0 , q0 ), F F )
A linha (i) corresponde s transies que saem dos estados interiores de P (estado inicial
e nal no so considerandos nessa linha). A linha (ii) dene as transies dos estados
inicial e nal (ou nais) e adiciona uma auto-transio neles para todos os smbolos do
alfabeto de Pa .
Pa o NFA produto de Arslan.
A computao em Pa consome colunas de um alinhamento de forma similar ao NFA
P. Se numa computao em Pa algum estado nal alcanado ento o alinhamento A
consumido pertence a Pa e existe uma sequncia de colunas A1 = A[i]A[i + 1]...A[j] que
pertence a L(P).
A linguagem L(Pa ) denida pelo NFA produto de Arslan Pa a linguagem de todos
os alinhamentos A que cumprem as seguintes condies:
1. Cada sequncia usada no alinhamento possui pelo menos uma subsequncia que
pertence a L(N).
( , ) ( , )
(a) (b)
Figura 4.5: Representaes cannicas (sem anotaes) dos NFA: (a) NFA produto P, (b)
NFA produto de Arslan Pa , obtidos usando como base o NFA da Figura 4.2.
t
A G L H H H H H C H A L G H K R P G M K P
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
A 1
L 2 colunas A1
H 3
H 4 colunas A0
C 5
s H
6
A 7
G 8
L 9
H 10
H 11
H 12
H 13
A 14
L 15
G 16
K 17
M 18
P 19
colunas A2
A - L - - - H H CH A G L- H HH H A L G K M P
A G L H H H H H CH A - LG H KR P G M - K - P
colunas A0 colunas A1 colunas A2
O espao pode ser melhorado usando o algoritmo de espao linear de Hirschberg [16] na
programao dinmica, o que permite usar apenas o espao O(n2e min(m + n) + min(m0 +
n0 ) + min(m1 + n1 ) + min(m2 + n2 )) = O(n2e min(m + n)). Logo o espao usado
O(mn2e ). (4.3)
Nesta seo apresentamos os dois resultados obtidos para o alinhamento restrito por
expresso regular usando padres PROSITE (RECSA/PROSITE). Primeiro a soluo
direta usando os resultados da construo melhorada de Thompson estudada na Seo
3.2 e a construo das expresses regulares equivalentes para padres PROSITE estudadas
na Seo 3.3. Segundo a soluo melhorada usando um pr-processamento que envolve a
computao num NFA construdo a partir do NFA base, que permite limitar os estados
usados em cada avano da programao dinmica.
No entanto, o -free NFA construdo na Seo 3.3 possui apenas k + 1 estados e O(k||)
transies, obtido em tempo O(k||) (linear em relao ao comprimento da expresso
regular).
Sejam N o NFA compacto (com k + 1 estados e O(k||) transies produzido segundo
a Seo 3.3) equivalente ao padro PROSITE de k elementos simples, Pa o NFA produto
de Arslan construdo com base em N e as sequncias s, t com |s| = n, |t| = m e n > m.
Usando os resultados da programao dinmica acompanhada por Pa , um alinhamento
restrito por um padro PROSITE de k elementos simples pode ser encontrado no tempo
e o espao usado
O(mk 2 ). (4.5)
Chung et al. [10] apresentaram um algoritmo para encontrar o alinhamento restrito,
o qual usa na programao dinmica o NFA Pa e o NFA N. O algoritmo proposto por
Chung et al. melhora o tempo de computao quando o NFA N usado no processo possui
nmero de transies quadrtico em relao ao nmero de estados. Como em nosso caso
o -free NFA possui k + 1 estados e O(k||) transies, o algoritmo de Chung et al. no
melhoraria o tempo de execuo. No entanto, o uso de uma tabela preprocessada T usada
por Chung et al. para representar a funo de N permite reduzir o tempo de execuo
apagando o fator || da expresso de complexidade. Assim, o tempo de computao de
CAPTULO 4. ALINHAMENTO RESTRITO 103
Construindo T
A tabela T permite armazenar o valor 1 ou 0 para todo par de estados q , q N e para
todo smbolo a . A tabela T armazenada numa matriz de 3 dimenses com tamanho
|ne | |ne | ||. Para todo par de estados q , q N e para todo smbolo a , denimos
T [q][q ][a] = 1 se q (q , a) e T [q][q ][a] = 0 caso contrrio. A construo de T pode ser
feita a partir do NFA N no tempo O(k 2||) [10].
O uso de T na programao dinmica permite limitar o nmero de transies visitadas
num avano. O ganho no tempo produzido dado que cada avano visita apenas aquelas
transies que correspondem ao smbolo consumido. Assim, das k 2 ||2 transies possveis
apenas k 2 transies sero visitadas.
EG
KR KR KR KR
EG
S S S S DS DE DE E GV
EG
KR KR KR KR
EG
S S S S DS DE DE E GV
Figura 4.8: -free NFA equivalentes a PS00315, usando a construo melhorada sobre
expressoes regulares do tipo (a) R3 e (b) R4 , conforme a Tabela 3.6.
O(|V (i 1, j 1)|). Da mesma maneira pode ser analisado para os avanos horizontal e
vertical com O(|V (i 1, j)|) e O(|V (i, j 1)|) transies usadas respectivamente.
Considerando o total de transies usadas nos avanos diagonal, horizontal e vertical,
o passo da programao dinmica pode ser realizado em tempo
Esse resultado pode ser estendido para a computao completa da programao din-
mica. Considerando que a posio (i , j ) possui o maior nmero de estados ativos, ento
o tempo total de computao da programao dinmica
Pr-processamento
Cada posio (i, j) da matriz da programao dinmica tem associada uma lista de estados
ativos V (i, j). Na programao dinmica os ndices i percorrem as posies na sequncia
s e os ndices j percorrem as posies na sequncia t.
Seja N o NFA com k estados equivalente a um padro PROSITE construdo segundo
os critrios do NFA da parte (b) da Figura 4.8. Construmos o autmato N , adicionando
auto-transies nos estados inicial e nal de N para todo smbolo do alfabeto. O autmato
N usado para casar alguma subsequncia de s ou t na linguagem L(N) tal como foi
visto na Seo 2.3.3.
Criamos vs , um vetor de n listas (n = |s|) no qual a lista vs [i] armazena os estados
ativos no passo i da computao em N sobre s. Da mesma forma, criamos vt , um vetor
de m listas (m = |t|) no qual a lista vt [j] armazena os estados ativos no passo j da
computao em N sobre t.
Como em cada passo i da computao sobre s so usadas apenas O(|vs[i]|) transies
para encontrar os estados ativos do passo i + 1 e similarmente para os passos j da compu-
CAPTULO 4. ALINHAMENTO RESTRITO 105
tao sobre t, ento os tempos dos processos para preencher vs e vt com os estados ativos
so
O(n max(|vs [1]|, |vs [2]|, ..., |vs[n]|))
e
O(m max(|vt [1]|, |vs [2]|, ..., |vt [m]|)).
Considerando que,
e
|vt [j ]| = max(|vt [1]|, |vs [2]|, ..., |vt [m]|)
ento os tempos dos processos para encontrar os estados ativos vs e vt so
O(n|vs [i ]|)
e
O(m|vt [j ]|).
Observa-se que nem todos os estados ativos encontrados em vs e vt conseguem atin-
gir um estado nal ao trmino do processo de casamento. Assim, um percurso inverso
ao casamento permite corrigir a lista de estados ativos armazenados para manter ape-
nas aqueles estados ativos que permitem atingir algum estado nal. Esses estados so
chamados de estados ativos vlidos.
O processo para encontrar os estados ativos vlidos pode ser realizado usando as listas
de estados ativos vs e vt encontradas anteriormente. Assim, na lista de estados ativos vs [n]
so marcados como estados ativos vlidos apenas aqueles estados ativos que tambm so
estados nais, na lista de estados ativos vs [n 1] so marcados como vlidos apenas
aqueles estados que usando o passo n 1 alcancem um estado ativo vlido em vs [n], e
assim por diante at marcar os estados ativos vlidos de vs [1].
Os processos para marcar os estados ativos vlidos em vs e vt so realizados nos tempos
O(n|vs [i ]|)
e
O(m|vt [j ]|).
Considerando que v = max(|vs [i ]|, |vt [j ]|) e como n > m, ento o processo para
preencher as listas vs e vt e marcar os estados ativos vlidos
tempo
(n + m).
Pr-processamento de V (i, j)
Nosso objetivo nesta seo ser estabelecer uma relao entre os estados ativos armaze-
nados na lista V (i, j) e os estados ativos armazenados em vs [i] e vt [j].
Na computao em Pa sobre M, todo estado ativo de Pa em V (i, j) tem consumido as
sequncias s[1, i] e t[1, j]. Todos os estados de N alcanveis depois de consumir s[1, i]
esto em vs [i]. Todos os estados de N alcanveis depois de consumir t[1, j] esto em
vt [j]. Pela construo de Pa temos que
O(nmv 2 ) O(n2 v 2 )
(nm).
(mn)
e
O(n2 v 2 ) O(n2 k 2 ).
Captulo 5
Concluses
107
CAPTULO 5. CONCLUSES 108
Trabalhos futuros
Como possveis extenses deste trabalho, podemos mencionar:
(1) Explorar a construo melhorada de Thompson para conseguir -free NFAs para
qualquer expresso regular, melhorando tempo e espao usado pelos algoritmos e a
complexidade dos autmatos produzidos.
(2) O -free NFA equivalente a um padro PROSITE um formalismo compacto e
simples que pode ser usado para melhorar os algoritmos de busca, casamento exato
e aproximado de padres PROSITE.
CAPTULO 5. CONCLUSES 109
k = 50
tempo
(n2 k 4 ||6 ) Arslan
2005
160 000 000 000 14
10
1012
(n2 k 3 ||3 ) Chung et al.
10
10
400 000
8 2007 3
k || 3
(n2 log(k||) ) Kucherov et al.
40 000 10
2011
6
10
10
4 O(n2 k 2 )
10
2 Nossa Soluo
10
(n2 )
1 20 40 60 80 100
k
Figura 5.1: Grco comparativo entre os tempos de computao esperados das solues
existentes para o alinhamento restrito e nossa soluo. O eixo do tempo apresentado
em escala logartmica. n considerado constante e = 20. So mostradas as melhoras
comparativas nos tempos de execuo esperados considerando um valor de k = 50.
(3) Estender os resultados para o caso geral do problema RECSA, usando os resultados
de Schnitger [30] e nosso pr-processamento.
(4) Aplicar os resultados para o alinhamento mltiplo restrito por expresso regular.
(5) Aplicar os resultados para o alinhamento restrito por expresso regular usando fun-
o de pontuao geral.
(6) Aplicar os resultados para o alinhamento restrito por expresso regular com casa-
mento aproximado.
(7) Aplicar os resultados para o alinhamento usando alguma combinao de (4), (5) e (6)
como o caso do alinhamento mltiplo restrito por expresso regular com casamento
aproximado usando funo de pontuao geral.
Referncias Bibliogrficas
[1] Alfred V. Aho and Margaret J. Corasick. Ecient string matching: an aid to bibli-
ographic search. Communications of the ACM, 18(6):333340, 1975.
[2] Cyril Allauzen and Mehryar Mohri. A unied construction of the glushkov, fol-
low, and antimirov automata. In Rastislav Krlovi and Pawe Urzyczyn, editors,
Mathematical Foundations of Computer Science 2006: 31st International Sympo-
sium, MFCS 2006, Star Lesn, Slovakia, August 28-September 1, 2006. Proceedings,
pages 110121. Springer, Berlin, Heidelberg, 2006.
[5] Amos Bairoch. PROSITE: A dictionary of sites and patterns in proteins. Nucleic
Acid Research, 19(1):22412245, 1991.
[7] Robert S. Boyer and J S. Moore. A fast string searching algorithm. Communications
of the ACM, 20(10):762772, October 1977.
[9] Jean-Marc Champarnaud, Jean-Luc Ponty, and Djelloul Ziadi. From regular expres-
sions to nite automata. International Journal of Computer Mathematics, 72(4):415
431, 1999.
[10] Yun-Sheng Chung, Chin Lu, and Chuan Tang. Ecient algorithms for regular ex-
pression constrained sequence alignment. In Moshe Lewenstein and Gabriel Valiente,
editors, Combinatorial Pattern Matching, volume 4009 of Lecture Notes in Computer
Science, pages 389400. Springer, Berlin, Heidelberg, 2006.
110
REFERNCIAS BIBLIOGRFICAS 111
[11] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Cliord Stein.
Introduction to Algorithms. The MIT Press, 3rd edition, 2009.
[12] Shiri Dori and Gad M. Landau. Construction of Aho Corasick automaton in linear
time for integer alphabets. Information Processing Letters, 98(2):6672, 2006.
[13] Viliam Geert. Translation of binary regular expressions into nondeterministic -free
automata with o (nlogn) transitions. Journal of Computer and System Sciences,
66(3):451472, 2003.
[15] Dan Guseld. Algorithms on Strings, Trees, and Sequences: Computer Science and
Computational Biology. Cambridge University Press, 1st edition, 1997.
[16] Daniel S. Hirschberg. A linear space algorithm for computing maximal common
subsequences. Communications of the ACM, 18(6):341343, 1975.
[17] John E. Hopcroft and Jerey D. Ullman. Introduction to Automata Theory, Langua-
ges, and Computation. Addison-Wesley Publishing Company, 1st edition, 1979.
[18] Nigel Horspool. Practical fast searching in strings. Software: Practice and Experience,
10(6):501506, 1980.
[19] Juraj Hromkovi, Sebastian Seibert, and Thomas Wilke. Translating regular expres-
sions into small -free nondeterministic nite automata. In Rdiger Reischuk and
Michel Morvan, editors, STACS 97: 14th Annual Symposium on Theoretical Aspects
of Computer Science Lbeck, Germany February 27March 1, 1997 Proceedings, pa-
ges 5566. Springer Berlin Heidelberg, Berlin, Heidelberg, 1997.
[20] Juraj Hromkovi, Sebastian Seibert, and Thomas Wilke. Translating regular expres-
sions into small -free nondeterministic nite automata. Journal of Computer and
System Sciences, 62(4):565588, 2001.
[21] Nicolas Hulo, Amos Bairoch, Virginie Bulliard, Lorenzo Cerutti, Batrice A. Cuche,
Edouard de Castro, Corinne Lachaize, Petra S. Langendijk-Genevaux, and Christian
J. A. Sigrist. The 20 years of PROSITE. Nucleic Acids Research, 36(suppl 1):D245
D249, 2008.
[22] Donald E. Knuth, James H. Morris, and Vaughan R. Pratt. Fast pattern matching
in strings. SIAM Journal on Computing, 6(2):323350, 1977.
[23] Gregory Kucherov, Tamar Pinhas, and Michal Ziv-Ukelson. Regular language cons-
trained sequence alignment revisited. Journal of Computational Biology, 18(5):771
781, 2011.
[25] Robert McNaughton and Hisao Yamada. Regular expressions and state graphs for
automata. IRE Transactions on Electronic Computers, EC-9(1):3947, 1960.
[26] Saul B. Needleman and Christian D. Wunsch. A general method applicable to the
search for similarities in the amino acid sequence of two proteins. Journal of Molecular
Biology, 48(3)(3):443453, 1970.
[28] Gregory Petsko and Dagmar Ringe. Protein Structure and Function. New Science
Press Ltd, 1st edition, 2008.
[29] Michael O. Rabin and Dana Scott. Finite automata and their decision problems.
IBM Journal of Research and Development, 3(2):114125, April 1959.
[30] Georg Schnitger. Regular expressions and nfas without -transitions. In Bruno Du-
rand and Wolfgang Thomas, editors, STACS 2006: 23rd Annual Symposium on The-
oretical Aspects of Computer Science, Marseille, France, February 23-25, 2006. Pro-
ceedings, pages 432443. Springer Berlin Heidelberg, Berlin, Heidelberg, 2006.
[31] Joo Setubal and Joo Meidanis. Introduction to Computational Molecular Biology.
Computer Science Series. PWS Publishing Company, 1st edition, 1997.
[32] Christian J. Sigrist, Lorenzo Cerutti, Nicolas Hulo, Alexandre Gattiker, Laurent
Falquet, Marco Pagni, Amos Bairoch, and Philipp Bucher. PROSITE: A documented
database using patterns and proles as motif descriptors. Briefings in Bioinformatics,
3(3):265274, 2002.
[33] Daniel M. Sunday. A very fast substring search algorithm. Communications of the
ACM, 33(8):132142, August 1990.
[34] Ken Thompson. Regular expression search algorithm. Communications of the ACM,
11:419422, 1968.
Complementos tericos
113
APNDICE A. COMPLEMENTOS TERICOS 114
Note que o em (q0 ,T) = quer dizer que no existe estado de chegada na transio
ou que a transio no existe. Ento em (p0 ,T) = temos que a transio no existe
tambm.
({q0 , q1 },A) = (q0 ,A) (q1 ,A) = {q1 , q2 } , ento (p4 ,A) = p7
({q0 , q1 },T) = (q0 ,T) (q1 ,T) = , ento (p4 ,T) =
({q0 , q1 },C) = (q0 ,C) (q1 ,C) = {q3 }, ento (p4 ,C) = p3
({q0 , q1 },G) = (q0 ,G) (q1 ,G) = , ento (p4 ,G) =
({q0 , q2 },A) = (q0 ,A) (q2 ,A) = {q1 , q2 } , ento (p5 ,A) = p7
({q0 , q2 },T) = (q0 ,T) (q2 ,T) = , ento (p5 ,T) =
({q0 , q2 },C) = (q0 ,C) (q2 ,C) = , ento (p5 ,C) =
({q0 , q2 },G) = (q0 ,G) (q2 ,G) = {q3 }, ento (p5 ,G) = p3
Os estados nais so aqueles que incluem o estado q3 , G = {p6 , p8 , p9 , p11 , p12 , p13 , p14 }.
A Figura A.1 mostra o DFA D construdo. Como os estados em cinza no podem ser
alcanados desde o estado inicial p0 , ento eles podem ser removidos do autmato. A
Figura 2.10 (pgina 31) mostra o DFA D com esses estados removidos.
O algoritmo de construo do autmato pode ser projetado para percorrer apenas os
estados que podem ser alcanados desde o estado inicial. Comea-se pelo estado inicial
p0 = {q0 } e depois continua-se pelos estados de chegada das transies de p0 e assim
por diante, at percorrer todos os estados que tenham sido encontrados no processo. O
autmato simplicado mostrado na Figura 2.10 (pgina 31) possui apenas 3 estados e
equivalente ao DFA da Figura A.1 com 15 estados.
A T C G
p0 p7 p14
p1 p3 A
p2 p3
p12
p3 A
p4 p3
p5 p7 p3 G
p11 C
p6 p7 G
p7 p3 p3 A C
p8 p3 p6 p10
p9 p3
A A C G
p10 p7 p3 p3
p11 p7 p3
p0 A p7 C p3 C p13
p12 p7 p3 G G
p13 p3 p3
A
p14 p7 p3 p3 C
C
p15 p5 G p8 p1
G
G
p9 p2
C
A
p4
Implementao
Detalhes de implementao podem ser encontrados no Apndice B.3.
vez que alguma vericao fracassa, o que produz uma economia de comparaes na busca
que melhora o tempo de execuo total.
Considerando o texto t, com |t| = n e o padro p, com |p| = m, na posio i do
percurso do texto so comparados os smbolos: p[m] e t[i]; p[m 1] e t[i 1]; p[m 2] e
t[i 2] e assim por diante at p[1] e t[i (m 1)]. Considerando k {0, 1, 2, ..., m 1},
essas comparaes comparam os smbolos p[m k] e t[i k].
Nas comparaes, se p[m k] e t[i k] so iguais dizemos que esses smbolos esto
alinhados, caso contrrio dizemos que h uma coliso. Se uma coliso acontece, ento
nessa posio i do texto no existe ocorrncia e a seguinte posio a ser vericada i + d.
d chamado de deslocamento para a direita. Pular d caracteres nessas vericaes o
ganho no tempo desse algoritmo e pode ter como consequncia que o tempo seja menor
que O(n).
Na Figura A.2 mostra-se o processo na posio do texto i = 11. Uma coliso acontece
na comparao k = 1, no smbolo t[i k] = C. Ento produzido o deslocamento
d. Existem vrios critrios para produzir o deslocamento d, entre eles a heurstica do
caractere errado e a heurstica do bom suxo.
i i + d = i + (delta1 k)
coliso
ik
d
t
A T A C A T A T A C A T A C A T A T A G
comparaes: direita para a esquerda
A C A T A
delta1
j
A C A T A
d
Pr-processamento de delta1
Boyer e Moore [7] usam uma tabela delta1 , com comprimento n = ||, que permite,
armazenar para cada smbolo a , o valor delta1 (a). Se a no ocorre no padro, ento
delta1 (a) = m. Caso contrrio, delta1 (a) = m j, tal que, j a posio mais direita
da ocorrncia do smbolo a em p. A tabela delta1 pode ser preenchida linearmente com o
cdigo:
Input: padro p
Output: tabela delta1
1 begin
2 m |p|
3 foreach a do
4 delta1 (a) m
5 end
6 for j 1 to m do
7 delta1 (p[j]) m j
8 end
9 end
Input: padro p
Output: tabela delta1
1 begin
2 m |p|
3 for i 1 to m do
4 foreach a do
5 delta1 (i, a) m
6 end
7 for j 1 to i do
8 delta1 (i, p[j]) m j
9 end
10 end
11 end
APNDICE A. COMPLEMENTOS TERICOS 119
Caso (i): O suxo t[i k + 1, i] existe como subcadeia no padro esquerda da coliso.
O deslocamento feito tal que o suxo t[i k + 1, i] que alinhado com sua primeira
ocorrncia no padro esquerda da coliso.
A parte (i) da Figura A.3, mostra a coliso C 6= T na posio i k do texto com i = 5 e
k = 1, o suxo t[ik +1, i] = A est alinhado com o suxo p[mk +1, m] = A. A primeira
ocorrncia do suxo A no padro, esquerda da coliso, acontece com o deslocamento d1
de 2 smbolos.
Caso 2: O suxo t[ik +1, i] no existe como subcadeia no padro esquerda da coliso,
mas um suxo de t[i k + 1, i] prexo do padro. Aps a coliso do smbolo t[i k],
temos t[i k + 1, i] = p[m k + 1, m]. Consideramos t[i k + 1, i] = t1 t2 , t1 prexo e t2
suxo, procurado o maior t2 6= que seja prexo do padro. Se t2 encontrado no meio
do padro ele no serve como deslocamento, dado que um o mais smbolos de t1 fariam
uma coliso com t[i k + 1, i].
A parte (ii) da Figura A.3, mostra a coliso T 6= C na posio i = 9 com k = 3,
t[i k + 1, i] = p[m k + 1, m] = ATA. Como o suxo ATA no tem ocorrncia no padro
APNDICE A. COMPLEMENTOS TERICOS 120
t[i 3] i=9
t
A T A C A T A T A C A T A C A T A T A G
d2 comparaes
(ii) A C A T A
d2 A C A T A
t[i 2] i=9
t
A T A C A T A T A C A T A C A T A T A G
d3 comparaes
(iii) G G G T A
d3 G G G T A
esquerda da coliso, ento procurado o maior suxo de ATA que seja prexo de p. Assim,
encontrado t2 = A e o deslocamento nesse caso d2 = 4.
Caso 3: O suxo t[ik +1, i] no existe como subcadeia no padro esquerda da coliso,
nem um suxo de t[i k + 1, i] prexo do padro. O deslocamento |p| o que signica
colocar o padro para a direita aps dos suxos iguais.
A parte (iii) da Figura A.3, mostra a coliso A 6= G na posio i = 9 com k = 2.
t[i 1, i] = p[m 1, m] = TA. Como o suxo TA no tem ocorrncia no padro esquerda
da coliso e nenhum suxo de TA prexo de p, ento o deslocamento d3 = m = 5.
Pr-processamento
Aps a coliso do smbolo p[m k], para o caso (i) precisamos conhecer a posio do
maior x em p onde o suxo p[m k + 1, m] existe como subcadeia de p esquerda da
coliso, chamamos de L1 (m k + 1) a tal x.
L1 (j) denido como a maior posio x de p tal que p[j, m] suxo de p[1, x] e
o smbolo p[x |p[j, m]|] precedente ao suxo no igual a p[j 1]. L1 (j) denido
como zero se no existe posio que verique essa condio. A Figura A.4 mostra como
escolhido L1 (j).
A condio do smbolo p[x |p[j, m]|] precedente ao suxo no igual a p[j 1] da
denio de L1 , melhora o deslocamento dado que se p[x |p[j, m]|] = p[j 1] pode
dar uma nova coliso nas comparaes depois do deslocamento. Essa condio pula esse
APNDICE A. COMPLEMENTOS TERICOS 121
p[1, x] p[j, m]
sufixo sufixo
p
1 x j m
maior
x |p[j, m]| j1
sufixo
p
G A T A T A C A T A C A T A T A C A T A
1 x m
N (x, p)
Assim para o caso (i) usando os valores calculados de N(x, p), calculamos L1 (j) como
a maior posio x em p, tal que N(x, p) = |p[j, m]|. A igualdade nessa denio valida a
condio p[x |p[j, m]|] 6= p[j 1] da denio de L1 .
Para o caso (ii) denido L2 (j) como o comprimento do maior suxo de p[j, m] que
tambm prexo de p, se existe um. Se no existe, ento L2 (j) = 0. Calculamos L2 (j)
como a maior posio x |p[j, m]| tal que N(x, p) = x.
Os valores L1 (j) e L2 (j) encontrados so usados para calcular os deslocamentos. Se
L1 (j) > 0 (caso (i)), ento o deslocamento d = m L1 (j). Caso contrrio (L1 (j) = 0
do caso (ii) ou L2 (j) = 0 do caso (iii)) o deslocamento d = m L2 (j). Quando uma
ocorrncia do padro encontrada, para vericar se h outra ocorrncia do padro,
produzido o deslocamento d = m L2 (2).
Algoritmo Z
Z(j, p) denido como o comprimento da maior subcadeia que comea em j e igual
a um prexo de p. Se no existe prexo na posio j, ento Zj (p) = 0. A subcadeia
APNDICE A. COMPLEMENTOS TERICOS 122
processado
l Z-box r
p
(a)
1 j m
comparaes novas
processado
jl+1 l Z-box r
Z(j l + 1, p)
(b) p
1 j m
processado
jl+1 l Z-box r
Z(j l + 1, p)
p
(c)
1 j m
comparaes novas
Figura A.6: Clculo Z(j, p). (a) Caso j > r. (b) Caso j r e Z(j , p) < r j + 1. (c)
Caso j r e Z(j , p) r j + 1.
Se j > r, parte (a) da gura, Z(j, p) calculado usando as comparaes: p[1] e p[j];
p[2] e p[j + 1]; e assim por diante. Se um novo Z-box encontrado l e r so atualizados.
Se j r o smbolo p[j] est contido no ltimo Z-box. Cada smbolo do ltimo Z-box est
no prexo de p e forma parte dos smbolos j processados. Segundo o Z-box da posio
j = j l + 1 so possveis dois casos: Z(j , p) < r j + 1 e Z(j , p) r j + 1. Na
parte (b) da gura Z(j , p) < r j + 1, ento Z(j, p) = Z(j , p). Note que nesse caso
p[j , j + Z(j , p) 1] = p[1, Z(j , p)] = p[j, j + Z(j , p) 1] indicados com as linhas pretas
na gura. Na parte (c) da gura Z(j , p) r j + 1, considerando a = r j + 1, temos
que p[j , j + a 1] = p[1, a] = p[j, r] (linhas pretas na gura). Z(j, p) calculado usando
as comparaes: p[a + 1] e p[r + 1]; p[a + 2] e p[r + 2]; e assim por diante. Os valores de l
e r so atualizados.
Na computao do algoritmo Z para cada posio j no texto os valores l e r podem
ser atualizados segundo novas comparaes tal como se observa na Figura A.6. Se a nova
comparao igualdade um novo Z-box aparece e os valores de l e r so atualizados.
Como apenas m valores novos so possveis para r, o nmero de comparaes que so
igualdades O(m). Se a nova comparao desigualdade l e r so mantidos e o valor
de j acrescentado. Como os valores de j so acrescentados m 1 vezes, ento o n-
APNDICE A. COMPLEMENTOS TERICOS 123
Pr-processamento de L1
Os valores de L1 (j), podem ser obtidos em tempo linear e armazenados no vetor de inteiros
L1 , usando o seguinte algoritmo:
Input: padro p
Output: vetor de inteiros L1
1 begin
2 m |p|
3 for j 1 to m do
4 L (j) 0
5 end
6 for j 1 to m 1 do
7 L1 (m N (j, p) + 1) j
8 end
9 end
Pr-processamento de L2
Os valores de L2 (j), podem ser obtidos em tempo linear e armazenados no vetor de inteiros
L2 usando o seguinte algoritmo:
Input: padro p
Output: vetor de inteiros L2
1 begin
2 m |p|
3 j1
4 while N (j, p) = j do
5 L2 (m j + 1) j
6 j j+1
7 end
8 pos j 1
9 while j m do
10 L2 (m j + 1) pos
11 j j+1
12 end
13 end
APNDICE A. COMPLEMENTOS TERICOS 124
ocorrncia
1 2 3 4 5 6 7 8 9 10 11 12 13
t A T A C A T A T A T T T A
1 2 3 4
(i) q+1=4
p A T A T A
2
(ii) q+1=2
q [3] A T A T A
1 2 3 4 5
(iii)
q [1] A T A T A
4 5
(iv) q+1=5
q [5] A T A T A
3 q+1=5
(v)
q [4] A T A T A
Input: padro p
Output: vetor
1 begin
2 p padro
3 m |p|
4 vetor de m elementos
5 [1] 0
6 k0
7 for q 2 to m do
8 while k > 0 and P [k + 1] 6= P [q] do
9 k [k]
10 end
11 if P [k + 1] = P [q] then
12 k k+1
13 end
14 [q] k
15 end
16 end
Apndice B
Como o -free NFA pode ter um conjunto de estados nais, a estrutura nfa usa
uma lista encadeada de estados para armazen-los. Usam-se dois valores inteiros para
armazenar o estado inicial e o nmero de estados. O apontador d usado para referenciar
a tabela de denio da funo . d aponta a uma tabela de duas entradas, onde cada
elemento dela uma lista encadeada de estados. (nodelist_state *) um apontador a
uma lista simplesmente encadeada de estados, os estados so valores inteiros.
denida a funo (nfa *enfa2nfa(enfa *E)), que recebe como argumento um -NFA e
retorna um -free NFA. Na implementao de enfa2nfa, comea-se reservando a memria
para o -free NFA e a tabela de transies. Em seguida, para cada estado e para cada
smbolo do alfabeto encontrado o conjunto de estados (q, x). O algoritmo continua a
adio das transies consumindo o smbolo x desde o estado q at cada um dos estados
de (q, x).
A funo (q, x) implementada pela funo closure_alpha como segue:
127
APNDICE B. DETALHE DAS IMPLEMENTAES 128
9 closure_E(N,i,T0);
10 }
11 }
12 for(i=0; i<N>numst; i++)
13 {
14 if (T0[i ])
15 {
16 aux = N>d[i][idxletter];
17 while(aux!=NULL)
18 {
19 if (T[aux>state]==0)
20 {
21 / if not in T /
22 T[aux>state]=1; / add state in T /
23 closure_E(N, aux>state, T); / E moves /
24 }
25 aux=aux>next;
26 }
27 }
28 }
29 }
Observe que a funo closure_E precisa que o vetor T da entrada esteja inicializado. A
funo recursiva e a cada vez que chamada o vetor T acumula os estados para construir
o conjunto fecho-.
APNDICE B. DETALHE DAS IMPLEMENTAES 129
O caso mostrado na Figura 2.7 pode acontecer nas construes dos autmatos quando
so usados os padres originais de Thompson. A situao acontece dado que os padres
originais possuem -moves que ao serem apagados deixam um pedao do autmato des-
conexo. O autmato desconexo ligado novamente por novas transies que substituem
os -moves, mas aquelas transies no necessariamente ligaram o estado inicial nem o
estado nal da parte desconexa. So esses estados iniciais e nais os responsveis pelas
anomalias mostradas na Figura 2.7.
A Figura B.1 parte (a) mostra o -NFA equivalente da expresso regular R = (AC)|(AG)
feito pela construo de Thompson clssica. Na parte (b) se mostra o -free NFA cons-
trudo com base no autmato (a). Pode-se observar que os estados q0 e q4 so estados
iniciais de partes desconexas que caram inalcanveis por alguma transio. Da mesma
maneira q3 e q7 so estados nais de partes desconexas que no podero atingir o estado
nal.
(a) A C
q0 q1 q2 q3
q8 q9
q4 A q5 q6 G q7
(b) q0 A q1 C
A C
A C
A q2 C
q8 q9
A G
A q5 (c) q2
G A C
A G q7 q9
q8 A G
A q6 G q5
O -free NFA mostrado na parte (c) da Figura B.1 pode ser obtido como reduo do
-free NFA mostrado na parte (b). Para isso usamos os processos de reduo seguintes:
1. Eliminar os estados no alcanveis desde o estado inicial. Isso pode ser feito por
um percurso no grafo do autmato em largura desde o estado inicial, tal que a cada
vez que um estado visitado, ele marcado como visitado. Ao m os estados no
visitados podem ser apagados do autmato.
2. Eliminar os estados que no podem atingir o estado nal. Isso pode ser feito por
um percurso no grafo do autmato com as transies invertidas, tal que o percurso
iniciado no estado nal. Ao m, os estados no visitados podem ser apagados
porque eles no tm como alcanar o estado nal.
APNDICE B. DETALHE DAS IMPLEMENTAES 130
A estrutura usa um inteiro para armazenar o estado inicial, outro inteiro para armazenar
o nmero de estados, um apontador referenciando a tabela de transies e um apontador
referenciando uma lista encadeada dos estados nais.
A estrutura nodelist_dfa_state denida como:
1 aux=L;
2 while (aux!=NULL)
3 {
4 for(i=0; i<ns; i++)
5 {
6 T = (int ) malloc(numstsizeof(int));
APNDICE B. DETALHE DAS IMPLEMENTAES 131
Para cada estado aux->T do DFA em L encontrado T como (aux->T, x) para todo
x . Assim, se T 6= , ento o estado adicionado com id = addnd_id(L, T, numst)
e a transio adicionada no DFA com aux->D[i] = id. id = addnd_id(L, T, numst)
adiciona o estado do DFA em L se ele ainda no existe e devolve o estado em id. Note que
a lista L adicionada com elementos novos durante o processo. Ao terminar de percorrer
L o processo termina, dado que no se tem mais estados no processados.
Finalmente o DFA armazenado na estrutura dfa. Na parte (b) da Figura B.2
mostrado o DFA equivalente ao -NFA da parte (a), ambos autmatos so equivalentes
expresso regular R = (C|G)*A(C|T).
(a)
C
G C
A
T
(b) A
T q4
C q1
A
C
q0 q2 G C q5
G
A
C
q3
G
(a) (b)
0
1 0 1 0
2 0 0 2 0 0
3 0 0 0 3 0 0 0
4 0 0 0 0 4 0 0 0 0
5 0 0 0 0 0 5 0 0 0 0 0
0 1 2 3 4 5 0 1 2 3 4
Figura B.3: Tabela para minimizar um DFA com 6 estados.
1 aux=D>end;
2 while(aux!=NULL)
3 {
4 / for each end state /
5 for(i=0; i<numst; i++)
6 {
7 if (! end[i ])
8 {
9 / if not end state /
10 M[aux>state][i]=1; / mark /
11 }
12 }
13 aux=aux>next;
14 }
Para o DFA da Figura B.2, com estados nais q4 e q5 e vetor end=[000011] a matriz M
caria marcada tal como se mostra na Figura B.4.
1 0
2 0 0
3 0 0 0
4 1 1 1 1
5 1 1 1 1 0
0 1 2 3 4
Figura B.4: Matriz M com os pares (estado nal, estado no nal) marcados como
distinguveis.
A matriz de listas matlist com ns do tipo nodedi criada para armazenar as de-
pendncias de pares de estados distinguveis no processo. A estrutura nodedi denida
como:
APNDICE B. DETALHE DAS IMPLEMENTAES 133
19 k=ns;
20 continue;
21 }
22 else
23 matlist [ r ][ s]=add_list_nodediff(matlist[r ][ s ], i , j );
24 }
25 else if ((( r<0)&&(s>=0))||((r>=0)&&(s<0)))
26 {
27 M[i ][ j]=1;
28 matlist [ i ][ j]=mark_recursion(M,matlist,matlist[i][j ]);
29 k=ns;
30 continue;
31 }
32 }
33 }
34 }
35 }
(a) (b) A T q4
1 1 C q1
A
2 0 1 C
q0 q2 G C q5
G
3 0 1 0 A
C q3
4 1 1 1 1
G
5 1 1 1 1 0 (c)
C,G
0 1 2 3 4
A T,C
q0 q1 q2
Figura B.5: (a) Matriz M (b) DFA e (c) DFA mnimo equivalente a R = (C|G)*A(C|T).
o autmato mnimo deve ter apenas um estado representante dessa classe. O autmato
resultante aps a minimizao mostrado na Figura B.5 parte (c).
Note que nosso -NFA tem estado nal nico, situao garantida pelos padres base
na construo de Thompson e pelos passos na induo. Sempre possvel construir um
-NFA equivalente com estado nal nico, dado que suciente criar um novo estado nal
e fazer -moves at ele desde os antigos estados nais.
A estrutura enfa usa trs valores inteiros e um apontador. O inteiro start armazena
o estado inicial, end armazena o estado nal e numst armazena o nmero de estados. d
aponta a uma tabela de duas entradas, onde cada elemento dela uma lista encadeada
de estados. (nodelist_state *) um apontador a uma lista simplesmente encadeada de
estados, os estados so valores inteiros.
A funo enfa *letter2enfa(char c) implementada para dar suporte ao padro base
mostrado na Figura 3.1 parte (c), ela reserva o espao de memria necessrio e inicializa
a tabela de transies. Apenas dois estados so necessrios (numst=2): estado inicial 0
e estado nal 1. Ao nal inserida a nica transio desde o estado 0 at o estado 1
consumindo o smbolo c.
Para manipular os smbolos da expresso regular criada uma lista encadeada tal que
cada n dela permita armazenar ou o -NFA equivalente a cada smbolo do alfabeto ou o
smbolo operador, para isso denido a estrutura seguinte:
APNDICE B. DETALHE DAS IMPLEMENTAES 136
E *
E |
E E )
E | E E (a)
G A T
0 1 0 1 0 1
NULL
Sublista
NULL
NULL
E | E (b)
G NULL A T
0 1 0 1 2 3
Sublista
NULL
NULL (c)
G
E 1 2
0 7
T
3 A 4 5 6
E * E 1 G 2
(a) 0 7
3 A 4 5 T 6
0 C 1 NULL
Lista
NULL
NULL
E E 1 G 2
(b) 0 7
3 A 4 5 T 6
0 1 C 2 3
Lista
NULL
NULL
E
(c)
5 G 6
0 1 C 2 3 4 11
7 A 8 9 T 10
Figura B.8: Construo do -NFA equivalente sublista sem parnteses: E1 *E2 , onde E1
o -NFA equivalente a C e E2 o -NFA equivalente a G|AT.
Na Figura B.8 parte (b) substitudo o -NFA equivalente ao fecho de Kleene. Dois
ns da lista so substitudos por um n contendo o -NFA de quatro estados equivalente
a C*. A lista reduzida para dois ns cada um com um -NFA.
Finalmente na Figura B.8 parte (c) apresentado o resultado de resolver a concate-
nao dos dois ns do processo anterior. O n resultante contm o -NFA equivalente
expresso regular: C*(G|AT).
As funes que resolvem os padres da induo so implementadas construindo novos
-NFA e inserindo os -moves correspondentes. Por exemplo, a funo
usada para construir o -NFA resultante da aplicao do operador *, essa funo esta
denida pelo seguinte cdigo:
APNDICE B. DETALHE DAS IMPLEMENTAES 139
A linha 3 usa a funo enfa_union que realiza uma cpia do -NFA original adicionando
2 estados novos. A linha 6, dene o -move que vai desde o estado nal do autmato inicial
at o estado nal do novo autmato. Da mesma forma as linhas 7, 8 e 9 denem as outras
trs transies vazias segundo o padro.
A funo add_nodelist_state adiciona a transio apenas quando ela no existe na
lista. Isso conseguido adicionando o elemento no nal da lista e parando se a transio
existe.
Na estrutura enfa, adicionado o vetor C que vai permitir armazenar se um estado tem
ou no ciclo. Esse vetor modicado a cada vez que um padro usado, mantendo a
consistncia da informao.
A funo enfa *enfa_kleene_melhor_caso_i(enfa *Ma) implementada para o caso
(i) do fecho de Kleene. Ela recebe um -NFA e retorna o -NFA resultante depois de aplicar
o fecho de Kleene em Ma . A funo reserva a memria para o -NFA resultante M e para
sua tabela de transies com um estado menos que o original. Procede-se com a cpia das
APNDICE B. DETALHE DAS IMPLEMENTAES 140
(b)
A
q1 q0
(a) A
q0
(c) A
q0
Figura B.9: (a) Ra = (A*). (b) Aplicao do caso (iv) para obter Ra = R*. (c) Autmato
obtido para R = (A*)*, aplicando o caso (v).
o caso da concatenao. Para o caso sem -moves considerado mover as posies dos
estados nal de Ma e inicial de Mb , tal que facilitem sua cpia em M. O estado nal de
Ma levado para a ltima posio na tabela de estados e o estado inicial de Mb levado
para a primeira posio da tabela. Assim, Ma copiado completamente em M. Depois,
Mb copiado comeando pela posio do estado nal de Ma em M, essa primeira cpia
funde os estados fa e qb .
A Figura B.10 mostra a aplicao dos padres melhorados na construo do -NFA
equivalente a R = C*(G|AT). A construo do -NFA equivalente a R pela construo
clssica de Thompson mostrada na Figura 3.7.
G
C
q0 q2
A T
q1
B.6 PROSITE
Para a implementao usada a funo char *pros2R(char *Pros). pros2R recebe como
entrada a cadeia Pros que representa uma sequncia PROSITE, a sada uma nova cadeia
que representa a expresso regular equivalente. pros2R parte a sequncia PROSITE
nos pedaos separados pelo smbolo -. Cada pedao composto por um conjunto de
aminocidos C (unitario, , {} ou []) e uma indicao ou no de repetio, expressada
entre parnteses. Os pedaos so lidos sequencialmente. A cada vez que um pedao
novo Pp lido tem-se armazenada a expresso regular parcial R formada at antes dessa
leitura. R composta por duas partes R1 e R2 , tal que R = R1 R2 onde R2 o elemento
antecessor da nova leitura.
Se Pp no tem repeties, em R1 armazenada R1 R2 e em R2 armazenada a
expresso regular equivalente a Pp .
Se Pp corresponde a repeties simples, uma rotina de repetio pode construir a
expresso regular equivalente dele: RB RA , onde RA o novo antecessor. Depois em R1
armazenado R1 R2 RB e em R2 armazenado RA .
Se Pp corresponde a repeties expressadas em um intervalo, constri-se a expresso
regular Rp equivalente a um termo unitrio de Pp . Para expandir as repeties so
consideradas duas partes: Xj (mj )Xj (0, nj mj ). Xj (mj ) tratada como uma repetio
simples de Rp , modicando-se os valores de R1 e R2 . Depois, para Xj (0, nj mj )
APNDICE B. DETALHE DAS IMPLEMENTAES 142