Algoritmos para Alinhamento de Sequências Gerardo Valdisio Rodrigues Viana Universidade Estadual do Ceará Hélio Augusto Sabóia Moura Faculdade Lourenço Filho RESUMO Comparar sequências de caracteres é um problema de grande interesse da Ciência da Computação. Muitas são as aplicações nos gerenciadores de banco de dados, processadores de texto e em diversas ferramentas da Bioinformática. Uma forma de comparar duas ou mais sequências é através da construção de um alinhamento entre elas. Algoritmos básicos para fazer um alinhamento buscam sempre sua melhor forma, ou seja, aquela que corresponda ao maior grau de similaridade entre as sequências comparadas. Aqui são apresentadas algumas técnicas algorítmicas desenvolvidas para o alinhamento simples que corresponde à comparação entre duas sequências, e múltiplo, entre três ou mais sequências. Palavras-chave: Alinhamento, Bioinformática, Otimização, Similaridade entre Sequências. 1 INTRODUÇÃO A Bioinformática é uma área interdisciplinar que utiliza técnicas da Ciência da Computação, da Matemática aplicada e da Estatística para resolver problemas da Biologia. No estudo da evolução e das funções da microbiologia, é comum a necessidade de comparar moléculas de várias espécies. Neste contexto, as sequências constituem as estruturas primitivas que indicam como os aminoácidos se encontram combinados em um gene ou em uma proteína; um alinhamento procura determinar o grau de similaridade entre estas sequências, na sua totalidade ou entre seus fragmentos. Pode-se então dizer que um alinhamento de sequências é uma forma de organizar sequências de DNA (DeoxyriboNucleic Acid), de RNA (RiboNucleic Acid) ou de proteínas, para identificar regiões similares indicativas de relações funcionais, estruturais ou evolucionárias entre elas (WATERMAN, 1995). Os resultados de um alinhamento são úteis na análise de genomas ou na análise de regiões conservadoras dos genes que sofreram mutações, bem como
68 Revista Científica da Faculdade Lourenço Filho - v.7, n.1, 2010 no estudo das estruturas secundárias das proteínas e na geração de informações para construção de árvores filogenéticas (VIANA, 2007). Os algoritmos desenvolvidos para fazer alinhamentos buscam sempre a forma que corresponda ao maior grau de similaridade entre as sequências comparadas. A ideia central destas técnicas é minimizar as diferenças entre elas, ou seja, seu objetivo principal é buscar um alinhamento ótimo. No contexto da teoria da complexidade, este é um problema de otimização chamado, em geral, de AVS (Alinhamento de Várias Sequências) onde se procura a solução ótima que corresponde à maior similaridade. Não são conhecidos algoritmos que resolvam o problema do AVS em tempo polinomial, portanto ele é classificado como um problema da classe NP-completo (Non deterministic Polynomial-time complete). Uma demonstração desta classificação pode ser vista em Wang & Jiang (1994). Especificamente, para duas sequências, chamado problema do APS (Alinhamento de Pares de Sequências), a solução ótima é obtida em tempo polinomial. Para entender como se processa um alinhamento e como pode ser computado o grau de similaridade entre duas ou mais sequências, são apresentados alguns dos principais algoritmos desenvolvidos para esse fim. Além disso, são citadas várias referências com o objetivo de orientar àqueles que desejam realizar um estudo mais aprofundado deste assunto. O trabalho está assim organizado: na seção 2, são definidos os elementos necessários para se fazer um alinhamento e indicados quais os tipos existentes. Na seção 3, apresentamos várias técnicas de alinhamento e seus algoritmos, enquanto que, na seção 4 são mostradas as aplicações deste problema; por fim, a seção 5 trata da conclusão do trabalho. 2 CONCEITOS BÁSICOS 2.1 Símbolos e Sequências Um alfabeto é um conjunto finito, não vazio, de caracteres ou símbolos, incluindo o símbolo especial para representar um caractere branco, espaço ou traço. Exemplo 1: = {A,C,G,T, } é o alfabeto com as bases nitrogenadas.
Revista Científica da Faculdade Lourenço Filho - v.7, n.1, 2010 69 Exemplo 2: = {A,C,D,E,F,G,H,I,K,L,M,M,P,Q,R,S,T,V,W,Y, } é o alfabeto com os 20 aminoácidos naturais. Uma sequência s sobre é uma cadeia de caracteres s=(c 1, c 2,...,c n ) n, n Z +. Nesse caso, o comprimento, ou tamanho da cadeia é n = s. Um segmento s [i..j], ou fragmento, é uma sequência definida para i j, correspondendo a um trecho de s, contíguo ou não, ou seja, s[i..j] = (c i, c i+1,...,c j ). Exemplo 3: s= CGT AAGCT T é uma sequência do alfabeto, sendo s[3..6]= T AAG. 2.2 Alinhamento Simples Um alinhamento simples é uma forma de descrever a relação entre duas sequências s 1 e s 2. O processo consiste em introduzir espaços ou lacunas (gaps), representados pelo símbolo, que correspondem aos deslocamentos dos segmentos, de modo que a maioria dos caracteres seja idêntica em algumas posições (match). Esses espaços podem ser inseridos nas extremidades ou no interior de s 1 e s 2, de modo que, s 1 [j] e s 2 [j], numa determinada posição j, não sejam símbolos simultaneamente iguais a. Esta propriedade é chamada de alinhamento livre de colunas em branco. Exemplo 4: Para s 1 = AAGCCT C e s 2 = AAACT, apresentamos a seguir algumas formas de alinhamento, entre vários possíveis: AAGCCT C AAGCCT C AAGCCT C AAGCCT C AAA C T AAA C T AAACT AA A C T (a) (b) (c) (d) s 1 s 2 Uma ligeira inspeção entre s 1 e s 2 mostra que estas duas sequências são parecidas, embora o alinhamento sugerido no caso (c) não seja desejado, visto que não ressalta este fato. Técnicas
70 Revista Científica da Faculdade Lourenço Filho - v.7, n.1, 2010 para avaliar o grau de similaridade entre sequências, a serem mostradas na seção 3, permitem decidir, entre todas as possibilidades, qual a melhor delas. Para avaliar o grau de complexidade deste problema, podemos computar quantos alinhamentos ( ) possíveis existem entre duas sequências, da seguinte forma: Se s 1 = s 2 e não forem incluídos espaços, existe apenas um alinhamento, ou seja, =1. Se n= máx { s 1, s 2 }, já com espaços incluídos, no pior caso, temos: Exemplo 5: ou seja, mais de 138 bilhões de alinhamentos possíveis. A razão obtida na expressão anterior advém da aproximação de Stirling (GRAHAN et al., 1995) para o fatorial de n,, de modo que: Para se obter uma padronização no cálculo de uma função de pontuação que corresponde ao grau de similaridade, se s 1 = n 1 e s 2 = n 2, com n 1 n 2 devem ser inseridos espaços tais que as duas cadeias finais fiquem de mesmo tamanho, ou seja, s 1 = s 2 = n. 2.3 Alinhamento Múltiplo Seja k um inteiro positivo e s 1, s 2,..., s k sequências sobre um alfabeto \{ } com s i =n i, i=1..k. Um alinhamento múltiplo (CARRILLO & LIPMAN, 1988) A corresponde a
Revista Científica da Faculdade Lourenço Filho - v.7, n.1, 2010 71 uma matriz A ij de ordem k x n, com entradas em onde n máx{ n i, i=1..k } de modo que a linha A i do alinhamento seja a sequência s i com possíveis espaços inseridos entre seus caracteres. Como dito anteriormente, se k=2, o problema é conhecido como APS (Alinhamento de Pares de Sequências) e se k>2, como AVS (Alinhamento de Várias Sequências). 2.4 Tipos de Alinhamento 2.4.1 Global É o tipo mais comum e envolve a comparação de uma extremidade a outra, conforme visto no Exemplo 4. Após a inclusão dos espaços, as sequências serão alinhadas uma sobre a outra para permitir que seja aplicada uma avaliação do grau de similaridade entre elas. Programas disponíveis em bases de dados públicas, como o CLUSTAL (2010) e o MULTALIN (2010), realizam este tipo de alinhamento. 2.4.2 Local O propósito é encontrar e extrair um ou mais segmentos das sequências comparadas que exibam alta similaridade. No caso, a avaliação seria feita de forma parcial, ou seja, somente nos segmentos selecionados. Os programas Blast - Basic Local Alignment Search Tool (ALTSCHUL et al., 1997) e Fasta Fast Alignment (PEARSON & LIPMAN, 1988) são as ferramentas de busca de alinhamento local mais utilizadas. 2.4.3 Global ou Local O alinhamento global é frequentemente utilizado para determinar regiões conservadas entre sequências homólogas 1 enquanto que o alinhamento local é geralmente utilizado na busca de segmentos homólogos em Banco de Dados públicos (NCBI, 2010) e na montagem de genomas. 1 A homologia é a ferramenta básica da Biologia comparada que retrata a similaridade entre espécies descendentes de um ancestral comum.
72 Revista Científica da Faculdade Lourenço Filho - v.7, n.1, 2010 2.5 Grau de Similaridade Uma maneira usual de atribuir escores no alinhamento de duas sequências é dada pela estratégia de associar a cada coluna j das sequências alinhadas uma pontuação ou peso w j da seguinte forma: A função de pontuação ou função objetivo seria dada pela equação seguinte, onde maiores valores para f indicam que s 1 e s 2 são mais similares. Exemplo 6 Considerando os alinhamentos (a) e (b) do Exemplo 4 teríamos: s 1 A A G C C T C s 3 A A G C C T C s 2 A A A C T s 4 A A A C T w j +1 +1 1 2 +1 +1 2 w j 2 +1 +1 2 2 +1 +1 2 (a) f (s 1,s 2 ) = 1+1 1 2+1+1 2 = 1 (b) f (s 3,s 4 ) = 2+1+1 2 2+1+1 2 = 4 Como f (s 1,s 2 ) > f (s 3,s 4 ) então o alinhamento (a) é melhor que o (b). Utilizando este critério poderia comparar várias sequências e decidir quais são as mais semelhantes entre si. Exemplo 7: Considerando as sequências r, s e t da tabela abaixo, observa-se que s e t são mais próximas entre si do que as demais combinações. Estes resultados podem ser dispostos numa matriz de distâncias. r L L C C E G E f (r,s) = +1+1+1+1 2 2 2 1+1+1 = 1 s L L C C C T W M G E f (r,t) = 1+1+1+1 2 2 2 1+1+1 = 3 t C L C C R T W M G E f (s,t) = 1+1+1+1 1+1+1+1+1+1 = +6
Revista Científica da Faculdade Lourenço Filho - v.7, n.1, 2010 73 2.6 Sequências Biológicas Para os pesquisadores da área de Biologia Molecular, o importante é obter o alinhamento que tenha mais significado biológico. Quando se comparam sequências biológicas, procura-se então verificar a evidência de que elas tiveram um ancestral comum e é consensual que as divergências ocorreram por processos de mutação ou de seleção natural. O processo de mutação mais simples considera substituição, inserção e eliminação de caracteres, e a seleção natural tem a capacidade de potenciar umas mutações em prejuízo das outras. Eventos como inversões e transposições não são detectados pelos algoritmos tradicionais. As ferramentas existentes geram matrizes de distâncias que são elementos básicos para geração de árvores filogenéticas. Estes algoritmos comparam genes das espécies em estudo, dispondo as pontuações numa tabela de pesos (escores), de modo que bases nitrogenadas iguais têm escore igual a (+2) e diferentes, igual a ( 1) indicando a uma penalidade; para os deslocamentos o escore é nulo. Exemplo 8: Para as sequências do Exemplo 6 seria considerada a seguinte tabela: A C T G A +2 1 1 1 C 1 +2 1 1 T 1 1 +2 1 G 1 1 1 +2 s 1 A A G C C T C s 3 A A G C C T C s 2 A A A C T s 4 A A A C T w j +2 +2 1 0 +2 +2 0 w j 0 +2 +2 0 0 +2 +2 0 (a) f (s 1,s 2 ) = 2+2 1+0+2+2+0 = 7 (b) f (s 3,s 4 ) = 0+2+2+0+0+2+2+0 = 8 Como o objetivo agora é minimizar as penalidades, teríamos f (s 1,s 2 ) < f (s 3,s 4 ), portanto, o alinhamento (a) também seria considerado melhor que o (b). Por este aspecto, não havendo penalização para os deslocamentos, significa que é mais provável isto acontecer do que uma
74 Revista Científica da Faculdade Lourenço Filho - v.7, n.1, 2010 mudança de base (A C, G A, por exemplo). Do ponto de vista biológico, a mutação entre bases não ocorre com a mesma probabilidade, devido à composição das mesmas. Transições (mudanças de bases da mesma classe) são mais frequentes que transversões (mudanças de bases de classes distintas). As classes das bases nitrogenadas são as purinas (Adenina e Guanina) e piridinas (Citosina e Timina). Exemplo 9: Para atender a estas considerações, a tabela a ser usada ficaria assim: A C T G A +2 1 1 0,5 0 C 1 +2 0,5 1 0 T 1 0,5 +2 1 0 G 0,5 1 1 +2 0 0 0 0 0 x Nos alinhamentos múltiplos, a escolha da função é menos relevante, pois a comparação é feita entre sequências que representam espécies distintas. 2.7 Distância de Edição A distância de edição entre sequências é o número mínimo de operações de edição (inserção, remoção ou substituição de caracteres) necessárias para transformar uma sequência em outra. Se as operações não têm custos uniformes, utiliza-se o menor custo da transformação. As típicas distância de edição utilizadas são a de Hamming (1980), Levenshtein (HIRSCHBERG, 1997) e a de Damerau (1964). A primeira permite apenas substituição de caracteres e é restrita para strings (cadeias) de mesmo tamanho. Uma de suas aplicações é para o problema CSP Closest String Problem (VIANA et al., 2008). Para as duas seguintes, os strings podem ter tamanhos diferentes, sendo que a de Levenshtein calcula o custo de edição, considerando somente as três operações básicas citadas, enquanto que a de Damerau é uma variação da métrica de Levenshtein, sendo que considera também a operação de inversão de caracteres adjacentes.
Revista Científica da Faculdade Lourenço Filho - v.7, n.1, 2010 75 2.8 Distância Evolutiva Duas sequências s 1 e s 2 estão a uma distância evolutiva dita PAM1, se uma série de mutações do tipo troca de caracteres convertem s 1 em s 2 com uma média de 1% (uma troca a cada 100 aminoácidos). O termo PAM Point Accepted Mutation refere-se à matriz de substituição utilizada no alinhamento de proteínas homólogas. Uma mutação aceita refere-se àquela gerada entre duas sequências que não provoca a extinção da espécie que contém a sequência descendente sob o ponto de vista filogenético. Uma matriz PAM (DAYHOFF, 1978) define um processo estocástico para geração da pontuação de seus termos, sem interesse no escopo deste trabalho. 3 PRINCIPAIS ALGORITMOS PARA O PROBLEMA DO ALINHAMENTO 3.1 Preliminares Todos os algoritmos apresentados constam de dois procedimentos, um (DIST) para o cálculo das distâncias ou geração da matriz de pontuação, e outro (ALIGN) para determinar o alinhamento ótimo que corresponde ao melhor alinhamento ou pontuação mínima. Entrada duas sequências s e t, de tamanhos, respectivamente, iguais a m e n. Notação A[i,j] = d(s[1..i], t [1..j]) d(s,t) = d(s[1..m], t [1..n]) = A[m,n], d=distância Matriz de pontuação A de ordem (m+1) x (n+1), incluindo o símbolo Um estudo completo destes e de outros algoritmos pode ser encontrado em Brito (2003).
76 Revista Científica da Faculdade Lourenço Filho - v.7, n.1, 2010 3.2 Algoritmos APS (Alinhamento de Pares de Sequências)
Revista Científica da Faculdade Lourenço Filho - v.7, n.1, 2010 77 Uma variante deste algoritmo é o método de Economia de Espaço (HIRSCHBERG, 1975) que altera a estrutura de dados do cálculo da distância utilizando um vetor linear a[0..n] em substituição à matriz de pontuação. Outras técnicas são similares às apresentadas, com alteração na geração da matriz de pontuação, por exemplo, o algoritmo de Needlman & Wunsch (1970) utiliza programação dinâmica para fazer o alinhamento global e o de Smith & Waterman (1981) faz uma busca em regiões com semelhança local, sem considerar todo seu comprimento. Os algoritmos da seção seguinte fazem o alinhamento múltiplo. O primeiro deles, Gusfield (1997), é um algoritmo de aproximação (VAZIRANI, 2003).
78 Revista Científica da Faculdade Lourenço Filho - v.7, n.1, 2010 3.3 Algoritmos AVS (Alinhamento de Várias de Sequências) A razão de aproximação do Algoritmo 3 é dada pelo fator =(2 2/k), de modo que para duas sequências (k=2) o algoritmo é exato ( =1). O procedimento JUNCTION, correspondente ao Algoritmo 4, encontra-se na página seguinte. Outros algoritmos para o AVS usam uma interpretação estatística na pontuação dos alinhamentos. A geração da matriz de distâncias evolutivas evidencia um modelo de mutação com o pareamento de caracteres ao acaso através do logaritmo da razão de probabilidades log-odd scores. Como referência, citamos o Modelo de Markov de Estados Ocultos Hidden Markov Model que é um método de inferência (FORBES & PEYRARD, 2001).
Revista Científica da Faculdade Lourenço Filho - v.7, n.1, 2010 79 4 APLICAÇÕES PARA O PROBLEMA DO ALINHAMENTO 4.1 Geração de Matrizes de Distâncias Evolutivas Programas conhecidos como Protdist, Dnadist e Distmat do pacote Phylip Phylogeny Inference Package (FELSENSTEIN, 1993) que fazem alinhamento de múltiplas sequências, úteis para o problema da filogenia, geram as matrizes de distâncias, utilizando os seguintes métodos ou algoritmos, Jukes & Cantor (1969), Tajima & Nei (1984), Kimura (1980), Mega3 (KUMAR et al., 2004) e Jin-Nei Gamma distance (JIN & NEI, 1990).
80 Revista Científica da Faculdade Lourenço Filho - v.7, n.1, 2010 4.2 Montagem de Fragmentos Um projeto genoma tem como objetivo determinar as sequências de DNA completas de todos os cromossomos de um organismo. Os sequenciadores disponíveis em laboratórios de genética são limitados a sequenciar milhares de bases nitrogenadas, no entanto, mesmo os organismos menos complexos, como as bactérias, são formados por milhões destas bases. Uma maneira de amenizar este problema é fragmentar o DNA e a seguir montar as subsequências, ou fragmentos, obtidos. Foram desenvolvidos montadores de genomas que utilizam os resultados obtidos pelos algoritmos de alinhamento aqui descritos, para reconstruir a sequência completa do DNA (Sequencing Whole Genomes). 5 CONCLUSÃO A comparação de sequências de caracteres, feita através do processo de alinhamento, é uma das tarefas básicas da Bioinformática, conforme os algoritmos e as aplicações apresentadas. Vimos que para alinhar duas sequências existem algoritmos eficientes exatos para obter a solução ótima, embora alguns deles enquadram-se na categoria de pseudo-polinomiais. Para o caso de várias sequências, o problema do alinhamento múltiplo é NP-difícil. Assim foi observado que é necessário desenvolver novos algoritmos, para sua resolução em tempo, hábil buscando sempre soluções bem aproximadas da solução ótima.
Revista Científica da Faculdade Lourenço Filho - v.7, n.1, 2010 81 Sequence Alignment Algorithms ABSTRACT Comparing strings is a problem of great interest in computer science. There are many applications in the database managers, word processors and various tools of Computational Biology. One way to compare two or more sequences is by building an alignment between them. Basic algorithms for alignment seek the best shape that corresponds to the highest degree of similarity between the sequences compared. This article presents some algorithmic techniques developed to align sequences corresponding to the simple comparison with two sequences, and multiple, with three or more sequences. Keywords: Alignment, Computational Biology, Optimization, Sequence Similarity. REFERÊNCIAS ALTSCHUL, S.F., MADDEN, T.L., SCHÄFFER, A.A., ZHANG, J., ZHANG, Z., MILLER, W. and LIPMAN, D.J., Gapped BLAST and PSI-BLAST: a new generation of protein database search programs. Nucleic Acids Research, 25:3389 4202, 1997. BRITO, R.T., Alinhamento de Sequências Biológicas, Dissertação de Mestrado, IME/USP, Instituto de Matemática e Estatística Universidade de São Paulo, 2003. CARRILLO, H. and LIPMAN, D., The multiple sequence alignment problem in biology, SIAM Journal of Applied Mathematics, 48(5):1073 1082, 1988. CLUSTAL, Disponível em: <www.ebi.ac.uk/clustalw>, Setembro, 2010. DAMERAU, F., A technique for computer detection and correction of spelling errors, Comm. of the ACM, 7(3):171 176, 1964. DAYHOFF, M.O., SCHWARTZ, R.M., ORCUTT, B.C., A model of evolutionary change in proteins, Atlas of Protein Sequence and Structure 5(3):345 352, 1978. FELSENSTEIN, J., PHYLIP Phylogeny Inference Package: Computer Programs for Inferring Phylogenies, version 3.69, University of Washington, Seatle, WA, 1993. <http://evolution.genetics. washington.edu/phylip.html>, September, 2010. FORBES, F. and PEYRARD, N., Hidden Markov Models Selection Criteria based on Mean Field-like approximations, INRIA Institute National de Recherche en Informatique et Automatique, Rapport #4371, 33p., Février, 2001.
82 Revista Científica da Faculdade Lourenço Filho - v.7, n.1, 2010 GRAHAN, R. L., KNUTH, D. E. and PATASHNIK, O., Matemática Concreta: Fundamentos para a Ciência da Computação, Rio de Janeiro: LTC, 1995. GUSFIELD, D., Algorithms on strings, trees and sequences: Computer Science and Computational Biology, Cambridge University Press, 1997. HAMMING, R. W., Coding and information theory, Prentice-Hall, Inc., 1980. HIRSCHBERG, D. S., Serial computations of Levenshtein distances, Pattern Matching Algorithms, A. Apostolico and Z. Galil, editors, Oxford University Press, p. 123 141, 1997., A linear space algorithm for computing maximal common subsequences, Communications of the ACM 18:341 343, 1975. JIN, L. and NEI, M., Limitations of the evolutionary parsimony method of phylogenetic analysis. Molecular Biology and Evolutions, 7:82 102, 1990. JUKES, T.H. and CANTOR, R.C., Evolution of Protein Molecules, in Mammalian Protein Metabolism, chapter 2, p. 22 132, New York: Academic Press, 1969. KIMURA, M., A simple method for estimating evolutionary rates of base substitutions through comparative studies of nucleotide sequences, Molecular Evolutions, 16:111 120, 1980. KUMAR, S., TAMURA, K. and NEI, M., MEGA3: Integrated software for molecular evolutionary genetics analysis and sequence alignment, Bioinformatics, 5(2):150 163, 2004. MULTALIN, Disponível em: <http://multalin.toulouse.inra.fr/multalin>, Setembro, 2010. NCBI National Center for Biotechnology Information, disponível em <http://ncbi.nlm.nih.gov>, Setembro, 2010. NEEDLEMAN, S. B. and WUNSCH, C. D., A general method applicable to the search for similarities in the amino acid sequence of two proteins, Journal of Molecular Biology 48 (3): 443 53, 1970. PEARSON, W. R. and LIPMAN, D. J., Improved tools for biological sequence comparison. PNAS Proceedings of the National Academy of Sciences, 85:2444 2448, 1988. SMITH, T. F. and WATERMAN, M. S., Identification of common molecular subsequences, Journal of Molecular Biology 147:195 197, 1981. TAJIMA, F. and M. NEI, M., Estimation of evolutionary distance between nucleotide sequences, Molecular Biology and Evolutions, 1(3):269 285, 1984. VAZIRANI, V.V., Approximation Algorithms, Berlin: Springer-Verlag, 2003. VIANA, G.V.R., GOMES, F.C., MENESES, C.N. and PARDALOS, P.M., A parallel multistart algorithm for the closest string problem, Computers & Operations Research 35:3636 3643, 2008.
Revista Científica da Faculdade Lourenço Filho - v.7, n.1, 2010 83 VIANA, G.V.R., Técnicas para Construção de Árvores Filogenéticas, Tese de Doutorado, DC/UFC, Departamento de Computação Universidade Federal do Ceará, Fortaleza: 2007. WANG, L. and JIANG, T., On the complexity of multiple sequence alignment, Journal of Computational Biology, 1:337 348, 1994. WATERMAN, M. S., Introduction to computational biology: Maps, sequences and genomes, Chapman and Hall, 1995. Gerardo Valdisio Rodrigues Viana Doutor em Ciência da Computação - UFC/USP Professor Associado - UECE Áreas de interesse: Otimização Combinatória, Algoritmos e Bioinformática. e-mail: valdisio@gmail.com Hélio Augusto Sabóia Moura Professor de Desenvolvimento da Faculdade Lourenço Filho Mestrando em Computação Aplicada - MPCOMP / UECE Analista de Sistemas do Departamento de Informática da UECE Áreas de interesse: Engenharia de Software, Linguagens de Programação e Desenvolvimento em Java e-mail: helio.moura@uece.br