Você está na página 1de 142

Universidade Estadual de Campinas

Instituto de Computao
INSTITUTO DE
COMPUTAO

Lise Rommel Romero Navarrete

Alinhamento de sequncias restrito por expresso


regular usando padres PROSITE

CAMPINAS
2016
Lise Rommel Romero Navarrete

Alinhamento de sequncias restrito por expresso regular usando


padres PROSITE

Dissertao apresentada ao Instituto de


Computao da Universidade Estadual de
Campinas como parte dos requisitos para a
obteno do ttulo de Mestre em Cincia da
Computao.

Orientador: Prof. Dr. Guilherme Pimentel Telles

Este exemplar corresponde verso nal da


Dissertao defendida por Lise Rommel
Romero Navarrete e orientada pelo Prof.
Dr. Guilherme Pimentel Telles.

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

Romero Navarrete, Lise Rommel, 1975-


R664a RomAlinhamento de sequncias restrito por expresso regular usando padres
PROSITE / Lise Rommel Romero Navarrete. Campinas, SP : [s.n.], 2016.

RomOrientador: Guilherme Pimentel Telles.


RomDissertao (mestrado) Universidade Estadual de Campinas, Instituto de
Computao.

Rom1. Alinhamento de sequncias restrito (Biologia molecular). 2. Alinhamento


de sequncias (Biologia molecular). 3. Teoria dos autmatos. 4. Expresso
regular (Linguagens formais). 5. Casamento de padres (Computao). 6.
Bioinformtica. 7. Protenas. I. Telles, Guilherme Pimentel,1972-. II.
Universidade Estadual de Campinas. Instituto de Computao. III. Ttulo.

Informaes para Biblioteca Digital

Ttulo em outro idioma: Regular expression constrained sequence alignment using


PROSITE patterns
Palavras-chave em ingls:
Constrained sequence alignment (Molecular biology)
Sequence alignment (Molecular biology)
Automata theory
Regular expression (Formal languages)
Pattern matching (Computer science)
Bioinformatics
Proteins
rea de concentrao: Cincia da Computao
Titulao: Mestre em Cincia da Computao
Banca examinadora:
Guilherme Pimentel Telles [Orientador]
Maria Emlia Machado Telles Walter
Zanoni Dias
Data de defesa: 26-08-2016
Programa de Ps-Graduao: Cincia da Computao
Universidade Estadual de Campinas
Instituto de Computao
INSTITUTO DE
COMPUTAO

Lise Rommel Romero Navarrete

Alinhamento de sequncias restrito por expresso regular usando


padres PROSITE

Banca Examinadora:

Prof. Dr. Guilherme Pimentel Telles


Instituto de Computao - UNICAMP

Profa. Dra. Maria Emlia Machado Telles Walter


Departamento de Cincia da Computao - CIC - UnB

Prof. Dr. Zanoni Dias


Instituto de Computao - UNICAMP

A ata da defesa com as respectivas assinaturas dos membros da banca encontra-se no


processo de vida acadmica do aluno.

Campinas, 26 de agosto de 2016


Dedicatria

In memoriam de mi hermano Jos Miguel (1987-2011). Porque su recuerdo es mi


fuerza, mi guia y el coraje para resistir, perseverar y encaminar cada uno de mis dias
en esta aventura. Porque su viva presencia en mi corazn es fuente interminable de
inspiracin en mi vida. Vivirs por siempre en nuestros corazones!

A mis padres Federico y Angelica. La razn fundamental de mi existencia. Mi mayor


fuente de orgullo, ejemplo de vida y fortaleza. Porque estn siempre presentes en mi
corazn, acompaandome aun estando lejos. Sin ustedes nada de esto seria posible.
Los amo!

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!

A mis sobrinos Alessandro, Rodrigo, Leonardo y Joaqun. Para que en un futuro


no lejano alcancen una vida de sabidura y xito, llena de valores, amor, alegra y
felicidad. Porque son la llama naciente y viva de todos nosotros, para perpetuar lo
que somos. Para mi cholito, para mi hobbit, para leonajjjjduuuu, para rousseau,
con mucho amor y cario!

A las mams de mis sobrinos Cintya y Kathy. Por su afecto y atenciones.


A inteligncia consiste no s no conheci-
mento, mas tambm na habilidade de aplicar
os conhecimentos na prtica.

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

Na biologia molecular o alinhamento de sequncias uma ferramenta para caracterizar si-


milaridade ou distncia entre sequncias. O problema do alinhamento restrito por expres-
so regular (RECSA: Regular Expression Constrained Sequence Alignment) foi proposto
no ano de 2005 por Arslan [3]. O alinhamento restrito procura encontrar um alinhamento
timo entre duas sequncias de tal forma que a expresso regular esteja expressa numa
parte do alinhamento.
Famlias e domnios de protenas encontram-se caraterizados como padres no banco
de dados PROSITE os quais so usados na biologia molecular para identicar e classicar
protenas. Esses padres podem ser representados por expresses regulares e usados como
restrio no alinhamento de Arslan.
Na soluo de Arslan para o alinhamento restrito usado um autmato nito sem
transies vazias construdo a partir da expresso regular. O tempo de execuo dessa
soluo depende do nmero de estados e transies desse autmato.
Neste trabalho apresentamos quatro resultados. Primeiro, apresentamos um algoritmo
melhorado da construo de Thompson [34] que permite construir autmatos nitos mais
compactos diretamente da expresso regular em tempo linear. Segundo, apresentamos
uma forma de construir expresses regulares equivalentes a padres PROSITE que, ao
serem usadas na construo melhorada de Thompson, geram diretamente autmatos com-
pactos sem transies vazias. Esses autmatos possuem nmero de estados sublinear e
nmero de transies linear em relao ao nmero de smbolos da expresso regular, nme-
ros menores que o esperado ao usar os resultados da literatura. Terceiro, esses autmatos
compactos, ao serem usados na soluo de Arslan, melhoram naturalmente o tempo de
execuo, esse tempo tambm melhor que as solues propostas por Chung et al. no
ano de 2007 [10] e por Kucherov et al. no ano de 2011 [23]. Finalmente, apresentamos um
pr-processamento que, ao ser aplicado na soluo de Arslan, melhora ainda mais o tempo
de execuo, conseguindo um limite inferior sobre a complexidade de tempo independente
do tamanho do autmato.
Abstract

In molecular biology the sequence alignment is a tool for characterizing similarity or


distance between sequences. The Regular Expression Constrained Sequence Alignment
problem (RECSA) was proposed in 2005 by Arslan [3]. Constrained alignment seeks
to nd an optimal alignment between two sequences such that the regular expression is
expressed in a part of the alignment.
Protein families and domains are characterized as patterns in PROSITE database,
which are used in molecular biology to identify and classify proteins. These patterns can
be represented by regular expressions and used as a restriction on Arslan alignment.
In Arslans solution for constrained alignment a nite automaton without empty tran-
sitions constructed from the regular expression is used. The running time of the solution
depends on the number of states and transitions of this automaton.
In this work we show four results. First, we present an improved Thompsons construc-
tion [34] that, allows building a more compact nite automatons directly from the regular
expression in linear time. Second, we present a way to build regular expressions equivalent
to PROSITE patterns that when used with the improved Thompson construction, gener-
ates compact automatons without empty transitions directly. These automatons have a
sublinear number of states and a linear number of transitions in relation to the number of
symbols in the regular expression, with smaller numbers than expected when compared to
the literature results. Third, these compact automatons, when used in Arslans solution
improve runtime naturally and such time is also better than the solutions proposed by
Chung et al. in 2007 [10] and by Kucherov et al. in 2011 [23]. Finally, we present a
preprocessing step which when applied to Arslans solution improves further the running
time, managing to achieve a lower bound on the time complexity independent of the size
of the automaton.
Resumen

En la biologa molecular el alineamiento de secuencias es una herramienta para caracterizar


similitud o distancia entre secuencias. El problema del alineamiento restricto por expresin
regular (RECSA: Regular Expression Constrained Sequence Alignment) fue propuesto en
el ao 2005 por Arslan [3]. El alineamiento restricto tiene por objetivo encontrar un
alineamiento optimo entre dos secuencias de tal manera que la expresin regular est
expresa en una parte del alineamiento.
Familias y dominios de protenas estn caracterizados como patrones en la base de
datos PROSITE, los cuales son usados en la biologa molecular para identicar y clasicar
protenas. Estos patrones pueden ser representados por expresiones regulares y usados
como restriccin en el alineamiento de Arslan.
En la solucin de Arslan para el alineamiento restricto es usado un autmata nito
sin transiciones vacas construido a partir de la expresin regular. El tiempo de ejecucin
de esta solucin depende del nmero de estados y transiciones del autmata.
En este trabajo presentamos cuatro resultados. En primer lugar, presentamos un algo-
ritmo mejorado de la construccin de Thompson [34], el cual permite la construccin de
autmatas nitos ms compactos, obtenidos directamente a partir de la expresin regular
y en tiempo lineal. En segundo lugar, se presenta una forma de construir expresiones regu-
lares equivalentes a patrones PROSITE, que al ser utilizadas en la construccin mejorada
de Thompson, generan directamente autmatas compactos sin transiciones vacas. Estos
autmatas tienen nmero sublineal de estados y nmero lineal de transiciones en relacin
al nmero de smbolos de la expresin regular, nmeros menores de lo esperado cuando se
utilizan los resultados de la literatura. En tercer lugar, estos autmatas compactos, cuan-
do son utilizados en la solucin Arslan, mejoran naturalmente el tiempo de ejecucin, este
tiempo es tambin mejor que las soluciones propuestas por Chung et al. en 2007 [10] y
Kucherov et al. en 2011 [23]. Finalmente, presentamos un preprocesamiento que cuando
es aplicado en la solucin Arslan, mejora an ms el tiempo de ejecucin, consiguiendo
alcanzar un lmite inferior sobre la complejidad de tiempo independientemente del tamao
del autmata.
Lista de Figuras

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. . . 20

2.1 Autmato nito determinstico. . . . . . . . . . . . . . . . . . . . . . . . . 23


2.2 Autmato nito determinstico sem considerar os estados de no-aceitao. 24
2.3 NFA:({A,T,G,C},{q0 , q1 , q2 , qf },, q0 , {qf }). . . . . . . . . . . . . . . . . . . . 25
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). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.5 Equivalncias entre os formalismos NFA, -NFA, DFA e RE (expresso
regular) [17]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.6 -NFA e NFA equivalentes a R = (A|T)(A|T|C|G)?(A|T|C|G)?CG. . . . . 28
2.7 (a) Um -NFA. (b) -free NFA equivalente ao -NFA (a). . . . . . . . . . . 29
2.8 (a) -NFA equivalente a R = (AC|AT)TA?. (b) -free NFA construdo a
partir do -NFA da parte (a). . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.9 -free NFA para R = (AC)|(AG). . . . . . . . . . . . . . . . . . . . . . . . 31
2.10 DFA equivalente simplicado para R = (AC)|(AG). . . . . . . . . . . . . . 31
2.11 Algoritmo para construo de um DFA equivalente a um -NFA. . . . . . . 32
2.12 Construo do DFA para R = (AC)|(AG). . . . . . . . . . . . . . . . . . . 33
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). . . . . 34
2.14 Algoritmo ingnuo para o casamento exato de sequncia com p = ACATA e
t = ATACATATACATACATATAG. . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.15 Funo p : {0, 1, ..., m}. . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.16 NFA equivalente a R = (A|T|C|G)*ATATA. . . . . . . . . . . . . . . . . . . 38
2.17 DFA equivalente a R = (A|T|C|G)*ATATA. . . . . . . . . . . . . . . . . . . 38
2.18 NFA equivalente a R2 = (A|T|C|G)*A(A|T)(A|T)(A|T)(A|T)(A|T). . . . 39
2.19 DFA equivalente a R2 = (A|T|C|G)*A(A|T)(A|T)(A|T)(A|T)(A|T). . . . 39
2.20 Algoritmo de busca usando NFA. . . . . . . . . . . . . . . . . . . . . . . . 40
2.21 Alinhamento de duas sequncias. . . . . . . . . . . . . . . . . . . . . . . . 41
2.22 Um alinhamento com pontuao maior. . . . . . . . . . . . . . . . . . . . . 42
2.23 Recurso para o A timo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.24 Matriz de programao dinmica M de 7 8, |s| = 6, |t| = 7 e gap = 2. . 44
2.25 Matriz de programao dinmica, aps preenchimento. . . . . . . . . . . . 45
2.26 Avanos na programao dinmica. . . . . . . . . . . . . . . . . . . . . . . 46
2.27 Algoritmo para preencher a matriz de scores dos prexos, segundo a pro-
gramao dinmica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.28 Sequncias de avanos que geram uma pontuao global tima. . . . . . . . 48
2.29 Algoritmo para recuperar um alinhamento global timo, depois do clculo
dos scores de prexos pela programao dinmica da Figura 2.27. . . . . . 49

3.1 Autmatos do caso base, Teorema 2.3 [17]. . . . . . . . . . . . . . . . . . . 51


3.2 Caso da alternncia, R = Ra |Rb . . . . . . . . . . . . . . . . . . . . . . . . 52
3.3 Caso da concatenao, R = Ra Rb . . . . . . . . . . . . . . . . . . . . . . . 53
3.4 Caso da concatenao, R = Ra . . . . . . . . . . . . . . . . . . . . . . . . 54
3.5 Autmatos das expresses regulares: A, T, C e G. . . . . . . . . . . . . . . . 54
3.6 Autmatos das expresses regulares: R1 = AT, R2 = C* e R3 = G|AT. . . . 55
3.7 Autmato da expresso regular R = C*(G|AT). . . . . . . . . . . . . . . . 55
3.8 Contribuio de estados e transies dos padres de Thompson. . . . . . . 56
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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.12 Padres para o fecho de Kleene quando Ma no um autmato ciclo (cons-
truo melhorada). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.13 Padres para a alternncia quando Ma e Mb no so autmatos ciclo (cons-
truo melhorada). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.14 Padro da alternncia para o caso (i)(a) - (iv)(b). . . . . . . . . . . . . . . 64
3.15 Padres modicados para a concatenao. . . . . . . . . . . . . . . . . . . 65
3.16 Construo do -NFA equivalente a Ra +. . . . . . . . . . . . . . . . . . . . 66
3.17 Construo do -NFA equivalente a Ra ?. . . . . . . . . . . . . . . . . . . . 66
3.18 (a) (c), exemplos de ciclo de -moves com 2 estados. (b) (d), simplicao
dos casos (a) e (b). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.19 Exemplos para fundir estados no -NFA, caso de ciclos de -moves com 2
estados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
3.20 -NFA para ((ATT*)*|T|(AGG*)*)* segundo a construo clssica de Thomp-
son. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
3.21 (a) Ciclo de -moves com 3 estados. (b) Ciclo de -moves com 4 estados.
(c) Ciclo de -moves com 5 estados. . . . . . . . . . . . . . . . . . . . . . . 68
3.22 -NFAs equivalentes a R = (A|T)(A|T|C|G)?(A|T|C|G)?CG. . . . . . . . . 70
3.23 Sequncia polipeptdica mostrando o N-terminal e C-terminal [28]. . . . . 71
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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.25 -NFA equivalente a x produzido pela construo clssica de Thompson. . . 75
3.26 -NFAs produzidos pela construo melhorada de Thompson. (a) equiva-
lente a x, (b) equivalente a x(4). . . . . . . . . . . . . . . . . . . . . . . . . 76
3.27 -NFAs: (a) equivalente a x?x?x?x?, (b) equivalente a (xxxx|xxx|xx|x)?,
(c) equivalente a (((xx|x)x|x)x|x)?, (d) equivalente a (x|x(x|x(x|xx)))?.
Autmatos obtidos pela construo clssica de Thompson. . . . . . . . . . 78
3.28 -NFAs equivalentes a x obtido pela construo melhorada de Thompson,
(a) Representao completa. (b) Representao cannica. . . . . . . . . . . 79
3.29 -NFAs e -free NFAs equivalentes a R1 , R2 , R3 e R4 obtidos pela cons-
truo melhorada de Thompson. . . . . . . . . . . . . . . . . . . . . . . . . 79
3.30 Grco do nmero de estados e transies em funo de l k para diversos
-free NFAs equivalentes s expresses regulares: (a) tipo R1, (b) tipo R2
e (c) tipo R3 similar ao tipo R4 . . . . . . . . . . . . . . . . . . . . . . . . 80
3.31 -free NFAs equivalente a y-x(0, l k) para diversos valores de l k. . . . 82
3.32 Expresso regular e -free NFA equivalente ao padro PROSITE PS00315. 82
3.33 Expresso regular e -free NFA equivalente ao padro PROSITE PS00720. 83
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. . . . . . . . . . . . . . . . . . . . . . . . . . . 84

4.1 Alinhamentos: (a) A timo. (b) AR . . . . . . . . . . . . . . . . . . . . . . 89


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. 90
4.3 Construo parcial do NFA P. . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.4 Matriz da programao dinmica para encontrar o A(s, t) timo. . . . . . . 96
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. 99
4.6 Programao dinmica acompanhada pelo NFA de Arslan. . . . . . . . . . 100
4.7 A0 , A1 e A2 do alinhamento restrito por expresso regular. . . . . . . . . . 101
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. . . . 104

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. . . . . . . . . . . . . . . . . . . . . . . . 109

A.1 DFA D = (P, , , p0 , G) equivalente a R = (AC)|(AG). . . . . . . . . . . . 115


A.2 Algoritmo Boyer-Moore, heurstica do caractere errado. . . . . . . . . . . . 117
A.3 Algoritmo de Boyer-Moore, heuristica do bom suxo. . . . . . . . . . . . . 120
A.4 Caracterizao de L1 (j). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
A.5 N(x, p) encontrados para p = GATATACATACATATACATA. . . . . . . . . . . . 121
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. . . . . . . . . . . . . . . . . . . . . . . . 122
A.7 Algoritmo Knuth-Morris-Pratt. . . . . . . . . . . . . . . . . . . . . . . . . 125

B.1 Construo do -free NFA para R = (AC)|(AG). . . . . . . . . . . . . . . . 129


B.2 (a) -NFA e (b) DFA equivalente a R = (C|G)*A(C|T). . . . . . . . . . . . 131
B.3 Tabela para minimizar um DFA com 6 estados. . . . . . . . . . . . . . . . 132
B.4 Matriz M com os pares (estado nal, estado no nal) marcados como
distinguveis. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
B.5 (a) Matriz M (b) DFA e (c) DFA mnimo equivalente a R = (C|G)*A(C|T). 135
B.6 Lista inicial de -NFAs na construo de Thompson. . . . . . . . . . . . . . 136
B.7 -NFA equivalente sublista sem parnteses: G|AT. . . . . . . . . . . . . . 137
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. . . . . . . 138
B.9 (a) Ra = (A*). (b) Aplicao do caso (iv) para obter Ra = R*. (c)
Autmato obtido para R = (A*)*, aplicando o caso (v). . . . . . . . . . . 140
B.10 Autmato para R = C*(G|AT), baseado nos padres melhorados. . . . . . 141
B.11 Expresses regulares equivalentes a os padres PROSITE: PS00315, PS00396
e PS01186. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Lista de Tabelas

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

3.1 Contribuio de estados (E) e transies (T) na construo de Thompson. 69


3.2 Valores comparativos da construo do -free NFA. . . . . . . . . . . . . . 71
3.3 Nomenclatura IUPAC de 1 letra para aminocidos. . . . . . . . . . . . . . 73
3.4 Nmero de estados e transies de -NFAs equivalentes a diversos elementos
PROSITE, pela construo de Thompson clssica e melhorada. . . . . . . . 77
3.5 Nmero de estados e transies dos -free NFAs construdos para diversos
valores de l k. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.6 Expresses regulares para y-x(0, l k), usando R3 . . . . . . . . . . . . . 81
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). . . . . . . . . . . . . . 86
3.8 Detalhes em nmeros dos 20 padres PROSITE com maior nmero de
transies 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). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
3.9 Detalhes em nmeros dos 20 padres PROSITE com maior nmero de
transies no seu DFA equivalente. As colunas mostram transies (T),
estados (E), e o tempo usado pelo processo para construir o autmato em
milissegundos (ms). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
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). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Sumrio

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

Referncias Bibliogrficas 110

A Complementos tericos 113


A.1 Exemplo de construo de um DFA equivalente a um NFA . . . . . . . . . 113
A.2 Minimizao de um DFA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
A.3 Algoritmo Boyer-Moore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
A.3.1 Heurstica do caractere errado . . . . . . . . . . . . . . . . . . . . . 117
A.3.2 Heurstica forte do bom suxo . . . . . . . . . . . . . . . . . . . . . 119
A.4 Algoritmo Knuth-Morris-Pratt . . . . . . . . . . . . . . . . . . . . . . . . . 124

B Detalhe das implementaes 127


B.1 NFA equivalente a um -NFA . . . . . . . . . . . . . . . . . . . . . . . . . 127
B.2 DFA equivalente a um -NFA . . . . . . . . . . . . . . . . . . . . . . . . . 130
B.3 Minimizao de um DFA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
B.4 Construo de Thompson . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
B.5 Construo de Thompson melhorada . . . . . . . . . . . . . . . . . . . . . 139
B.6 PROSITE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Captulo 1

Introduo

One is that the perfect garden can be cre-


ated overnight, which it cant.

Ken Thompson

A comparao de sequncias um dos problemas mais importantes na biologia molecu-


lar, onde sequncias de DNA (DeoxyriboNucleic Acid), de RNA (RiboNucleic Acid) ou
protenas precisam ser comparadas para determinar sua similaridade, inferir a histria evo-
lucionria entre elas ou prever alguma funo biolgica. Sequncias biolgicas possuem
regies conservadas que podem representar origem comum ou funo biolgica similar.
Uma forma de representar essas regies conservadas usando expresses regulares. O ali-
nhamento por restrio de expresso regular permite comparar duas sequncias quando
de interesse manter uma regio conservada numa parte contnua do alinhamento, tal
que duas subsequncias que pertencem a linguagem da expresso regular, uma de cada
sequncia, encontram-se alinhadas.
Bancos de dados, como o PROSITE, armazenam listas de motivos ou padres que
caraterizam famlias e domnios de protenas. O problema do alinhamento restrito por
expresso regular (RECSA: Regular Expression Constrained Sequence Alignment) foi pro-
posto no ano de 2005 por Arslan [3]. Motivos ou padres descritos em PROSITE podem
ser representados por expresses regulares e usados como restries para o problema
RECSA. Na soluo proposta por Arslan para o problema RECSA usado um autmato
sem transies vazias equivalente expresso regular.
Neste trabalho estudamos a representao de padres PROSITE com expresses re-
gulares e autmatos, com a inteno de construir autmatos sem transies vazias mais
compactos e reduzir a complexidade de tempo da soluo do problema RECSA quando
usado um padro PROSITE como restrio (problema RECSA/PROSITE).

1.1 A pesquisa em relao arte


Ao momento de comear esta pesquisa foram encontrados na literatura apenas os trabalhos
de Arslan [3], Chung et al. [23] e Kucherov et al. [10] que propuseram solues para o

18
CAPTULO 1. INTRODUO 19

problema do alinhamento restrito RECSA. Nesta pesquisa ns estudamos a soluo de


Arslan considerando que a restrio especicamente um padro PROSITE, e formulamos
algumas construes que melhoram o tempo de execuo desse algoritmo.
Considerando duas sequncias de comprimento n sobre o alfabeto e um padro
PROSITE com k elementos simples representado por um autmato nito determinstico
(DFA) equivalente com eD estados e por um autmato nito no-determinstico (NFA)
equivalente com eN estados. A soluo de Arslan para o problema RECSA um algoritmo
que executa no tempo O(n2 e2D ) no caso de se usar um DFA e no tempo O(n2 e4N ||2 ) no
caso de se usar um NFA. No ano de 2007, Chung et al. [10] apresentaram um algoritmo que
executa no tempo O(n2 e3N ) para o caso do NFA (o termo || foi eliminado da complexidade
no tempo de execuo). No ano de 2011, Kucherov et al. [23] apresentaram um algoritmo
que executa no tempo O(n2 e3N / log(eN )) para o caso do NFA.
As solues criadas para o problema RECSA [3, 10, 23] baseiam-se na existncia de
DFAs e/ou NFAs equivalentes aos padres PROSITE. Assim para o padro PROSITE com
k elementos, espera-se um NFA equivalente com O(k||) estados e O(k 2 ||3 ) transies
e um DFA equivalente com O(2k||) estados e O(||2k||) transies, obtidos a partir da
expresso regular equivalente com O(k||) smbolos. O uso de um DFA no garante uma
soluo polinomial dado que ele pode ter nmero exponencial de estados em relao a k.
A soluo de Arslan [3] para o caso do NFA baseia-se no uso do quadrado do nmero de
transies do NFA. Os tempos de execuo das solues [3, 10, 23] usando um NFA so
(n2 k 4 ||6 ), (n2 k 3 ||3 ) e (n2 k 3 ||3 / log(k||)) respectivamente.
Neste trabalho, apresentamos um algoritmo para construo de um NFA sem transi-
es vazias equivalente a um padro PROSITE com O(k) estados e O(k||) transies e
usando esse NFA propormos um algoritmo para o problema RECSA restrito por padro
PROSITE com um tempo de execuo O(n2 k 2 ) e (n2 ). Na Figura 1.1 apresentado
um grco comparativo em escala logartmica do tempo de computao entre as solues
existentes para o alinhamento restrito [3, 10, 23] e nossa soluo.

1.2 Organizao da dissertao


Esta dissertao est dividida em cinco captulos e dois apndices. Neste captulo de
introduo, relatamos brevemente alguns resultados da literatura em relao ao problema
do alinhamento restrito por expresso regular e os comparamos em alto nvel com nossos
resultados. No Captulo 2, introduzimos uma serie de notaes e denies bsicas, estu-
damos expresses regulares, autmatos e suas equivalncias, revisamos alguns algoritmos
para busca em sequncias usando autmato e estudamos o alinhamento de sequncias.
No Captulo 3, estudada a construo de autmatos equivalentes a expresses regulares
e a padres PROSITE. No Captulo 4, estudamos o problema e a soluo do alinhamento
restrito por expresso regular proposto por Arslan, apresentamos uma melhoria na so-
luo do alinhamento restrito usando padres PROSITE e propomos uma soluo ainda
melhor usando um pr-processamento. No Captulo 5, so apresentadas as concluses
deste trabalho. No Apndice A, inclumos alguns complementos tericos, revisamos os
algoritmos clssicos para busca de sequncias o algoritmo de Boyer-Moore e o algoritmo
CAPTULO 1. INTRODUO 20

(n2k 4||6 ) Arslan


14
10 2005
12
10
(n2k 3 ||3) Chung et al.
escala logartmica

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.

KMP. No Apndice B, inclumos detalhes das implementaes realizadas nessa pesquisa


com relao construo de autmatos equivalentes a expresses regulares e a padres
PROSITE.
Captulo 2

Definies

Hopcroft e Ullman [17] apresentam um compndio de conceitos e denies sobre a teoria


de autmatos e linguagens. Essas ideias foram usadas para construir as denies que
sero usadas neste texto.

2.1 Definies bsicas


Um alfabeto nito um conjunto nito de smbolos. Uma cadeia ou sequncia sobre
uma sucesso nita de smbolos de e uma linguagem sobre um conjunto de
cadeias sobre . Por exemplo, ATCGAATT uma sequncia sobre o alfabeto = {A,T,G,C}.
O tamanho de uma cadeia s, denotado por |s|, o nmero de smbolos de s. Dessa
forma, para s = ATCGAATT temos que |s| = 8. Uma cadeia vazia no contm smbolos e
representada por , em consequncia || = 0.
O j-simo smbolo de uma cadeia s representado por s[j], com 1 j |s|.
A concatenao de duas cadeias s e t uma nova cadeia, representada por st, que
formada pelos smbolos da cadeia s seguidos pelos smbolos da cadeia t.
Uma subcadeia de s representada por s[i, j] tal que s[i, j] = s[i]s[i + 1]...s[j 1]s[j],
se i j e s[i, j] = , se i > j. Por exemplo, se s = CATGTTTA, temos que s[3, 6] = TGTT.
Para uma cadeia s com |s| = n, um prexo uma subcadeia da forma s[1, k] e um
suxo uma subcadeia da forma s[k, n], com 1 k n.
Para uma cadeia s, sR s[|s|]s[|s| 1]...s[2]s[1], denominada a cadeia reversa de s.
Se um alfabeto, denimos k como o conjunto de todas as cadeias de tamanho k
sobre . Ento 0 = {} para qualquer alfabeto . Assim, para = {0, 1}, temos que
1 = {0, 1}, 2 = {00, 01, 10, 11} e 3 = {000, 001, 010, 011, 100, 101, 110, 111}.
O conjunto de todas as cadeias sobre um alfabeto representado por . Note
que = 0 1 2 3 ... O conjunto de todas as cadeias no-vazias sobre
+ = 1 2 3 ... claro que = + {}. Se um alfabeto e L , ento L
chamado de linguagem sobre .
O smbolo - usado para representar um espao numa cadeia. Denotamos o alfabeto
ampliado como = {-}. Assim a insero de espaos numa sequncia sobre o
alfabeto resulta numa nova sequncia sobre o alfabeto . Por exemplo, AT-CGAAT-T
uma sequncia sobre o alfabeto = {A,T,G,C,-}, resultante da insero de dois espaos

21
CAPTULO 2. DEFINIES 22

na sequncia ATCGAATT sobre = {A,T,G,C}.


Sejam L, L1 e L2 linguagens sobre . A concatenao de L1 e L2 denotada por L1 L2 o
conjunto {xy | x L1 e y L2 }. Denimos L0 = {} e Li = LLi1 para i 1. O fecho de
S
Kleene de L, denotado por L , o conjunto L = i
i=0 L e o fecho positivo de L, denotado
S
por L+ , o conjunto L+ = i=1 Li . Por exemplo, se L1 = {10, 1} e L2 = {011, 11} ento
L1 L2 = {10011, 1011, 111}. Tambm {10, 11} = {, 10, 11, 1010, 1011, 1110, 1111, ...}.
Dado um conjunto Q, denotamos por 2Q ao conjunto de todos os subconjuntos de Q.

2.2 Expresses regulares e autmatos finitos


Nesta seo formalizamos a ideia de expresso regular. Denimos o autmato nito
determinstico ou DFA, o autmato nito no-determinstico ou NFA, o autmato nito
no-determinstico com transies vazias ou -NFA, e estudamos diversas equivalncias
entre autmatos e expresses regulares.

2.2.1 Expresso Regular


Definio 2.1 (Expresso Regular). Uma expresso regular sobre um alfabeto pode
ser definida recursivamente:

uma expresso regular e denota a linguagem vazia.

uma expresso regular e denota a linguagem {}.

Para cada a , a uma expresso regular e denota a linguagem {a}.

Se r e s so expresses regulares que denotam as linguagens R e S respectivamente,


ento (r|s), (rs), (r) so expresses regulares que denotam as linguagens R S, RS,
e R , respectivamente.

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:

Q um conjunto finito e no-vazio de estados,

um alfabeto,

: Q Q a funo de transio, uma funo total,

q0 Q o estado inicial,

F Q o conjunto dos estados finais ou de aceitao.

Para descrever o funcionamento do autmato com cadeias, denimos : (Q ) Q


que estende a denio de para obter um estado depois de ler uma cadeia.

Definio 2.3 ().


i) (q, ) = q
ii) (q, wa) = ((q, w), a), para todo w e a

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

Figura 2.1: Autmato nito determinstico.


CAPTULO 2. DEFINIES 24

Se uma sequncia y no pertence linguagem L(M), ento no existe nenhuma sequn-


cia de transies que partindo do estado inicial q0 e consumido y alcance algum estado
nal de M. Assim, no DFA da Figura 2.1, se a sequncia TG consumida, ento neces-
sariamente os estados percorridos so: q0 q3 q3 . Como a funo uma funo total cada
sequncia consumida pelo DFA est associada a uma nica sucesso de estados. O estado
q3 de M no um estado nal e ele o estado alcanado em todos os casos que uma
sequncia no pertence linguagem L(M), nesse sentido chamamos ao estado q3 como
um estado de no-aceitao.
Para maior simplicidade na representao de um DFA so considerados apenas os
estados que permitem alcanar um estado nal, em tal sentido o estado q3 do DFA da
Figura 2.1 pode ser ignorado nos desenhos. Como a denio formal de uma funo
total, qualquer transio no explicitada subentende um estado de no-aceitao como
q3 . A Figura 2.2 mostra o DFA da Figura 2.1 sem considerar o estado de no-aceitao
q3 . A funo pode ser denida explicitamente por

= {(q0 ,C) q0 , (q0 ,G) q2 , (q0 ,A) q1 , (q1 ,T) q2 }.

C
A T G C
G q0 q1 q2 q0
q0 q2
A q1 q2
T q2
q1

Figura 2.2: Autmato nito determinstico sem considerar o estado de no-aceitao q3 .

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.

Definio 2.4 (NFA). Um NFA uma quntupla (Q, , , q0 , F ), onde:


Q um conjunto finito e no-vazio de estados,

um alfabeto,

: Q 2Q a funo de transio, uma funo total,

q0 Q o estado inicial,

F Q o conjunto dos estados finais ou de aceitao.

Definio 2.5 ( para NFAs). A funo definida:


i) (q, ) = {q}
ii) (q, wa) = {p | para algum estado r em (q, w), p (r, a)}
iii) (P, w) = qP (q, w), P Q
CAPTULO 2. DEFINIES 25

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 }

Figura 2.3: NFA:({A,T,G,C},{q0 , q1 , q2 , qf },, q0 , {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.

Definio 2.6 (-NFA). Um -NFA uma quntupla (Q, , , q0 , F ), onde:

Q um conjunto finito e no-vazio de estados,

um alfabeto,

: Q ( {}) 2Q a funo de transio, uma funo total,

q0 Q o estado inicial,

F Q o conjunto dos estados finais ou de aceitao.

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

Definio 2.7 (f echo-(q)).

i) f echo-(q) = {p | p um estado alcanvel por uma ou mais transies


vazias partindo de q, q Q}
ii) f echo-(P ) = qP f echo-(q), P Q

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.

Definio 2.8 ( para -NFAs).

i) (q, ) = f echo-(q), para q Q


ii) (q, wa) = f echo-(P ),
onde P = {p | p (r, a) para algum estado r em (q, w)},
para q Q, w e a
iii) (R, w) = qR (q, w), para R Q e w

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.

2.2.5 Equivalncias entre autmatos


DFA, NFA, -NFA e expresso regular possuem o mesmo poder de representatividade de
linguagens. Hopcroft e Ullman [17] apresentam a prova desse fato, assim como tambm
alguns processos de construo que permitem encontrar equivalncias entre esses forma-
lismos. As equivalncias entre esses formalismos no so triviais, Hopcroft e Ullman [17]
mostraram as provas dos seguintes teoremas:

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]).

Os teoremas 1, 2, 3 e 4 estabelecem a equivalncia entre os formalismos, como ilustrado


na Figura 2.5.

2
-NFA NFA
3 1
4
RE DFA

Figura 2.5: Equivalncias entre os formalismos NFA, -NFA, DFA e RE (expresso regu-
lar) [17].

Em particular, estamos interessados na transformao de uma expresso regular para


um autmato com o menor nmero de estados e transies possveis.

NFA equivalente a um -NFA


O Teorema 2.2 de [17] arma que para todo -NFA existe um -free NFA equivalente, ou
seja, dado um -NFA que aceita a linguagem L, ento existe um -free NFA que aceita a
mesma linguagem.
Seja o -NFA E = (Q, , , q0 , F ), vamos a construir o -free NFA M = (Q, , , q0 , G),
onde:

(q, x) = (q, x) para todo q Q e x .


CAPTULO 2. DEFINIES 28


F {q0 } se fecho-(q0 ) F 6=
G =
F em outro caso.

A prova da equivalncia entre E e M mostrada por Hopcroft e Ullman [17]. A ideia


para essa construo substituir os -moves por transies simples (no -moves). No
processo de aceitao do -NFA, um -move pode ser considerado como uma forma de
adicionar estados alcanados depois de consumir algum smbolo do alfabeto. Note que
a construo do -free NFA no adiciona estados no autmato construdo, mas adiciona
transies.
Na Figura 2.6, na parte (a) mostrado um -NFA com dois -moves e na parte (b)
o -free NFA construdo a partir do -NFA da parte (a). Os autmatos mostrados so
equivalentes expresso regular R = (A|T)(A|T|C|G)?(A|T|C|G)?CG.

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)

Figura 2.6: -NFA e NFA equivalentes a R = (A|T)(A|T|C|G)?(A|T|C|G)?CG.

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.

Complexidade do nmero de estados e transies


Sejam E = (Q, , , q0 , F ) um -NFA e M = (Q, , , q0 , G) o -free NFA equivalente a E
construdo tal como denido previamente.
Como |Q| o mesmo nos dois autmatos, ento o nmero de estados de M igual ao
nmero de estados de E.
Nas transies, o pior caso acontece quando a funo (q, x) retorna o conjunto Q.
Cada estado pode ter at ||Q transies. Ento, no total podem-se criar at |||Q|2
transies.
A Figura 2.8 parte (b) mostra o -free NFA construdo a partir do -NFA mostrado
na parte (a). O nmero de estados mantido no -free NFA, mas pode-se observar que
o nmero de transies teve um acrscimo considervel, as transies no -NFA so 15 e
CAPTULO 2. DEFINIES 30

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).

DFA equivalente a um NFA


O Teorema 2.1 de [17] arma que, dado um -free NFA que aceita a linguagem L, ento
existe um DFA que aceita L. A prova desse teorema feita pela construo do DFA. Seja
o -free NFA N = (Q, , , q0 , F ), constri-se o DFA D = (P, , , p0 , G), onde:
P = 2Q

(p, x) = (p, x), para todo p P

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).

Complexidade do nmero de estados e transies


Sejam N = (Q, , , q0 , F ) um -free NFA e D = (P, , , p0 , G) o DFA equivalente a N
construdo tal como denido previamente. Considerando que n = |Q|, pela construo
|P | = 2n . Cada estado pi do DFA D pode ter || transies produzidas por (pi , x) com
x . Ento os |P | estados de D podem produzir no mximo |P ||| = 2n || transies.

DFA equivalente a um -NFA


Rabin e Scott no ano de 1959 desenvolveram as ideias para construir um DFA equivalente
a um -NFA [29]. Nesta construo necessrio usar as funes fecho- e denidas para
os -NFAs.
Dado o -NFA E = (Q, , , q0 , F ) constri-se o DFA D = (P, , , p0 , G) onde:

P = 2Q

(p, x) = (p, x), para todo p P

G = {p | p P e p F 6= }

p0 = fecho-(q0 )

A existncia de -moves no autmato estende a denio do estado inicial do DFA


para p0 = fecho-(q0 ), dado que desde o estado q0 possvel alcanar outros estados sem
consumir smbolos do alfabeto.
Na Figura 2.11 mostra-se uma verso em alto nvel do algoritmo de Rabin e Scott.
O algoritmo usa uma lista dfa-states para armazenar os estados do DFA que vo sendo
encontrados no processo. Cada estado adicionado na lista marcado como no processado.
Comea-se adicionando p0 na lista de estados de D. Para cada estado p da lista marcado
como no processado e para todo x encontra-se r = (p, x). Observe que r P .
Logo, se r no vazio e r no est na lista, ento r adicionado na lista. A transio de
p at r adicionada na tabela de transies de D e r marcado como processado.
CAPTULO 2. DEFINIES 32

Input: -NFA E = (Q, , , q0 , F )


Output: DFA D = (P, , , p0 , G)
1 begin
2
3 G
4 p0 fecho-(q0 )
5 Marcar p0 como no-processado
6 dfa-states {p0 }
7 while existe p no processado e pertencente a dfa-states do
8 foreach x do
9 r (p, x)
10 if r 6= and r
/ dfa-states then
11 dfa-states dfa-states {r}
12 Marcar r como no-processado
13 if r F 6= then
14 G G {r}
15 end
16 end
17 {p  r}
18 end
19 Marcar p como processado
20 end
21 P dfa-states
22 end

Figura 2.11: Algoritmo para construo de um DFA equivalente a um -NFA.

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

p0 = fecho-(q0 ) p1 = (p0 ,A)


p2 = (p1 ,C)

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)

Figura 2.12: Construo do DFA para R = (AC)|(AG).

Implementao
Detalhes de implementao podem ser encontrados no Apndice B.2.

Complexidade do nmero de estados e transies


Sejam E = (Q, , , q0 , F ) um -NFA e D = (P, , , p0 , G) o DFA construdo pelo algo-
ritmo anterior tal que L(E) = L(D). Considerando que n = |Q|, pela construo, no pior
caso temos que |P | = 2n , ento |P | = O(2n ).
Como num DFA cada estado pode ter no mximo || transies. Ento o nmero
de transies de D no pior caso |P ||| = 2n ||. Logo o nmero de transies de D
O(||2n).
Por exemplo, a Figura 2.13 parte (a) mostra o -NFA equivalente expresso regular
R1 = (A|T)*A(A|T), e a parte (b) o DFA construdo para R1 baseado no -NFA (a).
A parte (c) mostra o -NFA equivalente a R2 = R1 (A|T). Em (d) mostrado o DFA
equivalente a (c). Nesta gura, pode-se observar que o nmero de estados do DFA (d)
quase o dobro do DFA (b).
A Tabela 2.1 mostra o nmero de estados e transies das expresses regulares for-
madas adicionando (A|T) na expresso regular anterior: Ri = Ri1 (A|T). Onde pode-se
observar a natureza exponencial do DFA construdo em relao ao seu -NFA.

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

um autmato mnimo e que ele nico. Detalhes dessa construo so apresentados no


CAPTULO 2. DEFINIES 35

Apndice A.2.

2.3 Busca em sequncias


So chamadas de operaes de edio sobre uma sequncia: a insero de um smbolo
na sequncia, a remoo de um smbolo da sequncia, e a substituio de um smbolo da
sequncia por outro smbolo.
Dadas duas sequncias s e t sobre o alfabeto , chamamos de distncia de edio entre
s e t ao nmero mnimo de operaes de edio que devem ser feitas sobre a sequncia s
para obter a sequncia t.
Uma sequncia chamada de texto se a sequncia onde se realizar a busca. Uma
sequncia chamada de padro se a sequncia procurada como subcadeia no texto.
Dados um texto t e um padro p denimos os problemas:
Casamento exato (exact matching): o problema consiste em encontrar todas as
ocorrncias do padro p como subcadeia de t.

Casamento aproximado (approximate matching): o problema consiste em encontrar


todas as subcadeias de t que tenham uma distncia de edio menor ou igual a k
com o padro p.
Definio 2.9 (Casamento exato de sequncia). Dados um texto t e um padro p,
ambas sequncias sobre o alfabeto , com |t| = n e |p| = m, definimos como casamento
exato de sequncia o problema de encontrar todos os valores i, tal que, p = t[i, i + m 1].
Quando no casamento exato ou aproximado o padro uma sequncia, ento o pro-
blema denominado casamento de sequncias (string matching). No entanto, o padro
pode ser estendido para representar uma linguagem. Se o padro representado por uma
expresso regular, gramtica ou algum outro formalismo que represente uma linguagem,
ento o problema chamado de casamento de padres (pattern matching).
Definio 2.10 (Casamento exato de padro). Dados um texto t e um padro p que
representa a linguagem L(p), definimos como casamento exato de padro o problema de
encontrar todos os valores i e j, tal que, t[i, i + j 1] L(p).
Neste trabalho estamos interessados no casamento exato, quando o padro repre-
sentado por uma expresso regular. Chamamos a esse problema casamento exato de
expresso regular.
Definio 2.11 (Casamento exato de expresso regular). Dados um texto t e uma
expresso regular R que representa a linguagem L(R), definimos como casamento exato
de expresso regular ao problema de encontrar todos os valores i e j, tal que, t[i, i+j 1]
L(R).
Nesta seo focamos a ateno no casamento exato de sequncia usando autmato e
no casamento exato de expresso regular, ideias que sero usadas para construir a soluo
do alinhamento restrito por expresso regular do Captulo 4. Na Seo A.3 e Seo A.4
do apndice apresentamos os algoritmos clssicos para casamento exato de sequncia, o
algoritmo de Boyer-Moore e o algoritmo KMP.
CAPTULO 2. DEFINIES 36

2.3.1 Algoritmo ingnuo para casamento exato de sequncia


O algoritmo consiste em percorrer todas as posies do texto e vericar se o padro ocorre
a partir de cada posio. Para cada uma das |texto| posies do texto so realizadas
|padro| comparaes. Por exemplo, para as sequncias t = ATACATATACATACATATAG e
p = ACATA com |t| = 20 e |p| = 5, encontram-se ocorrncias nas posies: 3, 9 e 13.

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.

Considerando |texto| = n e |padro| = m, no pior caso o tempo desse algoritmo


O(mn), dado que ele realiza (n m + 1) m comparaes.

2.3.2 Casamento exato de sequncia usando autmato


Cormen et al. [11] (pgina 995) apresentam o uso de um DFA para a busca de sequncias.
O DFA construdo como parte do pr-processamento do algoritmo.
Dada a cadeia de busca p, denimos a funo p : {0, 1, ..., m} correspondente a
p, tal que, para uma sequncia x , p (x) o comprimento do maior suxo de x que
prexo de p. Na Figura 2.15 mostrada a funo p para p = ATATA e os valores de
x pertencentes a {TTA, TAAT, ATTATA}, onde se mostra que p (TTA) = 1, p (TAAT) = 2 e
p (ATTATA) = 3.

p (x) = 1 p (x) = 2 p (x) = 3


p p p
x A T A T A x A T A T A x A T A T A
T T A T A A T A T T A T A

Figura 2.15: Funo p : {0, 1, ..., m}.

O autmato M para a busca de p construdo como M = (Q, , , q0 , F ), onde:

Q = {0, 1, ..., m}
CAPTULO 2. DEFINIES 37

(q, a) = p (p[1, q]a)

F = {m}, um estado nal

q0 = 0, estado inicial

O algoritmo para calcular a funo correspondente a p :

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

O algoritmo representa diretamente a denio dada para a funo . Para cada


estado e para cada smbolo do alfabeto procurado o maior prexo possvel. O tempo
desse algoritmo O(m3 ||). Usando esse algoritmo, na Tabela 2.2 mostramos a funo
obtida para o padro p = ATATA. O clculo da funo pode ser realizado num tempo
menor, se usarmos as ideais do pr-processamento do algoritmo Knuth-Morris-Pratt [11]
o tempo para calcular pode ser melhorado para O(m||).
O algoritmo de busca usando esse autmato apresentado em alto nvel a seguir:

Input: padro p, texto t


Output: posies da ocorrncia do padro
1 begin
2 m |p|
3 n |t|
4 q0
5 for i 1 to n do
6 q (q, t[i])
7 if q = m then
8 reporta uma ocorrncia do padro na posio i m
9 end
10 end
11 end

O tempo desse algoritmo (n). O autmato construdo na Tabela 2.2 um DFA.


CAPTULO 2. DEFINIES 38

Tabela 2.2: Funo do autmato construdo para o casamento de p = ATATA.

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

Usando uma expresso regular


Outra forma de encontrar o padro p = ATATA no texto t, pode ser projetada a partir da
expresso regular R = (A|T|C|G)*ATATA. A funo do DFA equivalente de R pode ser
usado na busca de ATATA em t usando o mesmo algoritmo anterior.
Na Figura 2.16 apresentado o -NFA equivalente para R = (A|T|C|G)*ATATA,
usando a construo de Thompson melhorada da Seo 3.2. Como o nmero de tran-
sies desse -NFA m + ||, ento o tempo de construo O(m + ||).
Na Figura 2.17 apresentado o DFA equivalente para R = (A|T|C|G)*ATATA, usando
a construo clssica mostrada na Seo 2.2.5, o tempo dessa construo O(||2m).

A,T,C,G
A T A T A
0 1 2 3 4 5

Figura 2.16: NFA equivalente a R = (A|T|C|G)*ATATA.

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

Figura 2.17: DFA equivalente a R = (A|T|C|G)*ATATA.


CAPTULO 2. DEFINIES 39

2.3.3 Casamento exato de expresso regular


Dada uma expresso regular qualquer, nem sempre ser possvel projetar um DFA em
tempo linear como foi feito para o caso da expresso regular R = (a1 |a2 |...|a|| ) b1 b2 ...bm
usado no casamento exato de sequncia. Ento, o uso do DFA pode no ser apropriado
nos casos de serem obtidos DFAs com nmero exponencial de estados ou transies. Por
exemplo para a expresso regular R2 = (A|T|C|G)*A(A|T)(A|T)(A|T)(A|T)(A|T), na
Figura 2.18 apresentado seu NFA equivalente com 7 estados e 15 transies.

A,T,C,G
A A,T A,T A,T A,T A,T
0 1 2 3 4 5 6

Figura 2.18: NFA equivalente a R2 = (A|T|C|G)*A(A|T)(A|T)(A|T)(A|T)(A|T).

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

q48 q62 q32

q61 q33 q4 q31 q59

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

Figura 2.19: DFA equivalente a R2 = (A|T|C|G)*A(A|T)(A|T)(A|T)(A|T)(A|T).

A ideia do algoritmo de busca com autmato consumir um smbolo do texto e mudar


o estado do autmato segundo q (q, t[i]). No caso do DFA, cada novo estado aps a
transio nico. No caso de usar o NFA, cada nova transio alcana um conjunto de
estados.
Seja o NFA N representado pela quntupla (Q, , , q0 , F ), onde Q o conjunto de
estados, o alfabeto, : Q 2Q a funo de transio, q0 Q o estado inicial
CAPTULO 2. DEFINIES 40

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]).

Input: padro p, texto t


Output: posies da ocorrncia do padro
1 begin
2 m |p|
3 n |t|
4 Q1 {0}
5 for i 1 to n do
6 Q1 (Q1 , t[i])
7 if q = m then
8 reporta uma ocorrncia do padro na posio i m
9 end
10 end
11 end

Figura 2.20: Algoritmo de busca usando NFA.

Definio 2.12 (Estado ativo). Dado um autmato A = (Q, , , q0 , F ). Para um


processo de aceitao se desenvolvendo com uma sequncia x consumida, um estado q
chamado de ativo se e somente se q (q0 , x). Todo estado q
/ (q0 , x) chamado de
estado inativo.
Usando a Denio 2.12, observamos que, a varivel Q1 usada no algoritmo de busca da
Figura 2.20 armazena o conjunto de estados ativos no processo de aceitao. A operao
Q1 (Q1 , t[i]) pode ser representada em alto nvel por:

1 a t[i]
2 Q2
3 foreach q Q1 do
4 Q2 Q2 (q, a)
5 end
6 Q1 Q2

Pode-se observar que para cada estado q Q1 retornado um conjunto de estados


(q, a). Cada estado retornado produto de uma transio no NFA. O nmero de tran-
sies saindo de todos os estados de Q1 tem como limite superior o nmero total de
transies do autmato. Ento, considerando T como o nmero de transies do NFA,
o tempo da operao Q1 (Q1 , a) O(T ). Consequentemente, o algoritmo de busca
usando um NFA executa no tempo O(nT ).
CAPTULO 2. DEFINIES 41

2.4 Alinhamento de sequncias


Nesta seo apresentamos o problema do alinhamento de sequncias, com o objetivo de
entender o alinhamento restrito por expresso regular denido por Arslan [3]. Nesse
sentido, nosso interesse estudar o alinhamento global de duas sequncias. As ideias para
construir esta seo foram baseadas no livro de Setubal e Meidanis [31].

2.4.1 Alinhamento global de duas sequncias


Definio 2.13 (Alinhamento global de duas sequncias: A). Sejam s e t duas
sequncias sobre o alfabeto e o smbolo / representando um espao, o alinhamento
global de s e t, denotado por A(s, t), so duas sequncias s e t resultantes da insero
de zero ou mais espaos nas sequncias s e t respectivamente, tal que |s | = |t | e tal que
s [i] e t [i] no so simultaneamente espaos para todo 1 i |s |.

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

Figura 2.21: Alinhamento de duas sequncias.

Para poder determinar se um alinhamento melhor que outro, cada alinhamento


associado a um valor numrico chamado de pontuao. Uma das formas de calcular a
pontuao de um alinhamento usando uma funo de pontuao de colunas que atribui
um valor numrico para cada coluna.

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

espao. Por exemplo,

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.

Pontuao de um alinhamento. Um dos critrios possveis para pontuar um alinha-


mento somar as pontuaes de cada coluna, isso chamado de pontuao aditiva de
colunas. Usando a pontuao aditiva de colunas e a funo denida para pontuar uma
coluna, a pontuao de A denida como:
|A|
X
(A[i])
i=1

Por exemplo, para o alinhamento s = bbab-a- e t = acbaa mostrado na Figura 2.21,


a pontuao (1) + (1) + (4) + (2) + (1) + (4) + (1) = 2
Em particular a funo de pontuao denida anteriormente pode ser redenida
como:
4 , se a1 = a2 (match)
(a1 , a2 ) = 2 , se a1 6= a2 (mismatch)

1 , se a1 = ou a2 = (gap)
Para duas sequncias quaisquer, muitos alinhamentos podem ser obtidos, consequen-
temente cada um deles pode ter uma pontuao diferente. Na Figura 2.22 mostrado
um alinhamento das mesmas sequncias do alinhamento da Figura 2.21, mas a pontuao
obtida (1) + (1) + (4) + (1) + (4) + (4) + (1) = 8 maior.

s b b a - b a -
t - - a c b a a
1 1 4 1 4 4 1

Figura 2.22: Um alinhamento com pontuao maior.

Definio 2.14 (Alinhamento global timo de duas sequncias: A(s, t) timo).


Dadas as sequncias s e t sobre o alfabeto , denotamos como A(s, t) timo a algum
alinhamento global entre s e t com pontuao mxima.
CAPTULO 2. DEFINIES 43

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.

2.4.2 Algoritmo para encontrar um alinhamento global timo


No ano de 1970, Needleman e Wunsch [26] mostraram o uso de programao dinmica
para encontrar o alinhamento global timo de duas sequncias. Essa soluo formulada
usando uma recurso sobre o score(s, t).
Dado um alinhamento global timo A(s, t) e supondo que a = |A|, ento:

score(s, t) = (A[1]) + (A[2]) + ... + (A[a 1]) + (A[a])


| {z }
soma sem A[a]

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

Se |s| > 0 e |t| = 0, temos que:

|s|
X
score(s, ) = (s[i], )
i=1

Se as duas sequncias so vazias ento o score do alinhamento 0.


Considerando |s| = n e |t| = m, se T (n, m) representa o tempo gasto por um algoritmo
que implementa a recurso anterior diretamente, ento T (n, m) = T (n 1, m) + T (n
1, m1)+T (n, m1)+O(m+n), onde O(m+n) o tempo gasto na leitura das entradas,
chamadas recursivas e combinao das solues.
A soluo direta da recurso faz com que o mesmo subproblema seja resolvido vrias
vezes, como ilustrado na Figura 2.23, onde o termo T (n1, m1) aparece repetido vrias
vezes. Vrios outros subproblemas se repetiro ao longo das subrvores de recurso como
CAPTULO 2. DEFINIES 44

os representados por tringulos na gura.

T(n,m)

T(n-1,m) + T(n-1,m-1) + T(n,m-1) + O(n+m)

T(n-2,m) + T(n-2,m-2) + T(n-1,m-1) + O(n-1+m) T(n-1,m-1) + T(n-1,m-2) + T(n,m-2) + O(n+m-1)

Figura 2.23: Recurso para o A timo.

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

Figura 2.24: Matriz de programao dinmica M de 7 8, |s| = 6, |t| = 7 e gap = 2.

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

ento M(0, j) = j gap. A coluna zero representa os scores entre os prexos de s e a


cadeia vazia, se a funo associa o mesmo valor gap para todo par (smbolo,espao),
ento M(i, 0) = i gap. Uma posio M[i][j] com i > 0 e j > 0 calculada segundo:

M[i 1][j] + (s[i], )
M[i][j] = max M[i 1][j 1] + (s[i], t[j])

M[i][j 1] + (, t[j])

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

Figura 2.25: Matriz de programao dinmica, aps preenchimento.

No desenvolvimento da programao dinmica, se o valor da posio M[i 1][j]


usado para obter o valor da posio M[i][j], ento dito que a posio M[i 1][j] faz
um avano vertical. Se o valor da posio M[i 1][j 1] usado para obter o valor da
posio M[i][j], ento dito que a posio M[i 1][j 1] faz um avano diagonal. Se
o valor da posio M[i][j 1] usado para obter o valor da posio M[i][j], ento dito
que a posio M[i][j 1] faz um avano horizontal. Por exemplo, se a posio M[i][j]
obtida pelo avano vertical da posio M[i 1][j] ento a ltima coluna do alinhamento
global timo dos prexos s[1, i] e t[1, j] o par (s[i], ).
Na Figura 2.26 so mostrados os possveis avanos que produzem o valor M[i][j]. Cada
avano est relacionado a um par de smbolos (a1 , a2 ) que corresponde ltima coluna
do alinhamento global timo dos prexos de s e t correspondentes.
Para conhecer o avano que produz o valor M[i][j] necessrio conhecer os valores
das 3 posies anteriores: M[i 1][j], M[i 1][j 1] e M[i][j 1]. As operaes feitas
para preencher a matriz da programao dinmica permitem recuperar o alinhamento
global timo. Assim comeando na posio M[n][m] podemos conseguir a ltima coluna
do alinhamento e avanar para uma posio anterior na matriz. Aplicando esse processo
repetidamente conseguimos chegar at a posio M[0][0] e teremos recuperado todas as
CAPTULO 2. DEFINIES 46

M[i 1][j 1] M[i 1][j]

(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.26: Avanos na programao dinmica.

colunas do alinhamento. Qualquer sequncia de avanos horizontal, vertical ou diagonal


que partindo da posio M[0][0] chegue at a posio M[n][m] representa um alinhamento
global timo entre as duas sequncias. possvel encontrar mais de uma sequncia desses
avanos, consequentemente possvel ter vrios alinhamentos que sejam timos.
Para o exemplo apresentado na Figura 2.25, na Figura 2.28 nas partes (a), (b), (c) e (d)
so mostrados os quatro alinhamentos que podem ser recuperados a partir do score(s, t) =
8 armazenado em M[6][7]. Para cada parte mostrada a matriz da programao dinmica
com os avanos encontrados e as sequncias s e t correspondentes.
Segundo a formulao da programao dinmica vista nos pargrafos anteriores, a
Figura 2.27 mostra um pseudocdigo em alto nvel do algoritmo para preencher M. Nesse
algoritmo o preenchimento da matriz feito linha por linha.
O clculo do score(s, t) pelo algoritmo da Figura 2.27 pode ser feito em tempo O(nm)
usando apenas o espao O(min(n, m)), mas a recuperao do alinhamento precisa da
matriz completa, ento o algoritmo para encontrar o alinhamento global timo de duas
sequncias usa o tempo O(mn) e o espao O(mn). Na Figura 2.29 mostrado um algo-
ritmo em alto nvel para recuperar um alinhamento global timo aps o preenchimento
da matriz da programao dinmica, esse algoritmo pode ser modicado usando recurso
para mostrar todos os alinhamentos timos.
O alinhamento global timo de duas sequncias pode ser encontrado no tempo O(nm)
e no espao O(min(n, m)) usando o algoritmo de diviso e conquista [16] proposto por
Hirschberg no ano de 1975.
CAPTULO 2. DEFINIES 47

Input: sequncias s e t, matriz M , pontuao gap, funo


Output: matriz M preenchida
1 begin
2 n |s|
3 m |t|
4 for i 0 at n do
5 M [i][0] igap
6 end
7 for j 1 at m do
8 M [0][j] jgap
9 end
10 for i 1 at n do
11 for j 1 at m do
12 M [i][j] M [i 1][j] + (s[i], )
13 M [i][j] max(M [i][j], M [i 1][j 1] + (s[i], t[j]))
14 M [i][j] max(M [i][j], M [i][j 1] + (, t[j]))
15 end
16 end
17 end

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 -12 -10 -8 0 2 4 0 -4 s a -12 -10 -8 0 2 4 0 -4


a -16 -14 -12 -4 4 6 8 4 a -16 -14 -12 -4 4 6 8 4
b -20 -12 -10 -8 0 2 4 12 b -20 -12 -10 -8 0 2 4 12
b -24 -16 -8 -12 -4 -2 0 8 b -24 -16 -8 -12 -4 -2 0 8

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 -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 -12 -10 -8 0 2 4 0 -4 s a -12 -10 -8 0 2 4 0 -4


a -16 -14 -12 -4 4 6 8 4 a -16 -14 -12 -4 4 6 8 4
b -20 -12 -10 -8 0 2 4 12 b -20 -12 -10 -8 0 2 4 12
b -24 -16 -8 -12 -4 -2 0 8 b -24 -16 -8 -12 -4 -2 0 8

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

Input: sequncias s e t, matriz M preenchida, pontuao gap, funo


Output: alinhamento A (lista de colunas)
1 begin
2 i |s|
3 j |t|
4 A lista vazia de colunas com suporte da operao de concatenao .
5 temp M [i][j]
6 while i > 0 e j > 0 do
7 if temp = M [i 1][j] + (s[i], ) then
8 A (s[i], ).A
9 temp M [i 1][j]
10 i i1
11 end
12 else if temp = M [i 1][j 1] + (s[i], t[j]) then
13 A (s[i], t[j]).A
14 temp M [i 1][j 1]
15 i i1
16 j j1
17 end
18 else if temp = M [i][j 1] + (, t[j]) then
19 A (, t[j]).A
20 temp M [i][j 1]
21 j j1
22 end
23 end
24 imprime A
25 end

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.

3.1 Construo de Thompson


Seja a expresso regular R. Se um operador de R tal que R = R1 R2 com R1 e R2 ex-
presses regulares, ento a construo do -NFA equivalente a R pode ser formulada como
a -transformao dos autmatos -NFAs equivalentes a R1 e a R2 . A -transformao
uma operao que constri um autmato baseado nos dois autmatos afetados pela

50
CAPTULO 3. CONSTRUO DO AUTMATO 51

operao . Se um operador de R tal que R = R1 com R1 expresso regular, ento


a construo do -NFA equivalente a R pode ser formulada como a -transformao do
autmato -NFA equivalente a R1 . A -transformao uma operao que constri um
autmato baseado no autmato afetado pela operao . Essas ideias podem ser aplica-
das recursivamente sobre R1 e R2 at as expresses regulares serem apenas um smbolo
do alfabeto, ou , os quais representam o caso base da recurso. Na Figura 3.1 so
mostrado os -NFAs equivalentes para esses casos base.
A recurso anterior pode ser desenvolvida de baixo para cima. Comeamos construindo
os -NFAs para as expresses regulares com 0 operadores, aps uma transformao isso
permite construir os -NFAs equivalente para as expresses regulares com 1 operador, aps
so construdos os -NFAs equivalente para as expresses regulares com 2 operadores e
assim por diante at construir a expresso regular R com nmero de operadores n < |R|.
O teorema a seguir foi apresentado por Hopcroft e Ullman [17] e corresponde ao
Teorema 2.3 desse livro. A prova que mostramos uma modicao da prova apresentada
por Hopcroft e Ullman [17]. Ns consideramos que o estado nal do autmato usado na
hiptese de induo pode ter transies saindo dele, condio necessria para a construo
melhorada formulada na Seo 3.2.

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)

Figura 3.1: Autmatos do caso base, Teorema 2.3 [17].

Induo (um ou mais operadores). Assumimos que o teorema verdadeiro para


toda expresso regular com 0, 1, ..., i 1 e i operadores. Vamos provar que o teorema
verdadeiro para uma expresso regular com i + 1 operadores. A construo de um -NFA
correspondente a i+1 operadores depende da composio dos -NFAs afetados por alguma
das trs operaes existentes na expresso regular: alternncia, concatenao ou fecho de
Kleene. Na continuao, provamos que para qualquer uma dessas operaes o teorema
verdadeiro.

Caso da alternncia, R = Ra |Rb


Pela hiptese de induo, como Ra e Rb possuem menos que i+1 operadores, ento existem
os -NFAs Ma = (Qa , a , a , qa , {fa }) e Mb = (Qb , b , b , qb , {fb}), tal que L(Ra ) = L(Ma )
CAPTULO 3. CONSTRUO DO AUTMATO 52

e L(Rb ) = L(Mb ). Assumimos que Qa e Qb so disjuntos, dado que podemos renomear


os estados para conseguir essa condio. Sejam q0 e f0 dois novos estados. Construmos
o -NFA:
M = (Qa Qb {q0 , f0 }, a b , , q0 , {f0 })
onde denida por:


(q0 , ) = {qa , qb } (i)



(q, x) = a (q, x), para q Qa \ {fa } e x a {} (ii)



(q, x) = b (q, x), para q Qb \ {fb } e x b {} (iii)
(fa , x) = a (fa , x), se x a (iv)



(fa , ) = a (fa , ) {f0 } (v)

b (fb , x), se x b



(fb , x) = (vi)

(fb , ) = b (fb , ) {f0 } (vii)
Em (i) so adicionados as transies vazias que saem de q0 . (ii) e (iii) adicionam as
transies que saem dos estados de Ma e Mb sem considerar os estados nais. (iv) e (v)
adicionam as transies que saem do estado nal de Ma : transies no-vazias e vazias
respectivamente. (vi) e (vii) adicionam as transies que saem do estado nal de Mb :
transies no-vazias e vazias respectivamente. Em (iv), (v), (vi) e (vii) considera-se
que fa e fb podem ter transies saindo, ento a (fa , x) e b (fb , x) podem no ser vazios.
Todas as transies de Ma e Mb esto presentes em M. A construo do autmato M
mostrada na Figura 3.2.

qa Ma fa
q0 f0
qb Mb fb

Figura 3.2: Caso da alternncia, R = Ra |Rb .

Qualquer sequncia de transies que partindo de q0 alcana f0 deve iniciar em qa ou


qb aps uma transio vazia. Se a sequncia de transies inicia em qa ela deve continuar
por alguma sequncia de transies em Ma at alcanar o estado fa e ento com uma
transio vazia alcanar o estado f0 . De forma similar, se a sequncia de transies inicia
em qb ela deve continuar por alguma sequncia de transies em Mb at alcanar o estado
fb e ento com uma transio vazia alcanar o estado f0 . Essas so as nicas sequncias
de transies que partindo de q0 alcanam f0 . Ento, existe uma sequncia de transies
sobre M que partindo de q0 e consumindo a cadeia x alcana f0 se e somente se existe uma
sequncia de transies sobre Ma que partindo de qa e consumindo a cadeia x alcana fa
ou existe uma sequncia de transies sobre Mb que partindo de qb e consumindo a cadeia
x alcana fb . Consequentemente L(M) = L(Ma ) L(Mb ) como desejado. 
CAPTULO 3. CONSTRUO DO AUTMATO 53

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 })

onde denida por:




(q, x) = a (q, x), para q Qa \ {fa } e x a {} (i)

a (fa , x), se x a

(fa , x) = (ii)

(fa , ) = a (fa , ) {qb } (iii)

(q, x) = b (q, x), se q Qb e x b {} (iv)

Em (i) so adicionadas as transies do autmato Ma sem considerar as transies que


saem de fa . Em (ii) so adicionadas as transies no-vazias que saem de fa . Em (iii) so
adicionadas as transies vazias que saem de fa incluindo a transio vazia que alcana
qb . Em (iv) so adicionadas as transies do autmato Mb. Observe que, se fa no possui
transies saindo, ento (ii) no adiciona transies e a (fa , ) = , logo (iii) pode ser
expressado como (fa , ) = {qb }. A construo do autmato M mostrada na Figura 3.3.


qa Ma fa qb Mb fb

Figura 3.3: Caso da concatenao, R = Ra Rb .

Qualquer sequncia de transies que partindo de qa alcana fb uma sequncia de


transies que partindo de qa e consumindo a cadeia x alcana fa , seguida por uma
transio vazia que alcana qb , seguida por uma sequncia de transies que partindo
de qb e consumindo a cadeia y alcana fb . Certamente L(M) = {xy | x L(Ma ) e
y L(Mb )}, logo L(M) = L(Ma )L(Mb ) como desejado. 

Caso do fecho de Kleene, R = Ra


Pela hiptese de induo, existe um -NFA Ma = (Qa , a , a , qa , {fa }), tal que L(Ra ) =
L(Ma ). Construmos o -NFA:

M = (Qa {q0 , f0 }, a , , q0 , {f0 })

onde denida por:




(q0 , ) = {qa , f0 } (i)

(q, x) = a (q, x), se q Qa \ {fa } e x a {} (ii)

(fa , x) = a (fa , x), se x a (iii)

(fa , ) = a (fa , ) {qa , f0 } (iv)
CAPTULO 3. CONSTRUO DO AUTMATO 54

Em (i) so adicionadas as transies vazias que saem de q0 . Em (ii) so adicionadas


as transies de Ma sem considerar as transies que saem de fa . (iii) e (iv) adi-
cionam as transies que saem de fa : transies no-vazias e vazias respectivamente.
Observe que, se fa no tem transies saindo, ento (iii) no adiciona transies e
(q0 , ) = (fa , ) = {qa , f0 }. A construo do autmato M mostrada na Figura 3.4.


q0 qa Ma fa f0

Figura 3.4: Caso da concatenao, R = Ra .

Qualquer sequncia de transies que partindo de q0 alcana f0 consiste de uma tran-


sio vazia de q0 at f0 ou de uma transio vazia de q0 at qa , seguida por algum nmero
(pode ser zero) de sequncias de transies que partindo de qa e consumindo uma cadeia
de L(Ma ) alcana fa e volta com uma transio vazia at qa , seguida por uma sequncia
de transies que partindo de qa e consumindo uma cadeia de L(Ma ) alcana fa , seguida
por uma transio vazia que alcana f0 . Certamente existe uma sequncia de transies
que partindo de q0 e consumindo uma cadeia x alcana f0 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. 
Como exemplo, vamos a construir o -NFA M equivalente expresso regular R =
C*(G|AT) sobre = {A,T,G,C}. O caso base est formado pelas expresses regulares
RA = A, RT = T, RC = C e RG = G. A Figura 3.5 mostra os autmatos MA , MT , MC e
MG equivalentes s expresses regulares do caso base.

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.

Na Figura 3.6 so mostrados os autmatos M1 , M2 e M3 equivalentes s expresses


regulares: R1 = AT, R2 = C* e R3 = G|AT, construdos a partir dos autmatos do caso
base e os padres do passo de induo.
Finalmente, concatenando os autmatos M2 e M3 construmos o autmato M para R,
dado que R = C*(G|AT) = R2 R3 . Isso mostrado na Figura 3.7.

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

Figura 3.7: Autmato da expresso regular R = C*(G|AT).

Complexidade no nmero de estados e transies


Considerando que a expresso regular R tem n smbolos, sendo:

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

Figura 3.8: Contribuio de estados e transies dos padres de Thompson.

3.2 Construo de Thompson melhorada


Quando se quer representar a mesma linguagem de uma expresso regular, o autmato
-NFA a opo mais fcil de construir. Por isso, esforos para melhorar sua construo
tornam-se importantes. Um -NFA menor conveniente para os processos que o usam
como base. Em geral, qualquer reduo no tamanho do -NFA pode causar um ganho no
tempo de execuo dos processos que o usem como entrada.
Observamos que possvel reduzir a quantidade de elementos adicionados nos passos
de induo do Teorema 3.1.1. Seja o -NFA Ma = (Qa , a , a , qa , {fa }) a partir do qual se
pretende encontrar um -NFA equivalente a Ma . Na parte (a) da Figura 3.9 apresentado
o -NFA equivalente a Ma segundo a construo clssica (Teorema 3.1.1). Uma tentativa
de construo mais compacta da operao fecho de Kleene apresentada nas partes (b) e
(c): em (b) mostrado o -NFA resultante aps adicionar dois -moves em Ma e em (c)
mostrado o -NFA resultante aps fundir os estados inicial e nal (fa qa ), nesse caso
nenhuma -move usada.
Ma Ma Ma


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.

Exemplo, -NFA Ma equivalente expresso regular Ra = (AC|AT)TA?


Na parte (a) da Figura 3.10 mostrado Ma . Uma sequncia de transies que partindo
de qa e consumindo uma cadeia x alcana fa se e somente se x {ACT, ACTA, ATT, ATTA}
CAPTULO 3. CONSTRUO DO AUTMATO 57

= 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

(b) (c) (d)

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.

Na parte (b) da Figura 3.10 mostrado o -NFA Ma , segundo a construo clssica


do Teorema 3.1.1.
Na parte (c) da Figura 3.10 mostrado o -NFA M1 segundo a construo com
dois -moves. Em M1 , uma sequncia de transies que partindo de q0 e consumindo
uma cadeia x alcana f0 se e somente se x = (uma transio vazia de q0 at f0 ) ou
x = Ax1 Ax2 ...Axj para todo j 0 tal que cada Axj L(Ma ). Ento L(M1 ) = L(Ma ).
Na parte (d) da Figura 3.10 mostrado o -NFA M2 segundo a construo sem -moves.
Em M2 , uma sequncia de transies que partindo de q0 e consumindo uma cadeia x al-
cana o estado nal q0 se e somente se x = ou x = Ax1 Ax2 ...Axj para todo j 0 tal que
cada Axj L(Ma ). Ento L(M2 ) = L(Ma ).

Exemplo, -NFA Mb equivalente expresso regular Rb = T*(AC|AT)TA?


Na parte (a) da Figura 3.11 mostrado Mb . Uma sequncia de transies que partindo de
qb e consumindo uma cadeia x alcana fb se e somente se x T*{ACT, ACTA, ATT, ATTA} =
{ACT, ACTA, ATT, ATTA, TACT, TACTA, TATT, TATTA, TTACT, TTACTA, TTATT, TTATTA, TTTACT,
TTTACTA, TTTATT, TTTATTA, TTTTACT, TTTTACTA, TTTTATT, TTTTATTA, ... }.
Na parte (b) da Figura 3.11 mostrado o -NFA Mb , segundo a construo clssica
do Teorema 3.1.1.
Na parte (c) da Figura 3.11 mostrado o -NFA M3 segundo a construo com dois
-moves. Em M3 , uma sequncia de transies que partindo de q0 e consumindo uma
cadeia x alcana f0 se e somente se x = (uma transio vazia de q0 at f0 ) ou x = T*
(uma transio vazia leva at f0 aps consumir x) ou x = T*Ax1 T*Ax2 T*...T*Axj T* para
todo j > 0 tal que cada Axj L(Mb ). Como T* 6 L(Mb ), ento L(M3 ) 6= L(Mb ).
Na parte (d) da Figura 3.11 mostrado o -NFA M4 segundo a construo sem -moves.
Em M4 , uma sequncia de transies que partindo de q0 e consumindo uma cadeia x
alcana o estado nal q0 se e somente se x = ou x = T* ou x = T*Ax1 T*Ax2 T*...T*Axj T*
para todo j > 0 tal que cada Axj L(Mb ). Como T* 6 L(Mb ), ento L(M4 ) 6= L(Mb ).
A construo de M3 e M4 no permitiu construir um -NFA que aceite L(Mb ). No
CAPTULO 3. CONSTRUO DO AUTMATO 58

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.

entanto para Ma a mesma construo bem sucedida. O elemento em Mb que atrapalha


a construo a auto-transio T do estado inicial qb . Em M3 e M4 a auto-transio T
ca compartilhada pelo estado nal com as consequncias vistas. A existncia de auto-
transies nos estados inicial ou nal dos autmatos invalida a construo proposta para o
fecho de Kleene na Figura 3.9. Em geral, a existncia de qualquer sequncia de transies
que volta para o estado inicial ou nal pode invalidar essa construo.

Definio 3.1 (Ciclo)

O estado p de um autmato chamado de estado com ciclo ou dito que possui um


ciclo se e somente se o autmato possui uma sequncia de transies que partindo
de p consegue alcanar novamente p.

Um autmato chamado de autmato ciclo se o estado inicial possui um ciclo e o


nico estado final tambm o estado inicial.

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.

3.2.1 Os padres propostos


Com a necessidade de diminuir o nmero de -moves ou estados adicionados nas cons-
trues do passo de induo do Teorema 3.1.1, propusemos trocar os casos do passo de
induo da alternncia, concatenao e fecho de Kleene por outras trs construes que
diminuem o nmero de elementos adicionados.
No passo de induo do Teorema 3.1.1, considerado apenas que os -NFAs da hiptese
possuam um estado nal nico. Observe que o passo de induo da prova apresentada
por Hopcroft e Ullman [17] requer que os estados nais dos -NFAs da hiptese tenham
CAPTULO 3. CONSTRUO DO AUTMATO 59

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.

Caso do fecho de Kleene, R = Ra (Construo melhorada)


Pela hiptese de induo o -NFA Ma = (Qa , a , a , qa , {fa }) com L(Ra ) = L(Ma ) existe.
So considerados todos os casos possveis segundo as condies: Ma ou no um
autmato ciclo e se os estados inicial e nal tm ou no tm ciclos. Se Ma no um
autmato ciclo, temos 4 casos: caso (i) qa e fa no tm ciclos; caso (ii) qa no tem ciclo
e fa tem ciclo; caso (iii) qa tem ciclo e fa no tem ciclo; caso (iv) qa e fa so distintos
e tm ciclos. O caso (v) quando Ma um autmato ciclo. A Figura 3.12 mostra as
construes para os casos (i), (ii), (iii) e (iv).

ciclo ciclo ciclo 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).

Caso (i): qa e fa no tm ciclos. Construmos:

M = (Qa \ {fa }, a , , qa , {qa })

onde denida por:




(q, x) = a (q, x), para q Qa \ {fa } e x a {} e fa / a (q, x) (i)



(q, x) = (a (q, x) \ {fa }) {qa },

para q Qa \ {fa } e x a {} e fa a (q, x)

(ii)

(qa , x) = a ({qa , fa }, x), para x a {} e fa
/ a ({qa , fa }, x) (iii)




(qa , x) = (a ({qa , fa }, x) \ {fa }) {qa },

para x a {} e fa a ({qa , fa }, x) (iv)

Em (i) e (ii) so adicionadas as transies dos estados interiores de Ma , em (i) quando


CAPTULO 3. CONSTRUO DO AUTMATO 60

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. 

Caso (ii): qa no tem ciclo e fa tem ciclo. Construmos:

M = (Qa , a , , qa , {qa })

onde denida por:



(q, x) = a (q, x), para q Qa \ {fa } e x a {} (i)
(fa , x) = a (fa , x), para x a (ii)

(fa , ) = a (fa , ) {qa } (iii)

(i) adiciona as transies dos estados de Ma sem incluir fa . As transies de fa so


adicionadas em (ii) e (iii). Em (iii) so denidas as transies vazias de fa , incluindo o
-move at qa . Nesta construo o nmero de estados foi mantido e o nmero de transies
aumentado de 1.
Como fa possui ciclo em Ma ento fa possui ciclo em M. Como qa no possui ciclo
em Ma , a nica transio que alcana qa em M a transio vazia que sai de fa . Logo,
toda sequncia de transies em M que saindo de qa alcana zero, um ou mais ciclos de
fa consome necessariamente uma cadeia de L(Ma ) e com uma transio vazia alcana o
estado nal qa . Todo ciclo em qa de M consome necessariamente uma cadeia de L(Ma ).
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 de um ciclo em qa . 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. 

Caso (iii): qa tem ciclo e fa no tem ciclo. Construmos:

M = (Qa , a , , fa , {fa })
CAPTULO 3. CONSTRUO DO AUTMATO 61

onde denida por:



(q, x) = a (q, x), para q Qa \ {fa } e x a {} (i)
(fa , x) = a (fa , x), para x a (ii)

(fa , ) = a (fa , ) {qa } (iii)

Em (i) so adicionadas as transies dos estados de Ma sem incluir fa . Em (ii) e (iii)


so adicionadas as transies de fa . Nesta construo o nmero de estados foi mantido e
o nmero de transies aumentado de 1.
Como qa possui ciclo em Ma ento qa possui ciclo em M. Como fa no possui ciclo
em Ma , a nica transio saindo de fa em M a transio vazia que alcana qa . Logo,
toda sequncia de transies em M que sai de fa e alcana zero, um ou mais ciclos de qa
consome necessariamente uma cadeia de L(Ma ) at alcanar o estado nal fa . Todo ciclo
em fa de M consome necessariamente uma cadeia de L(Ma ).
Em M, qualquer sequncia de transies que partindo de fa e consumindo uma cadeia
x alcana fa consiste de nenhuma transio se x = ou algum nmero (pode ser zero) de
ciclos em fa , seguido por um ciclo em fa . Logo, existe uma sequncia de transies que
partindo de fa e consumindo uma cadeia x alcana fa 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. 

Caso (iv): qa e fa diferentes e tm ciclos. Construmos:

M = (Qa {q0 }, a , , q0 , {q0 })

onde denida por:




(q, x) = a (q, x), para q Qa \ {fa } e x a {} (i)

a (fa , x), para x a

(fa , x) = (ii)
(fa , )
= a (fa , ) {q0 } (iii)

(q , )
0 = {qa } (iv)

Em (i) so adicionadas as transies dos estados de Ma sem incluir fa . Em (ii) e (iii)


so adicionadas as transies de fa . Em (iv) adicionado o -move do estado q0 . Nesta
construo o nmero de estados foi aumentado de 1 e o nmero de transies aumentado
de 2.
Como qa e fa possuem ciclos em Ma ento qa e fa possuem ciclos em M. A nica
transio saindo de q0 em M uma transio vazia que alcana qa . A nica transio
que alcana q0 uma transio vazia que sai de fa . Logo, toda sequncia de transies
em M que sai de q0 consome necessariamente uma cadeia de L(Ma ) at alcanar o estado
nal fa e com uma transio vazia alcanar q0 . Todos os ciclos alcanados em qa e/ou
fa esto considerados ao consumir a cadeia de L(Ma ). Todo ciclo em q0 de M consome
necessariamente uma cadeia de L(Ma ).
Em M, qualquer sequncia de transies que partindo de q0 e consumindo uma cadeia
x alcana q0 consiste de nenhuma transio se x = ou algum nmero (pode ser zero) de
CAPTULO 3. CONSTRUO DO AUTMATO 62

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. 

Caso (v): Ma um autmato ciclo. Construmos:

M = Ma

Qualquer sequncia de transies que partindo de qa e consumindo uma cadeia x al-


cana qa consiste de nenhuma transio se x = ou algum nmero (pode ser zero) de
sequncias de transies que consumindo uma cadeia de L(Ma ) alcana qa , seguida de uma
sequncia de transies que consumindo uma cadeia de L(Ma ) alcana 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. 

Caso da alternncia, R = Ra |Rb (Construo melhorada)


Pela hiptese de induo os -NFAs Ma = (Qa , a , a , qa , {fa }) com L(Ra ) = L(Ma ) e
Mb = (Qb , b , b , qb , {fb }) com L(Rb ) = L(Mb ) existem. Se for necessrio Qa e Qb so
renomeados para serem disjuntos.
So considerados todos os casos possveis segundo as condies: Ma ou no um
autmato ciclo e se os estados inicial ou nal tm ou no tm ciclo. Se Ma e Mb no so
autmatos ciclos temos 8 casos: quatro casos correspondentes a fundir ou no os estados
iniciais e mais quatro casos correspondentes a fundir ou no os estados nais. Quando
Ma ou Mb so autmatos ciclo temos 9 casos: Quatro casos quando Ma um autmato
ciclo e Mb no (eles so produzidos variando a condio de qb e fb terem ou no ciclo) e
quatro casos quando Mb um autmato ciclo e Ma no (eles so produzidos variando a
condio de qa e fa terem ou no ciclo) e mais um caso quando Ma e Mb so autmatos
ciclo. Os 9 casos quando Ma ou Mb so autmatos ciclo podem ser reduzidos aos casos
quando Ma e Mb no so autmatos ciclos, considerando o seguinte: em um autmato
ciclo o seu estado inicial e nal tem um ciclo.
A Figura 3.13 mostra as construes para os casos em que Ma e Mb no so autmatos
ciclo. Na linha (i) mostrado o padro para alternncia no caso que no existem ciclos.
Nas linhas (ii) e (iii) so mostrados os casos com apenas um ciclo na parte inicial ou
nal do autmato. Na linha (ii) o autmato Ma tem ciclos nos seus estados inicial e nal
e na linha (iii) o autmato Mb tem ciclos nos seus estados inicial e nal. Na linha (iv)
os estados iniciais e nais de ambos autmatos tm ciclos. Esses 8 padres podem ser
combinados em 4 4 = 16 casos.
Construmos o -NFA:
M = (Q, a b , , qi , {qf })
onde , Q, qi e qf so denidos para cada caso apresentado na Figura 3.13.
CAPTULO 3. CONSTRUO DO AUTMATO 63

(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

Figura 3.13: Padres para a alternncia quando Ma e Mb no so autmatos ciclo (cons-


truo melhorada).

Em M, qualquer sequncia de transies que partindo de qi alcana qf , segundo os


casos da coluna (a) da Figura 3.13, comea no estado:

(i)(a) qi = qa = qb , ou continua por alguma sequncia de transies em Ma , ou continua


por alguma sequncia de transies em Mb . Como qa e qb no possuem ciclos toda
transio que sai de qi no volta para qi .

(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 .

(iii)(a) qi = qa , ou continua por alguma sequncia de transies em Ma , ou continua por


uma transio vazia at qb seguida por alguma sequncia de transies em Mb (inclui
os ciclos em qb ).

(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

seguida, segundo os casos da coluna (b) da Figura 3.13:

(i)(b) Se a sequncia de transies seguida anteriormente pertence a Ma , ento o estado


nal fa = fb = qf alcanado. Caso contrrio o estado nal fb = qf alcanado.
Como fa e fb no possuem ciclos toda transio que entra a qf no sai mais.

(ii)(b) Se a sequncia de transies seguida anteriormente pertence a Ma , ento o estado


nal fa (inclui os ciclos em fa ) alcanado, em seguida com uma transio vazia o
estado fb = qf alcanado. Caso contrrio o estado nal fb = qf alcanado.

(iii)(b) Se a sequncia de transies seguida anteriormente pertence a Ma , ento o estado


nal fa = qf alcanado. Caso contrrio o estado nal fb (inclui os ciclos em fb )
alcanado, em seguida com uma transio vazia o estado nal fa = qf alcanado.

(iv)(b) Se a sequncia de transies seguida anteriormente pertence a Ma , ento o estado


nal fa (inclui os ciclos em fa ) alcanado, em seguida com uma transio vazia o
estado f0 = qf alcanado. Caso contrrio o estado nal fb (inclui os ciclos em fb )
alcanado, em seguida com uma transio vazia o estado nal f0 = qf alcanado.

Estas so as nicas sequncias de transies que partindo de qi alcanam qf . Todas


essas sequncias ou consomem uma cadeia de L(Ma ) ou L(Mb ). Note que, todos os ciclos
esto considerados ao consumir alguma cadeia de L(Ma ) ou L(Mb ). Ento, L(M) =
L(Ma ) L(Mb ) como desejado. 
A Figura 3.14 mostra o -NFA construdo para o caso (i)(a) - (iv)(b), estados iniciais
sem ciclo e estados nais com ciclo.

ciclo

Ma
fa
qb f0
fb
Mb

ciclo

Figura 3.14: Padro da alternncia para o caso (i)(a) - (iv)(b).

Caso da concatenao, R = Ra Rb (Construo melhorada)


Pela hiptese de induo os -NFAs Ma = (Qa , a , a , qa , {fa }) com L(Ra ) = L(Ma ) e
Mb = (Qb , b , b , qb , {fb }) com L(Rb ) = L(Mb ) existem. Se for necessrio Qa e Qb so
renomeados para serem disjuntos.
Considerando que os autmatos Ma e Mb no so autmatos ciclo, o padro da alter-
nncia resulta em dois casos. O caso (i) onde apenas fa ou qb possuem ciclo e o caso (ii)
onde fa e qb possuem ciclos.
Os casos quando Ma ou Mb so autmatos ciclo podem ser reduzidos aos casos (i) e
(ii) considerando que num autmato ciclo os estados inicial e nal possuem um ciclo. A
Figura 3.15 mostra as construes para esses dois casos.
CAPTULO 3. CONSTRUO DO AUTMATO 65

ciclo ciclo ciclo

qa fa fb qa fa qb fb
Ma Mb Ma Mb

(i) (ii)

Figura 3.15: Padres modicados para a concatenao.

Caso (i)
Segundo as construes da Figura 3.15, construmos o -NFA:

M = (Qa (Qb \ {qb }), a b , , qa , {fb })

onde denida por:



(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)

Em (i) so adicionadas as transies que saem dos estados de Ma sem incluir fa . Em


(ii) e (iii) so adicionadas as transies de fa como a unio de a (fa , x) e b (qb , x), em
(ii) no caso que qb no est em b (qb , x) e em (iii) no caso contrrio. (iv) e (v) adicionam
as transies de Mb sem incluir o estado qb .
Qualquer sequncia de transies que partindo de qa alcana fb uma sequncia de
transies que partindo de qa e consumindo a cadeia x alcana fa , seguida por uma sequn-
cia de transies que partindo de qb e consumindo a cadeia y alcana fb . Note que todos
os ciclos esto considerados ao consumir alguma cadeia de L(Ma ) ou L(Mb ). Certamente
L(M) = {xy | x L(Ma ) e y L(Mb )}, logo L(M) = L(Ma )L(Mb ) como desejado. 

Caso (ii)
Corresponde a construo clssica da alternncia do Teorema 3.1.1.

Padres para os operadores + e ?


Para obter maior expressividade na construo de expresses regulares usualmente so
includos os operadores + e ?. Dada a expresso regular Ra , Ra + = Ra Ra denota uma
ou mais repeties de Ra e Ra ? = |Ra denota zero ou uma ocorrncia de Ra .
A Figura 3.16 mostra o padro para Ra +. O autmato construdo adicionando um
-move em Ma . Ainda que os estados envolvidos na construo tenham ciclos, o autmato
CAPTULO 3. CONSTRUO DO AUTMATO 66

construdo representa corretamente a linguagem L(Ra +).

qa fa
Ma

Figura 3.16: Construo do -NFA equivalente a Ra +.

A Figura 3.17 mostra o padro para Ra ?. Nesse padro necessrio considerar 5


casos segundo a existncia ou no de ciclos nos estados envolvidos na construo. (i) o
autmato base no tem ciclos no estado inicial nem no estado nal. (ii) o autmato base
tem ciclo apenas no seu estado nal. (iii) o autmato base tem ciclo apenas no seu estado
de incio. (iv) os estados inicial e nal so diferentes e tm ciclos. (v) os estados inicial e
nal so o mesmo estado.

ciclo ciclo ciclo ciclo

qa fa qa fa qa fa qa fa Ma
Ma Ma Ma Ma


qa
f0 q0 q0 f0

(i) (ii) (iii) (iv) (v)

Figura 3.17: Construo do -NFA equivalente a Ra ?.

3.2.2 Ciclos de transies vazias


Ao usar as construes para o fecho de Kleene, especicamente o padro do caso (i),
o autmato reduzido em tamanho, depois de se fundir o estado inicial e nal. Ao
fundir-se um ou mais estados observamos que o autmato resultante pode possuir ciclos
de transies vazias que permitem simplic-lo levando em considerao o seguinte:

1. Ciclo de -moves com 1 estado. Auto-transies vazias podem ser apagadas.

2. Ciclo de -moves com 2 estados. Se existe uma transio vazia do estado p at


o estado q e vice-versa, ento os estados p e q podem ser fundidos. Por exemplo na
Figura 3.18 mostra-se nas partes (b) e (d) o caso em que os ciclos de -moves com 2
estados das partes (a) e (c) foram fundidos.

3. Ciclo de -moves com n estados. Partindo do estado p, uma sequncia de n


transies vazias permite alcanar p, se essa sequncia existe chamada de ciclo de
-moves. Todos os estados de um ciclo de -moves formado por dois ou mais estados
podem ser fundidos.
CAPTULO 3. CONSTRUO DO AUTMATO 67

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.

A Figura 3.20 mostra o -NFA para ((ATT*)*|T|(AGG*)*)* usando os padres cls-


sicos da construo de Thompson. O -NFA construdo tem 28 estados e 39 transies
das quais 32 so -moves. Comparativamente o autmato equivalente mostrado na linha
CAPTULO 3. CONSTRUO DO AUTMATO 68

(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

Figura 3.20: -NFA para ((ATT*)*|T|(AGG*)*)* segundo a construo clssica de


Thompson.

Exemplos do caso de ciclos de -moves com n estados so mostrados na Figura 3.21.


Os estados que pertencem ao ciclo de -moves foram coloridos na cor cinza. Todos os
estados do ciclo de -moves podem fundir-se em um estado s. Na parte (a) mostrado
o -NFA da expresso regular (A*C*)*, ele possui um ciclo de -moves com 3 estados.
Na parte (b) mostrado o -NFA da expresso regular (A*C*T*)*, ele possui um ci-
clo de -moves com 4 estados. Na parte (c) mostrado o -NFA da expresso regular
(A*(A*TTAC*)*T*(T(TG*A)*A)*)*, ele possui um ciclo de -moves com 5 estados.

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.

Complexidade no nmero de estados e transies


Seja a expresso regular R com n smbolos, com n = n + n| + n + n( + n+ + n? , onde:
CAPTULO 3. CONSTRUO DO AUTMATO 69

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 ?.

A operao de concatenao no tem operador visvel na expresso regular, se consi-


deramos como nC o nmero de vezes que a concatenao aplicada, ento temos que:
0 nC n . Observe que os parnteses no contribuem nem com estados, nem com
transies. A Tabela 3.1 mostra a contribuio de estados e transies do padro de
Thompson clssico comparativamente com o padro melhorado. O padro melhorado
tem padres diferenciados para o melhor e pior caso.

Tabela 3.1: Contribuio de estados (E) e transies (T) na construo de Thompson.


Thompson clssico Thompson melhorado
E T melhor caso E T pior caso E T
+2 +1 +2 +1 +2 +1 n

+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?

Considerando que E o nmero de estados e T o nmero de transies no -NFA


equivalente e incluindo na anlise de complexidade os operadores + e ?, para a construo
de Thompson clssica temos:

E = 2n + 2n| + 2n + 2n+ + 2n?

Para as transies, temos que:

T = n + 4n| + nC + 4n + 3n+ + 3n?

Como, 0 nC n , ento:

n + 4n| + 4n + 3n+ + 3n? T 2n + 4n| + 4n + 3n+ + 3n?


Para a construo de Thompson melhorada temos:
CAPTULO 3. CONSTRUO DO AUTMATO 70

2n 2n| nC 2n E

em seguida, como 0 nC n , substituindo nC = n para o melhor caso:

n 2n| 2n E

aumentando a desigualdade do pior caso temos que:

n 2n| 2n E 2n + 2n| + n + 2n?


Para as transies, temos que:

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:

Thompson E = 2n + 2n| + 2n + 2n+ + 2n?


Clssico n + 4n| + 4n + 3n+ + 3n? T 2n + 4n| + 4n + 3n+ + 3n?
Thompson n 2n| 2n E 2n + 2n| + n + 2n?
Melhorado n + n+ T 2n + 4n| + 2n + n+ + n?

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)

Figura 3.22: -NFAs equivalentes a R = (A|T)(A|T|C|G)?(A|T|C|G)?CG.


CAPTULO 3. CONSTRUO DO AUTMATO 71

Tabela 3.2: Valores comparativos da construo do -free NFA.


Construo Construo
clssico melhorado
Expresso Regular -NFA NFA -NFA NFA
Estados 12 12 3 3
C*(G|AT) Transies 14 42 4 4
-moves 10 0 0 0
Estados 20 20 4 4
A(C|G)*A*(C|T) Transies 25 278 7 12
-moves 19 0 1 0
Estados 42 42 6 6
(A|T)(A|T|C|G)?(A|T|C|G)?CG Transies 50 858 14 22
-moves 38 0 2 0
Estados 38 38 8 8
(A|T)A(A|T)(A|T)(A|T)(A|T)(A|T) Transies 43 228 13 13
-moves 30 0 0 0
Estados 34 34 6 6
(A|T)*A(A|T)(A|T)(A|T)(A|T) Transies 40 258 11 11
-moves 29 0 0 0
Estados 28 38 5 5
((ATT*)*|T|(AGG*)*)* Transies 39 471 9 16
-moves 32 0 2 0
Estados 36 36 13 13
A*AA(A*|T*)|TTTT(CAA)* Transies 45 138 18 25
-moves 33 0 6 0
Estados 42 42 7 7
(A*(A*TTAC*)*T*(T(TG*A)*A)*)* Transies 59 992 14 26
-moves 47 0 2 0

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

Figura 3.23: Sequncia polipeptdica mostrando o N-terminal e C-terminal [28].

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].

3.3.1 Sintaxe de padres


Cada posio de um padro pode ser ocupada por qualquer aminocido de um conjunto
especco de aminocidos que so aceitveis nessa posio (aminocidos aceitveis), que
pode ser repetido um nmero varivel de vezes entre um intervalo especco. Em posies
estritamente conservadas apenas um aminocido aceitvel, no entanto em outras posies
vrios aminocidos com propriedades fsico-qumicas similares podem ser aceitos. Tambm
possvel denir qual ou quais aminocidos so incompatveis com uma posio dada.
Um wildcard uma posio que aceita qualquer aminocido. Regies conservadas podem
estar separadas por uma sucesso de wildcards de comprimento varivel. Adicionalmente
a sintaxe permite ancorar o padro no incio ou no nal da protena [32]. Os padres so
descritos usando as seguintes convenes [27]:

1. O padro uma sequncia de elementos, cada elemento separado do seu vizinho


por um hfen -. Um elemento chamado de simples se ele representa apenas uma
posio na protena e chamado de composto se ele representa vrias posies na
protena.

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.

3. O smbolo x representa um elemento simples na posio onde qualquer aminocido


aceitvel (wildcard).
CAPTULO 3. CONSTRUO DO AUTMATO 73

Tabela 3.3: Nomenclatura IUPAC de 1 letra para aminocidos.


IUPAC Nome Nome IUPAC Nome Nome
Letra Curto Completo Letra Curto Completo
A Ala Alanine M Met Methionine
C Cys Cysteine N Asn Asparagine
D Asp Aspartic acid P Pro Proline
E Glu Glutamic acid Q Gln Glutamine
F Phe Phenylalanine R Arg Arginine
G Gly Glycine S Ser Serine
H His Histidine T Thr Threonine
I Ile Isoleucine V Val Valine
K Lys Lysine W Trp Tryptophan
L Leu Leucine Y Tyr Tyrosine

4. Uma lista de aminocidos entre colchetes [] representa um elemento simples na po-


sio onde qualquer aminocido da lista aceitvel. Por exemplo: [ALT] representa
Ala ou Leu ou T hr.

5. Uma lista de aminocidos entre chaves {} representa um elemento simples na posio


onde qualquer aminocido da lista no aceitvel (ou incompatvel). Por exemplo:
{AM} representa qualquer aminocido exceto Ala ou Met.

6. Um elemento composto formado pela repetio de um elemento simples. A re-


petio de um elemento simples indicada pela adio do nmero de vezes que
ser repetido entre parntesis. Apenas no caso do elemento x a repetio pode ser
indicada por um intervalo numrico entre parnteses. Exemplos:

x(3) corresponde a x-x-x,


x(2, 4) corresponde a x-x ou x-x-x ou x-x-x-x.
A(3) corresponde a A-A-A,
A(2, 4) no vlido.

7. Quando o padro est restrito ao incio ou ao nal da protena por N-terminal ou


C-terminal, o padro ou comea com o smbolo < ou termina com o smbolo > res-
pectivamente. O smbolo > pode tambm ocorrer dentro de colchetes. Por exemplo,
F-[GSTV]-P-R-L-[G>] signica ou F-[GSTV]-P-R-L-G ou F-[GSTV]-P-R-L->.

8. Intervalos do elemento x no podem estar nas extremidades do padro exceto quando


esto limitadas por N-terminal ou C-terminal. Por exemplo:

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:

1. Para todo elemento simples representado por , construmos a expresso regular


R formada pelo smbolo .

2. Chaves e colchetes determinam um conjunto C de aminocidos aceitveis nessa po-


sio. Para um elemento que usa chaves ou colchetes na sua representao, cons-
trumos a expresso regular RC formada pela alternncia de todos os aminocidos
que pertencem a C.

3. Para o elemento x, construmos a expresso regular Rx formada pela alternncia de


todos os aminocidos.

4. Para uma expresso regular R, denotamos a expresso regular Rk como a concate-


| {z }, k vezes.
nao RR...R

5. Para k repeties de um elemento simples representado por , construmos a


expresso regular Rk .

6. Para k repeties de um elemento que usa chaves ou colchetes na sua representao,


construmos a expresso regular RkC .

7. Para x(k) construmos a expresso regular Rkx .

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).

Seja P = P[1]-P[2]-...-P[m] um padro PROSITE com m elementos. As construes


anteriores permitem construir uma expresso regular para qualquer elemento P[i], ento o
padro PROSITE completo a concatenao dessas expresses regulares pela substituio
do smbolo - pelo operador de concatenao. 

3.3.2 -NFA equivalente a R e Rk


A construo de Thompson permite obter os -NFAs equivalentes a R e Rk . Na Fi-
gura 3.24 na coluna (a) mostram-se os -NFAs equivalentes a R = V e na coluna (b) os
-NFAs equivalentes a R5 = VVVVV. Na linha (i) est a construo clssica e na linha (ii)
a construo melhorada. fcil ver que o exemplo para R5 pode ser generalizado para
qualquer valor de k.
CAPTULO 3. CONSTRUO DO AUTMATO 75

(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.

3.3.3 -NFA equivalente a Rx e Rkx


Se consideramos que o alfabeto est formado apenas pelo conjunto de aminocidos,
ento Rx = A|C|D|E|F|G|H|I|K|L|M|N|P|Q|R|S|T|V|W|Y e || = 20. Na Figura 3.25
mostrado o -NFA equivalente a Rx obtido pela construo clssica de Thompson. O
-NFA obtido possui 78 estados, com 96 transies das quais 76 so -moves. O -NFA
equivalente a Rkx pode ser obtido por k 1 concatenaes do -NFA obtido para Rx .
Considerando k = 4 o -NFA equivalente para R4x obtido pela construo clssica teria
312 estados, com 387 transies das quais 307 so -moves. Ao obter os -free NFA para
os -NFAs de Rx e R4x pelo algoritmo da Seo 2.2.5 obtm-se NFAs com 3269 e 127502
transies respectivamente. Os nmeros de estados so mantidos em cada caso. Note
quo grande cou o nmero de transies para apenas 4 repeties de Rx .
A
C
D
E
F
G

H
I
K
L
M
N
P
Q
R
S
T
V
W
Y

Figura 3.25: -NFA equivalente a x produzido pela construo clssica de Thompson.

A expresso regular Rx usa || smbolos do alfabeto, mais (|| 1) smbolos |. Na


construo clssica de Thompson, cada smbolo do alfabeto produz um autmato base de
2 estados e 1 transio, dando um total de 2|| estados e || transies neles. Em seguida,
cada alternncia aplicada, adicionando 2 estados e 4 -moves a cada vez, adicionando
um total de (2|| 2) estados e (4|| 4) -moves. Assim o autmato equivalente a Rx
possui (4|| 2) estados e (5|| 4) transies das quais (4|| 4) so -moves. Da
mesma maneira a expresso regular Rx Rx Rx Rx construda por 4 autmatos Rx ligados
por 3 -moves, dando um total de (16|| 8) estados e (20|| 13) transies das quais
(16|| 13) so -moves.
Usando a construo melhorada de Thompson consegue-se uma representao bem
mais compacta dos -NFAs para Rx e R4x tal como mostrado na Figura 3.26 nas partes
(a) e (b) respectivamente. O -NFA equivalente a x obtido possui 2 estados, 20 transies
CAPTULO 3. CONSTRUO DO AUTMATO 76

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).

Para Rx , na construo melhorada, cada smbolo do alfabeto produz um autmato


base de 2 estados e 1 transio, dando um total de 2|| estados e || transies neles.
Em seguida, cada alternncia aplicada. Como no existem ciclos, a cada vez que a
alternncia aplicada so fundidos os estados inicias e os estados nais respectivamente,
produzindo 2 estados a menos nas contas de estados totais, nenhuma transio adicio-
nada. Ento, o total de estados (2|| 2(|| 1)) = 2 estados e o total de transies
||, sem -moves. Da mesma maneira Rx Rx Rx Rx construda concatenando 4 aut-
matos Rx . Como no existem ciclos, em cada concatenao apagado um estado, dando
um total de 4 2 3 = 5 estados e 4|| transies, sem -moves.

3.3.4 -NFA equivalente a RC e RkC


Na construo do -NFA equivalente a RC , a construo clssica de Thompson segue
as mesmas ideias usadas para Rx , mas o nmero de elementos do conjunto agora |C|.
Ento o -NFA equivalente a RC possui (4|C| 2) estados e (5|C| 4) transies das quais
(4|C| 4) so -moves. Da mesma maneira a expresso regular RkC construda por k
-NFAs equivalentes a RC ligados por (k 1) -moves, dando um total de (4k|C| 2k)
estados e (5k|C| 3k 1) transies das quais (4k|C| 3k 1) so -moves.
Na construo melhorada para RC o total de estados 2 e o total de transies |C|,
sem -moves. E para k repeties de RC , o autmato construdo tem (k + 1) estados e
k|C| transies, sem -moves.
A Tabela 3.4 mostra o nmero de estados e transies para diversos elementos PRO-
SITE, obtidos pelas construes de Thompson clssica e melhorada com || = 20. Note
que para o caso de um aminocido |C| = 1, para o caso de x temos que C = e para o
caso dos elementos que usam listas de aminocidos entre chaves ou colchetes C .
Para todos os casos mostrados na Tabela 3.4 a construo melhorada de Thompson
consegue construir um -free NFA, e alm disso, o nmero de estados e transies no
-free NFA construdo menor que o -NFA da construo clssica.
CAPTULO 3. CONSTRUO DO AUTMATO 77

Tabela 3.4: Nmero de estados e transies de -NFAs equivalentes a diversos elementos


PROSITE, pela construo de Thompson clssica e melhorada.
Thompson clssico Thompson melhorado
Estados Transies Estados Transies
Elemento k |C| 4k|C| 2n 5k|C| 3k 1 4k|C| 3k 1 k+1 k|C| 0
V 1 1 2 1 0 2 1 0
V(5) 5 1 10 9 4 6 5 0
x 1 20 78 96 76 2 20 0
x(4) 4 20 312 387 307 5 80 0
[AC] 1 2 6 6 4 2 2 0
[AC](5) 5 2 30 34 24 6 10 0
{ED} 1 18 70 86 68 2 18 0
{ED}(7) 7 18 90 608 482 8 126 0

3.3.5 -NFA equivalente a x(k, l)


O elemento PROSITE x(k, l) pode ser representado pela composio x(k)-x(0, l k). Na
prova da Proposio 3.3.1 foi construda a expresso regular equivalente Rkx (Rx ?)lk . O
-NFA equivalente a x(k) j foi construdo anteriormente. Nesta parte vamos construir
um -free NFA para x(0, l k).
O elemento x(0, l k) pode ser representado por vrias expresses regulares, nesta
parte vamos estudar a complexidade no nmero de estados e transies do -free NFA
equivalente a quatro representaes. Uma dessas ser usada na construo nal por
possuir nmero linear de estados e transies.
Para maior simplicidade na representao vamos considerar Rx = x. Para l k = 4,
construmos s expresses regulares:

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).

Na Figura 3.27 so mostrados os -NFAs equivalentes a R1 , R2 , R3 e R4 nas partes (a),


(b), (c) e (d) respectivamente, obtidos pela construo de Thompson clssica. O autmato
x representado pela elipse anotada com x, ele possui 78 estados e 96 transies como foi
mostrado na Tabela 3.4.
x x x x

(a)



x x x x
x x x

x x

x
(b)



x x
x x
x
x

x
(c)


x

x
x
x
x
x

x
(d)

Figura 3.27: -NFAs: (a) equivalente a x?x?x?x?, (b) equivalente a (xxxx|xxx|xx|x)?,


(c) equivalente a (((xx|x)x|x)x|x)?, (d) equivalente a (x|x(x|x(x|xx)))?. Autmatos
obtidos pela construo clssica de Thompson.

O -NFA Mx equivalente a x obtido pela construo de Thompson melhorada pos-


sui dois estados sem ciclos e || transies e ele um -free NFA. Na Figura 3.28 so
mostradas duas representaes para Mx , (a) representao completa e (b) representao
cannica onde a transio anotada com representa || transies no-vazias, uma para
cada smbolo do alfabeto.
Na Figura 3.29 mostram-se os -NFAs equivalentes a R1 , R2 , R3 e R4 obtidos pela
construo melhorada de Thompson. Como os -NFAs construdos possuem -moves
necessrio usar o algoritmo da Seo 2.2.5 para encontrar um -free NFA equivalente. Na
gura so mostrados tambm os -free NFA obtidos para cada caso. Em todos os casos
os -free NFA obtidos possuem dois estados nais. O algoritmo adicionou o estado inicial
como estado nal para aceitar a cadeia vazia.
As ideias usadas para construir R1 , R2 , R3 e R4 podem ser estendidas para diferentes
valores de l k. Na Tabela 3.5 so mostrados os nmeros de estados e transies dos
-free NFAs obtidos pelo algoritmo da Seo 2.2.5 ao ser aplicado sobre os -NFAs obtidos
pela construo melhorada de Thompson equivalentes a diversas expresses regulares
construdas de forma similar a R1 , R2 , R3 e R4 para diversos valores de l k. Observa-se
CAPTULO 3. CONSTRUO DO AUTMATO 79

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)

Figura 3.28: -NFAs equivalentes a x obtido pela construo melhorada de Thompson,


(a) Representao completa. (b) Representao cannica.
-NFA -free NFA




R1






R2





R3





R4



Figura 3.29: -NFAs e -free NFAs equivalentes a R1 , R2 , R3 e R4 obtidos pela construo


melhorada de Thompson.

que o nmero de estados e transies dos autmatos construdos para os tipos R3 e R4


so similares, pela construo na fatorao, um o reexo do outro.
Na Figura 3.30 se mostra gracamente a variao do nmero de estados e transies
respeito a l k para os -free NFA obtidos com expresses regulares do tipo R1 na parte
(a), do tipo R2 na parte (b) e do tipos R3 e R4 com contas similares na parte (c).
Comparativamente observamos que a construo das expresses regulares do tipo R3 e
R4 possuem um nmero linear de estados e transies respeito com l k.
O -free NFA equivalente a x(0, l k) tambm pode ser construdo a partir das expres-
ses regulares do tipo R1 usando o algoritmo apresentado por Hromkovic et al. [20] ou o
algoritmo de Schnitger [30]. A expresso regular do tipo R1 para o caso x(0, l k) possui
CAPTULO 3. CONSTRUO DO AUTMATO 80

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||

300 300 300

250 250 250

200 200 200

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)

Figura 3.30: Grco do nmero de estados e transies em funo de l k para diversos


-free NFAs equivalentes s expresses regulares: (a) tipo R1, (b) tipo R2 e (c) tipo R3
similar ao tipo R4 .

(l k) vezes os smbolos de x mais 4 smbolos ?. O elemento x representado por uma


expresso regular com (2|| + 1) smbolos incluindo os smbolos |, ( e ). Consequente-
mente, R1 possui (l k)(2|| + 1) + 4 = O(||(l k)) smbolos. O algoritmo apresentado
por Hromkovic et al. permite encontrar um -free NFA com O(||(l k) log2 (||(l k)))
transies e o algoritmo apresentado por Schnitger permite encontrar um -free NFA com
O(||(l k) log || log(||(l k))) transies. Os nmeros de transies obtidos usando
as construes de Hromkovic et al. e Schnitger so maiores aos resultados das expresses
regulares do tipo R3 com a construo proposta. Como as expresses regulares do tipo
R3 possuem mais smbolos que suas correspondentes do tipo R1 , us-las nas construes
de Hromkovic et al. e Schnitger produziria -free NFAs maiores.

3.3.6 -NFA equivalente a y-x(0, l k)


Os -NFAs equivalentes a x(0, lk) obtidos pela construo melhorada de Thompson sobre
as expresses regulares do tipo R3 e R4 so os mais compactos. Eles possuem um -move,
e ao aplicar o algoritmo da Seo 2.2.5 os -free NFAs obtidos possuem dois estados
nais. Para todos os elementos PROSITE diferentes a x(0, l k), o algoritmo melhorado
de Thompson conseguiu gerar diretamente um -free NFA. Nesta parte conseguimos o
mesmo para y-x(0, l k) o que suciente para construir um -free NFA para o padro
PROSITE completo usando apenas o algoritmo melhorado de Thompson.
CAPTULO 3. CONSTRUO DO AUTMATO 81

No -NFA construdo pelo algoritmo melhorado para a R3 , o -move consequncia


de que x(0, l k) aceita a cadeia vazia. Para aceitar a cadeia vazia, o operador ? adi-
cionado nas expresses regulares do tipo R3 . Se consideramos a expresso regular sem ?
((((x)x|x)x|x)x|x), essa expresso regular no aceita a cadeia vazia e a construo melho-
rada de Thompson obtm diretamente um -free NFA. ((((x)x|x)x|x)x|x) equivalente a
x(1, 4).
Pela denio dos padres PROSITE o termo x(0, l k) nunca pode ser o comeo de
uma sequncia, ento existe um termo y com |y| = 1 esquerda de x(0, l k). Esse termo
y pode ser usado para retirar o operador ? na construo da expresso regular.
Considerando que a expresso regular equivalente a y y, para y-x(0, lk) construmos
expresso regular yz|y, onde z a expresso regular equivalente a x(1, l k). z pode ser
obtida seguindo as mesmas ideias da expresso regular do tipo R3 , tal como mostrado
na Tabela 3.6.

Tabela 3.6: Expresses regulares para y-x(0, l k), usando R3


lk z y-x(0, l k) yz|y
1 (x) y(x)|y
2 ((x)x|x) y((x)x|x)|y
3 (((x)x|x)x|x) y(((x)x|x)x|x)|y
4 ((((x)x|x)x|x)x|x) y((((x)x|x)x|x)x|x)|y
5 (((((x)x|x)x|x)x|x)x|x) y(((((x)x|x)x|x)x|x)x|x)|y
6 ((((((x)x|x)x|x)x|x)x|x)x|x) y((((((x)x|x)x|x)x|x)x|x)x|x)|y
7 (((((((x)x|x)x|x)x|x)x|x)x|x)x|x) y(((((((x)x|x)x|x)x|x)x|x)x|x)x|x)|y
8 ((((((((x)x|x)x|x)x|x)x|x)x|x)x|x)x|x) y((((((((x)x|x)x|x)x|x)x|x)x|x)x|x)x|x)|y

Da mesma maneira, z poderia ser obtido seguindo as mesmas ideias da expresso


regular do tipo R4 .
Considerando que y representa um aminocido que pode ser escolhido de um conjunto
C de aminocidos, na Figura 3.31 so mostrados os -free NFAs equivalente a y-x(0, l k)
para diversos valores de l k, obtidos pela construo melhorada de Thompson. As
transies anotadas com C representam |C| transies, uma para cada aminocido contido
em C.

3.3.7 Exemplos de -free NFAs equivalentes a padres PROSITE


Na Figura 3.32 mostrado o padro PROSITE PS00315 com 23 elementos simples, a
correspondente expresso regular equivalente com 777 smbolos e o -free NFA equivalente
obtido pela construo melhorada de Thompson com 24 estados e 365 transies. Se
usarmos a construo clssica de Thompson seria obtido um -NFA com 1414 estados e
1765 transies das quais 1390 seriam -moves.
Na Figura 3.33 mostrado o padro PROSITE PS00720 com 51 elementos simples, a
correspondente expresso regular equivalente com 2683 smbolos e o -free NFA equiva-
lente obtido pela construo melhorada de Thompson com 52 estados e 1275 transies.
Se usarmos a construo clssica de Thompson seria obtido um -NFA com 4998 estados
e 6221 transies das quais 4946 seriam -moves.
CAPTULO 3. CONSTRUO DO AUTMATO 82

C

y-x(0, 1)
C
C

y-x(0, 2) C

C

y-x(0, 3)
C


y-x(0, 4) C

Figura 3.31: -free NFAs equivalente a y-x(0, l k) para diversos valores de l k.

Expresso regular (777 smbolos):


SSSS(S|D)(D|E)(A|C|D|E|F|G|H|I|K|L|M|N|P|Q|R|S|T|V|W|Y)(D|E)(G|V|E)((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|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|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|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|C|D|E|F|G|H|I|K|L|M|N|P|Q|R|S|T|V|W|Y))((G|E)((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)
)|(G|E))(K|R)(K|R)(K|R)(K|R)

-free NFA (24 estados e 365 transies):





E K K K K
E G R R R R
D D D G

S S S S S E E V
E G

S(4)-[SD]-[DE]-x-[DE]-[GVE]-x(1,7)-[GE]-x(0,2)-[KR](4)
Figura 3.32: Expresso regular e -free NFA equivalente ao padro PROSITE PS00315.

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.

Complexidade no nmero de estados e transies


Seja o padro PROSITE P = P[1]-P[2]-...-P[m] com m elementos (simples e compostos).
Considerando que |P| representa o nmero de elementos simples em P, ento |P| m,
dado que um elemento P[i] pode ter repeties ou intervalos. A existncia de intervalos
implica que o nmero de elementos simples no padro PROSITE varivel. Considerando
CAPTULO 3. CONSTRUO DO AUTMATO 83

Expresso regular (2683 smbolos):


(V|I)P(F|Y|W|V|I)(A|C|D|E|F|G|H|I|K|L|M|N|P|Q|R|S|T|V|W|Y)(G|P|S|V)(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)(L|I|V|M|F|Y|K)(A|C|D|E|F|G|H|I|K|L|M|N|P|Q|R|S|T|V|W|Y)(D|N|E)(L
|I|V|M)(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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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|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
|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|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))(I|V|L)N(F|Y|M|E)(A|C|D|E|F|G|H|I|K|L|M|N|P|Q|R|S|T
|V|W|Y)K

-free NFA (52 estados e 1275 transies):





( 








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.

Na Tabela 3.4 so mostrados os nmeros de transies dos -free NFAs obtidos. Em


todos esses casos, o nmero de transies para o termo P[i] ni C ni . Na Figura 3.31
mostrado que o nmero de transies do -free NFA equivalente a y-x(0, l k) com
CAPTULO 3. CONSTRUO DO AUTMATO 85

|y-x(0, l k)| l k + 1 2(l k)|| + 2|C| 2(l k + 1)||. Considerando as m 1


concatenaes dos m elementos de P e que o algoritmo melhorado de Thompson no
adiciona novas transies, ento o nmero de transies do -free NFA equivalente a P
P
menor ou igual que m 1 (2(ni )||) = 2n|| = O(n||).
A construo melhorada de Thompson aplicada sobre a expresso regular proposta
permite obter um -free NFA diretamente em tempo linear, e ademais o -free NFA ob-
tido tem nmero linear de estados em relao a n e nmero sublinear de estado em relao
ao nmero de smbolos O(n||) da expresso regular, tal como pode ser observado na Ta-
bela 3.7 nas colunas anotadas como |P| , |R| e E, onde se observa que o padro
PROSITE PS01254 com um nmero mximo de 121 elementos simples possui uma expres-
so regular equivalente com 4745 smbolos e um -free NFA equivalente com 122 estados.
O nmero de transies obtido O(n||).
Na Tabela 3.7 mostrado o detalhe em nmeros dos 20 padres PROSITE mais
longos, de um total de 1294 processados. No processo, foi calculada a expresso regular,
o -NFA pela construo de Thompson melhorada que gerou diretamente um -free NFA,
em seguida usando os algoritmos clssicos so construdos o DFA equivalente e DFA
mnimo equivalente aos -free NFA obtidos. Os tempos de cada processo so mostrados
em milissegundos. |P| o tamanho mximo do padro PROSITE, |R| o tamanho das
expresses regulares construdas, E nmero de estados, T o nmero de transies,
e o nmero de -moves. No processo foi usado o alfabeto , com || = 20. Para
o processamento foi usado um computador com processador INTEL CORE I5 com 6
Gb de memria RAM. Para as sequncias P S01359 e P S01208, mostrado NC, para
indicar que o autmato no foi calculado. Nesses casos o clculo do DFA foi interrompido
por levar mais de uma hora de processamento. No entanto o algoritmo melhorado de
Thompson conseguiu encontrar para todos os casos um -free NFA.
Os -free NFA com maior nmero de transies so mostrados na Tabela 3.8. Os
DFAs com maior nmero de transies so mostrados na Tabela 3.9. Os DFAs com maior
nmero de transies depois de serem minimizados, so mostrados na Tabela 3.10.
CAPTULO 3. CONSTRUO DO AUTMATO 86

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

No ano de 2005, Arslan [3, 4] props o problema e um algoritmo para o alinhamento


de duas sequncias restrito por expresso regular chamado RECSA (Regular Expression
Constrained Sequence Alignment). Essa soluo est baseada na programao dinmica
de Needleman e Wunsh [26] e em um NFA produto que usado para vericar a restrio
ao longo do processo.
Banco de dados, como o PROSITE, armazenam listas de padres que caracterizam
famlias e domnios de protenas. Padres PROSITE podem ser representados por ex-
presses regulares tal como foi visto na Seo 3.3. Padres PROSITE podem ser usados
como restrio no alinhamento restrito de Arslan.
Neste trabalho abordamos o problema do alinhamento de duas sequncias restrito por
expresso regular usando padres PROSITE como a restrio. Os -free NFA equivalentes
a uma sequncia de PROSITE estudados na Seo 3.3 so usados para melhorar o algo-
ritmo de Arslan [3]. No caso de usar como restrio um padro de PROSITE, o algoritmo
proposto tambm melhor que os algoritmos propostos por Chung et al. [10] no ano de
2007 e por Kucherov et al. [23] no ano de 2011.
Este captulo est dividido em quatro partes. Na Seo 4.1, denimos o alinhamento
restrito por expresso regular. Na Seo 4.2, denimos o NFA produto a partir de um
NFA base, descrevemos e relacionamos a computao no NFA base e a computao no
NFA produto, estudamos as linguagens representadas por esses NFAs e relacionamos a
programao dinmica do alinhamento timo com a computao no NFA produto. Na
Seo 4.3, apresentamos o algoritmo de Arslan [4]. Na Seo 4.4, apresentamos nossa
soluo para o alinhamento restrito denido por Arslan usando padres PROSITE, na
Seo 4.4.1 a soluo direta usando os resultados do Captulo 2 e na Seo 4.4.2 a soluo
melhorada usando um pr-processamento.

4.1 Alinhamento restrito por expresso regular


Definio 4.1 (Funo remove espaos: ). Definimos a funo : ( )
como a funo que remove todos os espaos de uma sequncia.

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).

Quando s e t estiverem claras pelo contexto, usaremos apenas AR por AR (s, t) e da


mesma forma denotaremos o tamanho do alinhamento por |AR (s, t)| ou |AR| e a coluna
i por AR[i].
As sequncias s = ALHHCHAGLHHHHALGKMP e t = AGLHHHHHCHALGHKRPGMKP so alinha-
das na Figura 4.1 usando a funo de pontuao de coluna que d o valor 4 para um
match, -2 para um mismatch e -1 para um gap. A parte (a) mostra o A timo delas com
14 coincidncias. Na parte (b) mostrado o AR com 11 coincidncias. Note que, segundo
a Denio 4.2, o AR um alinhamento com pontuao mxima. A restrio usada
a expresso regular R = HCHxxxHxxx(A|G)(L|M), equivalente ao padro de PROSITE
P S00080 = H-C-H-x(3)-H-x(3)-[AG]-[LM]. O elemento x(3) representado pela con-
catenao xxx onde x = A|C|D|E|F|G|H|I|K|L|M|N|P|Q|R|S|T|V|W|Y. Note que x
uma expresso regular que representa um smbolo qualquer do alfabeto de aminocidos.
Para que o alinhamento AR exista, necessrio que pelo menos uma subcadeia de
s pertena linguagem L(R) e uma subcadeia de t pertena linguagem L(R). As
sequncias s e t podem ter mais de uma subcadeia pertencente a L(R). Se AR existe
ento a existncia de i e j da Denio 4.2 est garantida. As colunas i e j encontradas
no alinhamento AR o dividem em trs partes: A0 , A1 e A2 , onde A1 um alinhamento
timo entre s1 e t1 .
No AR mostrado na parte (b) da Figura 4.1 observa-se uma regio retangular A1
conformada pelas colunas AR [8]AR[9]...AR [20]. A1 representa um alinhamento entre
s1 = (s [8, 20]) = HCHAGLHHHHAL e t1 = (t[8, 20]) = HCHALGHKRPGM, onde a subcadeia s1
de s e a subcadeia t1 de t pertencem a L(R). As colunas de A1 determinam os valores
de i = 8 e j = 20 da Denio 4.2. Como o AR tem pontuao mxima, ento A1 um
alinhamento timo entre s1 e t1 . Se A1 no for um alinhamento timo, ento existe outra
congurao de colunas com pontuao maior, logo AR no seria mximo. Portanto A1
necessariamente um alinhamento timo.

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

Figura 4.1: Alinhamentos: (a) A timo. (b) AR .


CAPTULO 4. ALINHAMENTO RESTRITO 90

Considerando = {A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T} com || = 20, a


expresso regular R = HCHxxxHxxx(A|G)(L|M) expandida mostrada na parte (a) da
Figura 4.2 com 260 smbolos. Na parte (b) mostrado o NFA equivalente a R, com
13 estados, 128 transies e sem transies vazias obtido pela construo melhorada de
Thompson da Seo 3.2.

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.

4.2 Autmatos e alinhamento


Nesta seo estudamos a computao num NFA usada para vericar se uma sequncia
pertence ou no na linguagem do NFA, construmos um NFA produto e estudamos a com-
putao nele e nalmente estudamos como acompanhar o alinhamento de duas sequncias
usando esse NFA produto.

4.2.1 NFA produto


Sejam a expresso regular R e o NFA N = (Q, , , q0 , F ), com L(R) = L(N). Constru-
mos o NFA:

P = (Q Q, ( ) \ {(-,-)}, np , (q0 , q0 ), F F )

onde np denida por:


np
((p, q), (a,-)) = (p, a) {q} se a e (p, q) Q Q (i)
((p, q), (-, b)) = {p} (q, b)
np
se b e (p, q) Q Q (ii)
np
((p, q), (a, b)) = (p, a) (q, b) se (a, b) e (p, q) Q Q (iii)
CAPTULO 4. ALINHAMENTO RESTRITO 91

(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

pode ser composto pela unio dos conjuntos i,j D H


= {(qi , a) (qj , b) | a, b }, i,j =
{(qi ,-) (qj , b) | b } e i,j = {(qi , a) (qj ,-) | a }, os quais representam
V

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

Para o termo |i,j


D
| temos que:

|Q|1 |Q|1 |Q|1 |Q|1


X X X X
D
|i,j | = |{(qi , a) (qj , b) | a, b }|
i=0 j=0 i=0 j=0
|Q|1 |Q|1
X X
= |{(qi , a) | a } {(qj , b) | b }|
i=0 j=0
|Q|1 |Q|1
X X
= |{(qi , a) | a }||{(qj , b) | b }|
i=0 j=0
|Q|1 |Q|1
X X
= |{(qi , a) | a }| |{(qj , b) | b }|
i=0 j=0
CAPTULO 4. ALINHAMENTO RESTRITO 92

|Q|1 |Q|1
X X
= |i | |j |
i=0 j=0

= n2t

Para o termo |i,j


H
| temos que:

|Q|1 |Q|1 |Q|1 |Q|1


X X X X
H
|i,j | = |{(qi , ) (qj , b) | b }|
i=0 j=0 i=0 j=0
|Q|1 |Q|1
X X
= |{(qi , )}| |{(qj , b) | b }|
i=0 j=0
|Q|1 |Q|1
X X
= 1 |j |
i=0 j=0

= ne nt

E de forma similar para o termo |i,j


V
| temos que:

|Q|1 |Q|1 |Q|1 |Q|1


X X X X
v
|i,j | = |{(qi , a) (qj , ) | a }|
i=0 j=0 i=0 j=0
|Q|1 |Q|1
X X
= |{(qi , a) | a }| |{(qj , )}|
i=0 j=0
|Q|1 |Q|1
X X
= |i | 1
i=0 j=0

= nt ne

Finalmente, o nmero total de transies em P :

|Q|1 |Q|1
X X
|i,j | = n2t + 2nt ne (4.1)
i=0 j=0

Na Figura 4.3 mostrado parcialmente o NFA produto P, construdo com base no


autmato N da Figura 4.2. Note que, como de cada estado de N existem transies para
apenas um nico outro estado, ento de cada estado em P saem transies apenas para
outros 3 estados, produzidos ao consumir (smbolo, -), (-, smbolo) ou (smbolo, smbolo).
CAPTULO 4. ALINHAMENTO RESTRITO 93

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)

q0 q10 (H,A) q1 q11


(-,) (H,G)
(H,) q1 q10 (C,A)
q0 q9 (C,G)
(-,)
(H,) q1 q9 (C,) q2 q10
(-,) q0 q8
(H,) (C,)
(-,H) q0 q7 q1 q8 q2 q9 (H,)
(H,H) (C,) (H,)
(-,) q0 q6 q1 q7 q2 q8 q3 q9

(H,) (C,H) (H,)


(-,) q0 q5 q1 q6 q2 q7 q3 q8
(H,) (C,) (H,H)
(-,) q0 q4 q1 q5 q2 q6 q3 q7

(H,) q1 q4 (C,) q2 q5 (H,) q3 q6 (,H) q4 q7


(-,H) q0 q3
(H,H) (C,) (H,) (,)
(-,C) q0 q2 q1 q3 q2 q4 q3 q5 q4 q6

q0 q1 (H,C) q1 q2 (C,H) q2 q3 (H,) q3 q4 (,) q4 q5


(-,H)
q0 q0 (H,H) q1 q1 (C,C) q2 q2 (H,H) q3 q3 (,) q4 q4

(H,-) q1 q0

(C,-)

Figura 4.3: Construo parcial do NFA P.

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

4.2.2 Computao num NFA


Autmatos so formalismos que permitem denir linguagens. Assim, o NFA N = (Q, ,
, q0 , F ) dene a linguagem L(N). Toda sequncia que pertence linguagem L(N) aceita
(ou reconhecida) por N. Para determinar se uma sequncia s pertence linguagem L(N),
vericamos se ela aceita por N usando um processo que chamamos da computao em
N sobre s ou simplesmente computao em N se s estiver claro pelo contexto. Nesta
seo estamos interessados em caracterizar a computao num NFA como uma sequncia
de passos bem denidos com o objetivo de us-la num NFA produto e depois conseguir
associ-la com a programao dinmica do alinhamento.
A computao em N sobre s formada por uma sequncia de passos. Em cada passo
um smbolo de s consumido, assim no primeiro passo consumido o smbolo s[1], no
segundo passo consumido o smbolo s[2] e assim por diante. Na computao em N
sobre s so realizados |s| passos. Em cada passo de computao existe um conjunto de
estados ativos alcanados aps ter consumido o prexo s[1, i 1] conforme a Denio
2.12 (pgina 40). No i-simo passo de computao o smbolo s[i] consumido para gerar
um novo conjunto de estados ativos que corresponder ao conjunto de estados ativos do
passo de computao i + 1. No i-simo passo de computao o smbolo s[i] consumido
por todas as transies do NFA N que partem de algum estado ativo. Se em algum
passo da computao no existem transies possveis, ento dizemos que a computao
cou travada e consequentemente o novo conjunto de estados ativos vazio. O nal da
computao alcanado aps consumir todos os smbolos de s.
Se no nal da computao algum dos estados ativos alcanados um estado nal de
N, ento a sequncia s aceita por N e s pertence linguagem L(N). Caso contrrio, no
nal da computao, o conjunto de estados ativos alcanados vazio ou nenhum estado
ativo alcanado um estado nal de N, logo a sequncia s no aceita por N e s no
pertence linguagem L(N).

4.2.3 Computao num NFA produto


Nesta seo descrevemos a computao no NFA produto usando os passos de computao
descritos na computao num NFA, dado que um NFA produto tambm um NFA.
Os smbolos consumidos ao longo da computao no NFA produto so pares ordenados
da forma (smbolo, -), (-, smbolo) ou (smbolo, smbolo) dado que o alfabeto do NFA
produto um produto cartesiano de alfabetos do qual foi retirado o elemento (-,-). Com
o objetivo de entender a linguagem do NFA produto, estabelecemos uma relao entre
um passo de computao no NFA produto e dois passos de computao no NFA base e
com isso chegamos a uma relao entre a linguagem do NFA produto e a linguagem do
NFA base.
Dado o NFA N = (Q, , , q0 , F ), construmos o NFA produto:

P = (Q Q, ( ) \ {(, )}, np , (q0 , q0 ), F F )

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:

O alinhamento A formado ao nal da computao em P pertence linguagem L(P)


se e somente se um estado nal de P alcanado.

A = (s , t ) L(P) se e somente se (s ) L(N) e (t ) L(N).

A L(P) se e somente se A um alinhamento entre duas sequncias que pertencem


a L(N).

Se na computao em P so consumidas as colunas de algum A(s, t) tal que s


/ L(N)
ou t
/ L(N), ento a computao em P no alcana um estado de P, dado que no existe
uma computao em N sobre a sequncia que no pertence a L(N) que alcance um estado
de F . Logo, nenhum alinhamento de s e t pertence a L(P).
A computao em P equivalente computao em paralelo sobre dois autmatos
N1 e N2 equivalentes a N, onde a cada passo da computao consumido um smbolo
em N1 , um smbolo em N2 ou um smbolo em ambos simultaneamente. Note que quando
apenas um smbolo consumido a computao num dos NFAs base alcana como novo
estado ativo ele mesmo segundo a denio (qi ,-) = qi .

4.2.4 Alinhamento com o NFA produto


Dadas as sequncias s = HCHAGLHHHHAL e t = HCHALGHKRPGM, na Figura 4.4 mostrada a
matriz M(n + 1, m + 1) com n = |s| e m = |t|, construda como na Seo 2.4.2 para ser
usada no clculo do score(s, t) pela programao dinmica.
No desenvolvimento da programao dinmica da Seo 2.4.2, M(i, j) armazena o
score(s[1, i], t[1, j]) e determina a existncia de pelo menos uma sequncia de avanos que
CAPTULO 4. ALINHAMENTO RESTRITO 96

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

Figura 4.4: Matriz da programao dinmica para encontrar o A(s, t) timo.

Como as sequncias s e t usadas na Figura 4.4 pertencem linguagem L(R) com


R = xxxHxxx(A|G)(L|M) e qualquer sequncia de avanos que partindo de M(0, 0) al-
cana M(n, m) representa um A(s, t), ento qualquer sequncia desses avanos representa
um elemento de L(P). Nem todos os elementos de L(P) esto representados em M, pois
existem outros pares de sequncias (u, v) 6= (s, t) tais que u e v pertencem a L(R).

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:

s L(N) e t L(N). Neste caso a computao se desenvolve at o nal. A


cada passo da programao dinmica sempre existe uma transio vlida em P. A
pontuao do alinhamento timo a pontuao maior dentre os estados ativos em
M(n, m), que um estado nal de P.

s/ L(N) ou t / L(N). Neste caso a computao em P sobre M fracassa por uma


das duas razes:

a computao ca travada sem conseguir gerar novos conjuntos de estados


ativos para as locaes posteriores de M, ou
na posio (i, j) nenhum dos estados ativos alcanados um estado nal de P.

Na computao em P sobre M, como em cada posio de M, cada transio de P


usada para consumir os avanos (diagonal, vertical e horizontal) possveis e gerar os novos
estados ativos, ento o tempo dessa computao O(mn(n2t + 2nt ne + n2e )) e o espao
usado O(mnn2e ).
Se a computao em P sobre M bem sucedida, pelo menos um alinhamento timo
pode ser recuperado ao nal da computao. Recuperar um alinhamento timo usando
as informaes armazenadas em M pode levar O(mn(n2t + 2nt ne + n2e )) tambm, o que
dobraria o tempo da computao.
Como o objetivo da computao em P sobre M encontrar um alinhamento de duas
sequncias no caso que ambas pertenam linguagem L(N), ento a computao em
P sobre M pode ser substituda por um processamento mais econmico em tempo e
espao. Para obter economia no tempo podemos vericar em separado se cada sequncia
pertence a L(N), e s depois do sucesso dessa vericao usar a programao dinmica
clssica para encontrar o alinhamento timo. A vericao de pertinncia linguagem
L(N) realizada no tempo O(nt m + nt n) como foi visto na Seo 2.3.3. Se a vericao
bem sucedida o tempo total da computao que substitui a computao em P sobre
M O(nt m + nt n + mn). O espao pode ser melhorado usando o algoritmo de espao
linear de Hirschberg [16] na programao dinmica, o que permite usar apenas espao
O(ne m + ne n + m + n).
CAPTULO 4. ALINHAMENTO RESTRITO 98

4.3 Algoritmo de Arslan (2007)


Na Denio 4.2 (pgina 89) o alinhamento restrito denido pela existncia de i e j onde
(s [i, j]) L(R) e (t [i, j]) L(R), ento as colunas AR [i]AR [i + 1]...AR [j] representam
o alinhamento timo entre as subcadeias (s [i, j]) = s1 e (t [i, j]) = t1 .
Se usarmos s1 e t1 como entradas na programao dinmica acompanhada pela compu-
tao em P vista na seo anterior, o alinhamento AR [i]AR [i+1]...AR [j] seria encontrado.
No entanto, podem existir muitas subcadeias de s e de t que podem ser usadas tambm
como entradas na programao dinmica acompanhada pela computao em P e dar
certo.
O NFA P pode ser modicado para reconhecer qualquer alinhamento A(s, t) tal que
que exista um grupo de colunas A[i]A[i + 1]...A[j] aceitas pelo NFA P.

4.3.1 NFA produto de Arslan


Na soluo para o problema RECSA proposta por Arslan [3], construdo um NFA
produto, o qual usado na programao dinmica para encontrar o alinhamento restrito
com pontuao mxima. Neste trabalho, usando esses mesmos critrios, ns construmos
esse NFA produto e o chamamos como o NFA produto de Arslan.
Seja a expresso regular R e o NFA N = (Q, , , q0 , F ), com L(R) = L(N). Cons-
trumos o NFA:

Pa = (Q Q, ( ) \ {(-,-)}, na , (q0 , q0 ), F F )

onde na ((p, q), (a, b)) denida por:



(p, a) (q, b) se (p, q)
/ (F F ) {(q0 , q0 )} (i)
((p, a) (q, b)) {(p, q)} se (p, q) (F F ) {(q0 , q0 )} (ii)

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).

2. No alinhamento as subsequncias que pertencem a L(N) (uma de cada sequncia)


esto alinhadas numa sequncia continua de colunas.
CAPTULO 4. ALINHAMENTO RESTRITO 99

Essas duas condies so necessrias para pertencer a L(Pa ). Considerando a expresso


regular R = HCHxxxHxxx(A|G)(L|M), o NFA N com L(N) = L(R) e o NFA produto de
Arslan Pa construdo a partir de N, o alinhamento da parte (a) da Figura 4.1 um alinha-
mento entre as sequncias s = ALHHCHAGLHHHHALGKMP e t = AGLHHHHHCHALGHKRPGMKP. As
duas contm subsequncias que pertencem a L(N), mas esse alinhamento no pertence a
L(Pa ) por no vericar a segunda condio.
Na parte (a) da Figura 4.5 mostrada a estrutura completa do NFA produto P
mostrado parcialmente na Figura 4.3. No mostrada nenhuma anotao e usamos
apenas uma seta para representar uma ou mais transies da mesma direo entre dois
estados tal como se mostrou na representao parcial. Chamamos a essa representao
de representao cannica do autmato. Na parte (b) mostrado o NFA produto de
Arslan obtido pela adio de auto-transies nos estados inicial e nal. As auto-transies
anotadas com ( , ) representam uma auto-transio para cada elemento de (
) \ {(-,-)}. O NFA de Arslan apresentado possui 169 estados e 20592 transies no
total.

( , ) ( , )

(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.

Na computao em Pa as auto-transies adicionadas no estado inicial permitem consu-


mir uma sequncias de colunas A0 mantendo o estado inicial antes de comear a consumir
alguma sequncia de colunas A1 L(P). A1 consumida comeando desde o estado
inicial de Pa . Como a construo de Pa uma cpia de P adicionando as auto-transies,
ento todos os estados de P esto reetidos em Pa com o mesmo nome, e o pedao da
computao que consome A1 equivalente a uma computao bem sucedida de A1 em P,
logo algum estado nal P alcanado e esse estado tambm estado nal de Pa . Depois
que algum estado nal de Pa for alcanado, a auto-transio desse estado consome uma
sequncia de colunas A2 at esgotar os smbolos.
De forma similar como foi visto para o NFA P, considerando que ne e nt so o nmero
de estados e transies do NFA N respectivamente e de acordo com a Equao 4.1, ento o
nmero de estados de Pa n2e e o nmero de transies totais em Pa O(n2t + 2nt ne + ||2 ),
dado que as auto-transies adicionadas so 2||2 2. O tempo de computao em Pa
O(n2t + 2nt ne + n2e + ||2 ).
CAPTULO 4. ALINHAMENTO RESTRITO 100

4.3.2 Alinhamento com o NFA produto de Arslan


De forma similar a como foi feito para o NFA produto na Seo 4.2.4, a programao
dinmica pode ser acompanhada pela computao em Pa . Se no nal desse processo
um estado nal de Pa alcanado, ento pelo menos um alinhamento timo A pode ser
recuperado tal que existe uma sequncia de colunas A1 = A[i]A[i + 1]...A[j] que pertence
a L(P). A sequncia de colunas A1 parte A em outras duas sequncias de colunas A0 e
A2 , tal que A a concatenao A0 A1 A2 . Como A um alinhamento timo ento A0 , A1
e A2 tambm so alinhamentos timos das subcadeias correspondentes. O alinhamento
encontrado A um alinhamento restrito por expresso regular, A = AR .
Na Figura 4.6 mostrada a matriz de programao dinmica acompanhada pela com-
putao em Pa , onde observam-se as regies correspondentes aos alinhamentos A0 , A1
e A2 . As colunas A0 comeam a ser consumidas em M(0, 0) at M(3, 7), as colunas
A1 comeam a ser consumidas em M(3, 7) at M(15, 19), as colunas A2 comeam a ser
consumidas em M(15, 19) at M(19, 21). Observe que para duas sequncias quaisquer
as colunas A1 podem comear em qualquer posio da matriz e terminar em qualquer
posio posterior ao comeo.

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

Figura 4.6: Programao dinmica acompanhada pelo NFA de Arslan.

Na Figura 4.7 so mostradas as colunas A0 , A1 e A2 do alinhamento obtido pela


computao em Pa sobre M segundo a Figura 4.6.
Como para cada posio da matriz so percorridas as transies de Pa , ento o tempo
da computao em Pa sobre M O(mn(n2t + 2nt ne + n2e + ||2 )) e o espao usado
O(mnn2e ). Um alinhamento timo pode ser recuperado das seguintes formas:

(i) Fazendo as contas na ordem reversa da programao dinmica, consumindo o tempo


O(mn(n2t + 2nt ne + n2e + ||2 )).
CAPTULO 4. ALINHAMENTO RESTRITO 101

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

Figura 4.7: A0 , A1 e A2 do alinhamento restrito por expresso regular.

(ii) Usando uma matriz de apontadores (preenchida na programao dinmica) com o


tempo adicional de O(mn).

(iii) Se as posies onde comeam e terminam as partes A0 , A1 e A2 foram armazenadas


na computao da programao dinmica, o alinhamento timo completo pode ser
obtido pelo alinhamento timo das subcadeias envolvidas em cada uma dessas par-
tes. O tempo deste processo O(m0n0 + m1 n1 + m2 n2 ), onde m0 n0 , m1 n1 e m2 n2
so os custos para obter os alinhamentos timos a A0 , A1 e A2 .

No caso (iii), as posies onde comeam e terminam A0 , A1 e A2 so armazenadas em


cada estado ativo correspondente ao longo da programao dinmica, o que no muda a
complexidade no tempo do algoritmo. O estado inicial (q0 , q0 ) no NFA produto de Arslan
ativo em toda posio da matriz de programao dinmica. Quando uma transio leva
a um estado ativo diferente, comea a parte A1 . Quando um estado ativo alcana um
estado nal, essa transio corresponde ltima coluna de A1 .
O tempo da programao dinmica incluindo a recuperao (iii) O(mn(n2t + 2nt ne +
n2e +||2 )+m0 n0 +m1 n1 +m2 n2 = O(mn(n2t +2nt ne +n2e +||2 )). Considerando nt ne 1
e n > m, o tempo da computao desse ltimo processo

O(nmn2t + nm||2 ) O(n2 n2t + n2 ||2 ). (4.2)

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)

4.4 Alinhamento restrito por padres PROSITE


Os padres PROSITE vistos na Seo 3.3 so uma coleo anotada de descritores de
motivos, os quais podem ser representados por uma expresso regular equivalente [21].
Padres PROSITE podem ser usados como a restrio no problema do alinhamento res-
trito RECSA proposto no ano de 2005 por Arslan [3].
Um padro PROSITE uma sequncia de elementos. Cada elemento pode ser re-
presentado por uma expresso regular equivalente e o padro completo a concatenao
dessas expresses regulares, tal como foi mostrado na Proposio 3.3.1 (pgina 73).
CAPTULO 4. ALINHAMENTO RESTRITO 102

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.

4.4.1 Soluo direta


Dado um padro PROSITE de k-elementos simples, na Seo 3.3 mostramos que a ex-
presso regular equivalente possui O(k||) smbolos. Seguindo os mtodos clssicos de
construo podemos projetar duas situaes:

1. Pela construo de Thompson produzido um -NFA com O(k||) estados e O(k||)


transies em tempo linear, depois ao aplicar o algoritmo da Seo 2.2.5 seria poss-
vel produzir um -free NFA com O(k||) estados e O(k 2||2 ) transies em tempo
quadrtico, depois algum algoritmo de minimizao de NFA pode ser usado. No
entanto, a minimizao de NFA um problema NP-completo [24].

2. Pela construo de Thompson produzido um -NFA com O(k||) estados e O(k||)


transies em tempo linear, depois algum algoritmo com tempo quadrtico produz
um -free NFA com O(k||) estados e O(k|| log2 (k||)) transies [2, 20].

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

O(nmk 2 ||2 ) O(n2 k 2 ||2 ) (4.4)

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

nosso algoritmo usando T caria em

O(nmk 2 ) O(n2 k 2 ). (4.6)

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.

4.4.2 Soluo melhorada


Na programao dinmica acompanhada pela computao em Pa , cada passo da pro-
gramao dinmica est composto por um avano diagonal, um avano horizontal e um
avano vertical que alcanam a posio (i, j) na matriz. Cada um desses trs avanos
constri um conjunto novo de estados ativos, os quais so fundidos na posio (i, j), de
tal forma que cada estado ativo em (i, j) possua a maior pontuao possvel.
A Figura 4.8 mostra os -free NFAs equivalentes ao padro PROSITE PS00315 =
S(4)-[SD]-[DE]-x-[DE]-[GVE]-x(1,7)-[GE]-x(0,2)-[KR](4), construdos pela cons-
truo melhorada de Thompson. O padro PROSITE PS00315 contm os elementos
x(1,7) e x(0,2), elementos tratados na Seo 3.3 para conseguir nmero linear de transi-
es. Assim para construir os NFAs equivalentes mostrados nas partes (a) e (b) usaram-se
expresses regulares do tipo R3 e R4 respectivamente. No NFA da parte (b) observa-se
que partindo de qualquer um estado e consumindo algum smbolo, no mximo outros dois
estados so alcanados. Essa condio conseguida pela forma como foram construdas
as expresses regulares equivalentes a x(1,7) e x(0,2). O NFA da parte (a) no garante
essa condio.
Se o NFA produto de Arslan Pa construdo usando como base o NFA da parte (b)
da Figura 4.8, ento na computao em Pa sobre a matriz de programao dinmica um
estado ativo consumindo um avano gera no mximo 2 2 = 4 novos estados ativos
usando no mximo 4 transies.
Cria-se uma matriz de listas V , de tal forma que V (i, j) a lista dos estados ativos
na posio (i, j) durante a programao dinmica de Pa sobre M. O avano diagonal
desde a posio (i 1, j 1) toma cada estado ativo de V (i 1, j 1) ocupando
transies, as quais consumindo o smbolo (s[i], t[j]) alcanam algum estado ativo de
V (i, j). no mximo o nmero total de transies em Pa . No entanto, a construo
de Pa segundo o NFA da parte (b) da Figura 4.8 garante que no mximo 4 transies
sejam usadas por cada estado ativo de V (i 1, j 1) nesse avano diagonal. Ento =
CAPTULO 4. ALINHAMENTO RESTRITO 104




EG

KR KR KR KR
EG
S S S S DS DE DE E GV

(a) PS00315 = S(4)-[SD]-[DE]-x-[DE]-[GVE]-x(1,7)-[GE]-x(0,2)-[KR](4)



EG
KR KR KR KR
EG



S S S S DS DE DE E GV

(b) PS00315 = S(4)-[SD]-[DE]-x-[DE]-[GVE]-x(1,7)-[GE]-x(0,2)-[KR](4)

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

O(max(|V (i 1, j 1)|, |V (i 1, j)|, |V (i, j 1)|)). (4.7)

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

O(nm|V (i , j )|) O(n2 |V (i , j )|). (4.8)

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,

|vs [i ]| = max(|vs [1]|, |vs [2]|, ..., |vs [n]|)

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

O(2nv + 2mv) O(nv + mv) O(nv) O(nk) O(n2 ).


Uma cota inferior de tempo para esse processo pode ser encontrado analisando o melhor
caso. O melhor caso desse processo ocorre quando a cada passo da computao obtido
apenas um estado ativo, dizer v = (1). Esse melhor caso determina a cota inferior de
CAPTULO 4. ALINHAMENTO RESTRITO 106

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

V (i, j) vs [i] vt [j]. (4.9)


Como v o nmero mximo de estados ativos entre as listas vs [i] e vt [j] ao casar o
padro em s e t respectivamente. Ento o nmero |V (i , j )| da Equao 4.8 O(v 2 ) e
(1). Assim, a computao completa em Pa sobre M usando a tabela T pode ser realizada
no tempo de execuo (cota superior de tempo)

O(nmv 2 ) O(n2 v 2 )

e no tempo de execuo (cota inferior de tempo)

(nm).

O pr-processamento para encontrar os estados ativos produz uma melhoria no tempo


de processamento total devido a que no passo da programao dinmica so usadas apenas
as transies dos estados ativos correspondentes, garantido pelo uso das listas vs e vt . O
nmero mximo de estados ativos num passo da programao dinmica est relacionado
ao nmero de vezes que o padro pode ser encontrado nas sequncias. Por exemplo, se
o padro for encontrado apenas duas vezes em ambas sequncias o nmero mximo de
estados ativos no NFA N seria 2, o que levaria a usar no mximo 4 transies em cada
passo da programao dinmica. Para casos prticos v k, e nosso algoritmo para o
alinhamento restrito usando padres PROSITE tem os limites no tempo de execuo

(mn)

e
O(n2 v 2 ) O(n2 k 2 ).
Captulo 5

Concluses

Neste trabalho, estudamos o problema RECSA/PROSITE e propomos uma uma forma


de construir -free NFAs equivalentes a padres de PROSITE que, ao serem usados no
algoritmo de Arslan [3] melhoram o tempo de execuo.
A construo melhorada de Thompson proposta, permite construir autmatos equi-
valentes com nmero menor de transies em relao aos autmatos construdos pelo
algoritmo clssico, e usando para isso um tempo de execuo linear em relao ao com-
primento das expresses regulares.
Mostramos como construir expresses regulares equivalentes a padres PROSITE que,
ao serem usadas pelo algoritmo melhorado de Thompson, permitem obter diretamente
-free NFAs em tempo linear. Foram estudadas quatro formas de construir essas expres-
ses regulares, das quais, apenas duas permitem construir diretamente autmatos com
nmero linear de transies, e apenas uma permite diminuir ainda mais a complexidade
no tempo do algoritmo de Arslan atravs de um pr-processamento.
A construo de um -free NFA equivalente a uma expresso regular com n smbolos
foi estudada por Hromkovic et al. [19, 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. No entanto, neste trabalho, mostramos como construir um
-free NFAs com O(n/||) estados e O(n) transies equivalentes a expresses regulares
que representam padres PROSITE. O nmero de estados sublinear devido ao fato
que um padro PROSITE com no mximo k elementos simples representado por uma
expresso regular com n = O(k||) smbolos, mas o NFA construdo ter apenas k + 1
estados.
Mostramos como o algoritmo de Arslan no caso do alinhamento restrito por padres
PROSITE melhorado naturalmente pelo uso do nosso -free NFA equivalente proposto.
Os algoritmos propostos por Chung et al. [10] e Kucherov et al. [23], no podem ser
aplicados para melhorar o algoritmo de Arslan no problema RECSA/PROSITE dado que,
nossos -free NFAs equivalentes a padres PROSITE possuem nmero linear de transies
e nmero sublinear de estados em relao ao nmero de smbolos da expresso regular
correspondente. Esse nmero linear de transies permite obter diretamente um NFA
produto com nmero quadrtico de transies, melhor que o caso geral (RECSA) onde
esperado um nmero de transies na ordem da quarta potncia.

107
CAPTULO 5. CONCLUSES 108

Mostramos um pr-processamento com o qual conseguimos melhorar ainda mais o


tempo de execuo de nosso algoritmo para o problema RECSA/PROSITE, conseguindo
atingir no melhor caso um tempo independente do nmero de estados. O melhor caso
obtido quando apenas uma subsequncia em cada uma das sequncias pertence lingua-
gem do padro PROSITE. Nesse caso o processamento de estados ativos permite obter um
tempo de execuo independente de k e igual a c1 n2 e consequentemente nosso algoritmo
executa no tempo (n2 ).
O uso desse pr-processamento diminui o nmero de transies ocupadas em cada
avano da programao dinmica, pelo qual espera-se que o tempo total de execuo
tambm diminua. Considerando que v o nmero mximo de estados ativos ao processar
as sequncias, ento o tempo de execuo de nosso algoritmo O(n2 v 2 ), onde tipicamente
esperado que v k. No pior caso v = k, mas o uso da lista de estados ativos permite
ocupar, em cada locao da matriz de programao dinmica, um nmero menor de
transies, restrito unicamente s transies que esto relacionadas a esses estados ativos,
isso produz um tempo de execuo total menor, dado que existem melhoras locais ao
longo da programao dinmica.
Considerando que um padro PROSITE de k elementos simples representado por
uma expresso regular de O(t) = O(k||) smbolos, os tempos de execuo das solu-
es usando um NFA propostas para o problema RECSA por Arslan [3], por Chung et
al. [10] e por Kucherov et al. [23] so O(n2 t4 ||2 ), O(n2 t3 ) e O(n2 t3 / log t) respectiva-
mente. Em termos de k as complexidades dessas solues so O(n2 k 4 ||6 ), O(n2 k 3 ||3 )
e O(n2 k 3 ||3 / log(k||)) respectivamente. A nossa soluo possui um tempo de execuo
O(n2 k 2 ) no pior caso, melhorada para casos prticos com O(n2 v 2 ), com v k e atingindo
o melhor caso conseguimos tempo (n2 ).
Na Figura 5.1, mostramos uma comparativa nos tempos de execuo esperados dos al-
goritmos conhecidos para o problema RECSA/PROSITE considerando k = 50 e || = 20.
O algoritmo de Arslan que executa no tempo O(n2 k 4 ||6 ) possui o fator a mais de k 2 ||6
em relao a complexidade de nosso algoritmo, espera-se que esse fator produza uma re-
duo no tempo de 160 000 milhes de vezes. O algoritmo de Chung et al. que executa
no tempo O(n2 k 3 ||3 ) possui o fator a mais de k||3 em relao a complexidade de nosso
algoritmo, espera-se que esse fator produza uma reduo no tempo de 400 mil vezes. Si-
milarmente, o algoritmo de Kucherov et al. que executa no tempo O(n2k 3 ||3 / log(k||))
possui o fator a mais de k||3 / log(k||) em relao a complexidade de nosso algoritmo,
espera-se que esse fator produza uma reduo no tempo de 40 mil vezes.

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.

[3] Abdullah N. Arslan. Regular expression constrained sequence alignment. In Alberto


Apostolico, Maxime Crochemore, and Kunsoo Park, editors, Combinatorial Pattern
Matching: 16th Annual Symposium, CPM 2005, Jeju Island, Korea, June 19-22,
2005. Proceedings, pages 322333. Springer, Berlin, Heidelberg, 2005.

[4] Abdullah N. Arslan. Regular expression constrained sequence alignment. Journal of


Discrete Algorithms, 5(4):647661, 2007.

[5] Amos Bairoch. PROSITE: A dictionary of sites and patterns in proteins. Nucleic
Acid Research, 19(1):22412245, 1991.

[6] Marie-Pierre Bal and Maxime Crochemore. Minimizing incomplete automata. In


Finite-State Methods and Natural Language Processing (FSMNLP08), Joint Rese-
arch Centre, pages 916, United States, 2008.

[7] Robert S. Boyer and J S. Moore. A fast string searching algorithm. Communications
of the ACM, 20(10):762772, October 1977.

[8] Janusz A. Brzozowski. Derivatives of regular expressions. Journal of the ACM,


11(4):481494, 1964.

[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.

[14] Viktor M. Glushkov. On a synthesis algorithm for abstract automata. Ukrainian


Mathematical Journal, 12(2):147156, 1960.

[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.

[24] Andreas Malcher. Minimizing nite automata is computationally hard. Theoretical


Computer Science, 327(3):375390, 2004.
REFERNCIAS BIBLIOGRFICAS 112

[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.

[27] ExPASy SIB Swiss Institute of Bioinformatics. ScanProsite user manual.


http://prosite.expasy.org/scanprosite/scanprosite_doc.html. [Online; ac-
cessed 19-July-2016].

[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.

[35] Guangming Xing. Minimized thompson NFA. International Journal of Computer


Mathematics, 81(9):10971106, 2004.
Apndice A

Complementos tericos

A.1 Exemplo de construo de um DFA equivalente a


um NFA
Segundo a construo DFA equivalente a um NFA formulada na Seo 2.2.5 (pgina 30),
procedemos a construir o DFA D = (P, , , p0 , G) equivalente ao NFA da Figura 2.9 (p-
gina 31). Como P = 2Q e Q possui 4 elementos, ento P tem 16 elementos. Considerando
que o estado inicial p0 = {q0 } podemos considerar tambm:

p0 = {q0 }, p6 = {q0 , q3 }, p12 = {q0 , q2 , q3 },


p1 = {q1 }, p7 = {q1 , q2 }, p13 = {q1 , q2 , q3 },
p2 = {q2 }, p8 = {q1 , q3 }, p14 = {q0 , q1 , q2 , q3 },
p3 = {q3 }, p9 = {q2 , q3 }, p15 =
p4 = {q0 , q1 }, p10 = {q0 , q1 , q2 },
p5 = {q0 , q2 }, p11 = {q0 , q1 , q3 },
Em seguida, procedemos a encontrar as transies do DFA D:

Para o estado p0 = {q0 }:

(q0 ,A) = {q1 , q2 }, ento (p0 ,A) = p7 ,


(q0 ,T) = (q0 ,C) = (q0 ,G) = , ento (p0 ,T) = (p0 ,C) = (p0 ,G) = ,

Para o estado p1 = {q1 }:

(q1 ,C) = {q3 }, ento (p1 ,C) = p3 ,


(q1 ,A) = (q1 ,T) = (q1 ,G) = , ento (p1 ,A) = (p1 ,T) = (p1 ,G) = ,

Para o estado p2 = {q2 }:

(q2 ,G) = {q3 }, ento (p2 ,G) = p3 ,


(q2 ,A) = (q2 ,T) = (q2 ,C) = , ento (p2 ,A) = (p2 ,T) = (p2 ,C) = ,

Para o estado p3 = {q3 }:

113
APNDICE A. COMPLEMENTOS TERICOS 114

(q3 ,A) = (q3 ,T) = (q3 ,C) = (q3 ,G) = ,


ento
(p3 ,A) = (p3 ,T) = (p3 ,C) = (p3 ,G) =

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.

Para o estado p4 = {q0 , q1 }:

({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) =

Para o estado p5 = {q0 , q2 }:

({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

Para o estado p6 = {q0 , q3 }:


Para todo x temos que (q3 , x) = , ento ({q0 , q3 }, x) = (q0 , x).
Logo (p6 , x) = (p0 , x), ento (p6 ,A) = p7 , (p6 ,T) = (p6 ,C) = (p6 ,G) = ,

Para o estado p7 = {q1 , q2 }:


(p7 ,A) = (p7 ,T) = e (p7 ,C) = (p7 ,G) = p3 .

Para o estado p8 = {q1 , q3 }:


(p8 , x) = (p1 , x), ento (p8 ,C) = p3 , (p8 ,A) = (p8 ,T) = (p8 ,G) = ,

Para o estado p9 = {q2 , q3 }:


(p9 , x) = (p2 , x), ento (p9 ,G) = p3 , (p9 ,A) = (p9 ,T) = (p9 ,C) = ,

Para o estado p10 = {q0 , q1 , q2 }:


(p10 ,A) = p7 , (p10 ,C) = (p10 ,G) = p3 e (p10 ,T) = ,
Como (q3 , x) = para todo x ento (p11 , x) = (p4 , x), (p12 , x) = (p5 , x),
(p13 , x) = (p7 , x) e (p14 , x) = (p10 , x) para todo x .

Para o estado p11 = {q0 , q1 , q3 }:


(p11 ,A) = p7 , (p11 ,T) = (p11 ,G) = e (p11 ,C) = p3 ,

Para o estado p12 = {q0 , q1 , q3 }:


(p12 ,A) = p7 , (p12 ,T) = (p12 ,C) = e (p12 ,G) = p3 ,

Para o estado p13 = {q1 , q2 , q3 }:


(p13 ,A) = (p13 ,T) = e (p13 ,C) = (p13 ,G) = p3 ,
APNDICE A. COMPLEMENTOS TERICOS 115

Para o estado p14 = {q1 , q2 , q3 }:


(p14 ,A) = p7 , (p14 ,C) = (p14 ,G) = p3 e (p14 ,T) = ,

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

Figura A.1: DFA D = (P, , , p0 , G) equivalente a R = (AC)|(AG).

A.2 Minimizao de um DFA


O Teorema 3.10 de [17] mostra a existncia de um nico DFA mnimo e ele construdo
tal como enunciado a seguir.
APNDICE A. COMPLEMENTOS TERICOS 116

Seja M = (Q, , , q0 , F ) o DFA que queremos minimizar, denotamos com R uma


relao de equivalncia entre dois estados p, q Q tal que pRq se e somente se para cada
cadeia de entrada x, (p, x) um estado de aceitao se e somente se (q, x) um estado
de aceitao.
Denotamos p q para indicar que os estados p e q pertencem mesma classe de
equivalncia. Se p q dizemos que p equivalente a q, e se p 6 q dizemos que p
distinguvel de q. Note que p 6 q se existe uma cadeia x tal (p, x) F e (q, x)
/ F , ou
vice-versa.
Para toda classe de equivalncia denida por escolhemos um representante de classe.
A unio de todos esses representantes de classe so os estados do autmato mnimo.
Pode-se projetar um algoritmo para encontrar estados equivalentes usando uma tabela
de duas entradas para todo par de estados. O preenchimento da tabela comea marcando
como distinguveis todo par (estado nal, estado no nal). Depois, para cada par de
estados p e q que no se sabe se so distinguveis (ou sua posio na tabela no tem
marca) se considera todo par de estados r = (p, a) e s = (q, a) com a . Se algum r
e s tm marca de distinguveis na tabela ento necessariamente p e q devem ser marcados
como distinguveis tambm. Se nenhum r e s tm marca de distinguveis na tabela ento
o par (p,q) inserido numa lista associada com (r,s), tal que, se em alguma parte do
processo (r,s) obtm-se uma marca de distinguveis isso implica que (p,q) deveram ser
marcados como distinguveis tambm. Ao nal do processo cada lugar no marcado na
tabela representa um par de estados que no so distinguveis, o que signica que os
estados do par pertencem mesma classe de equivalncia.
Construmos a funo de transio do DFA mnimo m a partir de , substituindo
todos os estados que pertencem mesma classe de equivalncia pelo seu correspondente
representante de classe. Para um representante de classe pi (pi um estado do DFA
mnimo),

m (pi , x) = {q | q o representante da classe de equivalncia que contm (pi , x)}.

Implementao
Detalhes de implementao podem ser encontrados no Apndice B.3.

A.3 Algoritmo Boyer-Moore


O algoritmo foi apresentado por Boyer et al. no ano de 1977 [7]. um algoritmo para
casamento exato de sequncia, onde se busca encontrar todas as ocorrncias de uma
sequncia chamada de padro em outra sequncia chamada de texto.
A ideia deste algoritmo percorrer o texto de esquerda para a direita, e neste percurso
vericar se existe uma ocorrncia do padro. Contrariamente a como acontece no algo-
ritmo ingnuo visto na Seo 2.3.1, a vericao desta ocorrncia realizada de direita
para a esquerda, comeando pelo ltimo smbolo do padro e evoluindo at o primeiro
smbolo do padro. Este algoritmo tem a vantagem de produzir um deslocamento a cada
APNDICE A. COMPLEMENTOS TERICOS 117

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

Figura A.2: Algoritmo Boyer-Moore, heurstica do caractere errado.

A.3.1 Heurstica do caractere errado


O deslocamento d busca alinhar o smbolo da coliso com a sua primeira ocorrncia no
padro esquerda da coliso. No caso de no ter ocorrncia, o padro deslocado aps
o smbolo da coliso.
Dada uma coliso t[ik] 6= p[mk], chamamos delta1 a posio da primeira ocorrncia
de t[i k] no padro, esquerda da coliso, contada a partir do ltimo smbolo do padro
tal como se mostra na Figura A.2.
Na Figura A.2, o smbolo C da coliso tem ocorrncia na posio j = 2 do padro,
delta1 = m j = 5 2 = 3 e o valor a deslocar d = delta1 k = 3 1 = 2.
APNDICE A. COMPLEMENTOS TERICOS 118

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

A tabela delta1 preenchida pelo algoritmo anterior armazena a posio da ocorrncia


mais direita de cada smbolo no padro. Se aps a coliso t[i k] 6= p[m k] o valor de
delta1 k negativo, ento consideramos o deslocamento d = 1. Muitas ocorrncias de
delta1 k negativo pioram o tempo do algoritmo. Guseld [15] mostra uma extenso desse
pr-processamento, considerando a posio onde a coliso acontece. O pr-processamento
estendido pode ser necessrio no caso de alfabetos pequenos, e no caso de o texto ter
muita similaridade como no caso de sequncias de DNA. O pr-processamento estendido
calcula para cada par (j, a), j posio do padro e a , a posio da ocorrncia mais
direita de a em p[1, j]. Para armazenar esses valores usada a matriz delta1 de tamanho
m ||. Ento, quando uma coliso acontece no smbolo t[i k], o deslocamento
d = delta1 (m k, t[i k]) k. delta1 pode ser preenchida com o cdigo:

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

O algoritmo anterior executado em tempo O(m2 + mn).

Baseado em resultados empricos Horspool [18] apresentou uma simplicao da heu-


rstica do caractere errado. Horspool observou que, depois da coliso no smbolo t[i k],
qualquer um dos smbolos do suxo t[ik+1, i] pode ser usando para melhorar a heurstica
do caractere errado. O algoritmo usa o smbolo t[i]. Aps uma coliso, procurada a pri-
meira ocorrncia de t[i] esquerda do padro. O caso t[i] = p[m] deve ser desconsiderado
dado que estamos interessados na ocorrncia seguinte. O deslocamento calculado com
d = m deltaH , onde deltaH representa a tabela de ocorrncias proposta por Horspool.
A tabela deltaH , com |deltaH | = , pode ser calculada em tempo linear modicando o
cdigo que calcula delta1 , o limite superior da estrutura for nesse cdigo mudado para
m 1.
No ano 1990, Sunday [33] apresentou outra modicao para heurstica do caractere
errado. Sunday observou que depois da coliso no smbolo t[i k], o smbolo t[i + 1] pode
ser usado para encontrar o deslocamento do padro. Sendo assim, a primeira ocorrncia
do smbolo t[i + 1] procurada esquerda do padro. O deslocamento calculado com
d = m deltaS , onde deltaS representa a tabela de ocorrncias proposta por Sunday.
A tabela deltaS , com |deltaS | = , pode ser calculada em tempo linear modicando o
cdigo que calcula delta1 , nesse cdigo, a inicializao da tabela mudado para m + 1.

A.3.2 Heurstica forte do bom sufixo


Guseld [15] apresenta a heurstica forte do bom suxo, denominada forte porque garante
que o algoritmo execute em tempo linear. Aps da coliso no smbolo t[i k], sabe-se que
os suxos t[i k + 1, i] e p[m k + 1, m] so iguais. Nesta heurstica o padro deslocado
de tal forma que os caracteres do suxo t[i k + 1, i], quem alinhados com sua primeira
ocorrncia no padro esquerda da coliso. Trs casos so possveis:

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 k + 1, i]: sufixo alinhado aps a coliso


t[i k] i=5
t
A T A C A T A T A C A T A C A T A T A G
d1 comparaes
(i) A C A T A
d1 A C A T A

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

Figura A.3: Algoritmo de Boyer-Moore, heuristica do bom suxo.

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

Figura A.4: Caracterizao de L1 (j).

deslocamento. Aps da coliso p[m k] 6= t[i k], o deslocamento calculado como


d = m L(m k + 1).
O algoritmo Z permite encontrar N(x, p) para todo x < |p|, onde N(x, p) o com-
primento do maior suxo de p[1, x] que tambm suxo de p. Se no existe suxo
na posio x, ento N(x, p) = 0. A Figura A.5 mostra os N(x, p) encontrados para
p = GATATACATACATATACATA.

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)

Figura A.5: N(x, p) encontrados para p = GATATACATACATATACATA.

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

encontrada na posio j chamado Z-box na posio j.


O Algoritmo Z encontra sequencialmente os valores Z(2, p), Z(3, p), ..., Z(m, p). Para
encontrar o valor Z(j, p), so usados os valores Z(2, p), Z(3, p), ..., Z(j 1, p), junto com
as posies l (smbolo inicial) e r (smbolo nal) do Z-box mais para a direita encontrado
em alguma posio {2, 3, ..., j 1}. Para calcular Z(j, p) existem dois casos: j > r e
j r, tal como mostrado na Figura A.6.

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

mero de comparaes novas que so desigualdades O(m). Considerando essas contas a


computao do algoritmo executa em tempo O(m).
Todos os valores N(j, p) podem ser calculados em tempo linear usando N(j, p) =
Z(m j + 1, pR ), onde pR denota a cadeia reversa de p. Por exemplo N(5, ACATATA) =
Z(3, ATATACA) = 3.

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

A seguir apresentado uma verso do algoritmo de Boyer-Moore na qual o deslocamento


escolhido usando ambas heursticas:

Input: padro p, texto t


Output: posies da ocorrncia do padro
1 begin
2 n |t|
3 i m |p|
4 while i <= n do
5 j m
6 k 0
7 while j > 0 and p[j] = t[i k] do
8 j j1
9 k k+1
10 end
11 if j = 0 then
12 reporta uma ocorrncia do padro na posio i k + 1
13 d m L2 (2)
14 end
15 else
16 d max(m L1 (j), m L2 (j))
17 end
18 i i+d
19 end
20 end

O algoritmo de Boyer-Moore original executa em tempo (mn). O uso da heursticas


do bom suxo forte garante que o algoritmo execute em tempo linear [15]. Se somente
for usada a heurstica do caractere errado o tempo de execuo O(mn), mas assumindo
uma entrada aleatria, o tempo esperado sublinear.

A.4 Algoritmo Knuth-Morris-Pratt


Knuth, Morris e Pratt apresentaram um algoritmo para o casamento exato de sequncia
que executa em tempo linear [22]. O algoritmo usa um vetor preprocessado em tempo
linear. A Figura A.7 mostra a busca do padro p = ATATA no texto t = ATACATATATTTA
usando o algoritmo Knuth-Morris-Pratt.
O comprimento do vetor m = |p|. [q] o comprimento do maior prexo de p que
suxo de p[2, q]. Assim por exemplo para o padro p = ATATA , temos que [1] = 0,
[2] = 0, [3] = 1, [4] = 2 e [5] = 3.
Na Figura A.7, na linha (i), os valores de q + 1 = {1, 2, 3, 4} correspondem aos avanos
na posio do texto i = {1, 2, 3, 4}. Observa-se que, quando q + 1 4 os smbolos do texto
e do padro so diferentes. Essa diferena produz que o valor de q seja mudado para
APNDICE A. COMPLEMENTOS TERICOS 125

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

Figura A.7: Algoritmo Knuth-Morris-Pratt.

q [3], se produzindo um deslocamento do padro tal como mostrado na linha (ii).


Na linha (ii), quando q + 1 2 os smbolos do texto e do padro ainda so diferentes,
se produzindo um deslocamento do padro com q [1]. Na linha (iii), os valores de
q + 1 = {1, 2, 3, 4, 5} correspondentes s posies no texto i = {5, 6, 7, 8, 9}, mostram uma
ocorrncia do padro no texto. Na linha (iv), mostra-se o deslocamento aps encontrar o
padro, q [5]. Na linha (v), a busca termina sem encontrar mais ocorrncias.
O seguinte pseudocdigo apresenta uma implementao do algoritmo Knuth-Morris-
Pratt [11]:
APNDICE A. COMPLEMENTOS TERICOS 126

Input: padro p, texto t


Output: posies da ocorrncia do padro no texto
1 begin
2 m |p|
3 n |t|
4 q0
5 for i 1 to n do
6 while q > 0 and P [q + 1] 6= T [i] do
7 q [q]
8 end
9 if P [q + 1] = T [i] then
10 q q+1
11 end
12 if q = m then
13 reporta uma ocorrncia do padro na posio i m q [q]
14 end
15 end
16 end

O vetor preprocessado de tamanho m pode ser calculado usando o seguinte pseudo-


cdigo:

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

Detalhe das implementaes

B.1 NFA equivalente a um -NFA


Comeamos a implementao denindo a estrutura para o -free NFA:

1 typedef struct _nfa


2 {
3 int start , numst;
4 nodelist_state end;
5 nodelist_state d;
6 }
7 nfa;

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:

1 void closure_alpha(enfa N, int T0, int idxletter , int T)


2 {
3 nodelist_state aux;
4 int i ;
5 for(i=0; i<N>numst; i++)
6 {
7 if (T0[i ])
8 {

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 }

Na implementao de closure_alpha o vetor T0 percorrido duas vezes: no primeiro


percurso, com closure_E(N, i, T0) cria-se a unio dos fecho- dos estados que vo ser pro-
cessados, aqueles com valor 1 no vetor T0. Em seguida, no segundo percurso calculado
o fecho- de cada estado de chegada das transies consumindo o smbolo idxletter. O
conjunto fecho- adicionado no vetor de sada T.
O fecho- implementado pela funo closure_E como segue:

1 void closure_E(enfa N, int state, int T)


2 {
3 nodelist_state aux;
4 T[state]=1;
5 aux = N>d[state][ns];
6 while(aux!=NULL)
7 {
8 if (! T[aux>state])
9 {
10 / if not in T /
11 T[aux>state]=1; / add state in T /
12 closure_E(N,aux>state,T); / Recursion /
13 }
14 aux=aux>next;
15 }
16 }

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

Figura B.1: Construo do -free NFA para R = (AC)|(AG).

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

3. Eliminar estados equivalentes. Esse processo ser tratado na minimizao de DFAs.


No exemplo da Figura B.1 parte c, pode-se observar que as trajetrias q8 q5 q9 e q8 q6 q9
so equivalentes, ento os estados q5 e q6 so equivalentes.

B.2 DFA equivalente a um -NFA


Para a implementao denimos a estrutura para o DFA:

1 typedef struct _dfa


2 {
3 int start ;
4 int numst;
5 int d;
6 nodelist_state end;
7 }
8 dfa;

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 typedef struct _nodelist_dfa_state


2 {
3 int id ;
4 int T;
5 int D;
6 struct _nodelist_dfa_state next;
7 }
8 nodelist_dfa_state;

A estrutura usada para armazenar os estados do DFA no processo de construo. Como


cada estado do DFA um subconjunto de estados do -NFA, ento a estrutura usa o
vetor de ags T para marcar os estados do -NFA que conformam um estado no DFA.
Assim mesmo, o vetor D armazena as transies do DFA, ele armazena apenas o estado
de chegada da transio.
O processo de construo comea com a leitura do -NFA N. Em seguida, criada
a lista encadeada L com ns do tipo nodelist_dfa_state. O estado inicial do DFA
adicionado em L com closure_E(N, N->start, L->T). E comea-se a percorrer a lista L
com:

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

7 for(j=0; j<numst; j++) T[j]=0;


8 closure_alpha(N, aux>T, i, T);
9 if (any(T, numst))
10 {
11 id = addfind_id(L, T, numst);
12 aux>D[i]=id;
13 }
14 }
15 aux=aux>next;
16 }

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

Figura B.2: (a) -NFA e (b) DFA equivalente a R = (C|G)*A(C|T).

B.3 Minimizao de um DFA


Para a implementao usada uma matriz M[n][n], onde n o nmero de estados do
autmato. M inicializado com zeros. A Figura B.3 parte (b) mostra a matriz para
minimizar o autmato com 6 estados (n = 6) mostrado na Figura B.2 parte (b).
O objetivo da matriz M registrar quais estados so distinguveis. Cada posio da
matriz representa a relao de dois estados. Por exemplo, a posio M[2][0] vai registrar
se os estados q2 e q0 so ou no so distinguveis. Como a posio M[i][j] = M[j][i],
ento usamos no processo apenas um deles. Como os elementos M[i][i] da diagonal no
representam relao entre dois estados, eles no so usados.
APNDICE B. DETALHE DAS IMPLEMENTAES 132

(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.

Na Figura B.3, as posies da matriz coloridas de branco sero usadas no processo, as


posies coloridas de cinza no sero usadas.
Um vetor de inteiros end com n elementos usado para indicar quais estados so
nais. Procede-se a marcar como estados distinguveis as posies na matriz para os
pares (estado nal, estado no nal) com o cdigo:

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

1 typedef struct _nodediff


2 {
3 int i , j ;
4 struct _nodediff next;
5 }
6 nodediff ;

Assim, se os estados q3 e q1 so distinguveis ento todos os elementos da lista matlist[3][1]


devem ser marcados como distinguveis tambm. O processo recursivo com cada ele-
mento da lista. O processo mark_recursion implementado para realizar essa tarefa.

1 nodediff mark_recursion(int M, nodediff matlist, nodediff L)


2 {
3 nodediff aux;
4 aux=L;
5 while(aux!=NULL)
6 {
7 if (! M[aux>i][aux>j])
8 {
9 / not marked /
10 M[aux>i][aux>j]=1;
11 matlist [aux>i][aux>j]
12 = mark_recursion(M, matlist, matlist[aux>i][aux>j]);
13 }
14 aux=aux>next;
15 }
16 list_nodediff_free(L); / free list /
17 return NULL;
18 }

Cada posio da matriz M no marcada como distinguvel percorrida e processada


com o seguinte cdigo:

1 for(i=0; i<numst; i++)


2 {
3 for(j=0; j<i; j++)
4 {
5 if (! M[i ][ j ])
6 {
7 / not marked /
8 for(k=0; k<ns; k++)
9 {
10 r=D>d[i][k];
11 s=D>d[j][k];
12 if ( (r>=0)&&(s>=0)&&(r!=s) )
13 {
14 if (M[r][s ])
15 {
16 / marked /
17 M[i ][ j]=1;
18 matlist [ i ][ j]=mark_recursion(M,matlist,matlist[i][j ]);
APNDICE B. DETALHE DAS IMPLEMENTAES 134

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 }

Para cada par de estados i e j no marcado como distinguvel, procura-se os estados


de chegada r = (i, k) e s = (j, k) para todo k , tal que se r e s so distinguveis
ento o par de estados i e j marcado recursivamente como distinguvel, caso contrrio
na lista matlist[r][s] adicionado o nodelist com o par i e j.
Continuando com a matriz mostrada na Figura B.4, analisada a posio M[1][0],
encontrando-se que para o smbolo A o estado q1 no tem transio, ento necessariamente
q1 e q0 so distinguveis e M[1][0] = 1.
Para o par de estados q2 e q0 , observa-se que, consumindo o smbolo A os dois levam
ao estado q1 , e consumindo o smbolo C os dois levam ao estado q2 , no existem transies
consumindo os smbolos T e G. No pode-se concluir que sejam distinguveis.
Para o par de estados q2 e q1 , consumindo o smbolo B, o estado q2 no tem transio,
ento necessariamente q2 e q1 so distinguveis e M[2][1] = 1.
Para o par de estados q3 e q0 , observa-se que, consumindo o smbolo A os dois levam
ao estado q1 , consumindo o smbolo C os dois levam ao estado q2 , consumindo o smbolo
G os dois levam ao estado q3 , e no existem transies consumindo os smbolos T. No
pode-se concluir que sejam distinguveis.
Para o par de estados q3 e q1 , consumindo o smbolo A, o estado q3 no tem transio,
ento necessariamente q3 e q1 so distinguveis e M[3][1] = 1.
Para o par de estados q3 e q2 , observa-se que, consumindo o smbolo A os dois levam
ao estado q1 , consumindo o smbolo C os dois levam ao estado q2 , consumindo o smbolo
G os dois levam ao estado q3 , e no existem transies consumindo os smbolos T. No
pode-se concluir que sejam distinguveis.
Para o par de estados q4 e q5 , observa-se que, no existem transies. No pode-se
concluir que sejam distinguveis.
A Figura B.5 parte (a) mostra a matriz no nal do processo de minimizao.
O autmato usado no processo de minimizao mostrado na parte (b) da Figura B.5.
A matriz M no nal do processo de minimizao mostra que q2 q0 , q3 q0 , q3 q2 e
q5 q4 que correspondem os quatro lugares na matriz que no tem marca de distingu-
veis. Pode-se concluir que q0 , q2 e q3 pertencem a mesma classe de equivalncia, ento
APNDICE B. DETALHE DAS IMPLEMENTAES 135

(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).

B.4 Construo de Thompson


Comeamos a implementao denindo a estrutura para o -NFA:

1 typedef struct _enfa


2 {
3 int start ,end,numst;
4 nodelist_state d; / Transitions /
5 }
6 enfa;

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

1 typedef struct _nodelist_enfa


2 {
3 char symbol; / Symbols: ()|E (E to ENFA) /
4 enfa p;
5 struct _nodelist_enfa prev;
6 struct _nodelist_enfa next;
7 }
8 nodelist_enfa;

A Figura B.6 mostra a lista encadeada inicial para a construo de Thompson da


expresso regular: C*(G|AT).
nodelist_enfa Sublista
Lista
NULL
NULL

E * 
E |
E E )

NULL NULL NULL NULL


0 0 0 0
C G A T
1 1 1 1

Figura B.6: Lista inicial de -NFAs na construo de Thompson.

A lista encadeada percorrida desde a posio mais esquerda da expresso regular


at encontrar o primeiro smbolo ). Como a expresso regular correta ento esquerda
da lista percorrida existe o smbolo (. claro que entre os parnteses existe uma sublista
sem parnteses, a ideia encontrar um -NFA equivalente a esse pedao de lista, e de-
pois substitui-lo na lista. O processo continua com o percurso, substituindo esses -NFA
equivalentes at o nal da lista. Quando o percurso alcana a posio nal da lista no
existem mais parnteses nela, ento a lista pode ser reduzida para obter o -NFA nal
equivalente expresso regular.
O processo para reduzir um pedao de lista encadeada sem parnteses comea percor-
rendo a lista desde a posio mais esquerda da expresso regular. Para manter as regras
de precedncia, so construdos e substitudos na lista os -NFAs equivalentes ao fecho de
Kleene. Segundo o padro cada n com operador * junto com o n -NFA anterior no
percurso convertido num novo -NFA que substitudo na lista. Quando o ltimo n
na lista alcanado no existem mais operadores *.
Continuando com as regras de precedncia, o pedao de lista encadeada agora sem
parnteses e sem operadores *, percorrido substituindo todo par de -NFAs vizinhos
pelo -NFA equivalente concatenao deles, segundo o padro. Ao nal desse percurso
caria uma lista encadeada de -NFAs possivelmente separadas por ns com o operador
|.
Como a alternncia o operador de mais baixa precedncia ento ele resolvido por
ltimo. Para resolver a alternncia realizado um novo percurso na lista, tal que, cada
trs ns consecutivos contendo no n do meio o operador | substitudo pelo seu -NFA
APNDICE B. DETALHE DAS IMPLEMENTAES 137

equivalente segundo o padro. Ao terminar o percurso da alternncia, a lista contm


apenas um n, que o -NFA equivalente ao pedao de lista encadeada sem parnteses.
Assim ao processar a lista encadeada da Figura B.6, encontrada a sublista que
corresponde expresso regular: G|AT. Essa sublista mostrada na Figura B.7 parte (a).
Observamos que a sublista no possui operadores *, ento no existem -NFAs equivalentes
a substituir nela como resultado do operador *. Continua-se com a concatenao, na
parte (b) da Figura B.7 mostrada a lista com trs ns resultantes depois de substituir o
-NFA equivalente ao pedao de expresso regular: AT. Note que no existem mais pares
de -NFAs que possam ser concatenados e que a sublista ainda possui um operador de
alternncia.
Sublista
NULL
NULL

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

Figura B.7: -NFA equivalente sublista sem parnteses: G|AT.

Depois do processo de concatenao e segundo a precedncia de operadores continua-


se com a alternncia. Na Figura B.7 parte c substitudo o -NFA equivalente aos trs
ns que correspondem ao pedao de expresso regular: G|AT.
Note que na Figura B.7 a sublista obtida na parte (c) equivalente sublista da parte
(a), ento continuando com o processo de construo de Thompson ela substituda na
lista encadeada inicial, resultando na lista mostrada na parte (a) da Figura B.8.
A Figura B.8 parte (a) mostra a lista encadeada resultante, depois de substituir todos
os -NFAs equivalentes s sublistas sem parnteses. Observe que essa lista resultante tem
apenas trs ns: dois ns com -NFAs e um n com o operador *. Ademais essa lista
resultante tambm uma lista sem parnteses, ento o -NFA equivalente a essa lista
APNDICE B. DETALHE DAS IMPLEMENTAES 138

corresponde ao -NFA equivalente expresso regular.


Para encontrar o -NFA equivalente expresso regular, procedemos a processar essa
lista sem parnteses resultante do processo anterior. Pedaos dessa lista sero substitudos
por seu -NFA equivalente, segundo os padres da induo de Thompson e respeitando
a precedncia de operadores. Procede-se da mesma forma como foi realizado para a
sublista da Figura B.7 parte (a). Observe que a lista a ser processada agora tem apenas
um operador *.
Lista
NULL
NULL

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

enfa *enfa_kleen(enfa *Ma)

usada para construir o -NFA resultante da aplicao do operador *, essa funo esta
denida pelo seguinte cdigo:
APNDICE B. DETALHE DAS IMPLEMENTAES 139

1 enfa enfa_kleen(enfa Ma)


2 {
3 enfa M;
4 M = enfa_union(Ma,NULL,2);
5 M>start = Ma>numst;
6 M>end = Ma>numst+1;
7 M>d[Ma>end][ns] = add_nodelist_state(N>d[Ma>end][ns],M>end);
8 M>d[M>start][ns] = add_nodelist_state(N>d[M>start][ns],Ma>start);
9 M>d[Ma>end][ns] = add_nodelist_state(N>d[Ma>end][ns],Ma>start);
10 M>d[M>start][ns] = add_nodelist_state(N>d[M>start][ns],M>end);
11 enfa_free(Ma);
12 return M;
13 }

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.

B.5 Construo de Thompson melhorada


Na implementao, a construo dos padres melhorados requer um pouco mais de aten-
o dado que o autmato construdo manipula as transies do autmato original. Por
exemplo, para o caso (i) da alternncia, os estados qa , fa , qb e fb so fundidos e eles no
aparecem no novo autmato, mas as transies onde eles esto envolvidos so mantidas.
Para poder escolher o padro correto a ser aplicado, precisa-se saber se determinados
estados do autmato tem ou no ciclo. Para armazenar essa informao necessrio
estender a estrutura criada para o -NFA:

1 typedef struct _enfa


2 {
3 int start , end, numst;
4 int C; / cycle flag of states /
5 nodelist_state d; / Transitions /
6 }
7 enfa;

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

transies para M. Todas as transies de Ma sem incluir o estado nal fa so copiadas


para M, considerando que se uma transio tem como estado de chegada o estado nal
fa , a chegada dessa transio trocada para qa . Depois as transies do estado nal fa
so copiadas para o estado qa , considerando a troca anterior. Como o padro produz um
ciclo no estado inicial do -NFA, ento o estado inicial do -NFA marcado no vetor C,
como contendo um ciclo.
Da mesma maneira so implementadas as funes correspondentes para os casos (ii),
(iii), (iv) e (v). O caso (v) considera o caso em particular com o menor autmato que
pode ser passado como argumento de entrada na funo: o autmato ciclo com uma
transio. A parte (a) da Figura B.9 mostra esse caso particular usando a expresso
regular Ra = (A*). Para Ra o caso (iv) tambm pode ser aplicado corretamente. Na parte
(b) da Figura B.9 mostra-se a aplicao do caso (iv) para obter o autmato equivalente
a R = (A*)*. Como se observa o autmato obtido em (b) correto, mas ele pode ser
reduzido. Como est aplicando-se o fecho de Kleene num autmato ciclo, a aplicao
do caso (iv) para transformar o autmato em ciclo redundante, ento para esse caso,
deve-se retornar como sada apenas o mesmo -NFA da entrada, tal como se mostra na
parte (c) da Figura B.9.

(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).

A funo enfa *enfa_alternation_melhor(enfa *Ma, enfa *Mb) implementada para


o caso da alternncia. Essa funo deve considerar os 16 casos produzidos pelo padro.
Como possivelmente os estados inicial e nal do autmato Mb poderiam ser apagados do
autmato resultante, trocamos suas posies para o ltimo e penltimo lugar na tabela de
estados. Procedemos a determinar o nmero de estados do autmato resultante, segundo
o padro que corresponda usar. Determina-se a posio em M dos estados inicial e nal
de Mb . A memria para M e sua tabela de transies alocada. As transies de Ma so
copiadas completamente para M, incluindo a marcao de ciclos no vetor C. As transies
dos estados no nais e no iniciais de Mb so copiadas para M, incluindo a marcao de
ciclos no vetor C. As transies inicial e nal de Mb so copiadas para M, considerando
a posio correta dos estados. Para cada caso, so criados os -moves correspondentes,
no caso (iv), considera-se a adio dos -moves dos estados qo e f0 como corresponda. As
posies do estado inicial e nal de M so atualizadas no autmato, e nalmente o -NFA
M retornado pela funo.
A funo enfa *enfa_catenation_melhor(enfa *Ma, enfa *Mb) implementada para
APNDICE B. DETALHE DAS IMPLEMENTAES 141

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

Figura B.10: Autmato para R = C*(G|AT), baseado nos padres melhorados.

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

construda interativamente a expresso regular RX = (RX Rp |Rp ), partindo de RX = Rp .


Em R2 armazenada (R2 |R2 RX ). Finalmente retornado R1 R2 .
A Figura B.11 mostra as expresses regulares construdas para alguns padres PRO-
SITE, usando as expresses regulares tipo R3 da Seo 3.3.

PS00315: (54 termos)


S(4)-[SD]-[DE]-x-[DE]-[GVE]-x(1,7)-[GE]-x(0,2)-[KR](4)
Expresso regular com 777 smbolos
SSSS(S|D)(D|E)(A|C|D|E|F|G|H|I|K|L|M|N|P|Q|R|S|T|V|W|Y)(D|E)(G|V|E)((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|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|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|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|C|D|E|F|G|H|I|K|L|M|N|P|Q|R|S|
T|V|W|Y))((G|E)((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))|(G|E))(K|R)(K|R)(K|R)(K|R)

PS00396: (61 termos)


[EQ]-x-L-Y-[DEQSTLM]-x(3,12)-[LIVST]-[ST]-Y-x-R-[ST]-[DEQSN]
Expresso regular com 1026 smbolos
(E|Q)(A|C|D|E|F|G|H|I|K|L|M|N|P|Q|R|S|T|V|W|Y)LY(D|E|Q|S|T|L|M)(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|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|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|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|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|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|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))(L|I|V
|S|T)(S|T)Y(A|C|D|E|F|G|H|I|K|L|M|N|P|Q|R|S|T|V|W|Y)R(S|T)(D|E|Q|S|N)

PS01186: (31 termos)


C-x-C-x(2)-[GP]-[FYW]-x(4,8)-C
Expresso regular com 642 smbolos
SSSS(S|D)(D|E)(A|C|D|E|F|G|H|I|K|L|M|N|P|Q|R|S|T|V|W|Y)(D|E)(G|V|E)((A|C|D|E|F|G|H|I|K|
C(A|C|D|E|F|G|H|I|K|L|M|N|P|Q|R|S|T|V|W|Y)C(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)(G|P)(F|Y|W)(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|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|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|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))C

Figura B.11: Expresses regulares equivalentes a os padres PROSITE: PS00315, PS00396


e PS01186.