next up previous
Next: Economia de Espaço em Up: Melhorias do Algoritmo Básico Previous: Melhorias do Algoritmo Básico

Buracos nas Pontas

Uma seqüência de DNA pode ser continuação da outra, como por exemplo:
ATCGTCCCACACGTAGACCCTGC e ACCCTGCCGGTCTATTGCAAC
Mas o algoritmo básico poderia não nos mostrar este fato. Por penalizar todos os buracos com -2 pontos, este alinhamento (uma cadeia ``encaixando'' na extremidade da outra) não teria a melhor pontuação. Se levarmos este fato em consideração, poderíamos modificar o algoritmo para não cobrar por buracos nas extremidades. No exemplo acima, o alinhamento ótimo ficaria:
ATCGTCCCACACGTAGACCCTGC______________ ________________ACCCTGCCGGTCTATTGCAAC
Para não cobrarmos por buracos no início das seqüêcias, basta inicializarmos a primeira linha e a primeira coluna da matriz com zeros. Uma vez que a posição (i, 0) da matriz nos dá o valor do alinhamento ótimo entre s1[1..i] com buracos anteriores ao primeiro caracter de s2, ao inicializarmos a coluna 0 com zeros não estaremos cobrando por buracos na extremidade da s2. Raciocínio análogo para a linha 0 em relação a buracos na extremidade de s1. Para não cobrarmos por buracos no final das seqüêcias, basta tomarmos o maior valor dentre a última linha e a última coluna como a similaridade e construirmos o alinhamento ótimo a partir dele. Sendo m o comprimento de s1, a posição (m, j) conterá o valor do alinhamento ótimo entre s1[1..m] (o que equivale a s1 por inteira) e s2[1..j]. Sendo n comprimento de s2 e j<n, teremos comparado s1 a um prefixo de s2. Adotando (m, j) como a similaridade entre as duas cadeias, não levaremos em conta a comparação de s1 com os caracteres finais de s2. Podemos colocar 1 buraco ao final de s1 para cada caracter de s2 não comparado. Desta forma, não estaremos penalizando os buracos ao final de s1. Raciocínio análogo para a coluna n da matriz.
next up previous
Next: Economia de Espaço em Up: Melhorias do Algoritmo Básico Previous: Melhorias do Algoritmo Básico
Thiago Teixeira Santos
1999-08-03