next up previous
Next: Melhorias do Algoritmo Básico Up: Tópicos Estudados Previous: O Problema

O Algoritmo Básico

Vamos agora descrever o algoritmo que calcula o alinhamento ótimo. Tomemos como exemplo as seqüências ``AAAC'' e ``AGC''. Ao alinharmos a última coluna, teremos três possibilidades:
\includegraphics{imagens/figura1.eps}
Este esquema nos dá um algoritmo recursivo para o cálculo do alinhamento ótimo. Chamando de Sim (s1, s2) a similaridade entre s1 e s2 e Max (i,j,k) o maior valor dentre i, j e k, temos:
Sim(AAAC, AGC)=Max(Sim(AAA,AG)+1, Sim(AAAC, AG)-2, Sim(AAA, AGC)-2)
Há um grande inconveniente neste método: ele gera um número exponencial de chamadas recursivas. Teremos um total de 2m+n chamadas onde m e n são os tamanhos das seqüências. Mas com o uso da programação dinâmica podemos impedir tal quantidade de chamadas. Esta técnica nos mostra que várias chamadas são iguais (por exemplo, Sim(AAA, A) será solicitada mais de uma vez, gerando sempre o mesmo resultado!). A melhor maneira de comparar as seqüências é fazer uso da seguinte matriz:
\includegraphics{imagens/figura2.eps}
Convencionamos s[a..b] como a subseqüência de s que vai do caracter na a-ésima posição ao caracter na b-ésina posição. Nesta matriz, o valor contido na linha i coluna j é a similaridade entre o prefixo s1[1..i] e o prefixo s2[1..j]. Logo, sendo m e n os tamanhos das cadeias em estudo, a posição (m, n) da matriz contém o valor da similaridade de s1 e s2. As setas indicam a origem do valor daquela posição. As setas horizontais indicam que o caracter da j-ésima posição de s2 foi pareado com um buraco inserido em s1 (penalização de -2). As setas verticais indicam que o caracter da i-ésima posição de s1 foi pareado com um buraco em s2 (penalização de -2). Já a seta diagonal indica que pareamos o caracter da i-ésima posição de s1 com o da j-ésima posição de s2 (1 se s1 = s2 e -1 se forem diferentes). Assim, as ``setas'' indicam, a partir da posição (m, n) da matriz, como devemos alinhar s1 e s2.
next up previous
Next: Melhorias do Algoritmo Básico Up: Tópicos Estudados Previous: O Problema
Thiago Teixeira Santos
1999-08-03